【问题标题】:Duplicate nonce in BrainTree using Dropin UI使用 Dropin UI 在 BrainTree 中复制随机数
【发布时间】:2023-03-29 10:12:01
【问题描述】:

我在沙盒中使用 Braintree 市场,但我有一个问题/疑问。
我在生成 client_token 时使用客户 ID,将 payment_nonce 保存在我的数据库中并稍后(在 3-4 分钟内)使用它来提交_for_settlement。问题是每笔交易都需要一个唯一的随机数,但如果我在 2-3 分钟内提交两次 Dropin UI,我会得到相同的随机数,第二次交易失败并出现错误:不能多次使用付款方式随机数。有没有办法确保我得到唯一的随机数? 谢谢

【问题讨论】:

    标签: braintree nonce braintree-rails


    【解决方案1】:

    不要使用相同的 nonce 创建另一个交易,而是尝试使用 transaction.submit_for_settlement 提交原始交易以进行结算

    付款方式随机数为一次性使用。要在服务器端集成中多次引用相同的父方法,您可以在保险库中创建支付方式令牌。

    一般来说,您永远不应该在数据库中存储付款方式随机数,因为它们的寿命很短且只能一次性使用。

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

    【讨论】:

    • 我只为单个事务存储随机数并且效果很好。我发现,如果我在某个时间让同一用户通过 DropinUI 流进行新事务(第二个单独的独立事务)而不是获得一个新的和不同的随机数,我会得到相同的随机数,当我去的时候并尝试解决第二个我收到上述错误的问题。我不应该假设我每次创建 DropUI 付款表单时都会获得一个新的 nonce 吗?
    • 正确。您应该假设每次运行时随机数都是不同的。
    【解决方案2】:

    如果您按照书上的所有内容进行操作,但仍然偶尔出现此错误,这可能是因为用户多次单击表单提交按钮而没有刷新。这将导致第一次提交正确完成,但您会在第二次提交表单时收到此错误(在毫秒后到达,使用与第一次提交相同的随机数)。

    第一次单击后禁用表单提交按钮为我解决了这个问题(请参阅here)。

    【讨论】:

      猜你喜欢
      • 2020-06-05
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 2020-01-28
      • 1970-01-01
      • 2015-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多