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

如何在Stripe checkout会话中传入已有订阅信息实现套餐升级,避免新建订阅

Stripe 已有订阅升级(不创建新订阅)的Checkout Session实现方案

Stripe Checkout 原生支持已有订阅更新模式,不需要额外传递自定义参数到前端,只需要在服务端创建Checkout Session时指定更新模式和对应订阅ID即可,实现流程如下:

  • 第一步:提前存储用户注册时生成的Stripe客户ID(customer_id)和对应免费订阅的ID(subscription_id),和你的业务用户账号绑定
  • 第二步:服务端创建Checkout Session时,指定mode为subscription_update,而不是默认创建新订阅的subscription模式
  • 第三步:在Session参数的subscription_update字段中传入要更新的订阅ID,以及差价计算规则、支付行为配置
  • 第四步:line_items字段传入你要升级到的目标付费套餐的价格ID,无需包含原有免费套餐的条目

以下是Node.js环境下的实现示例:

const stripe = require('stripe')('你的Stripe密钥');

const session = await stripe.checkout.sessions.create({
  customer: '用户对应的stripe_customer_id',
  mode: 'subscription_update',
  line_items: [
    {
      price: '目标付费套餐的price_id',
      quantity: 1,
    },
  ],
  subscription_update: {
    subscription: '要更新的已有免费订阅的subscription_id',
    // 差价规则:可选none(不补当期差价)、create_prorations(立即补当期差价)、always_invoice
    proration_behavior: 'create_prorations',
    // 支付失败时的处理逻辑,可根据业务需求调整
    payment_behavior: 'default_incomplete',
  },
  success_url: '升级成功后的跳转地址',
  cancel_url: '升级取消后的跳转地址',
});

注意事项

  • 若原有免费套餐没有绑定支付方式,Checkout会自动引导用户添加有效的支付方式并绑定到该订阅,无需额外开发
  • 如需调整升级生效时间(比如下个账单周期生效不补差价),将proration_behavior设为none即可
  • 该方案不会生成新的订阅ID,所有变更都会直接作用到你传入的原有订阅上

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:24:04