顾客点提交订单后又回到购物车,先别把它统称为“支付失败”。第一处看订单是否已经创建:后台有订单但页面跳错,和根本没有订单,是两条完全不同的链路。

第二处看 checkout session。域名、Secure Cookie、SameSite、反向代理配置错误,会让支付站返回时原会话丢失。浏览器应保持同一个 quote 与 session,而不是在回跳后新建空会话。

第三处看支付模块的 return、cancel 和 webhook 逻辑。同步返回页面只负责用户体验,最终支付状态通常还要以服务端通知为准。返回参数缺失或签名失败时,不应重复创建订单。

复现时记录提交请求、订单 ID、网关交易号和返回 URL。若订单已成功,页面应该进入 success 流程并清理 quote;若订单未创建,则从 totals 校验、库存、地址和支付异常继续向前找。