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

Stripe: Update subscription or cancel and create new one?

我们有一种产品有 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,另一个告诉我需要附加新的订阅。我很困惑。

你在这里描述的方式,更新到 upgrade the subscription makes more sense to me. Pay careful attention to the intended proration behaviour (do you want to credit the time left on the current plan) and whether you want to shift the billing period

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

大部分时间做您所做的事情不会出现任何特定障碍,但 Customer Portal 对每个产品每个时间间隔强制执行一个价格。如果“相同产品”有两个年度价格但金额不同,为什么会有人支付更高的价格?这是因为他们支付的是不同的东西,不同的产品。