6

मैं स्ट्रिप में अंतिम कार्ड को फायरबेस फ़ंक्शन के माध्यम से डिफ़ॉल्ट रूप से सेट करने का प्रयास कर रहा हूं, हालांकि मुझे इसे काम करने के लिए प्रतीत नहीं होता है।डिफ़ॉल्ट भुगतान सेट करने के लिए स्ट्रिप फ़ायरबेस फ़ंक्शन

// Add a payment source (card) for a user by writing a stripe payment source token to Realtime database 
exports.addPaymentSource = functions.database.ref('/users/{userId}/sources/{pushId}/token').onWrite(event => { 
    const source = event.data.val(); 
    if (source === null) return null; 
    return admin.database().ref(`/users/${event.params.userId}/customer_id`).once('value').then(snapshot => { 
    return snapshot.val(); 
    }).then(customer => { 
    return stripe.customers.createSource(customer, {source}); 
    return stripe.customers.update(customer, {default_source: source}); 
    }).then(response => { 
     return event.data.adminRef.parent.set(response); 
    }, error => { 
     return event.data.adminRef.parent.child('error').set(userFacingMessage(error)).then(() => { 
     // return reportError(error, {user: event.params.userId}); 
     consolg.log(error, {user: event.params.userId}); 
     }); 
    }); 
}); 

उत्तर

2

आप इस कार्य में दो चीजें वापस करने की कोशिश कर रहे हैं। वह काम नहीं करेगा। इसे स्रोत बनाना चाहिए, लेकिन यह इसे अपडेट नहीं करेगा।

return stripe.customers.createSource(customer, {source}); 
return stripe.customers.update(customer, {default_source: source}); 
+0

हाँ यह बनाता है और does not अद्यतन, मैं अद्यतन डिफ़ॉल्ट कार्ड की जरूरत के रूप में यह महत्वपूर्ण सही कार्ड चार्ज होने के –

+1

आप दो कार्य नहीं लौट सकते। इसलिए आपको स्रोत बनाने की आवश्यकता है, फिर स्रोत बनाने के बाद अतिरिक्त कॉलबैक जोड़ें जो डिफ़ॉल्ट स्रोत को अपडेट करेगा। मुझे अपने दस्तावेज़ों में खोदना होगा लेकिन विचार होगा। createSource()। फिर (=> अद्यतन())। फिर (=> अपना डेटाबेस अपडेट करें)। आप एक ही समय में बनाने और अपडेट करने का प्रयास करते हैं (और आप दोनों कार्यों को वापस करने का प्रयास करते हैं)। तो बस दूसरे को अपने कॉलबैक फ़ंक्शन में टक्कर दें और आपको जाना अच्छा लगेगा। – Notmfb

+1

यह सही है। केवल पहला रिटर्न स्टेटमेंट का इस्तेमाल वादा को प्रसारित करने के लिए किया जाएगा, दूसरा का मूल्यांकन कभी नहीं किया जाएगा। @ Paul'Whippet'McGuane कृपया विश्लेषण टूल का उपयोग करने पर विचार करें जैसे कि जेस्लिंट या एस्लिंट भी इन प्रकार के शेंगेनियों को स्थिर रूप से पकड़ते हैं। –

संबंधित मुद्दे