Stripe API trial_end 10 秒后,与环境无关

Stripe API trial_end 10 seconds from now, environment independent

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

要使经常性付款在订阅创建后立即失败,订阅本身应该有试用期并且 trial_end 客户创建应该很快或字符串 'now'。

如果我传递字符串 'now',卡会在 Stripe.customers.create() 上收费,这不是我的 objective。

相反,我尝试传递当前 unix 时间戳 +10 秒,但似乎机器时钟设置得比 Stripe 时钟早几分钟。

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

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

我正在使用 moment().unix() + 10 获取当前 unix 时间 + 10 秒和 nodejs。

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

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

对于未来的任何人。 Stripe 现在引入了“测试时钟”来帮助解决这种情况。您可以在特定时间设置模拟环境,同时不断推进时钟以创建场景。您可以了解更多 here