Stripe:更新订阅还是取消并创建新订阅?

Posted

技术标签:

【中文标题】Stripe:更新订阅还是取消并创建新订阅?【英文标题】:Stripe: Update subscription or cancel and create new one? 【发布时间】:2021-10-24 20:21:06 【问题描述】:

我们有一种产品有 4 种不同的价格(基本款、中间款等)。假设用户购买了基本套餐(支付会话是在创建支付完成订阅后创建的),但过了一段时间,用户决定更改他的套餐并升级到高级套餐。在那种情况下我应该使用更新订阅吗?

这实际上是从 X$ 更新到 Y$ 包

var service = new SubscriptionService();
Subscription subscription = service.Get("sub_49ty4767H20z6a");

var items = new List<SubscriptionItemOptions> 
    new SubscriptionItemOptions 
        Id = subscription.Items.Data[0].Id,
        Price = "price_CBb6IXqvTLXp3f",
    ,
;

var options = new SubscriptionUpdateOptions 
  CancelAtPeriodEnd = false,
  ProrationBehavior = "create_prorations",
  Items = items,
;
subscription = service.Update("sub_49ty4767H20z6a", options);

或者只是取消当前订阅并创建新订阅?我为什么要问这个,因为我和 Stripe 的支持人员聊天,得到了两个不同的答案。其中一个告诉我我需要使用 update_subscripton,另一个告诉我需要附加新订阅。我很困惑。

【问题讨论】:

【参考方案1】:

你在这里描述的方式,upgrade the subscription 的更新对我来说更有意义。仔细注意预期的proration 行为(是否要记入当前计划剩余的时间)以及是否要shift the billing period。

我还要指出,您应该考虑切换到单独的产品。产品是您销售的单一商品/服务,而价格代表不同的计费间隔和货币。如果您想象某些服务具有白银级、黄金级和白金级访问级别,那么它们中的每一个都是不同的产品——它们具有更多功能! Product 也是发票上显示的内容。因此,除非您使用单独的产品,否则发票将与支付的费用无法区分。

大多数情况下,您所做的事情并不会带来任何特定的障碍,但Customer Portal 会在每个时间间隔对每个产品强制执行一个价格。如果您对“相同产品”有两个年度价格但数量不同,为什么有人会支付更高的价格?这是因为他们为不同的东西、不同的产品付费。

【讨论】:

以上是关于Stripe:更新订阅还是取消并创建新订阅?的主要内容,如果未能解决你的问题,请参考以下文章

如何取消 Stripe 计划中的所有订阅?

Stripe:n 次付款后过期/取消订阅

Stripe API 订阅

Stripe:如何更新通过订阅结帐会话创建的发票?

订阅取消后 Stripe API 退款

如何在Stripe PHP和webhook中使用好事件,比较收到的付款数量并取消订阅