微信支付验证或签名失败的原因有哪些

  介绍

小编给大家分享一下微信支付验证或签名失败的原因有哪些,希望大家阅读完这篇文章之后都有所收获、下面让我们一起去探讨吧!

,,,,,,,,,,,,,,,,,,,,,,,,,,,iOS,微信统一支付验证失败是怎么回事?签名失败一直付不了款确实很着急,主要是身体中文问题,解决起来很麻烦,百度了好多,都找不到彻底解决的文章,总之各种麻烦。这里就不多做赘述了,切入正题:

因为公司的项目要用微信支付,部署时候发现总是报签名错,经过排查,原来是编码问题,那么找到原因了就来解决问题吧,本文详细介绍了三种解决方案,如果时间有限没空看完的话,那就直接奔第三种方案吧,希望能帮助到大家。

第一种解决方案:设置tomcat编码为utf - 8

tomcat在窗口环境默认编码是gbk,所以要设置tomcat编码为utf - 8。

第一步:在卡特琳娜。蝙蝠里面的头部第二行添加

set  JAVA_OPTS=-Xms128m  -Xmx512m  - xx: MaxPermSize=256 m  -Dfile.encoding=utf-8  -Dsun.jnu。utf - 8编码= 让java环境使用utf - 8编码

第二步:在server.xml添加

URIEncoding=癠TF-8"useBodyEncodingForURI=皌rue",使tomcat发送的请求使用utf - 8,如下面代码

<李>


<代码> & lt;连接器端口=?081”;协议=癏TTP/1.1“


<李>


connectionTimeout=?0000“


<李>

redirectPort=?443”;URIEncoding=癠TF-8"useBodyEncodingForURI=皌rue"/在

控制台可能会有乱码,但是改成gbk就没的事,但是微信签名失败


第二种解决方案:进行身体转码

字符串的身体,=新的字符串(“身体中文字段值“.toString () .getBytes (“ISO8859-1"),“UTF-8");

但是:微信返回的商品名会出现乱码

微信支付验证或签名失败的原因有哪些

<人力资源/>

第三种解决方案:修改签名MD5编码(<强>这个解决方案才是王道)

tomcat在窗口环境默认编码是gbk,所以在进行MD5签名的时候设置编码,为utf - 8就可以了。

微信支付验证或签名失败的原因有哪些

这个是我用的MD5签名工具类:

public  class  MD5Util  {      private  static  String  byteArrayToHexString (byte  b []), {   StringBuffer  resultSb =, new  StringBuffer ();   for  (int 小姐:=,0;,小姐:& lt;, b.length;,我+ +)   [我]resultSb.append (byteToHexString (b));      return  resultSb.toString ();   }      private  static  String  byteToHexString (byte  b), {   int  n =, b;   if  (n  & lt;, 0)   +=n  256;   int  d1 =, n /, 16;   int  d2 =, n  %, 16;   return  hexDigits (d1), +, hexDigits (d2);   }      public  static  String  MD5Encode (String 起源,String  charsetname), {   String  resultString =,空;   try  {   时间=resultString  new 字符串(起源);   MessageDigest  md =, MessageDigest.getInstance (“MD5");   if  (charsetname ==, null  | |,““.equals (charsetname))   时间=resultString  byteArrayToHexString (md.digest (resultString   .getBytes ()));   其他的   时间=resultString  byteArrayToHexString (md.digest (resultString   .getBytes (charsetname)));   },catch  (Exception 例外),{   }   return  resultString;   }      private  static  final  String  hexDigits [],=, {,“0”,“1“,,, 2,,,, 3,,,“4”,,“5“,   “6”,“7”,,“8”,,“9“,“a",,“b",,“c",,“d",,“e",,“f",};      }

看完了这篇文章,相信你对“微信支付验证或签名失败的原因有哪些”有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

微信支付验证或签名失败的原因有哪些