【问题标题】:best way to handle stripe subscription upgrade and downgrade处理条带订阅升级和降级的最佳方式
【发布时间】:2021-09-15 13:51:46
【问题描述】:

我在文档中读到,条带只有一个用于升级和降级订阅更新的 api。

我有 2 个用户订阅的产品,BasicPlus,都是付费的。当我从 Basic 升级到 Plus 时,我执行以下操作:

  • 为用户订阅其他产品。
  • 从订阅中删除之前的产品。

这意味着在某个时候,用户在一次订阅中订阅了两种产品。最好的处理方法是什么?

现在如果用户降级,我的业务逻辑是不要立即取消当前订阅。例如,如果用户想从 Plus 转到 Basic。基础版将在 Plus 完成后开始。 以下是我目前的处理方式:

  • 使用属性cancel_at_period_end: true 取消当前订阅
  • 使用trial period 开始下一个订阅,因此在当前订阅结束后向用户收费

现在这整个 senerio 对我来说很奇怪。使用条带的更新 api 处理我的升级/降级的最佳方法是什么。我正在使用NodeJs

提前谢谢你

【问题讨论】:

  • 只是为了确保我正确理解您的用例 - 听起来您想更新订阅但不想从 Plus 切换 -> Basic(反之亦然),直到结算周期结束?
  • @karbi,当有人降级时,我不想切换,直到计费周期结束。但是当有人更新时,我想立即发生。

标签: stripe-payments


【解决方案1】:

客户无需拥有两个单独的订阅 - 您可以通过一个订阅来管理这一点,该订阅会根据升级或降级以不同的方式进行更新。

降级 为订阅创建订阅计划,这将允许您计划将来对订阅的更改。时间表可能会变得非常复杂,因此我强烈建议您阅读所有 Stripe 的 documentation 并浏览一下时间表 API ref。在当前计费周期结束时如何更改订阅价格的一般流程如下:

  1. 从现有订阅生成订阅计划(请参阅example
  2. 使用订阅计划和update it 添加一个附加阶段(传递到phases)。您将在更新请求期间分两个阶段传递 - 第一个阶段应该是订阅计划中现有的当前阶段,第二个阶段应该表示订阅一旦通过设置 phases[1][iterations]: 1phases[1][items][0][price] 和 @ 降级后987654332@.

升级 Stripe 的文档已经有很好的例子来说明如何做到这一点here。快速总结一下,您需要检索 Subscription,获取要更改的项目的 Subscription Item ID,并通过将 items[0].id 设置为您检索到的 ID 并将 items[0].price 设置为新的价格。根据您是否需要按比例分配,您还可以设置proration_behavior

【讨论】:

  • 感谢您的详细解答。如果升级时我有计划怎么办?
  • 这取决于您想要的行为 - 如果您想升级用户但他们已经有计划,您可以发布计划 (stripe.com/docs/api/subscription_schedules/release) 以取消未来的降级。
猜你喜欢
  • 2015-09-03
  • 2015-05-19
  • 2017-09-15
  • 2020-11-18
  • 1970-01-01
  • 2022-01-26
  • 1970-01-01
  • 1970-01-01
  • 2011-07-24
相关资源
最近更新 更多