如何使用 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 不支持该工作流程:
- 从保险支付方式令牌(服务器端)生成支付方式随机数
- Verify 在您的客户端中使用 3D Secure 的随机数。成功的结果将有一个新的支付方式随机数,其中包含 3D 安全数据。 (在客户端)
- 在 Subscription.create() 调用中使用生成的 3D Secure enriched nonce。
3D Secure 是一个复杂的工作流程,如果您对实施此特定工作流程还有其他问题,contact Support
插件 UI 生成一个 nonce,但此 nonce 与保险支付方式相关联,仅当您提供 customer_id 当你生成 client_token 时。通过这种方式,您可以获得可以在 gateway.subscription.create.
中使用的反弹
步骤总结如下:
(服务器)创建没有支付方式的客户
(server) 从步骤 1
使用 customer_id 生成 client_token
(客户端) 使用步骤 2
中的客户端令牌生成插件 UI
(客户端)当最终用户添加他的支付详细信息时,插入生成一个与已经入库的支付方式相关联的随机数
(server) 使用步骤 4
中的随机数调用 subscription.create
gateway.subscription.create({
“payment_method_nonce”:clientNonce,
“plan_id”:计划编号,
“merchant_account_id”:merchantAccountId
})
我想使用插件创建订阅页面 UI。
客户端: 我完成了客户端。我已经实施了 Drop-in UI,并且我获得了付款随机数。
服务器端: 在服务器端,我从客户端收到了随机数,但我无法使用该随机数创建订阅(我收到了一种未加密的付款方式)。我需要用这个随机数创建一个支付方式。在此之后,随机数被消耗,所以我需要另一个具有 3DS 安全的随机数(用于创建订阅)。
从他们的文档中我了解到我需要创建第二个随机数(支付方式随机数)并再次发送给客户进行验证。我没有找到此验证的任何样本...
问题是我如何获得创建订阅所需的第二个随机数?
刚刚查看了 3DS + subscriptions 的文档,我可以看出哪里有混淆。您需要切换到 Hosted Fields,而不是 Drop-In。
这是因为您需要执行以下工作流程,Drop-In 不支持该工作流程:
- 从保险支付方式令牌(服务器端)生成支付方式随机数
- Verify 在您的客户端中使用 3D Secure 的随机数。成功的结果将有一个新的支付方式随机数,其中包含 3D 安全数据。 (在客户端)
- 在 Subscription.create() 调用中使用生成的 3D Secure enriched nonce。
3D Secure 是一个复杂的工作流程,如果您对实施此特定工作流程还有其他问题,contact Support
插件 UI 生成一个 nonce,但此 nonce 与保险支付方式相关联,仅当您提供 customer_id 当你生成 client_token 时。通过这种方式,您可以获得可以在 gateway.subscription.create.
中使用的反弹步骤总结如下:
(服务器)创建没有支付方式的客户
(server) 从步骤 1
使用 customer_id 生成 client_token(客户端) 使用步骤 2
中的客户端令牌生成插件 UI(客户端)当最终用户添加他的支付详细信息时,插入生成一个与已经入库的支付方式相关联的随机数
(server) 使用步骤 4
中的随机数调用 subscription.creategateway.subscription.create({ “payment_method_nonce”:clientNonce, “plan_id”:计划编号, “merchant_account_id”:merchantAccountId })