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