Ruby on rails。每月订阅最佳做法

时间:2016-11-11 20:18:36

标签: ruby-on-rails subscription braintree rake-task

您好,我使用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属性的值?如果我有很多用户,这不是非常慢吗? 我可能会说这一切都错了,我只想就此事提出一些建议, 感谢。

1 个答案:

答案 0 :(得分:0)

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

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

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