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

Posted 叶威1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信支付有汉字时出现签名错误的解决办法相关的知识,希望对你有一定的参考价值。

最近发现在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;
   

以上是关于微信支付有汉字时出现签名错误的解决办法的主要内容,如果未能解决你的问题,请参考以下文章

调用微信退款接口时出现System.Security.Cryptography.CryptographicException: 出现了内部错误 解决办法

调用微信退款接口或发红包接口时出现System.Security.Cryptography.CryptographicException: 出现了内部错误 解决办法

微信支付商户签名错误

用PHP做微信支付签名错误,请教一下这个是啥原因

apt update时出现签名无法验证,公钥失效的解决办法

解决微信支付出现OUT_TRADE_NO_USED:商户订单号重复