您的位置:首页 > 移动开发 > 微信开发

java微信支付“签名错误”之body为中文时

2015-12-17 17:18 639 查看
前景:2015年12月17日,使用微信APP支付6步骤走的第2步骤【统一下单】(https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=8_3)。开发系统为window7 ,系统编码为gbk 。开发项目编码为utf-8,所有java文件编码为utf-8。MD5加密方法为网络上的。tomcat 编码 为 utf-8.

场景:签名认证参数中的body包含中文 1.使用文件编码为 utf-8的Java main方法测试 能正常运行。2.使用url 请求接口返回错误消息为 “签名错误”。

各种测试... ...

解决办法: 确认错误消息一定是“签名错误”。检查MD5 加密方法 中的 getBytes 方法参数 ,例如: byte[] btInput = s.getBytes(); 改为:byte[] btInput = s.getBytes("utf-8");

结果:接口请求也能正常返回 prepayId相关信息。

原因:getBytes()不传参数则默认以 系统编码进行解析 , 需要根据自身情况判断。

备注:如果是返回 “BODY 不是UTF-8编码” 或者 “不是XML文档” ,那就是真的编码不对了。具体可以交流至 528171154@qq.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: