渠道后台通知状态是成功,我方 access log 在那段时间一条回调记录都没有,订单一直停在待支付。日志里能对上时间点,这种反而好排。
回调域名解析到了一台已经下线的旧机器,请求在网关层就 502,渠道重试几次后放弃。应用层根本没收到请求,自然不会留下任何日志。排查时只看应用日志会一直找不到线索。这一点先确认清楚,后面就不用反复试。
dig +short api.example.com
curl -v -X POST https://api.example.com/callback -d '{}'
围绕「回调不可达静默失败」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。
别只看报错的最后一行,往上看几行,真正的起因通常在上面。
处理上按这个顺序:从渠道后台导出通知记录 拿到原始请求时间;在网关和 WAF 日志里按时间点查 确认请求到没到集群;dig 回调域名核对解析结果;域名指到新入口后手动触发一次重发。
结果对不对很好判断,手动重发能在 access log 里看到 返回 200 订单状态变成已支付。
