知识&技术&梦想 知识&技术&梦想

微信支付有汉字时出现签名错误的解决办法

微信支付有汉字时出现签名错误的解决办法 在做开发微信支付时,有汉字时出现签名错误. 一开始一直没有找到问题所在, 因为在自己机器上开发的时候, 没有问题, 然后, 一到服务器上就出现签名错误, 最后发现, 是编码不一致导致的密钥错误! 解决办法
改正wxpay-scanpay-java-sdk-1.0.jar中的md5.java文件,
如果不是使用的官方文档的md5, 可以查看另一种解决办法
/** * MD5编码 * @param origin 原始字符串 * @return 经过MD5加密之后的结果 */ public static String MD5Encode(String origin) { String resultString = null; try { resultString = origin; MessageDigest md = MessageDigest.getInstance("MD5"); // resultString = byteArrayToHexString(md.digest(resultString.getBytes()));//原文件内容,可能原因是:win2003时系统缺省编码为GBK,win7为utf-8 resultString = byteArrayToHexString(md.digest(resultString.getBytes("utf-8")));//正确的写法 } catch (Exception e) { e.printStackTrace(); } return resultString;
}
另一种解决办法
在处理汉字进行md5加密之前, 先把字符串格式化一下! 这样可以解决这个问题!
大纲