2016-08-30 134 views
1

我正在寻找一种方法来设置过期订阅的“过期”日期。当前的业务规则允许用户仍然可以访问系统,直到结算周期结束。Braintree - 未来订阅取消

因为在这段时间内,用户可能仍然会购买插件,Braintree的分期可以帮助我们收取这个待处理的到期订阅。以下是我的一些想法:

1)将结算周期的数量从INFINITE设置为0或-1?我没有在这方面找到太多的文档,我想知道我是否会在下一个计费周期执行此操作,订阅将“过期”? (我会对它进行测试,但我想我会把它放在这里)

编辑:结算周期的数量必须大于0,但设置值为1似乎设置过期日期在循环结束时到期可能解决我的问题。 (我猜Braintree假定当前的结算周期被计为1)。

2)如果用户决定继续订阅,我可以将结算周期改回INFINITE,订阅继续,就好像没有任何东西发生了。

3)当用户升级到不同的包时,会发生同样的情况。将在当前订阅结算周期结束后开始新的订阅,未来日期将开始。

4)或者我必须把它们全部放在家里,并有我自己的CRON/Jobs来处理这些情况?

请让我知道您的想法或建议更好的解决方案。

答:我通过设置number_of_billing_cycles由jellenberger提到等于current_billing_cycle解决了这个问题。这为当前订阅设置了到期日,从而允许我仍然收取相同的订阅费用。

回答

1

完全披露:我在布伦特里工作。如果您有任何其他问题,请随时联系support

在循环计费中,有几十种方法可以解决这类问题,对每个计费流程都没有“正确的解决方案”。但底线是,您可以根据billing_period_end_datecurrent_billing_cycle - number_of_billing_cycles == 0计算最终周期中的到期日期。

如果您希望允许客户在上一个结算周期完成后接收附加信息,则可以将结算周期数扩展一次,并将price更新为零,或者添加折扣amount等于订阅价格。或者,更简单地说,您可以使用客户的默认付款方式按比例创建新交易。

为了更好地管理这些操作,有许多与订阅有关的Webhooks,并且可能有助于避免编写自己的cronjob。如果您需要进一步的集成帮助,请随时联系Braintree Support

+0

所有经常性结算当前都不会过期,因此要过期立即重复结算,会设置'number_of_billing_cycle = current_billing_cycle'确保它成为最终结算周期? – user6776148