【问题标题】:How to get a customer's ID from a webhook with Braintree?如何使用 Braintree 从 webhook 获取客户 ID?
【发布时间】:2017-04-21 02:21:31
【问题描述】:

如何从 Braintree 的 webhook 通知中获取客户 ID?

例如,我可以执行以下操作来获取他们的 ID:

gateway.webhookNotification.parse(sampleNotification.bt_signature, sampleNotification.bt_payload, (err, webhookNotification) => {
     let customerId = webhookNotification.subject.subscription.transactions[0].customer.id;
});

但这要求用户首先至少有一笔交易。如果客户还没有任何交易(例如新用户),我如何获取客户的 ID?

这是登录webhookNotification时的响应:

WebhookNotification {
   timestamp: '2017-04-30T11:01:33Z',
   kind: 'subscription_charged_unsuccessfully',
   subject: { 
      subscription: { 
         id: 'jywgnr', 
         transactions: [], 
         addOns: [], 
         discounts: [] 
       }
   },
   subscription: Subscription { 
      id: 'jywgnr', 
      transactions: [], 
      addOns: [], 
      discounts: [] 
   } 
}

【问题讨论】:

    标签: node.js braintree


    【解决方案1】:

    您似乎正在使用订阅 webhook。这似乎会在有效负载中返回一个payment method token,您可以在paymentMethod.find() 调用中使用它。

    从该 paymentMethod.find('token') 结果对象中,您可以检索 customer_id。

    编辑:看起来因为订阅不成功,该 webhook 中没有支付方式令牌。不过,有一个订阅 ID,您可以在 Subscription.find() API 调用中使用它,它肯定会返回一个包含付款方式令牌的结果对象。

    【讨论】:

    • 不幸的是,它没有返回支付方式令牌。我记录了完整的回复。我已将其添加到我的问题中。
    • 如果你把订阅 ID 插入到 Braintree.Subscription.Find('jywgnr') 会怎样?其结果对象将包括一个支付方式令牌。在我原来的答案中做出了改变!
    • 是的,成功地从第一次运行subscription.find(webhookNotification.subscription.id)paymentMethod.find(subscription.paymentMethodToken) 中获取了客户的 ID,它返回了一个包含客户 ID 的 paymentMethod 对象。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 2016-02-04
    • 2018-11-12
    相关资源
    最近更新 更多