Tech
[程序员] 线上偶发验签失败:网关吃前缀 + 时间戳单位
线上收款偶发失败,十笔错一笔。支付方后台显示「通知失败,已重试 5 次」,最后钱退回去了;我这边日志只有一行 signature mismatch 。查了三天,根因是两个问题叠在一起:网关把回调路径前缀吃掉了,验签代码又把时间戳解析后重新拼回签名原文。
现象
[WARN] callback verify failed: signature mismatch
orderNo=PO2026102300xx timestamp=1730xxxxxxx sign=V5x...
[INFO] retry 1/5 ... retry 5/5 failed, give up
三个特征:失败不是全量,约 1/10 ;本地用同一套密钥、同一份报文重算签名能过;把生产抓包原文放进测试环境回放也能过。
先把能查的手边项排一遍:三处密钥比对一致;拼接规则按文档排序、空值处理、URL 编码与抓包逐字节比对一致; NTP 偏差 200ms 内; nonce 在 Redis 写入读回正常。这些全对,线上照样失败,说明问题不在你正在看的这一层,得跳到链路两头去看。
第一...
Read the full discussion on V2EX
This article was aggregated from V2EX. Click to join the conversation.
View on V2EX