Stripe定期/订阅计费的最佳设计/实践?

15

我刚刚完成了我的第一个与Stripe相关的网站,但是我觉得我本可以设计更好的Stripe集成。我遇到的主要问题是如何维护Stripe账户的状态(试用和过期等),哪些是重要的Webhook(以及处理所有事件的最佳方法),应该在我的数据库中复制多少数据,以及应该从Stripe数据库中提取多少数据。

非常希望能够交流一些最佳实践。参考我使用Ruby on Rails开发了自己的网站,部署在Heroku上,并使用SendGrid Heroku插件发送有关账单、逾期付款等的电子邮件通知。

另外,对于那些在RoR上使用Stripe的人,这里有一些我使用过的不错的资源(尽管我还没有找到一个真正覆盖Stripe定期/订阅账单的资源):

RailsCast:

当然,还有Stripe的文档和API:

这段用于Webhooks/邮件的代码:

2个回答

4

关于数据复制 - 我选择仅在本地存储用户记录中的CustomerKey。其他所有内容,如发票、交易等都存储在Stripe中。我认为最好不要尝试在两个系统之间保持一致性 - 最好的情况是你会有重复的数据,最糟糕的情况是由于不同步而导致各种问题...


1
哎呀,我本来想不保持奇偶性,但我想利用账户状态在页面加载时显示错误消息,但调用 Stripe 太慢了,获取状态需要很长时间,因此页面加载时间很长... - hajpoj
1
缓存Stripe调用怎么样?页面加载问题只会在第一次执行API调用时出现。随后的调用将从缓存中提取。 - Christian Fazzini
@ChristianFazzini 我知道已经过去了几年,但我猜你是在谈论Stripe.js用于这些调用和缓存,还是有一种可以使用的服务器端缓存? - Luke Griffiths

1

SaaS Rails Kit(由我创建)通过仅将卡片信息存储在Stripe中(而不是设置重复收费),获取令牌,然后在人们的账户到期时使用每日cron作业对令牌进行计费,与Stripe集成。

这种方法的几个好处包括无需担心Webhooks / 保持两个系统同步以及能够除了固定月费外进行按量计费。


1
有趣的是,你基本上在你的端口手动处理所有事情。 - hajpoj
10
Stripe已经提供了自动续费/订阅计费功能,为什么还需要设置定时任务来处理这个呢? - JM4
我已经谷歌搜索解决方案大约两个小时了。每次找到的资源中都有你的评论。 - b1nary
我只是想指出,我认为这个答案不应该被投票否决。在Stripe中,如果您需要创建分期付款,而Stripe没有提供此功能,您必须使用这种方法。我知道这一点,因为我已经这样做了,并与Stripe的工作人员讨论了实施它的选项。 - floor
@JM4 那计算金额怎么办呢?例如,一个按照用户使用量计费的SaaS平台,根据用户选择的月度预付费计划进行计费。在这种情况下,我们不能使用定期/订阅计费,有没有比cron更好的解决方案? - Joel Joseph
@JoelJoseph 你可以使用Stripe的循环账单来处理这种情况... 当月度发票创建时,Stripe会向您发送一个钩子。在Stripe尝试为发票收取费用之前,您有几个小时时间向该发票添加更多的发票项目(费用)。这正是我在Honeybadger实现超额费用的方式。 - Benjamin Curtis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接