黔优媒体网-软文媒体自助发稿平台!
  1. 行业资讯
  2. 正文

微信支付验证或签名失败是什么原因?附三种解决方案

来源:黔优媒体网   时间:2024-09-19

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

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

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

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

    第一步:在catalina.bat里面的头部第二行添加

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

第二步:在server.xml添加

URIEncoding="UTF-8" useBodyEncodingForURI="true",使tomcat发送的请求使用utf-8,如下面代码

connectionTimeout="20000"

redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true" />

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

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

String body = new String("body中文字段值".toString().getBytes("ISO8859-1"),"UTF-8");

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

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

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

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

public class MD5Util {
 private static String byteArrayToHexString(byte b[]) {
 StringBuffer resultSb = new StringBuffer();
 for (int i = 0; i b.length; i++)
 resultSb.append(byteToHexString(b[i]));
 return resultSb.toString();
 private static String byteToHexString(byte b) {
 int n = b;
 if (n 0)
 n += 256;
 int d1 = n / 16;
 int d2 = n % 16;
 return hexDigits[d1] + hexDigits[d2];
 public static String MD5Encode(String origin, String charsetname) {
 String resultString = null;
 try {
 resultString = new String(origin);
 MessageDigest md = MessageDigest.getInstance( MD5 
 if (charsetname == null || .equals(charsetname))
 resultString = byteArrayToHexString(md.digest(resultString
 .getBytes()));
 else
 resultString = byteArrayToHexString(md.digest(resultString
 .getBytes(charsetname)));
 } catch (Exception exception) {
 return resultString;
 private static final String hexDigits[] = { 0 , 1 , 2 , 3 , 4 , 5 ,
 6 , 7 , 8 , 9 , a , b , c , d , e , f };
}

 相关推荐:

微信app支付:支付权限检查失败,是什么原因?

微信app支付:支付权限检查失败,是什么缘故

以上就是微信支付验证或签名失败是什么原因?附三种解决方案的详细内容,更多请关注php中文网其它相关文章!

微信app下载

微信是一款手机通信软件,支持通过手机网络发送语音短信、视频、图片和文字。微信可以单聊及群聊,还能根据地理位置找到附近的人,带给大家全新的移动沟通体验,有需要的小伙伴快来保存下载体验吧!


上一篇: 没有了
下一篇:没有了
【免责申明】黔优媒体网以上展示内容来源于用户自主上传、合作媒体、企业机构或网络收集整理,版权争议与本站无关,文章涉及见解与观点不代表黔优媒体网官方立场,请读者仅做参考,本文标题:微信支付验证或签名失败是什么原因?附三种解决方案;欢迎转载,转载时请说明出处。若您认为本文侵犯了您的版权信息,或您发现该内容有任何违法/违规的内容,请您立即联系我们及时修正或删除。(邮箱号: kefu@qianu.com)