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

前景: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


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值