如何测试条带中的订阅续订流?

pka*_*ing 7 integration-testing stripe-payments

我想测试我的应用程序在订阅付款(或失败)时从条带处理webhook事件.这是我到目前为止所尝试的:

  • 设置新订阅
  • 将用户的信用卡更新为可添加到帐户的信用卡,但实际上无法收费
  • 将试用结束日期更改为一秒钟
  • 等待几秒钟,期待发送webhook

但是,根据文件:

如果您已配置webhooks,则发票将等到成功发送最后一个webhook后一小时(或最后一次webhook失败后超时).

一小时是很长的等待时间,因为我试图将此作为自动化集成测试套件的一部分.

一个建议(来自IRC)是伪造webhook请求,以便我的集成测试发送事件,而不是Stripe发送它.但是,由于Stripe在webhook中不包含任何类型的HMAC,我无法信任有效负载中的数据.因此,我的应用程序只从webhook有效负载中获取事件ID,并从Stripe API获取事件:

如果担心安全性,或者确认Stripe发送webhook很重要,则应该只使用webhook中发送的ID,并且应该直接从API请求剩余的详细信息.

如果我试图为我的测试注入虚假事件(通过设计),这显然不会起作用.

测试此类场景的最佳做法是什么?

pka*_*ing 3

似乎没有一个完美的方法来做到这一点。正如 @koopajah 在评论中所建议的,我在应用程序中添加了一个配置值,该值将禁用从 Stripe 获取事件,而只信任 Webhook 中的事件数据。这使我能够以与生产中几乎相同的方式测试我的流程,因为 Webhook 中的事件数据和从 Stripe 获取的事件是相同的(假设它是真实的 Webhook 请求:)

除非/直到 Stripe 在 webhook 请求中包含 HMAC 签名来验证它来自他们,我认为这是解决问题的最佳方法。