如何知道用户从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/