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

Stripe Checkout能否创建不自动续费的订阅产品?

问题

我用React和Firebase搭建了一款应用,还集成了「Run Payments with Stripe」Firebase扩展,通过Stripe Checkout售卖24小时服务使用许可。

目前产品在Stripe里设为「一次性」收费,但有两个问题:

  • Stripe在Firestore的payments集合创建的文档里没有激活状态和周期结束时间(买订阅时,Stripe会自动在subscriptions集合的文档里添加激活信息)。
  • 没有额外代码和Firestore读写操作的话,用户没法提前取消激活期,也很难实现续期功能。

我想把产品设为「每日循环计费」模式,但不想实际产生续费。想问下Stripe里能不能创建不自动续费的订阅产品?(可以通过Stripe后台设置或者创建Checkout会话时传参数实现)

解决方案

完全可以创建不自动续费的订阅产品,两种实现方式:

1. Stripe后台设置

  • 先在Stripe后台创建一个订阅型产品,定价设置为「每日循环」。
  • 进入定价详情页,找到「订阅设置」,开启「一次性计费(不自动续费)」选项。这样用户购买后只会被扣一次费,订阅到期后不会自动续订。

2. 创建Checkout会话时传参数

如果不想修改后台产品设置,也可以在调用Stripe API创建Checkout会话时,通过参数强制关闭自动续费:

  • 在创建会话的line_items对应项中,添加subscription_data字段并设置cancel_at_period_end: true。这样订阅创建后就会被标记为到期不续订,用户只会被收取一次费用。
  • 示例代码片段:
const session = await stripe.checkout.sessions.create({
  payment_method_types: ['card'],
  line_items: [
    {
      price: '你的订阅定价ID',
      quantity: 1,
    },
  ],
  mode: 'subscription',
  subscription_data: {
    cancel_at_period_end: true, // 关键参数:到期自动取消,不触发续费
  },
  success_url: '你的成功跳转地址',
  cancel_url: '你的取消跳转地址',
});

额外说明

采用这种订阅模式后,Firebase扩展会自动在subscriptions集合生成包含激活状态、周期结束时间的文档,刚好能解决你之前遇到的问题:

  • 可直接从subscriptions文档获取激活状态和到期时间,无需额外处理payments集合。
  • 提前取消激活期可通过调用Stripe API的stripe.subscriptions.update()设置cancel_at_period_end: true实现;续期则只需创建新的Checkout会话让用户再次购买,扩展会自动更新或新增订阅文档。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 21:57:20