调至内容部分
创建账户或登录
Stripe 文档徽标
/
询问人工智能
创建账户登录
开始
付款
销售收入
平台和交易市场
资金管理
开发人员资源
API 和 SDK帮助
概览
关于 Stripe 支付
升级您的集成
支付分析
线上付款
概览查找您的用例Use Managed Payments
使用 Payment Link
Use a prebuilt checkout page
    概览
    Quickstart guides
    Checkout 的运作机制
    自定义外观样式
    收集额外信息
    收税
    动态更新结账流程
    管理产品目录
    订阅
    管理支付方式
    让客户用本地货币支付
    添加折扣、追加销售和可选商品
    设置未来付款
    支付过程中保存付款详情
    付款后
      履行订单
      发送收据和已付账单
      自定义重定向行为
      恢复废弃的购物车
      分析转化漏斗
      在 Embedded Checkout 中跟踪分析事件
    从传统 Checkout 迁移
    迁移 Checkout 来使用 Prices
Build a custom integration with Elements
构建应用内集成
线下支付
Terminal
支付方式
添加支付方式
管理支付方式
用 Link 更快结账
支付场景
处理多种货币
自定义支付流程
灵活收单
编排
超越支付功能
成立公司
加密货币
智能体商务 (Agentic Commerce)
Financial Connections
Climate
了解欺诈
Radar 欺诈保护
管理争议
验证身份
美国
简体中文
首页付款Use a prebuilt checkout pageAfter the payment

自定义重定向行为

显示包含客户订单信息的确认页面。

如果您的 Checkout 集成使用的是嵌入式表单,那么您可以自定义 Stripe 如何在客户完成付款后对客户进行重定向以及是否进行重定向。您可以让 Stripe 始终重定向客户,仅重定向某些支付方式,或完全禁用重定向。

设置重定向,在 return_url 参数中指定返回页面。

或者,您可以:

  • 仅当支付方式要求时才重定向客户(例如,基于借记方式的银行授权页面)。
  • 不使用返回页面并禁用基于重定向的支付方式。

履行需要 Webhook

由于客户并不能保证一定会访问您的 Checkout 登录页面,因此您不能只依赖通过此页面触发履行。例如,客户支付成功后,可能会在登录页面加载完成前就失去了与互联网的连接。

设置 Webhook 事件处理程序,由此 Stripe 可以完全绕过客户端,直接向您的服务器发送支付事件。Webhook 提供了最可靠的收款确认方式。如果 Webhook 事件发送失败,Stripe 会重试多次。

将客户重定向到返回页面

创建 Checkout Session 时,在 return_url 参数 中指定返回页面的 URL。在 URL 中包含 {CHECKOUT_SESSION_ID} 模板变量。当 Checkout 重定向客户时,它会用实际的 Checkout Session ID 替换该变量。呈现您的返回页面时,用 URL 中的 Checkout Session ID 检索 Checkout Session 的状态。

server.js
app.get('/session_status', async (req, res) => { const session = await stripe.checkout.sessions.retrieve(req.query.session_id); const customer = await stripe.customers.retrieve(session.customer); res.send({ status: session.status, payment_status: session.payment_status, customer_email: customer.email }); });

根据会话状态处理结果,如下所示:

  • complete:支付成功。使用来自 Checkout Session 的信息来呈现成功页面。
  • open:支付失败或已取消。重新加载 Checkout,以便客户重试。
client.js
const session = await fetch(`/session_status?session_id=${session_id}`) if (session.status == 'open') { // Remount embedded Checkout else if (session.status == 'complete') { // Show success page // Optionally use session.payment_status or session.customer_email // to customize the success page }

基于重定向的支付方式

支付过程中,某些支付方式会将客户重定向到一个中间页面,例如银行授权页面。完成该页面上的操作后,Stripe 会将他们重定向到您的返回页面。

仅对基于重定向的支付方式使用重定向

在完成不需要重定向的付款后,如果您不想对客户进行重定,可将 redirect_on_completion 设置为 if_required。这样的话,只会对使用基于重定向的支付方式的客户进行重定向。

对于银行卡付款,Checkout 会呈现默认的成功状态,而非重定向。要使用您自己的成功状态,传递一个 onComplete 回调来使用您自己的成功状态,该回调会销毁 Checkout 实例并呈现您的自定义成功状态。

当 Checkout Session 成功完成或发送 checkout.session.completed Webhook 事件时,调用 onComplete。

return.js
const stripe = Stripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
); initialize(); async function initialize() { const fetchClientSecret = async () => { const response = await fetch("/create-checkout-session", { method: "POST", }); const { clientSecret } = await response.json(); return clientSecret; }; // Example `onComplete` callback const handleComplete = async function() { // Destroy Checkout instance checkout.destroy() // Retrieve details from server (which loads Checkout Session) const details = await retrievePurchaseDetails(); // Show custom purchase summary showPurchaseSummary(details); } const checkout = await stripe.initEmbeddedCheckout({ fetchClientSecret, onComplete: handleComplete }); checkout.mount('#checkout'); }

禁用基于重定向的支付方式

如果您不想创建返回页面,请创建您的 Checkout Session,将 redirect_on_completion 设置为 never。

这将禁用基于重定向的支付方式:

  • 如果您使用动态支付方式,您仍然可以从管理平台管理支付方式,但需要重定向的支付方式不适用。
  • 如果您使用 payment_method_types 手动指定支付方式,请不要包含任何基于重定向的支付方式。

设置 redirect_on_completion: never 会去除 return_url 要求。对于这些会话,Checkout 会呈现默认的成功状态,而非重定向。您可以通过传递一个 onComplete 回调来使用您自己的成功状态,该回调会销毁 Checkout 实例并呈现您的自定义成功状态。

当 Checkout Session 成功完成或发送 checkout.session.completed Webhook 事件时,调用 onComplete。

return.js
const stripe = Stripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
); initialize(); async function initialize() { const fetchClientSecret = async () => { const response = await fetch("/create-checkout-session", { method: "POST", }); const { clientSecret } = await response.json(); return clientSecret; }; // Example `onComplete` callback const handleComplete = async function() { // Destroy Checkout instance checkout.destroy() // Retrieve details from server (which loads Checkout Session) const details = await retrievePurchaseDetails(); // Show custom purchase summary showPurchaseSummary(details); } const checkout = await stripe.initEmbeddedCheckout({ fetchClientSecret, onComplete: handleComplete }); checkout.mount('#checkout'); }
此页面的内容有帮助吗?
是否
  • 需要帮助?联系支持。
  • 查看我们的更改日志。
  • 有问题?联系销售。
  • LLM? Read llms.txt.
  • Powered by Markdoc