我在Sandbox中使用Braintree市场,我有一个问题/疑问 我在生成client_token时使用Customer ID,将payment_nonce保存在我的数据库中,稍后(在3-4分钟内)使用submit_for_settlement。问题是每个事务需要一个唯一的随机数,但是如果我在2-3分钟内提交Dropin UI两次,我得到相同的nonce,第二个事务失败并出现错误:不能多次使用付款方法nonce。有没有办法确保我获得独特的随机数? 谢谢
答案 0 :(得分:3)
尝试使用transaction.submit_for_settlement提交原始交易以进行结算,而不是使用相同的随机数创建另一个交易
付款方式nonces是一次性使用。要在服务器端集成中多次引用相同的父方法,可以在Vault中创建支付方法令牌。
一般情况下,您不应该在数据库中存储付款方式随机数,因为它们是短暂的并且仅供一次使用。
https://developers.braintreepayments.com/ios+ruby/reference/request/transaction/submit-for-settlement https://developers.braintreepayments.com/ios+ruby/start/vault
答案 1 :(得分:0)
如果您按照本书的所有内容进行操作并且仍然偶尔会出现此错误,则可能是因为用户多次单击表单提交按钮而未刷新。这将导致第一次提交正确进行,但是您将在第二次表单提交时收到此错误(稍后使用与第一次提交相同的nonce到达毫秒)。
首次点击后停用表单提交按钮为我解决了这个问题(请参阅here)。