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

Stripe支付成功处理及后续路由的正确实现方案问询

关于Stripe Checkout钱包充值的两个问题解答

1. 选择哪个Webhook确保100%支付成功以更新钱包余额

直接结论:优先使用checkout.session.completed,原因如下:

  • 这个事件是Stripe为Checkout流程专门设计的,触发前提是用户完成Checkout流程且支付已成功(包含底层payment_intent.succeeded的完成),完全覆盖「支付成功+流程走完」的业务需求。
  • payment_intent.succeeded是通用支付成功事件,可能在非Checkout场景下触发(比如直接调用Payment Intent API),如果你的业务完全基于Checkout流程,用这个事件会出现场景不匹配的问题——比如支付成功但用户没走完Checkout流程,导致业务逻辑触发时机错误。
  • 核心注意:无论选哪个Webhook,必须验证Stripe的Webhook签名,确保事件是官方发送的,避免伪造事件恶意篡改余额。

2. 安全获取Success URL的支付详情

把session id作为URL查询参数是常规方案,做好后端验证就能规避篡改风险,具体步骤:

  • 前端跳转回应用时携带session_id参数,后端接收到后调用Stripe的stripe.checkout.sessions.retrieve(session_id)接口,获取真实的会话数据。
  • 验证两个核心点:
    • 会话状态为complete,确认支付确实完成;
    • 会话metadata里的用户ID(创建Checkout Session时需将当前用户ID存入metadata)和当前登录用户ID一致,确保该会话属于当前用户,防止他人用其他用户的session id伪造支付记录。
  • 只有验证通过后,再向用户展示支付详情或执行余额更新逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 08:39:53