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

如何为新的Stripe订阅设置折扣以抵扣剩余免费时长?

解决方案

完全可以通过一次性固定金额折扣+计费周期锚定的方式实现你的需求,具体步骤如下:

1. 计算剩余免费时长对应的抵扣金额

先根据剩余免费天数占月度周期的比例,算出要抵扣的金额。比如你举的例子:

  • 今日1号,免费订阅截止15号,剩余天数占当月的50%
  • 月度订阅费10美元,对应折扣金额为5美元(注意Stripe API中金额单位为分,即500分)

2. 创建一次性专属折扣券(Coupon)

在Stripe后台或通过API创建一个一次性固定金额折扣券,仅限当前用户使用:

# Python示例代码
import stripe

stripe.api_key = "你的API密钥"

coupon = stripe.Coupon.create(
    amount_off=500,  # 抵扣5美元(500分)
    currency="usd",
    duration="once",  # 仅生效一次
    name="剩余免费时长抵扣"
)

3. 创建订阅时应用折扣并锚定计费周期

创建订阅时,绑定用户、目标价格计划,同时附加折扣券,并设置billing_cycle_anchor为当前日期的时间戳,确保后续续费固定在每月1号:

subscription = stripe.Subscription.create(
    customer="用户的Stripe客户ID",
    items=[{"price": "你的月度订阅价格ID"}],
    coupon=coupon.id,
    billing_cycle_anchor=int(time.time()),  # 锚定到当前日期,次月1号自动续费
    payment_behavior="default_incomplete",  # 立即发起支付验证信用卡
    expand=["latest_invoice.payment_intent"]
)

4. 处理信用卡验证结果

通过payment_behavior="default_incomplete"配置,Stripe会立即尝试收取折扣后的5美元费用:

  • 若支付成功:订阅立即生效,后续每月1号自动扣除全额10美元
  • 若支付失败:返回支付错误,可引导用户更换支付方式,完成验证后再激活订阅

注意事项

  • 折扣金额计算要适配不同月份的天数(比如28/30/31天),避免比例误差
  • 折扣券设置为duration="once",防止用户重复使用抵扣权益
  • 如果需要批量处理,可通过API自动化计算折扣并创建订阅,减少人工操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 02:51:56