对接支付后回调一直验签失败,自己按文档拼的签名对不上。乍看像缓存或者权限的锅,追下去往往不是。

openssl x509 -in app_cert.pem -noout -serial
# 对比平台后台显示的证书序列号

追下去是这么回事:使用了新版密钥而回调仍按旧版规则验签,或证书序列号与平台不一致。

「支付验签失败」这类改动最怕改一半,回滚脚本先准备好,再动生产。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。

先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。别只看报错的最后一行,往上看几行,真正的起因通常在上面。

同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。

具体做法是,确认当前使用的密钥版本;按平台要求下载对应证书;用官方工具核对一次签名。

验收就看一点,回调验签通过,订单能正常置为已支付。

作者 9823189