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

时间:2015-04-24 00:54:24

标签: integration-testing stripe-payments

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

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

然而,根据the documentation

  

如果您已配置了网络挂钩,则发票将等到成功发送最后一次网络挂钩后一小时(或最后一次网络挂钩失败后超时)。

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

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

  

如果担心安全问题,或者确认Stripe发送了webhook非常重要,您应该只使用您的webhook中发送的ID,并应直接从API请求剩余的详细信息。

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

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

1 个答案:

答案 0 :(得分:1)

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

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