Как узнать, какую карту выбрал пользователь из интерфейса dropIn (который хранится в хранилище)?
Код Swift:
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? .Nonce.
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)
});
Используя функцию поиска в клиенте, мы можем получить методы оплаты (но мы не знаем, какой пользователь выбрал на стороне клиента / iOS:
Node.js:
gateway.customer.find(customerBraintreeID, function(err, customer) {
...
}
PaymentMethods.token
{
"paymentMethods":
[ CreditCard {
...
token: 'jxxxxx',
uniqueNumberIdentifier: 'xxxxxxxxxx',
updatedAt:
venmoSdk: false,
verifications: [],
maskedNumber: '411111******1111',
expirationDate: '01/2020' }
...
}]