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

如何在Stripe中实现月度订阅金额上限触发转年度订阅?

基于Stripe Subscription Schedule实现月度转年度订阅(年付费上限$30)

方案一:累计金额达标后转现有年度订阅

操作步骤

  • 创建带累计金额限制的月度订阅Schedule
    调用Stripe Subscription Schedule创建接口,初始阶段配置$2.5/月的月度计划,通过元数据记录累计金额上限($30),不限制月度阶段的迭代次数,直到触发切换条件:
    stripe.SubscriptionSchedule.create(
      customer="cus_XXX",
      start_date="now",
      phases=[
        {
          "items": [{"price": "price_monthly_2.5", "quantity": 1}],
          "iterations": None,
          "proration_behavior": "none",
          "metadata": {"cumulative_limit": 3000}  # 单位为分,对应$30
        }
      ],
      default_settings={
        "payment_behavior": "default_incomplete",
        "payment_method_types": ["card"]
      }
    )
    
  • 监听支付事件并判断累计金额
    监听Stripe的invoice.paid事件,每次用户完成月度支付后,在业务侧累加支付金额。当累计达到$30时,调用Schedule更新接口,切换到现有$30/年的年度订阅阶段:
    stripe.SubscriptionSchedule.update(
      "sub_sched_XXX",
      phases=[
        {
          "items": [{"price": "price_yearly_30", "quantity": 1}],
          "start_date": "now",
          "iterations": None,  # 后续自动按年度续费
          "proration_behavior": "none"
        }
      ],
      end_behavior="release"  # 释放Schedule,转为常规年度订阅
    )
    
  • 处理计费周期调整与用户确认
    切换前通过用户预留邮箱发送确认通知,告知即将转为年度订阅,同时将年度订阅的计费锚点设为当前日期。若用户取消确认,则终止Schedule,保留月度订阅但限制后续支付(确保累计金额不超$30)。

方案二:创建单一订阅产品,达标后调整计费锚点转为年度周期

操作步骤

  • 创建关联双阶段Schedule的新订阅产品
    新建定价为$2.5/月的月度产品,并关联年度价格$30/年。创建Schedule时设置两个阶段:第一阶段为月度计划(无迭代次数限制),第二阶段为年度计划(满足累计金额条件后自动触发):
    stripe.SubscriptionSchedule.create(
      customer="cus_XXX",
      start_date="now",
      phases=[
        {
          "items": [{"price": "price_new_monthly_2.5", "quantity": 1}],
          "iterations": None,
          "metadata": {"cumulative_limit": 3000}
        },
        {
          "items": [{"price": "price_new_yearly_30", "quantity": 1}],
          "start_date": "auto",  # 满足条件后自动启动
          "iterations": None,
          "proration_behavior": "none"
        }
      ],
      default_settings={
        "payment_behavior": "default_incomplete",
        "payment_method_types": ["card"]
      }
    )
    
  • 自动触发阶段切换并调整计费锚点
    当累计支付金额达标后,Stripe会自动切换到年度阶段。此时调用Schedule更新接口,将年度订阅的计费锚点设为当前日期,确保后续续费周期从切换日开始:
    stripe.SubscriptionSchedule.update(
      "sub_sched_XXX",
      phases=[
        {
          "items": [{"price": "price_new_yearly_30", "quantity": 1}],
          "start_date": "now",
          "billing_cycle_anchor": "now",
          "iterations": None
        }
      ]
    )
    
  • 维护单一产品体系
    该方案下用户全程关联同一个订阅产品,切换后无需跳转至其他现有产品,简化后台管理。需确保产品的月度、年度价格已正确关联,保证Schedule阶段切换的无缝性。

Subscription Schedule核心知识点(翻译自官方文档)

  • Subscription Schedule用于管理订阅的多阶段生命周期,支持自定义每个阶段的定价、计费周期、触发条件。
  • 阶段切换可通过start_date: auto结合业务侧逻辑触发,或手动调用API更新。
  • Stripe不直接提供累计支付金额统计,需在业务侧自行维护用户的支付累计数据。
  • 切换阶段时设置proration_behavior: none可避免产生 prorated 费用,确保用户不会多付。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:07:24