6

Çalıştırmak için görünmüyor olsa da, varsayılan olarak firebase işlevleri aracılığıyla şerit için eklenen son kartı ayarlamaya çalışıyorum.şerit ödeme merkezi varsayılan ödeme ayarlamak için işlevler

// 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}); 
     }); 
    }); 
}); 

cevap

2

Bu işlevde iki şey döndürmeye çalışıyorsunuz. Bu işe yaramayacak. Kaynak oluşturmalı, ancak güncelleme yapmaz.

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

evet yarattığı ve kritik doğru kart tahsil edilir –

+1

Sen iki işlevi döndüremez olarak doesnt güncelleme, ben güncelleştirme varsayılan kartı gerekir. Bu yüzden kaynağı oluşturmanız ve daha sonra varsayılan kaynağı güncelleyen kaynağı oluşturduktan sonra ek bir geri arama eklemeniz gerekir. Dokümanlarını kazmalıyım ama fikir olurdu. createSource(). o zaman (=> update()). sonra (=> veritabanınızı güncelleyin). Aynı anda oluşturmaya ve güncellemeye çalışırsınız (ve her iki işlevi de döndürmeye çalışırsınız). Yani sadece kendi geri arama fonksiyonuna ikinci vurmak ve gitmek için iyi olacak. – Notmfb

+1

Bu doğru. Sözü yaymak için sadece ilk beyanname kullanılacaktır, ikincisi asla değerlendirilmeyecektir. @ Paul'Whippet'McGuane lütfen jslint veya eslint gibi bir analiz aracı kullanmayı düşünün. –