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

最近发现在win2003/win2008开发微信支付时,有汉字时出现签名错误,但在win7上不会出错,

最后发现是字符编码不一致造成的。


解决办法

改正wxpay-scanpay-java-sdk-1.0.jar中的md5.java文件,

/**
     * 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;
    }

你可能感兴趣的:(微信支付签名)