【发布时间】:2015-07-02 10:21:51
【问题描述】:
当订阅支付完成(或失败)时,我想测试我的应用程序对来自条带的 webhook 事件的处理。到目前为止,这是我尝试过的:
- 设置新订阅
- 将用户的信用卡更新为可以添加到帐户的信用卡,但不会实际收费
- 将试用结束日期更改为一秒
- 等待几秒钟,等待 webhook 被发送
但是,根据the documentation:
如果您已配置 webhook,发票将等到最后一个 webhook 成功发送后一小时(或最后一个 webhook 失败后超时)。
一小时的等待时间很长,因为我正在尝试将其作为自动化集成测试套件的一部分。
一个建议(来自 IRC)是伪造 webhook 请求,以便我的集成测试发送事件,而不是 Stripe 发送它。但是,由于 Stripe 在 webhook 中不包含任何类型的 HMAC,我不能信任有效负载中的数据。所以,我的应用程序只是从 webhook 有效负载中获取事件 ID 并获取 event from the Stripe API:
如果担心安全性,或者如果确认 Stripe 发送了 webhook 很重要,您应该只使用在 webhook 中发送的 ID,并且应该直接从 API 请求剩余的详细信息。
如果我试图为我的测试注入虚假事件(按设计),这显然不起作用。
测试这种场景的最佳实践是什么?
【问题讨论】:
-
我会说在您测试此流程时不要验证事件?我自己做的是在实时模式下从 API 检索事件,但在测试模式下,我只是“信任”有效负载,因为我是发送它的人(而且它是测试模式)。
-
@koopajah 谢谢,我想这是要走的路。如果您想将其发布为答案,我会将其标记为“已接受”。
-
哈!太棒了,很有帮助,谢谢:)
-
如果您正在寻找 ASP.NET 中 Stripe 订阅/定期支付集成的最新解决方案,请查看演示 ==> techtolia.com/StripeSubscriptions
标签: integration-testing stripe-payments