易支付

易支付签名错误怎么排查

解决易支付签名验证失败,检查参数排序、空值、编码、金额格式、RSA和MD5版本差异。

首页 > 帮助中心 > 易支付签名错误怎么排查

签名错误最常见的原因

签名验证要求双方对同一组字段生成完全相同的待签名字符串。字段多一个、少一个,顺序不同,或参数值发生编码变化,都会得到不同结果。

按顺序检查这八项

  1. 接口版本:确认调用的是新版 RSA 还是旧版 MD5 接口。
  2. 字段范围:排除签名值本身、签名类型、数组以及文档规定不参与签名的字段。
  3. 空值处理:区分空字符串、数字0和字符串“0”,不要随意删除有效的0值。
  4. 字段排序:按照文档要求对参数名排序,不按页面显示顺序或JSON原顺序处理。
  5. 原始参数:验签应基于实际收到的字段,不要自行补默认值或转换字段名。
  6. 金额格式:11.01.00是不同字符串,签名前后必须一致。
  7. 字符编码:统一使用 UTF-8,留意中文、空格、加号和URL编码被二次处理。
  8. 密钥对应:确认平台公钥、商户私钥或旧版密钥属于当前商户和当前环境。

RSA签名特别注意

私钥用于商户生成签名,平台公钥用于商户验证平台返回数据。保存密钥时要保留完整头尾、换行和内容,不要把公钥与私钥位置互换。Base64签名通过表单传输时,应确认加号没有被解析为空格。

MD5签名特别注意

旧版接口通常把排序后的键值对拼接后再附加商户密钥。不要对参数值额外进行一次URL编码,也不要把连接符、空值规则或大小写处理想当然地套用到其他支付系统。

最快的定位方法

在测试环境同时输出“参与签名的字段名列表”和“脱敏后的待签名字符串”,与另一端逐字符比较。不要在网页、工单或聊天中发送完整商户密钥和私钥。

如果下单可以成功、只有回调验签失败,应优先比较回调原始参数;如果所有请求都失败,再检查密钥和接口版本。