微信支付--簽名錯(cuò)誤問題的解決方法
最近在做微信支付,調(diào)用微信的統(tǒng)一下單支付接口http://mch.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1時(shí),老是返回“簽名錯(cuò)誤”,偶爾可以成功,不知道是怎么回事。我在日志中打印出生成的字符串和簽名,然后用相同的數(shù)據(jù)在微信支付提供的在線支付調(diào)試工具生成簽名,發(fā)現(xiàn)生成的簽名結(jié)果一樣!生成的最終xml也一樣,但接口就是返回
<xml><return_code><![CDATA[FAIL]]></return_code> <return_msg><![CDATA[簽名錯(cuò)誤]]></return_msg> </xml>
POST給微信的xml內(nèi)容:
<xml> <appid><![CDATA[wxe587fed28211bccb]]></appid> <body><![CDATA[Demo]]></body> <device_info><![CDATA[WEB]]></device_info> <fee_type><![CDATA[CNY]]></fee_type> <mch_id><![CDATA[1265056801]]></mch_id> <nonce_str><![CDATA[ejnshgum39igp6qwpvzwb5jbwk8yigqz]]></nonce_str> <notify_url><![CDATA[http://testpay.le1.com.cn/wechat/notify.htm]]></notify_url> <openid><![CDATA[opZb3wsfU6RUZGxgFZ6OXVbdVxcU]]></openid> <out_trade_no><![CDATA[1002_09745565EpuxTunUCD0AA72E]]></out_trade_no> <product_id><![CDATA[QWE789C1523QWE78]]></product_id> <sign><![CDATA[BF4BB39FFAFC4DF470C5A3F7784678BD]]></sign> <spbill_create_ip><![CDATA[172.16.12.171]]></spbill_create_ip> <total_fee><![CDATA[1]]></total_fee> <trade_type><![CDATA[NATIVE]]></trade_type> </xml>
首先 , 看到返回msg顯示簽名錯(cuò)誤 , 第一反應(yīng)官網(wǎng)提供的路徑去生成了一下簽名做比較 , 結(jié)果發(fā)現(xiàn)簽名算法是沒錯(cuò)的.
https://pay.weixin.qq.com/wiki/tools/signverify/
找了各種方法 , 百度谷歌搜索了一下午 , 發(fā)現(xiàn)很多同行都遇到了一樣的問題 , 得到了以下解決方法
1、確認(rèn)公眾號(hào)的appSecret和商戶號(hào)的API密鑰沒有搞混。
2、重置商戶API密鑰。(本人親測是這樣解決了問題,tx真是個(gè)坑,我嚴(yán)重鄙視。)
3、確認(rèn)公眾號(hào)授權(quán)的域名和目錄是正確的。
4、參數(shù)body含有中文字符,改換英文簽名成功,那么就轉(zhuǎn)換字符編碼試試。
$dat = iconv('UTF-8','ISO8859-1',array2xml($package));
然而 , 并沒有解決問題 , 先吐槽一下微信支付這個(gè)巨坑 , 不是說它的api水平有多爛,但你至少說明白一點(diǎn)啊,每次看微信api都頭痛。比阿里差的不是一個(gè)數(shù)量級(jí)的。調(diào)阿里api都是,優(yōu)雅、簡單、舒服,效率高。調(diào)微信api的感覺是,憤怒、頭痛、惡心,想打人。
后續(xù)問題解決后會(huì)在該隨筆追加解決方案 .
追加: 問題已解決 , 重置了三次商戶密鑰.(....................)
在解決過程中又發(fā)現(xiàn)了一個(gè)較大的坑 , 在二維碼支付模式中 , 本來的設(shè)計(jì)是生成二維碼之后展示到頁面上讓用戶去長按識(shí)別來支付 , 但是今天發(fā)現(xiàn)微信關(guān)閉了這個(gè)功能 , 只能是用另外一臺(tái)手機(jī)去掃碼支付 .
由于用戶體驗(yàn)及其不好 , 后改用公眾號(hào)支付模式 .
總結(jié)
以上所述是小編給大家介紹的微信支付--簽名錯(cuò)誤問題的解決方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
Prometheus和NodeExporter安裝監(jiān)控?cái)?shù)據(jù)說明
這篇文章主要為大家介紹了Prometheus和node?exporter安裝監(jiān)控?cái)?shù)據(jù)說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07微信小程序(應(yīng)用號(hào))組件詳細(xì)介紹
這篇文章主要介紹了微信小程序(應(yīng)用號(hào))組件詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-09-09網(wǎng)址(URL)支持的最大長度是多少?最大支持多少個(gè)字符?
這篇文章主要介紹了網(wǎng)址(URL)支持的最大長度是多少?最大支持多少個(gè)字符?本文總結(jié)了IIS、apache服務(wù)器及瀏覽器軟件Internet Explorer、Firefox、Opera、chrome等主流的瀏覽器軟件支持情況,需要的朋友可以參考下2015-07-07win10環(huán)境下使用Hyper-V進(jìn)行虛擬機(jī)創(chuàng)建的教程(圖解)
這篇文章主要介紹了win10環(huán)境下使用Hyper-V進(jìn)行虛擬機(jī)創(chuàng)建的教程,本文圖文詳解給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11基于 Dubbo Admin 臨時(shí)踢除問題服務(wù)實(shí)例步驟
服務(wù)在線上運(yùn)行的過程中,難免遇到某些節(jié)點(diǎn)有問題,為了不影響整體服務(wù)的正常運(yùn)行,需要臨時(shí)下線問題的服務(wù)實(shí)例,這篇文章主要介紹了基于 Dubbo Admin 臨時(shí)踢除問題服務(wù)實(shí)例,需要的朋友可以參考下2022-12-12大數(shù)據(jù)HelloWorld-Flink實(shí)現(xiàn)WordCount
這篇文章主要介紹了大數(shù)據(jù)HelloWorld-Flink實(shí)現(xiàn)WordCount的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08VSCode配置Lua開發(fā)環(huán)境的實(shí)現(xiàn)示例
本文主要介紹了VSCode配置Lua開發(fā)環(huán)境的實(shí)現(xiàn)示例,主要包括下載及配置環(huán)境,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09詳解DES&3DES算法的原理以及C#和JS的實(shí)現(xiàn)
DES?全稱為?Data?Encryption?Standard,即數(shù)據(jù)加密標(biāo)準(zhǔn),是一種使用密鑰加密的塊算法。3DES?算法通過對(duì)?DES?算法進(jìn)行改進(jìn),增加?DES?的密鑰長度來避免類似的攻擊。本文就來聊聊它們的原理與實(shí)現(xiàn)吧2023-03-03