2015-03-29 4 views
2

Я использую торговую площадку Braintree в Песочнице, и у меня есть проблема/вопрос.
Я использую идентификатор клиента при генерации client_token, сохраняя payment_nonce в своей базе данных и используя его позже (через 3-4 минуты) для отправки_объекта. Проблема в том, что для каждой транзакции требуется уникальное значение nonce, но если я отправлю пользовательский интерфейс Dropin дважды в 2-3 минуты, я получаю одинаковое значение nonce, а вторая транзакция не выполняется с ошибкой: нельзя использовать методы оплаты nonce более одного раза. Есть ли способ гарантировать, что я получаю уникальные nonce? спасибоDuplicate nonce в BrainTree с помощью Dropin UI

ответ

3

Вместо того, чтобы создать еще одну сделку с тем же одноразовым номером, попробуйте отправить оригинальную транзакцию для расчета с использованием transaction.submit_for_settlement

метод оплаты одноразовых номеров один раз использовать. Чтобы ссылаться на один и тот же родительский метод несколько раз в интеграции на стороне сервера, вы можете создать маркер метода оплаты в хранилище.

В общем, вы никогда не должны хранить способ оплаты nonce в базе данных, так как они недолговечны и одноразовые.

https://developers.braintreepayments.com/ios+ruby/reference/request/transaction/submit-for-settlement https://developers.braintreepayments.com/ios+ruby/start/vault

+1

Я только сохраняю nonce за одну транзакцию, и это работает нормально. Я обнаружил, что если я возьму того же пользователя через поток DropinUI для новой транзакции (вторая отдельная независимая транзакция) через определенное время вместо того, чтобы получать новое и другое nonce, я получаю то же самое, что и nonce, и когда я иду и попытайтесь решить вторую, я получаю ошибку, упомянутую выше. Должен ли я не предполагать, что я получаю новый nonce каждый раз, когда я создаю форму платежа DropUI? – paolino

+0

Исправить. Вы должны предположить, что nonce будет отличаться каждый раз, когда ваш запуск заходит. – mickeyreiss

0

Если вы следуете все по книге, и вы все равно получите эту ошибку спорадически, то, скорее всего, потому что пользователи кликают форма кнопки отправки несколько раз без обновления. Это приведет к правильной проверке первого представления, но вы получите эту ошибку во второй форме submit (которая приходит через миллисекунды позже, используя тот же самый nonce, что и первый submit).

Отказ от формы отправки кнопки после первого щелчка решил ее для меня (см. here).

Смежные вопросы