设置未来付款
要收集客户可之后重复使用的支付详情,请使用 Checkout 的设置模式。设置模式使用 Setup Intents API 创建 Payment Methods。
查看我们 GitHub 上完整有效的示例。
创建一个 Checkout Session客户端服务器端
在您的网站上添加一个结账按钮,调用一个服务器端点来创建 Checkout Session。
<html> <head> <title>Checkout</title> </head> <body> <form action="/create-checkout-session" method="POST"> <button type="submit">Checkout</button> </form> </body> </html>
To create a setup mode Session, use the mode
parameter with a value of setup
when creating the Session. You can optionally specify the customer parameter to automatically attach the created payment method to an existing customer. Checkout uses Dynamic payment methods by default, which requires you to pass the currency parameter when using setup
mode.
在您的客户成功 Checkout Session 后,将 {CHECKOUT_SESSION_ID}
模板变量附加到 success_url
以访问 Session ID。创建完 Checkout Session 后,将您的客户重定向到响应中返回的 URL。
检索 Checkout Session服务器端
客户成功完成 Checkout Session 后,您需要检索 Session 对象。有两种方法:
- 异步:处理
checkout.session.completed
webhooks,其中包含一个 Session 对象。了解有关设置 webhooks 的更多信息。 - 同步:当用户重定向回您的网站时,从
success_url
获取 Session ID。使用 Session ID 来检索 Session 对象。
正确的选择取决于您对离线的容忍度,因为客户在成功付款后有可能不会等到弹出 success_url
页面。他们很有可能在重定向发生之前就关闭了浏览器选项卡。处理 Webhook 可以让您的集成不容易受到这种离线的影响。
检索了 Session 对象后,获取 setup_intent
密钥的值,即 Checkout Session 期间创建的 SetupIntent 的 ID。SetupIntent 对象用于设置客户的银行账户信息以供以后使用。
checkout.session.completed
有效载荷示例:
{ "id": "evt_1Ep24XHssDVaQm2PpwS19Yt0", "object": "event", "api_version": "2019-03-14", "created": 1561420781, "data": { "object": { "id": "cs_test_MlZAaTXUMHjWZ7DcXjusJnDU4MxPalbtL5eYrmS2GKxqscDtpJq8QM0k", "object": "checkout.session", "billing_address_collection": null, "cancel_url": "https://example.com/cancel", "client_reference_id": null, "customer": "", "customer_email": null, "display_items": [], "mode": "setup", "setup_intent": "seti_1EzVO3HssDVaQm2PJjXHmLlM", "submit_type": null, "subscription": null, "success_url": "https://example.com/success" } }, "livemode": false, "pending_webhooks": 1, "request": { "id": null, "idempotency_key": null }, "type": "checkout.session.completed" }
请注意下一步中的 setup_intent
ID。
使用支付方式服务器端
如果您没有与当前客户创建 Checkout Session,那么用 payment_method
ID 将 PaymentMethod 绑定到 Customer。将 PaymentMethod 绑定到某个客户后,即可用 PaymentIntent 对 PaymentMethod 扣款。
向您的客户披露 Stripe
Stripe 收集有关客户与 Elements 互动的信息,以向您提供服务、防范欺诈并改进其服务。这包括使用 Cookie 和 IP 地址来识别客户在单次结账会话中看到的 Elements。您有责任披露并获得 Stripe 以这些方式使用数据所需的所有权利和许可。有关更多信息,请访问我们的隐私中心。