为何Stripe先发送invoice.payment_failed事件,即便订阅交易已成功?
Stripe订阅成功却先触发invoice.payment_failed的原因
这种情况在使用Stripe Checkout创建订阅时非常常见,核心原因是订阅初始化与Checkout付款流程的时序差:
- 当用户进入Checkout页面发起订阅请求时,Stripe会先创建订阅对象并生成对应的初始发票,同时立刻尝试对该发票执行扣款操作
- 但此时用户还未完成Checkout页面的付款步骤(比如还没输入支付信息或确认付款),这次扣款必然失败,所以会触发
invoice.payment_failed事件 - 等用户在Checkout页面完成所有付款操作后,Stripe会重新处理这张发票的付款(或生成新的有效付款记录),最终完成订阅流程,触发
checkout.session.completed事件
简单说就是:Stripe在订阅创建时的“预扣款”是在用户实际付款前执行的,失败属于流程内的正常中间状态,不代表最终订阅付款失败。
你可以查看invoice.payment_failed事件里的发票ID,和后续成功付款的发票ID是否一致——通常是同一张发票,后续会有invoice.paid事件补全完整流程。
内容的提问来源于stack exchange,提问作者JAY
相关产品推荐
相关产品推荐

