如何使用 dropin UI 和 3DS2 订阅 braintree?

How to make a braintree subscription with dropin UI and 3DS2?

我想使用插件创建订阅页面 UI。

客户端: 我完成了客户端。我已经实施了 Drop-in UI,并且我获得了付款随机数。

服务器端: 在服务器端,我从客户端收到了随机数,但我无法使用该随机数创建订阅(我收到了一种未加密的付款方式)。我需要用这个随机数创建一个支付方式。在此之后,随机数被消耗,所以我需要另一个具有 3DS 安全的随机数(用于创建订阅)。

从他们的文档中我了解到我需要创建第二个随机数(支付方式随机数)并再次发送给客户进行验证。我没有找到此验证的任何样本...

问题是我如何获得创建订阅所需的第二个随机数?

刚刚查看了 3DS + subscriptions 的文档,我可以看出哪里有混淆。您需要切换到 Hosted Fields,而不是 Drop-In。

这是因为您需要执行以下工作流程,Drop-In 不支持该工作流程:

  1. 从保险支付方式令牌(服务器端)生成支付方式随机数
  2. Verify 在您的客户端中使用 3D Secure 的随机数。成功的结果将有一个新的支付方式随机数,其中包含 3D 安全数据。 (在客户端)
  3. Subscription.create() 调用中使用生成的 3D Secure enriched nonce。

3D Secure 是一个复杂的工作流程,如果您对实施此特定工作流程还有其他问题,contact Support

插件 UI 生成一个 nonce,但此 nonce 与保险支付方式相关联,仅当您提供 customer_id 当你生成 client_token 时。通过这种方式,您可以获得可以在 gateway.subscription.create.

中使用的反弹

步骤总结如下:

  1. (服务器)创建没有支付方式的客户

  2. (server) 从步骤 1

    使用 customer_id 生成 client_token
  3. (客户端) 使用步骤 2

    中的客户端令牌生成插件 UI
  4. (客户端)当最终用户添加他的支付详细信息时,插入生成一个与已经入库的支付方式相关联的随机数

  5. (server) 使用步骤 4

    中的随机数调用 subscription.create

    gateway.subscription.create({ “payment_method_nonce”:clientNonce, “plan_id”:计划编号, “merchant_account_id”:merchantAccountId })