Braintree — как обновить токен авторизации javascript?

#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). Вам необходимо сгенерировать новый одноразовый способ оплаты на вашем клиенте, потому что исходный был использован при попытке отклоненной транзакции.

Я предлагаю добавить некоторую логику, которая выполняет следующее, если способ оплаты клиента отклонен:

  1. Очистите выбранный способ оплаты и сообщите клиенту, что его форма оплаты была отклонена.
  2. Затем пользователь вернется к основному просмотру всех доступных способов оплаты, и он сможет выбрать другой вариант / карту
  3. Вызовите requestPaymentMethod второй раз, когда пользователь будет готов и isPaymentMethodRequestable вернет true
  4. Отправьте недавно возвращенный одноразовый номер способа оплаты, указанный в полезной нагрузке второго вызова, на ваш сервер для любого планируемого вызова, который использует эту платежную информацию.

Также доступен демонстрационный сайт, если вы хотите проверить код, а также некоторые codepens.