处理订阅,余额和定价计划更改
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 序言 我的目的是为多个项目创建可重用的代码(并在github上发布)以管理订阅。我了解条带化和定期计费提供商,但这不是该模块的目标。它应该只是用于计算帐户余额,轻松通知续订订阅以及处理价格计算的包装程序/帮助程序。 在某些国家/地区,您可能无法使用重复计费,因为提供商或付款方式对此支持不佳或没有支持,或者价格太高(小额付款)。而且有些人不想使用循环计费,而是手动支付账单/在年末开具发票。因此,请不要建议贝宝定期计费,递归或类似服务。 情况 假设您有一个可以订阅订阅计划的模型(例如User)。该模型具有一个字段,该字段存储当前正在订阅的订阅计划的标识符。因此,在每次计划更改时,都会记录更改。 有一个模型(例如SubscriptionPlanChanges),其中的以下字段记录了提到的更改: subscriber与订阅模型有关(User在这种情况下) from_plan 定义更改之前模型具有的计划标识符 to_plan 定义模型现在选择的计划标识符 created_at 是存储更改的日期时间字段 valid_until 存储日期,直到实际订阅有效 paid_at 也是一个日期时间字段,用于定义是否(以及何时)订阅已支付 当然,这种布局是可以讨论的。 帐户余额问题 当用户更改其订阅计划时,我需要比较计划字段,获取价格,并根据当前计划valid_until及其价格计算新计划的扣除额。说:您订购了计划A的一年,但是在6个月后,您升级到计划B,因此您可以从计划A的6个月中扣除一半的已付价格。 我想知道的是:如果某个用户(例如)切换到免费计划,那么他有一个积分,如果该用户想要再次切换,则可以扣除该积分。您会在另一个字段中缓存该值,还是每次都计算与该用户相关的所有记录?您会添加/更改有关表格布局的内容吗? 易于理解的问题 当订阅期结束时,用户会收到通知,并有可能通过再次付费来续订其订阅。最简单的方法是只更新paid_at和valid_until新的订阅选项。但是,我不确定您是否存储了某人可能需要的所有数据,例如付款/订阅历史记录。 另一个选择是为此创建一个附加记录,其中from_plan和to_plan具有相同的标识符(因此表示“无变化”)。但是这不会以某种方式干扰帐户余额的计算吗? 如果有人能为我指出有关处理此类订阅的逻辑的正确方向,我将非常感激。 更新 感谢您的帮助。我认为我的问题太模糊了,因此我将尝试通过使用较少的抽象来使其更加精确。不幸的是,我还不能解决我的问题。 案例A User可以选择Subscription Plan A。当前,此文件存储了一个SubscriptionPlanChange以进行跟踪。例如5个月后,User将其订阅升级为Subscription Plan B。因此,他为新订阅支付价格,减去未使用的7个月的方案a的价格。 案例B 3个月后,User回滚到他的Subscription Plan A。他不必付款,但会收到一笔余额,因此,在订阅结束时,他将从新订阅中扣除该余额。 案例C User可以为具有独立订阅计划的子服务选择订阅计划。相同Case A,Case B可以申请该子服务订阅。 _Case D_ 用户取消其订阅之一。这导致他的余额增加了。 我的问题(目前至少是)主要取决于如何正确存储数据,以便我可以重现订阅的历史以进行业务分析和计算余额,并根据订阅获得未付款项等。 我也不确定是否应将余额存储在例如用户模型本身中,或者是否未存储但可以根据存储的数据/历史记录随时进行计算。 需要注意一些事项,尽管我认为它们不应该引入问题: …