Ruby 在 rails。每月订阅最佳实践

Ruby on rails. Monthly subscription best practices

您好,我使用 Braintree 在我的应用程序上按月订阅,运行正常。对于出于任何原因未按时付款的事件,我想要一些有关最佳做法的建议。

我目前有一个 User 模型 subscribed:boolean subscribeddate:datesubscribedend:date

当用户通过 braintree 完成支付时,属性会更新为 subscribed:true subscribeddate:Date.todaysubscribedend:Sometime_way_in_the_future .

当用户取消订阅时,属性也会更新,subscribed:falsesubscribedend:(a braintree attribute, billing_due_date)

这样我就可以根据日期和订阅状态在我的应用程序中过滤内容。我能看到的唯一问题是,如果 Braintree 试图在一个月内向一个账户收费但失败了。 Braintree 有一个属性(.days_past_due),但我的应用程序无法知道这是否已经发生。

这方面的最佳做法是什么?我是否应该每天执行计划任务以检查每个用户是否在 Braintree 服务器上都具有 .days_past_due 属性的值?如果我有很多用户,这不会非常慢吗? 我可能会把这一切都弄错了,我只是想就此事提出一些建议, 谢谢。

完全披露:我在 Braintree 工作。如果您有任何其他问题,请随时联系支持@braintreepayments.com.

您最好的选择是实施 Braintree 的定期计费 webhooksWebhooks send you a notification 通过 HTTP POST 每当发生可能不是由 API 调用直接触发的事件时,例如客户通过其订阅被收费、订阅被取消或订阅逾期。这将允许您直接响应订阅事件,而无需执行日常检查以查看是否发生了任何更改。

要使用 webhook,您需要选择要为其接收 webhook 的事件,在您的服务器上指定我们将发送通知的端点,并使用代码设置该端点以将 webhook 通知解析为可用的形式。有关详细信息,请参阅此 guide 和说明。