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

如何通过Payment Intent ID创建订阅并避免重复扣费?

关联已支付Payment Intent到订阅并避免重复扣费

完全可以实现,核心思路是创建订阅时跳过自动扣费流程,再手动将已完成的Payment Intent关联到订阅的初始发票,具体操作如下:

步骤1:创建订阅时跳过当月扣费

创建订阅时,设置payment_behavior: 'default_incomplete',同时通过billing_cycle_anchor指定下一个计费周期的起始时间,这样当前周期不会生成待支付账单,订阅会处于incomplete状态,不会自动触发扣费。示例代码:

stripe.Subscription.create(
  customer="cus_你的客户ID",
  items=[{"price": "price_你的订阅价格ID"}],
  payment_behavior='default_incomplete',
  billing_cycle_anchor=1696156800, # 替换为下一个计费周期的时间戳
  expand=['latest_invoice.payment_intent']
)

步骤2:关联已完成的Payment Intent到订阅发票

拿到订阅返回结果里的latest_invoice ID,调用Invoice.pay方法并传入用户之前支付的Payment Intent ID,这样系统会把已完成的支付关联到订阅发票,标记为已支付:

stripe.Invoice.pay(
  "in_订阅生成的发票ID",
  payment_intent="pi_用户之前支付的Payment Intent ID"
)

执行完这一步,订阅会自动转为active状态,且不会再次向用户扣费,已完成的支付会被算作订阅首个周期的费用。

关键注意事项

  • 确保Payment Intent对应的客户ID和订阅的客户ID完全一致,否则无法关联。
  • 如果不需要设置自定义计费锚点,也可以用trial_end参数设置为当前周期结束时间,同样能跳过当月扣费。
  • 不要使用默认的payment_behavior: 'default',否则系统会自动创建新的Payment Intent尝试扣费,导致重复收款。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 16:05:04