主机参考:VPS测评参考推荐/专注分享VPS服务器优惠信息!若您是商家可以在本站进行投稿,查看详情!此外我们还提供软文收录、PayPal代付、广告赞助等服务,查看详情! |
我们发布的部分优惠活动文章可能存在时效性,购买时建议在本站搜索商家名称可查看相关文章充分了解该商家!若非中文页面可使用Edge浏览器同步翻译!PayPal代付/收录合作 |
微信统一支付验证失败是怎么回事?签名失败,货款无法支付,真的很着急,主要是身体中文的问题。解决起来很麻烦。百度做了很多,却找不到一篇完全解决的文章。总之各种烦恼。这里就不赘述了。让我们开门见山:
因为公司的项目要微信支付,调配的时候发现签名总是不对。经过调查,原来是编码问题。然后,找到原因,就能解决问题。本文详细介绍了三种解决方案。如果你读完的时间有限,那就直接进入第三个解决方案,希望能帮到你。
第一种解决方案:将tomcat编码设置为utf-8。window环境下tomcat的默认编码是gbk,所以需要将Tomcat编码设置为UTF -8。
第一步:在catalina.bat文件头的第二行添加
set _ opts = -xms 128 m-xmx 512 m-xx:maxperm size = 256 m-dfile . encoding = utf-8 -dsun . jnu . encoding = ut F-8让java环境使用ut F-8编码。第2步:在server.xml中添加它
URIEncoding = ut F-8 ;useBodyEncodingForURI = true ,以便tomcat发送的请求使用utf-8,如下面的代码所示
lt连接器端口= 8081 协议= HTTP/1.1 ;
connectionTimeout = 20000 gt;
重定向端口= 8443 URIEncoding = ut F-8 ;useBodyEncodingForURI = true / gt;
控制台可能是乱码,换成gbk没问题,但是微信签名失败。
第二种解决方案:body转码String body = new String( ;中国人体场值”。toString()。getBytes( ;iso 8859-1 ;), ut F-8 ;);
但是微信返回的商品名称会出现乱码。
第三种方案:修改签名md5编码(这种方案才是王道)。tomcat在window环境下的默认编码是gbk,所以签名MD5的时候设置编码为utf-8就足够了。
这是我使用的MD5签名工具类:
public class MD 5 util { private static String byteArrayToHexString(byte b[]){ String buffer resultSb = new String buffer();for(int I = 0;我 ltb .长度;i++)results b . append(byteToHexString(b[I]));返回resultsb . tostring();}私有静态字符串byteToHexString(byte b){ int n = b;如果(n lt0)n+= 256;int D1 = n/16;int d2 = n % 16返回hex digits[D1]+hex digits[D2];}公共静态字符串MD5Encode(String origin,String charset name){ String result String = null;try { result String = new String(origin);message digest MD = message digest . getinstance( ;MD5 );if(charset name = = null | | ;"。equals(charset name))resultString = byteArrayToHexString(MD . digest(resultString . getbytes());elseresultString = byteArrayToHexString(MD . digest(resultstring . getbytes(charset name)));} catch (Exception异常){ }返回resultString}私有静态最终字符串hex digits[]= { ;0 gt;, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , a , b , c , d , e , f };}相关建议:
微信支付:支付权限检查失败。原因是什么?
微信支付:支付权限检查失败。原因是什么?微信支付验证或签名失败的原因是什么?附上三个解决方案的细节。请多关注主机参考其他相关文章!
这几篇文章你可能也喜欢:
- 微信二次开发中短信的请求和发送(微信发短信)
- 微信二次开发中各类消息的包装
- Java微信开发的自定义菜单创建(微信自定义菜单多久生效)
- 微信支付验证或签名失败的原因是什么?附三个解决方案(微信支付签名验证失败怎么回事)
- java的数据类型有哪些?
本文由主机参考刊发,转载请注明:微信支付验证或签名失败的原因是什么?附三个解决方案(什么意思,微信签名验证失败) https://zhujicankao.com/79589.html
评论前必须登录!
注册