#javascript #braintree
#javascript #braintree
Вопрос:
Всякий раз, когда пользователь отклоняет платеж, независимо от причины, мне нужно обновить authorization
токен, чтобы снова запросить Braintree, в противном случае я получаю сообщение об ошибке:
Невозможно использовать payment_method_nonce более одного раза
var token = 'MY_INITIAL_TOKEN';
braintree.dropin.create(
{
authorization: token,
container: '#braintree-container',
paypal:
{
flow: 'vault',
}
}, function(err, instance)
{
instance.requestPaymentMethod(function(err, payload)
{
// Executes HTTP Request
});
});
После http request
выполнения и отклонения платежа мне нужно обновить token
.
В документации DropIn есть функция, вызываемая updateConfiguration
https://braintree.github.io/braintree-web-drop-in/docs/current/Dropin.html#updateConfiguration но, похоже, я не могу заставить это работать, я безуспешно пытался:
braintree.updateConfiguration('dropin', 'authorization', myNewToken);
braintree.dropin.updateConfiguration('authorization', myNewToken);
dropin.updateConfiguration('authorization', myNewToken);
braintree.dropin.authorization = myNewToken;
Ответ №1:
(Я работаю в Braintree. Если у вас есть какие-либо дополнительные вопросы, обратитесь в службу поддержки.)
Ошибка, которую вы получаете, не связана с авторизацией, это потому, что вы пытаетесь повторно использовать исходный одноразовый способ оплаты, который был впервые возвращен в полезной нагрузке вашего первого requestPaymentMethod
вызова.
Одноразовые номера метода оплаты — это одноразовые представления платежной информации, которые используются с помощью вызова на стороне сервера (например, transaction.sale). Вам необходимо сгенерировать новый одноразовый способ оплаты на вашем клиенте, потому что исходный был использован при попытке отклоненной транзакции.
Я предлагаю добавить некоторую логику, которая выполняет следующее, если способ оплаты клиента отклонен:
- Очистите выбранный способ оплаты и сообщите клиенту, что его форма оплаты была отклонена.
- Затем пользователь вернется к основному просмотру всех доступных способов оплаты, и он сможет выбрать другой вариант / карту
- Вызовите
requestPaymentMethod
второй раз, когда пользователь будет готов иisPaymentMethodRequestable
вернет true - Отправьте недавно возвращенный одноразовый номер способа оплаты, указанный в полезной нагрузке второго вызова, на ваш сервер для любого планируемого вызова, который использует эту платежную информацию.
Также доступен демонстрационный сайт, если вы хотите проверить код, а также некоторые codepens.