PHP之 微信APP支付之APP端“code=-1”報錯的坑

相關文檔

相關文檔
APP支付業務流程:
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_3

問題來了

微信APP支付,初次,在【步驟3】的時候,因爲API祕鑰的(文檔含糊不清)問題,導致“簽名錯誤”的業務流程,好不容易,處理,可到了【步驟4】,商戶APP調起微信支付,安卓忽然告訴我說,他那邊報“code=-1”的錯誤,呃嗯?什麼鬼?開始查看文檔,看是不是哪裏有問題。

我們發現,微信支付的文檔,又開始讓你開啓“全民猜猜猜”的模式,注意這裏的圈紅,和圈藍的地方,“可能”,“其他異常”,永遠都不說透,就是讓你猜,猜到讓你瘋,讓你死,貌似成了微信乃至騰訊文檔的一貫作風,嚴重懷疑微信支付文檔和騰訊雲文檔,是一個人寫的,要麼,就是一個負責人,我看到很多人都吐糟,乃至問候他祖宗!有的人,可能會說,至於麼,當你被老闆在後面催的都快上牆的時候,你就會理解十萬個草泥馬是多麼壯觀而宏大場景了。

解決問題

那麼,問題究竟出在了哪裏呢?

只能網上找了,因爲,APP端是用【步驟3】返回的一堆數據去調起“微信支付”的。於是,找到相應的【步驟2】的文檔:

https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1

注意,上圖圈藍的部分,緊接着,再看一下,下圖:

兩個問題,“字段名稱”和“對應的值”。也就是說,字段名稱首先你不能寫錯了,其實,對應的值更不能錯,錯了,就會給你報“code=-1”的錯誤!

所以,我們在代碼處理的時候,一定要注意上述兩個問題,因此,在返回數據的時候:

字段名必須是“noncestr”,對應的值,必須是微信端返回來的“nonce_str”,而不是,你重新來個隨機字符串。

其實,我們仔細觀察,就能發現,返回給APP的數據中,能動的,就“noncestr ”跟 “timestamp”,這兩個字段,一個是標識用,一個是驗證時效的。

最後,排除掉時間戳,你就只剩下“noncestr ”,處理成微信端返回的“nonce_str”的值,最後,試了一下,就可以了!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章