我希望测试我的应用程序如何处理stripe的webhook事件,当订阅付款成功或失败时。到目前为止,我尝试过以下操作:
- 设置一个新的订阅 - 更新用户的信用卡,使其可以添加到帐户中,但实际上无法收取费用 - 将试用结束日期更改为一秒钟后 - 等待几秒钟,期望发送webhook
然而,根据文档:
“如果您配置了webhook,则发票将等待最后一个webhook成功发送(或最后一个webhook在失败后超时)的一小时。”
一小时是很长时间,因为我正在尝试作为自动化集成测试套件的一部分进行此操作。
一种建议(来自IRC)是伪造Webhook请求,以便我的集成测试发送事件,而不是Stripe发送。但是,由于Stripe在Webhooks中不包含任何类型的HMAC,因此我无法信任负载中的数据。因此,我的应用程序只从Webhook负载中获取事件ID,并从Stripe API中获取事件:(https://stripe.com/docs/webhooks):
对于测试这种情况的最佳实践是什么?
- 设置一个新的订阅 - 更新用户的信用卡,使其可以添加到帐户中,但实际上无法收取费用 - 将试用结束日期更改为一秒钟后 - 等待几秒钟,期望发送webhook
然而,根据文档:
“如果您配置了webhook,则发票将等待最后一个webhook成功发送(或最后一个webhook在失败后超时)的一小时。”
一小时是很长时间,因为我正在尝试作为自动化集成测试套件的一部分进行此操作。
一种建议(来自IRC)是伪造Webhook请求,以便我的集成测试发送事件,而不是Stripe发送。但是,由于Stripe在Webhooks中不包含任何类型的HMAC,因此我无法信任负载中的数据。因此,我的应用程序只从Webhook负载中获取事件ID,并从Stripe API中获取事件:(https://stripe.com/docs/webhooks):
如果我试图为测试注入假事件,则显然这样做将无效(按设计)。如果安全性是一个问题,或者确认Stripe发送了Webhook很重要,则应仅使用Webhook中发送的ID,并直接从API请求其余详细信息。
对于测试这种情况的最佳实践是什么?