支付成功但订单一直是待支付,平台后台显示通知失败。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,回调地址不是公网可达,或被防火墙与访问限制拦截,平台请求根本进不来只能标记失败。
碰到「支付异步通知」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。报错里带路径的,先去看那个路径在不在、权限对不对。
curl -Iv https://www.example.com/pay/notify # 返回 200 且无跳转
同一份配置存在多处的,先确认改的是被加载的那一份。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。
备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。
具体做法是,确认地址可从外网访问;放行平台出口地址;检查是否被登录校验拦截。
最后用这个标准收尾,平台通知可以到达,订单状态及时更新。