如何区分Django REST中仅高级功能的基本/高级计划用户



我正在开发一个测试阶段的写作工具SaaS,它是用NextJS、React和Django REST构建的。随着我获得了一些用户基础,我开始研究使用Stripe在混合中引入高级计划。

和大多数其他SaaS一样,我将有一个基于订阅的高级计划,该计划允许访问仅高级功能。然而,即使经过几天的研究,我仍然不知道这是如何在Django/Backend中普遍实现的。以下是我到目前为止的想法,但我不确定这是否是实现这一目标的最佳/常见方式。

  • 用户模型有一个"高级"字段,该字段为True或False

  • 每当用户点击仅高级的API调用时,Django将检查用户是否高级,以决定是否进行实际的API调用。我目前有一个"/user/me/"路由,它以API GET调用的形式返回基本用户信息。

  • 条纹支付成功后,条纹会将用户重定向到success_url。然后,我会以某种方式检测用户何时登录success_url,然后将该用户的高级字段设置为True。

我知道这不是理想的方式,因为我已经看到了很多问题/障碍:

在用户的付款停止后,我将如何将"溢价"字段设置回False

  • 如何"检测"条纹的付款以设置用户的高级字段

  • 是否应该使用Stripe客户对象来实现此功能?我将感谢任何关于我应该在哪里寻找解决方案的指导。

如果在Checkout Session(低代码解决方案(上使用订阅,则可以在创建订阅时在metadatasubscription_data.metadata字段中添加其他键值对数据,如premium: true

一旦付款完成,这些元数据将出现在checkout.session.completedcustomer.subscription.updatedwebhook事件中,然后您可以在自己的数据库中将用户设置为高级用户。

Stripe中的客户对象可以有多个订阅,因此此功能将在订阅对象上实现。

最新更新