You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何确认Stripe沙箱支付已成功完成?

Stripe支付确认事件的确定性问题

核心结论

针对你的Checkout支付链接场景,checkout.session.completed事件且其payment_status字段为paid,是单一的确定性事件,可以直接确认付款已完成,资金会按正常流程到账,不会出现后续“未到账”的情况。

具体问题解答

1. 仅收到charge.succeeded是否足够?

charge.succeeded确实代表对应的Charge已成功,但在Checkout流程中,它只是支付链路中的一个环节:

  • 从资金确定性来说,一旦触发该事件,资金会按Stripe结算周期到账(后续争议退款属于独立售后事件,不属于“付款未完成/未到账”范畴);
  • 但如果你的业务逻辑绑定Checkout会话(比如关联订单、用户支付会话),单独的charge.succeeded无法直接关联到具体的Checkout会话,需要额外查询关联关系,不如Checkout专属事件直接贴合业务场景。

2. 检测checkout.session.completedpayment_statuspaid是否足够?

完全足够。这个事件的核心价值就是:

  • 标志着用户已完成整个Checkout支付流程;
  • payment_status: paid明确表示支付已成功确认,资金已进入Stripe账户;
  • 这是Stripe针对Checkout场景发出的最终支付确认信号,不会出现后续支付状态反转的情况(争议退款会触发独立的charge.dispute.created等事件,不属于付款未完成的范畴)。

额外说明

你在沙箱测试中收到的重复payment_intent.createdcharge_updated事件是测试环境的正常冗余现象,生产环境的事件流会更简洁,不会出现这类重复触发的情况。


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

火山引擎 最新活动