我正在使用 Stripe 开发信用卡支付工作流程,并且在 3ds2 中遇到一些问题。我试图让 Backend 处理大部分任务(管理 PaymentMethod、创建和确认 PaymentIntent...),并提供 API 供移动 APP 使用。
在目前的设计中,手机APP端会根据用户输入的卡详细信息生成PaymentMethod,并调用一些API将
pm_id
发送到后端附加给客户(因此用户不需要输入他们的卡信息)每次付款时的卡信息)。当用户想要付款时,他们只需单击移动应用程序中的按钮,后端就会创建一个 PaymentIntent 向客户收费。
在理想情况下,PaymentIntent的创建和确认将由Backend处理。但现在后端也需要支持3D认证,这需要手机APP端的集成。
对于 3DS1 我认为这很简单,当 Web hook 收到
payment_intent.requires_action
时,后端只需发送 API 响应中的 three_d_secure_redirect
链接即可将用户引导至网页。 PaymentIntent 应包含这部分:
"next_action": {
"type": "use_stripe_sdk",
"use_stripe_sdk": {
"source": "...",
"stripe_js": "https://hooks.stripe.com/redirect/authenticate/...",
"type": "three_d_secure_redirect"
}
},
但是对于 3DS2 我有点困惑,因为我找不到关于 APP 端应如何处理 PaymentIntent 对象中的信息的明确文档,如下所示:
{
"next_action": {
"type": "use_stripe_sdk",
"use_stripe_sdk": {
"directory_server_encryption": {
"algorithm": "RSA",
"certificate": "...",
"directory_server_id": "A000000003",
"root_certificate_authorities": [
"..."
]
},
"directory_server_name": "visa",
"merchant": "...",
"one_click_authn": null,
"server_transaction_id": "...",
"three_d_secure_2_source": "...",
"three_ds_method_url": "",
"three_ds_optimizations": "kf",
"type": "stripe_3ds2_fingerprint"
}
}
}
我的问题是,有没有办法让移动应用程序(Android 和 IOS)可以根据上述信息生成 3DS2 视图?我应该参考哪些文档。谢谢。
我找到了一些资源(https://www.youtube.com/watch?v=NOceh42ZNEY&t=1s),但大多数都是关于如何让APP端处理大部分支付流程,比如创建PaymentIntent。但我想让后端处理大部分流程,所以APP端不需要直接与Stripe集成,只需要调用API来处理支付即可。
建议的集成路径是让我们的前端 SDK(例如 Stripe.js)为您处理 3DS 挑战流程。但是,如果您希望自己手动处理重定向,则应在付款意向创建或确认时传递
return_url
参数。然后,响应应包含一个您可以在有效负载中重定向到的 URL,类似于:
next_action: {
type: 'redirect_to_url',
redirect_to_url: {
url: 'https://hooks.stripe.com/...',
return_url: 'https://x.x'
}
}