构建包含 Link 的自定义结账页面
用 Payment Element 或 Link Authentication Element 集成 Link。
本指南将引导您了解如何通过 Payment Intents API 和 Payment Element 或 Link Authentication Element 通过 Link 接受付款。
您可以通过三种方式针对 Link 验证和注册保护客户电子邮件地址:
- **传递电子邮件地址:**您可以使用 defaultValues 向 Payment Element 传递电子邮件地址。如果您已经在结账流程中收集了客户的邮件地址和/或电话号码,则我们建议采用这种方法。
- **收集电子邮件地址:**您可以直接在 Payment Element 中收集电子邮件地址。如果您在结账流程中的任何环节都未收集电子邮件地址,我们建议使用这种方法。
- **Link Authentication Element:**您可以用 Link Authentication Element 创建单个的邮件地址输入字段,以收集邮件地址并进行 Link 验证。如果您使用的是 Address Element,则建议您这样做。

收集客户的电子邮件地址以进行 Link 验证或注册
创建 PaymentIntent服务器端
Stripe 使用一个 PaymentIntent 对象来表示您向客户收款的意图,跟踪整个过程中的收费尝试和付款状态变化。
如果您收集银行卡详情以使用 Setup Intents 供未来使用,请手动列出支付方式,而非使用动态支付方式。要在没有动态支付方式的情况下使用 Link,请更新您的集成,将 link
传递到 payment_
。
创建 PaymentIntent 时,使用动态支付方式动态为客户提供最相关的支付方式,包括 Link。要使用动态支付方式,不要包含 payment_
参数。您也可以启用 automatic_
。
注意
当您的集成未设置 payment_
参数时,某些支付方式会自动开启,包括银行卡和钱包。
要使用动态支付方式将 Link 添加到您的 Element 集成,请执行以下操作:
- 在您的管理平台的支付方式设置中,开启 Link。
- 如果您的现有集成可手动列出支付方式,请从您的集成中删除 payment_method_types参数。
检索客户端私钥
PaymentIntent 中包含的是一个客户端私钥,用于在客户端安全地完成支付流程。有不同的方法可以将客户端私钥传递到客户端。
收集客户电子邮件地址
Link 通过客户的电子邮件地址对其进行验证。根据您的结账流程,您有以下选项:将电子邮件传递给 Payment Element、直接在 Payment Element 中收集电子邮件,或使用 Link Authentication Element。在这些选项中,Stripe 建议在客户电子邮件地址可用时将其传递给 Payment Element。
设置您的支付表单客户端
现在,您可以用 Elements 预构建的 UI 组件设置您的自定义支付表单了。支付页面上的地址也必须以 https://
开头,不能是 http://
,否则您的集成不能工作。您可以在不使用 HTTPS 的情况下测试您的集成。准备好进行真实收款时启用 HTTPS。
向 Stripe 提交付款客户端
用 stripe.confirmPayment 完成付款,使用从不同 Elements 表单收集的客户信息完成付款。为该函数提供一个 return_url,告诉 Stripe 在用户完成付款后将他们重定向到何处。
您的用户可能会先被重定向到一个中间站点,如银行授权页面,然后 Stripe 将其重定向到 return_
。
默认情况下,付款成功时,银行卡和银行付款将立即重定向到 return_
。如果不想重定向到 return_
,可以用 if_required 来更改行为。
return_
对应于您的网站上的一个页面,在您呈现返回页面时提供 PaymentIntent
的付款状态。当 Stripe 将客户重定向到 return_
时,您可以使用以下 URL 查询参数来验证付款状态。您还可以在提供 return_
时附上自己的查询参数。这些查询参数会在重定向过程中持续存在。
参数 | 描述 |
---|---|
payment_ | PaymentIntent 的唯一标识符 |
payment_ | PaymentIntent 对象的 client secret。 |
处理支付后事件服务器端
付款完成时,Stripe 会发送一个 payment_intent.succeeded 事件。用 Webhook 接收这些事件并运行操作,例如,向客户发送订单确认邮件、在数据库中记录订单,或启动配送流程。
配置您的集成来侦听这些事件,而不是等待来自客户端的回调。当您等待来自客户端的回调时,客户可能在回调执行之前关闭浏览器窗口或退出应用。通过设置您的集成来侦听异步事件,您就能够使用单一集成接受不同类型的支付方式。
除了处理 payment_
事件外,您还可以在使用 Payment Element 收款时处理另外两个重要事件:
活动 | 描述 | 操作 |
---|---|---|
payment_intent.succeeded | 在客户成功完成支付时从 Stripe 发送。 | 向客户发送订单确认通知,并履行他们的订单。 |
payment_intent.payment_failed | 在客户尝试支付但支付未成功时从 Stripe 发送。 | 如果一笔付款从 processing 变为 payment_ ,则让客户再尝试一次。 |
测试集成
注意
不要在沙盒 Link 账户中存储真实用户数据。将其视为可公开的数据,因为这些测试账户与您的公钥有关。
目前 Link 仅支持用信用卡、借记卡以及符合条件的美国银行账户进行购买。Link 需要域名注册。
您可以用任意有效的邮件地址为 Link 创建沙盒账户。下表显示的是 Stripe 接受的在验证沙盒账户时可使用的一次性固定密码值:
值 | 结果 |
---|---|
非下方所列的任意 6 位数 | 成功 |
000001 | 错误,验证码无效 |
000002 | 错误,验证码已过期 |
000003 | 错误,超过了最大尝试次数 |
要测试具体的支付方式,请参考 Payment Element 测试示例。
多个资金来源
由于 Stripe 增加了额外的资金来源支持,因此您不需要更新您的集成。Stripe 会自动为它们提供与卡和银行账户支付相同的交易结算时间和担保。
卡验证和 3DS 验证
Link 支持对银行卡付款进行 3DS 2.0 验证。3DS2 要求客户在支付时,在发卡行那里完成额外的验证步骤。成功通过 3DS 验证的付款包含在责任转移范围内。
要在沙盒中用 Link 触发 3DS 2.0 验证流程,请使用以下测试卡(可输入任意的 CVC、邮编和未来的有效期):。
在沙盒环境中,身份验证过程显示一个模拟身份验证页面。在该页面,您可以授权或取消付款。授权付款 模拟的是身份验证成功的场景,并将您重定向到指定的返回 URL。点击失败按钮会模拟验证尝试不成功的场景。
有关更多详情,请参考 3DS 验证页面。
注意
测试 3DS 流程时,只有 3DS2 的测试卡才会在 Link 上触发验证。
向您的客户披露 Stripe
Stripe 收集有关客户与 Elements 互动的信息,以向您提供服务、防范欺诈并改进其服务。这包括使用 Cookie 和 IP 地址来识别客户在单次结账会话中看到的 Elements。您有责任披露并获得 Stripe 以这些方式使用数据所需的所有权利和许可。有关更多信息,请访问我们的隐私中心。