测试环境下Stripe invoice.payment_failed webhook未触发求助
解决
invoice.payment_failed Webhook未触发的问题 关键排查与修复步骤
确认付款重试周期状态:Stripe默认对付款失败的订阅会执行3次重试(间隔1天、3天、5天),
invoice.payment_failed事件仅在所有重试都失败后才会触发。你使用的测试卡号4000000000000341会直接触发单次付款失败,但如果订阅仍在重试周期内,不会立刻发送该事件。可在Stripe Dashboard的「订阅」页面查看对应发票的状态,确认是否已完成所有重试流程。检查Webhook端点配置:
- 确认端点已订阅
invoice.payment_failed事件类型,在Stripe Dashboard的「Webhooks」->「端点详情」中可查看已启用的事件列表。 - 验证端点状态为「已启用」,若多次返回非2xx状态码,Stripe会自动禁用端点,需重新启用并修复接收逻辑。
- 用Stripe的「发送测试事件」功能,手动推送
invoice.payment_failed测试事件,验证端点能否正常接收请求。
- 确认端点已订阅
查看Stripe事件日志:
在Dashboard的「事件」页面搜索订阅相关记录,若仅看到payment_intent.payment_failed事件,说明当前处于单次付款失败状态,还未触发最终的invoice.payment_failed。调整重试设置以快速触发事件:
若需立即测试invoice.payment_failed,可在创建订阅时通过API将重试次数设为0,这样第一次付款失败就会直接触发目标事件。示例代码:stripe.Subscription.create( customer="cus_xxx", items=[{"price": "price_xxx"}], payment_settings={ "retry_settings": { "max_retries": 0 } } )验证测试场景正确性:
确保创建的是定期订阅(非一次性付款),且订阅已生成待付款发票(若有免费试用期,需确认试用期已结束并触发了首次付款尝试)。
内容的提问来源于stack exchange,提问作者shazim ali
相关产品推荐
相关产品推荐

