You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Stripe强制触发invoice.payment_failed事件失败,却生成invoice.paid事件

强制触发Stripe invoice.payment_failed事件(按使用量计费场景)

针对你遇到的问题——用测试卡号4000000000000341却触发了invoice.paid而非支付失败,大概率和按使用量计费的特性有关,下面是具体原因和解决方法:

核心原因:0金额发票直接标记为已支付

按使用量计费的模式下,如果试用期内用户没有产生任何用量,生成的发票金额为0。Stripe对0金额发票会直接跳过支付流程,自动标记为invoice.paid,根本不会触发支付尝试,自然不会出现失败事件。

解决步骤(确保触发支付失败)

  • 先给用户添加非0用量:在试用期结束前,通过Stripe API调用UsageRecord.create(),给订阅关联的计量项添加一笔非0的用量记录。这样生成的发票会有实际金额,才会进入支付流程。
  • 确认测试卡号是默认支付方式:检查客户的支付方式列表,确保4000000000000341是当前默认支付方式,且没有其他有效的支付方式被系统优先选用。
  • 手动触发支付(可选):如果不想等待Stripe的自动调度,可以在发票生成后,调用Invoice.pay() API手动触发支付尝试,立刻就能看到支付结果,不用等1小时。

额外注意点

测试卡号4000000000000341的特性是首次支付失败,如果客户之前有过成功支付记录,可能需要先重置客户的支付状态,或者换用其他测试卡号(比如4000000000000002会触发永久失败)。

内容的提问来源于stack exchange,提问作者Rodrigo Carvalho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 19:22:17