如何使用 Braintree 从 webhook 获取客户 ID?

How to get a customer's ID from a webhook with Braintree?

如何从 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: [] 
   } 
}

您似乎在使用订阅网络钩子。这似乎 return 一个 payment method token in the payload, which you can use in paymentMethod.find() 调用。

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

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