微信支付驗證或簽名失敗是什么原因?附三種解決方案
閱讀 37175 · 發(fā)布日期 2020-08-24 17:26 · 溫州優(yōu)光網(wǎng)絡(luò)科技有限公司|建站|APP小程序制作|做網(wǎng)站SEO推廣優(yōu)化
【摘要】
iOS微信統(tǒng)一支付驗證失敗是怎么回事?簽名失敗一直付不了款確實很著急,主要是body中文問題,解決起來很麻煩,百度了好多,都找不到徹底解決的文章,總之各種麻煩。這里就不多做贅述了,切入正題:因為公司的項目要用微信支付,部署時候發(fā)現(xiàn)總是報簽名錯,經(jīng)過排查,原來是編碼問題,那么找到原因了就來解決問題吧,本文詳細(xì)介紹了三種解... 【溫州小程序開發(fā),溫州微信公眾號,平陽做網(wǎng)站,平陽網(wǎng)站建設(shè)公司,平陽小程序商城制作,昆陽萬全做網(wǎng)站,鰲江水頭小程序,蕭江騰蛟微信公眾號,山門順溪南雁海西南麂鳳臥麻步懷溪網(wǎng)絡(luò)網(wǎng)店服務(wù),政采云網(wǎng)店管理服務(wù)】...
iOS微信統(tǒng)一支付驗證失敗是怎么回事?簽名失敗一直付不了款確實很著急,主要是body中文問題,解決起來很麻煩,百度了好多,都找不到徹底解決的文章,總之各種麻煩。
這里就不多做贅述了,切入正題:
因為公司的項目要用微信支付,部署時候發(fā)現(xiàn)總是報簽名錯,經(jīng)過排查,原來是編碼問題,那么找到原因了就來解決問題吧,本文詳細(xì)介紹了三種解決方案,如果時間有限沒空看完的話,那就直接奔第三種方案吧,希望能幫助到大家。
第一種解決方案:
設(shè)置tomcat編碼為utf-8 tomcat在window環(huán)境默認(rèn)編碼是gbk,所以要設(shè)置tomcat編碼為utf-8。
第一步:
在catalina.bat里面的頭部第二行添加set JAVA_OPTS=-Xms128m -Xmx512m -XX:MaxPermSize=256m -Dfile.encoding=utf-8 -Dsun.jnu.encoding=utf-8讓java環(huán)境使用utf-8編碼第二步:
在server.xml添加URIEncoding="UTF-8" useBodyEncodingForURI="true",使tomcat發(fā)送的請求使用utf-8,如下面代碼
進(jìn)行body轉(zhuǎn)碼String body = new String("body中文字段值".toString().getBytes("ISO8859-1"),"UTF-8");但是:
微信返回的商品名會出現(xiàn)亂碼第三種解決方案:
修改簽名MD5編碼(這個解決方案才是王道)tomcat在window環(huán)境默認(rèn)編碼是gbk,所以在進(jìn)行md5簽名的時候設(shè)置編碼,為utf-8就可以了。
這個是我用的MD5簽名工具類:
public class MD5Util {
private static String byteArrayToHexString(byte b[]) {
StringBuffer resultSb = new StringBuffer();
for (int i = 0;
i i++) resultSb.append(byteToHexString(b[i]));
return resultSb.toString();
}
private static String byteToHexString(byte b) {
int n = b;
if (n 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" }
;
}
相關(guān)推薦:
微信app支付:
支付權(quán)限檢查失敗,是什么原因?微信app支付:
支付權(quán)限檢查失敗,是什么緣故以上就是微信支付驗證或簽名失敗是什么原因?附三種解決方案的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
微信
分享相關(guān)標(biāo)簽:
java 微信支付本文原創(chuàng)發(fā)布php中文網(wǎng),轉(zhuǎn)載請注明出處,感謝您的尊重!
上一篇:
android微信登陸、分享做了一段時間了發(fā)現(xiàn)的一些坑
下一篇:
微信公眾號里“JS接口域名”實現(xiàn)分享功能相關(guān)文章相關(guān)視頻修改微信號有什么影響嗎?微信中共享實時位置什么意思數(shù)據(jù)庫設(shè)計的基本原則是什么?微信小程序調(diào)用圖片安全API微信支付驗證或簽名失敗是什么原因?附三種解決方案編寫第一個 JavaScript 程序JavaScript 放在哪里?JavaScript基本語法JavaScript字符串JavaScript數(shù)組 [溫州做微信公眾號]
為您推薦
- 微信公眾號里“JS接口域名”實現(xiàn)分享功能 2020-08-24
- 微信支付驗證或簽名失敗是什么原因?附三種解決方案 2020-08-24
- android微信登陸、分享做了一段時間了發(fā)現(xiàn)的一些坑 2020-08-24
- 最新整理出的微信分享后端接口實現(xiàn)的大致流程 2020-08-24
- 微信公眾號開發(fā):商戶如何給用戶發(fā)紅包實例講解 2020-08-24
- 長見識了,原來微信瀏覽器內(nèi)可以直接啟動外部瀏覽器 2020-08-24
- 怎么創(chuàng)建微信公眾號自定義菜單欄?這里給出了權(quán)威解答 2020-08-24
- 微信公眾號開發(fā),實現(xiàn)倒計時的一個功能(純代碼) 2020-08-24