2

我正在使用 Stripe Api 测试失败的经常性付款。

要在订阅创建后很快使经常性支付失败,订阅本身应该有试用期,并且客户创建的 trial_end 应该很快或字符串“现在”。

如果我通过字符串“现在”,卡就在 Stripe.customers.create() 上收费,这不是我的目标。

相反,我试图通过当前的 unix 时间戳 +10 秒,但似乎机器时钟设置得比 Stripe 时钟早了几分钟。

结果,我得到了 trial_end 1454753552 和 trial_start 1454753109 不是 10 秒而是 443 秒。

除了更改系统时钟之外,还有其他方法可以使测试环境独立吗?

moment().unix() + 10用来获取当前的 unix 时间 + 10 秒和 nodejs。

4

1 回答 1

2

我不确定这里是否有一种干净的方法可以做到这一点。我要做的是在调用之前创建客户并查看客户对象上的created 属性。这会告诉您 Stripe 的服务器正在使用的时钟。然后,您可以使用自己的时钟快速计算偏移量,并猜测要输入的正确时间戳,以创建以 10 秒结束的试用期。trial_end

我还建议不要使用 10 秒部分,因为即使时钟完全同步,如果您的呼叫对于该特定请求来说有点太慢,试用会立即结束并阻止您测试您正在寻找的内容。我个人使用 60 秒延迟来降低风险。

于 2016-02-06T18:25:11.773 回答