architecture - 管理具有不同价格的多个并发订阅的计费周期的最佳方法是什么?
问题描述
有一个 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 美元。
向用户收费最少次数的最佳方式是什么?我将非常感谢有关该主题的任何链接。
解决方案
如果您想按固定周期计费,那么按比例向用户收费是显而易见的解决方案。您的代码走在了正确的轨道上——唯一的复杂之处是您似乎假设每月固定 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 只需通过一些简单的查找来设置一年中相关月份的天数,并且该算法适用于任何长度的计费期,而不仅仅是每月。
推荐阅读
- javascript - 如何在selenium javascript中遍历具有特定类名的元素
- ruby-on-rails - 不能用 PostgreSQL 查询超过 100 个 ID
- css - 文本字段的模糊背景(顺风或纯 css)
- mysql - 如何将字符添加到mysql中的字符串中的指定位置?
- c# - C# 使用预先不知道类型的数据库
- python - 在保持颜色名称的同时更改 matplotlib 默认颜色
- tensorflow - 错误:没有注册 OpKernel 以支持节点 DepthToSpace 使用的 Op 'DepthToSpace'
- javascript - 将所有相同的 vendorID 合并到一个对象中,并将相应的 productID 合并到 products 数组中
- amazon-web-services - Cloudwatch 代理配置文件指标 - 未显示其他 EBS 卷磁盘/分区挂载
- html - 关于CSS中水平滚动的问题
段落 html