我正在开发一个测试阶段的写作工具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(低代码解决方案(上使用订阅,则可以在创建订阅时在metadata
和subscription_data.metadata
字段中添加其他键值对数据,如premium: true
。
一旦付款完成,这些元数据将出现在checkout.session.completed
和customer.subscription.updated
webhook事件中,然后您可以在自己的数据库中将用户设置为高级用户。
Stripe中的客户对象可以有多个订阅,因此此功能将在订阅对象上实现。