支付过程中保存付款详情
了解如何接受付款并保存客户的付款详情以备将来购物时使用。
用 Stripe Checkout 进行快速、低代码集成,让客户保存他们的支付信息,用于未来购物时使用。
创建一个 Checkout Session客户端服务器端
在您的网站上添加一个结账按钮,调用一个服务器端点来创建 Checkout Session。
您还可以为现有客户创建 Checkout Session,从而用已知联系信息预填 Checkout 字段,并统一该客户的购买记录。
<html> <head> <title>Buy cool new product</title> </head> <body> <!-- Use action="/create-checkout-session.php" if your server is PHP based. --> <form action="/create-checkout-session" method="POST"> <button type="submit">Checkout</button> </form> </body> </html>
Checkout Session 是客户被重定向到支付表单时所看到的内容的程序化展示。可通过多种选项对它进行配置,例如:
- 要扣款的 Line items
- 可用货币
您必须在 success_
填充您的网站上某个页面的 URL 值(Checkout 在客户完成付款后会将其返回到此页面)。还可以选择提供您网站上某个页面的 cancel_
值(如果客户在完成前终止付款流程,Checkout 会将其返回到此页面)。
注意
Checkout Sessions 默认在创建后 24 小时后过期。
创建完 Checkout Session 后,将您的客户重定向到响应中返回的 URL。
支付方式
默认情况下,Stripe 支持银行卡及其他主流支付方式。您可以在 Stripe 管理平台中开启或关闭个别支付方式。在 Checkout 中,Stripe 评估货币和任何限制,然后动态向客户显示支持的支付方式。
要查看您如何向客户显示支付方式,请在管理平台中输入交易 ID 或设置订单金额和货币。
您可以在您的支付方式设置中启用 Apple Pay 和 Google Pay。默认情况下,Apple Pay 处于启用状态,Google Pay 处于禁用状态。但在某些情况下,即使已启用这些功能,Stripe 仍会将其过滤。如果您启用自动计税但未收集收货地址,我们将过滤 Google Pay。
Checkout 的 Stripe 托管页面不需要修改集成即可启用 Apple Pay 或 Google Pay。Stripe 处理这些付款的方式与处理其他银行卡付款的方式完全一样。
确认您的端点
启动您的网页服务器(例如 localhost:4242
)并运行下列指令,以确认您的端点:
curl -X POST -is "http://localhost:4242/create-checkout-session" -d ""
在您的终端应该会看到类似于下面的响应:
HTTP/1.1 303 See Other Location: https://checkout.stripe.com/c/pay/cs_test_... ...
测试
现在,您的结账按钮应该可以使用了,能够将客户重定向到 Stripe Checkout。
- 点击结账按钮。
- 您会被重定向到 Stripe Checkout 支付表单。
如果您的集成不能用:
- 打开浏览器开发人员工具上的 Network 面板。
- 点击结账按钮,确认它向您的服务器端点 (
POST /create-checkout-session
) 发送了 XHR 请求。 - 验证该请求是否返回状态码 200。
- 用按钮点击监听器内的
console.
确认返回的数据是否正确。log(session)
有关配置和测试您的托管 Checkout 集成应用的更多信息,请查看接受付款。
保存支付方式服务器端
设置完您的托管 Checkout 集成应用后,为您的集成应用选择一个配置,以保存客户所用的支付方式。
默认情况下,用 Checkout 进行一次性付款时所使用的支付方式将来不能再使用。
保存支付方式,以在会话外扣款
通过传递 payment_intent_data.setup_future_usage 实参可以对 Checkout 进行设置,使其保存用于进行一次性付款的支付方式。在您需要捕捉填写的支付方式以便收取滞后费用时(例如取消或未到场费用),这样做非常有帮助。
如果您在 subscription
模式下使用 Checkout, Stripe 会自动保存该支付方式,用来完成今后的付款。使用 setup_
或 subscription
模式为客户保存的银行卡支付方式在复购时不会在 Checkout 中显示(详见下文)。建议使用自定义文本链接到有关使用保存的支付信息的任何相关条款。
注意
全球隐私法非常复杂、微妙。建议在实施 setup_future_usage 之前咨询您的法律和隐私团队,因为这可能会影响您的隐私合规框架。参考欧洲数据保护委员会发布的指导意见,了解有关保存支付详情的更多信息。
保存支付方式,以在 Checkout 中预先填充
默认情况下,Checkout 使用 Link 为您的客户提供安全地保存和重复使用其支付信息的选项。如果您更喜欢自己管理支付方式,请在创建 Checkout Session 时使用 saved_payment_method_options.payment_method_save,让客户保存他们的支付方式,以备将来购物时在 Checkout 中使用。
在 payment 或 subscription 模式下传递此参数会显示一个可选复选框,让客户显式保存其支付方式以备将来购买时使用。当客户选中此复选框时,Checkout 会使用 allow_redisplay: always 保存支付方式。Checkout 使用该参数来确定将来的购物中是否可以预先填充支付方式。使用 saved_
时,您无需传入 setup_
来保存支付方式。
使用 saved_payment_method_options.payment_method_save 时要求提供 Customer
。要保存新客户,请将 Checkout Session 的 customer_creation 设置为 always
。否则,会话过程中不会保存客户或支付方式。
如果未传入 payment_
或客户不同意保存支付方式,Checkout 仍会保存在 subscription
模式下或使用 setup_
创建的支付方式。这些支付方式的 allow_
值为 limited
,这可以防止在退货时预先填充它们,并使您遵守卡组织的规则和数据保护法规。了解如何更改这些模式启用的默认行为以及如何更改或覆盖 allow_
行为。
注意
您可以使用 Checkout 保存银行卡和其他支付方式来进行会话外收款,但 Checkout 仅预填充已保存的银行卡信息。了解如何预填充保存的银行卡信息。要在不进行初始付款的情况下保存支付方式,请在设置模式下使用 Checkout。