不进行银行验证的银行卡付款
构建一个带有区域限制的稍简单的集成。
这种集成支持仅接受美国和加拿大银行卡的企业。它的构建更简单,但无法扩展以支持全球客户群。
此集成的运作方式
欧洲和印度等地区的银行通常需要双重验证来确认购买。如果您主要在美国和加拿大开展业务,忽略 银行卡验证 可以简化您的集成,因为这些地区的银行很少要求验证。
当银行要求验证时,此基础集成会立即拒绝付款(类似于银行卡拒付),而不是处理身份验证来异步完成付款。这样做的好处是,付款会立即成功或失败,付款确认在服务器上进行,因此您无需使用 webhook 即可立即处理付款后操作。
与全球集成的比较
| 功能 | 本集成 | 全球集成 |
|---|---|---|
| 自定义支付表单 | ✔ | ✔ |
| 敏感数据永不接触您的服务器 | ✔ | ✔ |
| 适用于美国和加拿大客户 | ✔ | ✔ |
| 拒绝银行卡信息错误或银行卡资金不足的付款 | ✔ | ✔ |
| 拒绝要求银行验证的付款 | ✔ | |
| 适用于全球客户 | ✔ | |
| 自动处理需要银行验证的银行卡付款 | ✔ | |
| 建议用 Webhook 处理付款后任务 | ✔ | |
| 轻松扩展到其他支付方式(例如银行借记) | ✔ |
增长中的企业或全球性企业应使用 Stripe 的全球集成来支持银行的双重验证请求,并允许客户用更多支付方式付款。
构建结账表单客户端
Elements 是 Stripe.js 的一部分,它提供了用来从客户那里收集银行卡信息的临时 UI 组件。Stripe 托管它们并将其作为 iframe 放入您的支付表单,从而使您的客户的银行卡详情不会触及您的代码。
设置 Stripe服务器端
用官方库请求从您的应用程序访问 Stripe API:
付款服务器端
在您的服务器上设置一个端点,用以接收来自客户的请求。
Stripe 用一个 PaymentIntent 对象来表示您从客户收款的意图,跟踪扣款尝试及整个过程中付款状态的变化情况。
始终在服务器端决定扣款金额,这是一个可信的环境,客户端不行。这样可防止客户自己选择价格。
创建一个 HTTP 端点,响应第 1 步的 AJAX 请求。在此端点,应决定对客户的扣款金额。创建付款时,使用第 1 步的 PaymentMethod ID 创建一个 PaymentIntent,使用以下代码:
警告
如果您在确认付款时将 error_on_requires_action 设置为 true,则如果 Stripe 要求用户进行双重验证,则付款将自动失败。
Payment Intents API 响应
在您用 API 进行付款时,响应中会包含 PaymentIntent 的状态。如果付款成功,则它的状态变为 succeeded。
{ "id": "pi_0FdpcX589O8KAxCGR6tGNyWj", "object": "payment_intent", "amount": 1099, "charges": { "object": "list", "data": [ { "id": "ch_GA9w4aF29fYajT", "object": "charge", "amount": 1099, "refunded": false, "status": "succeeded", } ] }, "client_secret": "pi_0FdpcX589O8KAxCGR6tGNyWj_secret_e00tjcVrSv2tjjufYqPNZBKZc", "currency": "usd", "last_payment_error": null, "status": "succeeded", }
如果付款被拒绝,响应中会包含错误代码和错误消息。这里有一个由于要求对银行卡进行双重验证而付款失败的示例。
{ "error": { "code": "authentication_required", "decline_code": "authentication_not_handled", "doc_url": "https://docs.stripe.com/error-codes#authentication-required", "message": "This payment required an authentication action to complete, but `error_on_requires_action` was set. When you're ready, you can upgrade your integration to handle actions at https://stripe.com/docs/payments/payment-intents/upgrade-to-handle-actions.", "payment_intent": { "id": "pi_1G8JtxDpqHItWkFAnB32FhtI", "object": "payment_intent", "amount": 1099, "status": "requires_payment_method", "last_payment_error": { "code": "authentication_required", "decline_code": "authentication_not_handled", "doc_url": "https://docs.stripe.com/error-codes#authentication-required", "message": "This payment required an authentication action to complete, but `error_on_requires_action` was set. When you're ready, you can upgrade your integration to handle actions at https://stripe.com/docs/payments/payment-intents/upgrade-to-handle-actions.", "type": "card_error" }, }, "type": "card_error" } }
将集成升级以处理银行卡验证
基本银行卡支付集成现已完成。此集成会 拒绝支付过程中要求验证的银行卡 。
如果您开始在管理平台中看到付款列为失败,那么您需要升级您的集成。Stripe 全球集成会处理这些付款,而不会自动拒绝付款。