微信支付有汉字时出现签名错误的解决办法
在做开发微信支付时,有汉字时出现签名错误. 一开始一直没有找到问题所在, 因为在自己机器上开发的时候, 没有问题, 然后, 一到服务器上就出现签名错误, 最后发现, 是编码不一致导致的密钥错误!
解决办法
改正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加密之前, 先把字符串格式化一下! 这样可以解决这个问题!