Дублирование одноразового номера в BrainTree с использованием интерфейса Dropin
Я использую рынок Брейнтри в Песочнице, и у меня есть проблема / вопрос.
Я использую идентификатор клиента при создании client_token, сохраняю payment_nonce в своей базе данных и использую его позже (через 3-4 минуты) для submit_for_settlement. Проблема в том, что каждой транзакции нужен уникальный одноразовый номер, но если я отправляю интерфейс Dropin дважды с интервалом в 2-3 минуты, я получаю тот же одноразовый номер, и вторая транзакция завершается неудачно с ошибкой: невозможно использовать одноразовый метод оплаты более одного раза. Есть ли способ гарантировать, что я получу уникальный одноразовый номер? благодарю вас
2 ответа
Вместо того, чтобы создавать другую транзакцию с тем же одноразовым номером, попробуйте отправить исходную транзакцию для расчета, используя транзакцию.submit_for_settlement.
Одноразовые способы оплаты - одноразовые. Чтобы ссылаться на один и тот же родительский метод несколько раз при интеграции на стороне сервера, вы можете создать токен метода оплаты в хранилище.
В общем, вы никогда не должны хранить одноразовый метод оплаты в базе данных, так как они недолговечны и предназначены только для одноразового использования.
https://developers.braintreepayments.com/ios+ruby/reference/request/transaction/submit-for-settlement https://developers.braintreepayments.com/ios+ruby/start/vault
Если вы следите за всем по книге и все еще время от времени получаете эту ошибку, вероятно, потому что пользователи нажимают кнопку отправки формы несколько раз без обновления. Это заставит первую отправку пройти правильно, но вы получите эту ошибку во второй отправке формы (которая приходит через миллисекунды, используя тот же самый раз, что и первая отправка).
Отключение кнопки отправки формы после первого щелчка решило ее для меня (см. Здесь).