调至内容部分
创建账户
或
登录
Stripe 文档徽标
/
询问人工智能
创建账户
登录
开始
付款
财务自动化
平台和交易市场
资金管理
开发人员工具
开始
付款
财务自动化
开始
付款
财务自动化
平台和交易市场
资金管理
概览
关于 Stripe 支付
升级您的集成
支付分析
线上付款
概览查找您的用例Managed Payments
使用 Payment Link
构建结账页面
    概览
    快速开始
    自定义外观样式
    收集额外信息
    收税
    动态更新结账流程
    管理产品目录
    订阅
    管理支付方式
    让客户用本地货币支付
    添加折扣、追加销售和可选商品
    设置未来付款
    支付过程中保存付款详情
    Manually approve payments on your server
    付款后
      履行订单
      发送收据和已付账单
      自定义重定向行为
      恢复废弃的购物车
      分析转化漏斗
    具有 Checkout Sessions API Beta 更改日志的 Element
    从传统 Checkout 迁移
    迁移 Checkout 来使用 Prices
构建高级集成
构建应用内集成
支付方式
添加支付方式
管理支付方式
用 Link 更快结账
支付接口
Payment Links
结账
Web Elements
应用内 Element
支付场景
自定义支付流程
灵活收单
编排
线下支付
Terminal
其他 Stripe 产品
Financial Connections
加密货币
Climate
首页付款Build a checkout pageAfter the payment

自定义重定向行为

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

复制页面

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

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

或者,您可以:

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

将客户重定向到返回页面

创建 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