我构建了一个 SaaS 解决方案,目前可以免费使用。我刚刚开始为用户提供按月或按年升级和付费的能力。
我想卸下所有“困难”的事情,这样我就可以专注于打造一个好的产品。我所说的“困难”是指支付处理、后端管理功能、计费分析、PCI 合规性等。
我使用 ChargeBee 并以 Stripe 作为网关。
但是,我不确定如何构建应用程序。我是一名全栈开发人员,但我知道我的架构知识是有限的,我不想通过构建一个糟糕的解决方案来把自己逼到绝境。
注册过程将是这样的:
现在我的主要问题是:
我没有发现始终通过 ping ChargeBee 返回订阅信息有问题,但话又说回来,这是“正确”的做法吗?如果是这样,我应该在用户登录时缓存 ChargeBee 信息吗?
谢谢, 乔
我没有发现始终通过 ping ChargeBee 返回订阅信息有问题,但话又说回来,这是“正确”的做法吗?如果是这样,我应该在用户登录时缓存 ChargeBee 信息吗?
我认为这里没有正确的答案。但请注意,Chargebee 每分钟有 150 次 API 调用限制。缓存可能是错误的来源,因此如果您可以选择的话,我更愿意直接查询 Chargebee。
首先,请注意,我创立了 Cheddar,它是 ChargeBee 的竞争对手。
恭喜您决定使用订阅管理服务提供商。通常,人们会自己构建并在事后后悔......
我想说,一般来说,您会希望避免存储 ChargeBee 上可用的任何内容,反之亦然。保持这种双重存储同步可能会出现问题。我不太熟悉 ChargeBee 如何融入商家应用程序的访问控制,但我猜他们希望按照您建议的方式对他们进行 ping 操作以获取信息。
您需要避免在不合理的水平上使用他们的 API。很容易陷入这样的架构:在每个页面视图上都从上游请求当前信息。您似乎已经考虑过这一点...以下是您可能考虑的其他一些问题:
使用基本的缓存机制来缓解这些问题是一个好方法。显然有很多方法可以做到这一点。一开始就保持有效期较短。比如说,1小时。你可以在路上延长它。如果您想更进一步,并假设 ChargeBee 支持 Webhooks,您可以考虑将应用程序设置为侦听相关挂钩,这些挂钩可能会更改用户的状态并相应地使该用户的任何缓存失效。
我也使用 Chargebee with stripe 一年多了,我发现它很可靠。我认为根据您的流程,您应该存储 customerId,如果需要,还应该存储 subscriptionid 和客户的一些基本数据。