先确认原始业务值

记录商品名称和字段的实际字符,检查是否带有意外换行、不可见空格或重复编码。脱敏样本保留与故障有关的字符特征,不随意改成纯英文后就认为原问题已经解决。

区分业务值与传输编码

表单、URL 和 JSON 对特殊字符的表达不同,签名前后必须按协议处理。不要对已经解码的参数再次解码,也不要把加号和空格无条件互换。金额字符串被转成数值后格式变化,也可能影响签名。

使用边界字符做回归

测试中文、空格、连接符、空值及真实商品名称,分别核对请求签名和通知验签。日志记录必要的字段顺序与处理步骤,不输出私钥。修正编码逻辑后仍核对订单金额与归属,不能只以没有乱码判断交易安全。

准备一组不含真实隐私的边界值

可以用包含中文、空格、加号和连接符的虚构商品名核对原始值、签名串与接收参数。传输编码只在协议规定的阶段进行,不能反复编码解码“试到成功”。比较时保留金额的小数表达,确认 JSON 或表单解析没有悄悄改变参与签名的字符串。