如何知道用户从dropIn UI(存储在保险库中)中选择了哪张卡?
银行代码:

let dropIn = BTDropInController(authorization: clientTokenOrTokenizationKey, request: request)
{ (controller, result, error) in
    if (error != nil) {
        print("ERROR")
    } else if (result?.isCancelled == true) {
        print("CANCELLED")
    } else if let result = result {
        // Use the BTDropInResult properties to update your UI
        // result.paymentOptionType
        // result.paymentMethod
        // result.paymentIcon
        // result.paymentDescription
        let urlString = fullURLString(baseURL: baseURL(), apiPath: CHECKOUT_API_PATH)
        let parameters: [String: Any] = [
           "payment_method_nonce" : result.paymentMethod?.nonce ?? ""
        ]

        // ??????????????????? how to get paymentMethod Token?????
    }
}

对于交易,我们可以使用result.paymentMethod?.现在。
Node.js号:
gateway.transaction.sale({
    amount: "1.00",
    paymentMethodNonce: nonceFromTheClient, // result.paymentMethod?.nonce ?? from iOS
    options: {
      submitForSettlement: true
    }
  }, function (err, result) {
});

但是对于订阅,我们需要使用paymentMethodToken,但是我们如何知道用户选择了哪一个?
Node.js号:
gateway.subscription.create({
    paymentMethodToken: ???,
    planId: "goldPlanID"
}, function (err, result) {
    console.log('subscription result:', result);
    console.log('subscription err:', err);

    res.send(result)
});

通过使用customer中的find函数,我们可以得到paymentMethods(但是我们不知道用户在client/iOS端选择了哪一个:
Node.js号:
gateway.customer.find(customerBraintreeID, function(err, customer) {
...
}

付款方式.token
{
"paymentMethods":
[ CreditCard {
...
token: 'jxxxxx',
uniqueNumberIdentifier: 'xxxxxxxxxx',
updatedAt:
venmoSdk: false,
verifications: [],
maskedNumber: '411111******1111',
expirationDate: '01/2020' }
...
}]

最佳答案

完全公开,我在Braintree工作。如有任何疑问,请联系Support
您可以使用从下拉式用户界面返回的付款方法nonce来创建订阅。您不需要使用付款方式令牌。使用paymentMethodToken而不是传递paymentMethodNonce。从Braintree dev文档:
在将付款方法与订阅关联之前,必须对其进行保险存储,因此通常最简单的做法是使用其paymentMethodToken引用付款方法。但是,在两种情况下,您可以传递付款方法nonce而不是付款方法令牌:
如果nonce是由我们的下拉式用户界面生成的,并且您在生成客户机令牌时传递了customerId,或者
如果nonce是从属于将拥有订阅的客户的保险存储支付方法生成的
例如,您的请求如下所示:

gateway.subscription.create({
    paymentMethodNonce: nonceFromTheClient,
    planId: "goldPlanID"
}, function (err, result) {
    console.log('subscription result:', result);
    console.log('subscription err:', err);

    res.send(result)
});

关于node.js - 如何使用braintree BTDropInController来创建subcripttion,以标识所选付款方式的paymentMethod token ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56142763/

10-10 15:01