管理具有不同价格的多个并发订阅的计费周期的最佳方法是啥?

Posted

技术标签:

【中文标题】管理具有不同价格的多个并发订阅的计费周期的最佳方法是啥?【英文标题】:What's the best way to manage billing periods for multiple concurrent subscriptions with different prices?管理具有不同价格的多个并发订阅的计费周期的最佳方法是什么? 【发布时间】:2021-10-14 10:41:44 【问题描述】:

有一种 SAAS 能够在不同渠道上进行多个付费订阅。用户通过浮动值定期计费收费。

Channel A cost = $10/month
Channel B cost = $15/month

例如用户在 1 月 1 日订阅频道 A,他们在 2 月 1 日收费(10 美元)。然后用户在 1 月 17 日订阅 B 频道,下一次账单安排在 2 月 17 日。

我发现的一个显而易见的解决方案是建议用户支付 B 订阅的所需部分以及每月 15 美元的主要价格。

required_extra_amount = (30 - 17) * $15 / 30

因此,计费周期将与每月 1 日的常见计费日期同步。价格为 25 美元。

向用户收费最少次数的最佳方式是什么? 我将非常感谢有关该主题的任何链接。

【问题讨论】:

您是否提供自己构建的多租户 SaaS 应用程序,并且您想弄清楚如何根据用户在您的系统上的活动向他们收费,或者,您是否想传递 SaaS您向用户收取的费用?还是别的什么? 我构建了一个 SAAS 应用程序,每个客户可以同时订阅多个内容频道,总费用是价格的总和。所有的逻辑(订阅/收费)都是由我实现的,所以我对任何动作都很灵活。核心问题是如何以最佳方式同步计费周期。在理想情况下,用户应该每月只收取一次费用(了解应用程序使用的总成本会更简单)。我确信这个挑战不是唯一的并且有一个最佳的解决方案,但是我对这个主题的研究并没有带来任何有价值的结果。 【参考方案1】:

如果您想按固定周期计费,那么按pro-rata 向用户收费是显而易见的解决方案。您的代码走在了正确的轨道上 - 唯一的复杂情况是您似乎假设每月固定 30 天,这对于计费周期可能有效(?)。

我可能会这样做:

UserCharge = (DaysToBeBilled / DaysInBillingPeriod) * FullPeriodRate

如果:

DaysToBeBilled = 15 DaysInBillingPeriod = 30 FullPeriodRate = 10 美元 月费 = 5 美元 (30 / 15) * 10 = 5。

此外:

(31 / 5) * $15 = $2.42 (31 / 17) * 15 美元 = 8.22 美元 (31 / 30) * 15 美元 = 14.51 美元

DaysInBillingPeriod 只需通过一些简单的查找来设置一年中相关月份的天数,并且该算法适用于任何长度的计费期,而不仅仅是每月。

【讨论】:

以上是关于管理具有不同价格的多个并发订阅的计费周期的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

立即收取订阅更改费用

Braintree 如何更改订阅生命周期?

Stripe 定期/订阅计费最佳设计/实践?

在 Stripe 上设置自定义计费周期

Braintree API 更新订阅

使用 Recurly 快速测试定期/订阅计费