您好,我使用Braintree每月订阅我的应用程序正常工作。我想就一些事件的最佳实践提出一些建议,因为无论出于何种原因,我们都无法及时付款。
我目前拥有User
模型subscribed:boolean
subscribeddate:date
和subscribedend:date
。
当用户通过braintree完成付款时,属性会更新为subscribed:true
subscribeddate:Date.today
和subscribedend:Sometime_way_in_the_future
。
当用户取消订阅时,属性也会更新,subscribed:false
和subscribedend:(a braintree attribute, billing_due_date)
这样我就可以根据日期和订阅状态过滤我的应用中的内容。我能看到的唯一问题是,如果Braintree试图在一个月内收取帐户但是失败了。 Braintree有一个属性(.days_past_due
),但我的应用程序无法知道这是否已经发生。
这方面的最佳做法是什么?我是否应该每天执行一项计划任务来检查每个用户是否都拥有Braintree服务器上.days_past_due
属性的值?如果我有很多用户,这不是非常慢吗?
我可能会说这一切都错了,我只想就此事提出一些建议,
感谢。
答案 0 :(得分:0)
完全披露:我在Braintree工作。如果您有任何其他问题,请随时联系support@braintreepayments.com。
您最好的选择是实施Braintree的定期结算 webhooks 。 Webhooks send you a notification每当发生可能未被API调用直接触发的事件时通过HTTP POST发送 - 例如客户通过其订阅获得收费,订阅被取消或订阅已过期。这将允许您直接响应订阅事件,而无需执行每日检查以查看是否发生了任何更改。
要使用webhooks,您需要选择要接收webhooks的事件,在服务器上指定我们将发送通知的端点,并使用代码设置该端点以将webhook通知解析为可用形式。有关详情,请参阅此guide并附上说明。