如何模拟订阅的过期状态

Tyl*_* V. 8 php subscriptions braintree

我在cron上设置了一个PHP脚本,它通过API联系Braintree,以查找我们存档的每个订阅的状态.然后,我们根据客户的订阅状态更新我们的本地记录.因为我可以手动取消从布伦特里控制面板订阅,我已经能够测试我的脚本可以检测取消订阅.

但是,我找不到任何方法来测试过期状态,而不是等待结算周期.由于Braintree中计费周期的最小长度为一个月,因此调试脚本非常困难.

我知道理论上我应该只看到订阅状态的不同字符串,但我正在寻找一种可重现的方式来模拟过期状态,以及daysPastDue的正余额和值.

有人可以帮忙吗?

$BT_subscription = Braintree_Subscription::find($BT_subscription_id);
if ($BT_subscription && $BT_subscription instanceof Braintree_Subscription) {
    if ($BT_subscription->status == 'Past Due' && $BT_subscription->balance > 0) {
        // ...
Run Code Online (Sandbox Code Playgroud)

Tyl*_* V. 18

我从Braintree的支持中得到以下关于此问题的回复:

因为我们的沙盒环境旨在复制我们的生产环境,所以无法强制订阅到期日.但是,这里有一些小问题可能会使这个测试变得更容易:

要在沙盒中将订阅设置为"过期"状态,您可以创建一个试用期为一天且价格为2000美元的订阅.然后,当一天试用期到期时,它将触发因美元金额而失败的交易创建.

2000美元的价格标签很可能是针对不成功交易测试金额触发信用卡付款失败.我已经设置了测试,如果测试证明不成功,我将编辑它.

  • 所以braintree希望他们的开发人员编写一些代码来处理取消事件,运行它,并等待一天,看它是否有效?这是构建集成的一种悲伤方式. (27认同)
  • 更不用说这不允许我以实际价格和没有试用期来测试我的实际计划。 (3认同)
  • 我真的很喜欢布伦特里,但不得不这样做是一个真正的无赖,坦率地说,非常令人惊讶.@agf自原帖以来的任何新工具? (2认同)
  • @agf 这是 Braintree 支持人员提供的测试建议。 (2认同)
  • 这代表了我在 Braintree 的整体经历。对于应该内置到平台中的东西来说,这是非常糟糕的解决方法。@agf (2认同)

Dex*_*Dex 5

不幸的是,加上泰勒五世的回应,这仍然是测试它的唯一方法。

\n\n

来自支持:

\n\n
\n

感谢您与我们联系,并感谢您的耐心等待。使用沙盒帐户,您可以模拟结果的最短时间为 1 天。使用以下示例创建逾期状态:

\n\n

创建一个试用 1 天、价格为 2000 美元的计划 使用信用卡创建客户\n 使用该计划和\n 客户创建新的订阅 第一次收费尝试将在 1 天后(试用期结束时\n),并将失败 自动重试将在订阅过期后+10 和+20\n 天请参阅下页\n 了解沙盒测试值。我建议您一次创建很多这样的文件,这样您就可以使用多个文件;否则\n你\xe2\x80\x99将不得不等待一天他们创建的每个新的逾期\n。

\n
\n