使用第三方计费/订阅系统(ChargeBee)的SaaS应用程序设计

时间:2018-03-18 12:55:58

标签: saas application-design

我已经构建了一个目前可以免费使用的SaaS解决方案。我刚刚开始建立用户每月或每年升级和支付费用的能力。

我想卸下所有的"困难"所以我可以专注于建立一个好产品。通过"困难",我指的是诸如支付处理,后端管理功能,计费分析,PCI合规等等。

我使用带有Stripe的ChargeBee作为网关。

但是,我不确定如何构建应用程序。我是一名全栈开发人员,但我知道我对架构的了解有限,而且我不想通过构建一个糟糕的解决方案来为自己辩护。

注册过程将是这样的:

  1. [我的应用程序]用户输入他们的电子邮件,密码,并选择他们想要的计划
  2. [托管在ChargeBee上]用户被重定向到托管的ChargeBee付款页面并输入其结算明细
  3. [我的应用程序]用户在响应中使用订阅/用户数据重定向回我的应用程序
  4. 现在我的主要问题是:

    • 我应该在两个应用程序(我自己的和ChargeBee)中存储和依赖哪些数据?
    • 我如何知道在我的域中为用户提供的访问级别 - 我是否在我的中间件中ping ChargeBee以找出用户所处的计划,或者该数据是否也应保留在我的在ChargeBee中拥有自己的应用程序(如双重会计?)

    我没有看到ping ChargeBee一直返回订阅信息的问题,但是再一次是"对"要做的事?如果是这样,我应该在登录时为用户缓存ChargeBee信息吗?

    谢谢, 乔

3 个答案:

答案 0 :(得分:0)

  

我没有看到ping ChargeBee一直返回订阅信息的问题,但是再一次是"对"要做的事?如果是这样,我应该在登录时为用户缓存ChargeBee信息吗?

我不认为这里有正确的答案。请注意,Chargebee有150个API调用,每分钟限制一次。缓存可能是错误的来源,因此我更愿意直接查询Chargebee,如果它是您的选项。

答案 1 :(得分:0)

首先,请注意我创建了Cheddar,ChargeBee的竞争对手。

祝贺您决定使用订阅管理服务提供商。通常,人们会建立自己的并且后来后悔...

我说,一般而言,您希望避免存储ChargeBee上可用的任何内容,反之亦然。保持这种双重存储同步可能会有问题。我并不十分熟悉ChargeBee如何适应商家应用程序的访问控制,但我猜他们希望他们按照您的建议方式获取信息。

您希望避免在不合理的级别上访问其API。在每个页面视图中从上游请求当前信息的架构很容易落入其中。您已经考虑过了,似乎......以下是您可能会考虑的其他一些问题:

  1. 在每个页面视图上调用上游API的开销将使您的应用程序看起来对最终用户来说很慢。
  2. 如果上游服务不可用,那么您的应用也是如此。
  3. 使用基本缓存机制来缓解这些问题是一个很好的方法。显然有很多方法可以做到这一点。只是保持到期时间短暂开始。说,1小时。你可以把它拉长在路上。如果您想进一步,并假设ChargeBee支持webhooks,您可以考虑设置您的应用程序以侦听可能会更改用户状态的相关挂钩并相应地使该用户的任何缓存无效。

答案 2 :(得分:0)

我还使用一年多的带有条纹的Chargebee,我发现它很可靠。我认为,根据您的流程,应该存储customerId,如果需要,还应存储subscriptionid和客户的一些基本数据。