我想测试我的应用程序在订阅付款(或失败)时从条带处理webhook事件。这是我到目前为止所尝试的内容:
然而,根据the documentation:
如果您已配置了网络挂钩,则发票将等到成功发送最后一次网络挂钩后一小时(或最后一次网络挂钩失败后超时)。
等待一小时是很长的一段时间,因为我试图将此作为自动集成测试套件的一部分。
一个建议(来自IRC)是伪造webhook请求,以便我的集成测试发送事件,而不是Stripe发送它。但是,由于Stripe在webhook中没有包含任何类型的HMAC,我无法信任有效负载中的数据。因此,我的应用程序只从webhook有效负载中获取事件ID并获取event from the Stripe API:
如果担心安全问题,或者确认Stripe发送了webhook非常重要,您应该只使用您的webhook中发送的ID,并应直接从API请求剩余的详细信息。
如果我试图为我的测试注入虚假事件(按设计),这显然不会起作用。
测试此类场景的最佳做法是什么?
答案 0 :(得分:1)
似乎没有一种完美的方法可以做到这一点。正如@ comment中@koopajah所建议的那样,我在我的应用程序中添加了一个配置值,它将禁止从Stripe中获取事件,而只是信任webhook中的事件数据。这允许我以几乎与生产相同的方式测试我的流程,因为webhook中的事件数据和从Stripe获取的事件是相同的(假设它是真实的webhook请求:)
除非/直到Stripe在webhook请求中包含HMAC签名来验证它是否来自它们,我认为这是解决问题的最佳方法。