<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[签名错误]]></return_msg></xml>之前在调试微信支付的“统一下单”接口的时候一直遇到“签名错误”。网上查找了各种资料,一般可能是以下几个问题,如果大家出现此错误的话不妨挨个排查,以免浪费时间走弯路。
1、参数名ASCII码未按升序排列,或者是生成MD5字符串没有toUpperCase转换为大写。这种问题解决方法很简单,到微信官网上用校验工具校验即可;
2、key错误。这里特别注意,公众平台的密钥和商户号的密钥是不一样的!!!微信支付审核成功之后会收到一封邮件,邮件中有appid 商户号,商户后台登录上号和密码,登录到商户后台:账户设置-安全设置-切换到API安全,下载证书,下面有一个api密匙,进去填写一个字符串 ,保存,后续两次签名都是用的这个手动设置的key!!!
3、app_id是公众号而非app支付的app_id,或者开放平台上面的账号没有支付权限,需开通;
4、
把我们生成的xml请求参数转为字节数组后,用“ISO8859-1”编码格式进行编码为字符串,就可以解决问题了。
return new String(sb2.toString().getBytes(), "ISO8859-1");
转载于:https://blog.51cto.com/9105034/1676602