关于如何处理高级帐户、计划期限和续订的架构提示
Architecture tip on how to deal with Premium accounts, plan duration and renewal
我正在创建一个具有高级用户功能的网站。我正在考虑如何设计数据库来存储高级用户计划,以及如何检查它..
到目前为止我的主要想法是:
- 在用户 table 上有 2 个字段:
premium
(布尔值)和 expires
(日期)
- 当用户付款时,会计算计划时长,设置保费为1,到期日为时长结束
- 每次我检查是否
user->isPremium()
,它也会检查它是否已过期..如果是,将其设置回零并提供续订
- 除此之外,所有付款/交易都将记录在日志中 table 以备记录。
我觉得这是一个简单的设计,但由于这是许多网站的共同特征,所以我想问问你们专业人士是如何做到这一点的?
这可能不会对设计产生太大影响,但我将使用 Stripe 来处理付款。
我觉得不错。很简单,解决了你的问题。
提示 1:根据 premium
和 expires
字段的语义,您不需要两者。您只需更改 user->isPremium()
即可检查过期日期是否已过。确保您还更改了处理续订的方式。
提示 2:我在处理计划订阅的系统中工作,我不得不处理以下情况:
- 允许用户 renew/extend 在到期日期前订阅。
- 不同时长的不同价格。
- 折扣。
- 账单生成和付款确认之间的延迟。
- 有待付款的用户试图再次购买。
- 用户要求取消当前订阅。
希望对您有所帮助。
我正在创建一个具有高级用户功能的网站。我正在考虑如何设计数据库来存储高级用户计划,以及如何检查它..
到目前为止我的主要想法是:
- 在用户 table 上有 2 个字段:
premium
(布尔值)和expires
(日期) - 当用户付款时,会计算计划时长,设置保费为1,到期日为时长结束
- 每次我检查是否
user->isPremium()
,它也会检查它是否已过期..如果是,将其设置回零并提供续订 - 除此之外,所有付款/交易都将记录在日志中 table 以备记录。
我觉得这是一个简单的设计,但由于这是许多网站的共同特征,所以我想问问你们专业人士是如何做到这一点的?
这可能不会对设计产生太大影响,但我将使用 Stripe 来处理付款。
我觉得不错。很简单,解决了你的问题。
提示 1:根据 premium
和 expires
字段的语义,您不需要两者。您只需更改 user->isPremium()
即可检查过期日期是否已过。确保您还更改了处理续订的方式。
提示 2:我在处理计划订阅的系统中工作,我不得不处理以下情况:
- 允许用户 renew/extend 在到期日期前订阅。
- 不同时长的不同价格。
- 折扣。
- 账单生成和付款确认之间的延迟。
- 有待付款的用户试图再次购买。
- 用户要求取消当前订阅。
希望对您有所帮助。