You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建Stripe checkout会话时如何保存客户付款方式以供后续使用?

解决方案

你不需要切换到mode=setup,在mode=payment的Checkout Session中直接添加参数即可实现「完成本次收款的同时保存客户付款方式」的需求,操作如下:

核心修改

在创建Checkout Session的参数中新增payment_intent_data.setup_future_usage字段,可选值为on_session或off_session:

  • on_session:适合后续付款需要客户在场确认的场景
  • off_session:适合后续可以无需客户在场直接自动扣款的场景
    修改后的代码示例:
await stripe.checkout.sessions.create({
      line_items: [
        {
          price_data: {
            unit_amount: 433,
            currency: "usd",
            product_data: {
              name: ""
            }
          },
          quantity: 1,
        }
      ],
      cancel_url: "",
      success_url: "",
      customer: customerID,
      mode: STRIPE_SESSION_MODE.PAYMENT,
      payment_method_types: ["card"],
      // 新增这一段即可
      payment_intent_data: {
        setup_future_usage: "off_session" // 按你的业务需求替换对应值即可
      }
    });

后续获取保存的付款方式

当客户完成支付后,该付款方式会自动关联到你传入的customerID对应的Stripe客户账户下,你可以通过两种方式拿到付款方式ID:

  1. 在success_url跳转时携带Checkout Session ID,调用Stripe接口查询Session详情,从关联的Payment Intent中获取payment_method字段值
  2. 配置webhook监听checkout.session.completed事件,直接从事件返回数据中提取已保存的付款方式ID

注意事项

  • 你代码中已经传入了customer参数,这是保存付款方式的必要前提,不需要额外调整
  • 传入上述参数后,Stripe支付表单会自动向客户展示「保存付款方式用于后续交易」的相关提示,符合合规要求

内容的提问来源于stack exchange,提问作者markWanka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 09:45:02