使用firebase-cloud-functions将付款源添加到Stripe?

时间:2019-02-04 16:19:03

标签: javascript firebase google-cloud-firestore google-cloud-functions stripe-payments

我正在尝试将条纹支付与我的Firestore Firebase数据库集成。我在弄清firebase doc示例中给出的添加付款来源功能时遇到了麻烦。我在这里想念什么?

exports.addPaymentSource = functions.firestore
.document('Customers/{userId}/paymentSources/{paymentId}')
.onWrite((change, context) => {
    let newPaymentSource = change.after.data();
    if (newPaymentSource === null){
        return null;
    }
    return admin.firestore().collection("Customers").doc(`${context.params.userId}`).get('customer_id')
        .then((snapshot) => {
          return snapshot.val();
        }).then((customer) => {
          return stripe.customers.createSource(customer, {newPaymentSource});
        }).then((response) => {
          return change.after.ref.parent.set(response);
        }, (error) => {
          return change.after.ref.parent.child('error').set(userFacingMessage(error));
        }).then(() => {
          return reportError(error, {user: context.params.userId});
        });
   });

我尝试了

console.log(snapshot.val())

,它给了我一个类型错误。

Firestore database Image

Error Log Image

1 个答案:

答案 0 :(得分:0)

您正在从Cloud Firestore中读取内容,但使用的是实时数据库的变量名和方法调用。虽然这两个数据库都是Firebase的一部分,但它们是完全独立的,并且具有不同的API。

Firestore的等效代码为:

return admin.firestore().collection("Customers").doc(`${context.params.userId}`).get()
    .then((doc) => {
      return doc.data();
    }).then((customer) => {
      ...

另请参阅: