1. 程式人生 > >微信支付-公眾號支付-choosewxpay:fail

微信支付-公眾號支付-choosewxpay:fail

是司機都要翻船的.

公眾號支付涉及微信平臺兩個大類的介面,要在客戶端最後調用出成功的微信支付介面真是一件不容易的事情.

JSAPI類介面:

1.wx.config

2.wx.chooseWXPay

支付類介面:

1.unifiedorder

2.notify

網上一堆的碼工朋友被騰訊坑得不要不要地.現在想總結一下.

1.後臺的配置一定要配置好:

1.1.公眾號平臺:配置好域名,IP白名單.

1.2.商戶平臺:授權目錄配置,API-Key.一定要配置準確.

比如:呼叫以上JSSDK的頁面地址為 http://.com/payaeixin/c.html

那麼測試授權目錄配置為 http://a.com/pay/weixin/,如果只是配置成 http://a.com/pay/將報以上錯誤.

1.3.手機微信端:微信程式需要擁有[懸浮窗許可權].

2.API的簽名一定要準確.引數數量,名稱,順序和加密演算法,金鑰都要準確.多使用簽名工具校驗一下.

2.1.引數的數量數一數就可以比較出來的.

2.2.引數的名稱就要跟緊API文件了.

最典型的一個錯誤是:

       使用wx.chooseWXPay,需要後臺返回的引數列表中有timestamp,而後臺生成該引數的值後,要簽名,而簽名用的名稱是timeStamp.注意紅色字元s和S.加上中間程式碼中的名稱,那最起碼要4個類似的名稱了,一定要注意.

2.3.引數的順序,耐心檢查,或跟校驗工具對比一下.

2.4.加密演算法,我使用的是最新官方JAVA-SDK,預設使用的是HMACSHA256,而前臺JSAPI要使用的是MD5,而如果配置useSandBox,則會有一堆奇怪的URL出來,這個我沒空地追究了,想用一般的URL,又要用MD5,只能去改原始碼了.順便再吐槽一下神奇的IWXPayDomain介面.config.getWXPayDomain().getDomain(config)-->自己使用自己作為引數呼叫自己的方法.

2.5.加密金鑰,使用微信支付一定要使用商戶平臺的API-KEY,而不是公眾號上的APP-SECRET.

2.6校驗工具:

3.API的引數理解要準確:

統一下單介面中:

終端IP spbill_create_ip String(16) 123.12.12.123 APP和網頁支付提交使用者端ip,Native支付填呼叫微信支付API的機器IP。

這個IP指的是使用者端的IP.不是指伺服器的IP,也不是指代理IP(如果你使用代理IP).理論上這是一個公網的IP地址,微信可用於二次驗證,防止用一個IP請求下單,用另一個IP支付.

4.像騰訊鄙視安卓一樣鄙視騰訊.最好是可以先用iphone手機進行除錯,蘋果手機對錯誤的提示是很友好的,一下就能看出具體錯誤了.

如果以上4點看一遍都沒辦法幫忙解決問題,最好看多兩遍.還不行.我覺得最佳的選擇是仔細地重寫一次.