近期做項目應用到了微信公眾號支付功能。這里記錄遇到的各種坑,希望對你們有幫助。
一、完整開發及業務流程
①登錄微信公眾平台進行相關配置(網上找到的一個比較好的說明:https://blog.csdn.net/towtotow/article/details/79718482)
准備工作:appId、appSecret、mch_id(微信支付分配的商戶號)、key(商戶平台設置的密鑰key)
②微信H5頁面提交訂單到本系統后端
③后端接收到訂單信息,進行如下處理
-
微信支付步驟:
-
1、將所有非空參數值的參數按照參數名ASCII碼從小到大排序,使用URL鍵值對的格式(即key1=value1&key2=value2…)拼接成字符串stringA
-
2、在stringA最后拼接上key得到stringSignTemp字符串,並對stringSignTemp進行MD5運算,再將得到的字符串所有字符轉換為大寫,得到sign值signValue
-
注:key設置路徑:微信商戶平台(pay.weixin.qq.com)-->賬戶設置-->API安全-->密鑰設置
-
3、將所有提交的參數(包括sign)封裝到實體,並轉換成xml,調用微信統一下單接口請求訂單,接收返回值
-
4、將返回的xml數據解析成map
-
5、判斷return_code是否為成功
-
6、生成JSAPI頁面調用的支付參數並簽名,返回給前端頁面
-
7、前端調用JSAPI接口,進行支付輸密碼操作,提交成功后,后台等待微信支付通知回調
-
8、接收到通知,判斷支付結果是否成功,修改訂單表狀態,並插入微信支付表,支付結束
④前端接收到后台返回的數據串,調用微信jdk接口,WeixinJSBridge.getBrandWCPayRequest,將相關數據傳入,即可調起微信支付。
⑤支付成功后,微信會調用回調接口,接口內進行驗簽,判斷狀態是否成功,且金額與系統金額是否相同,通過驗證后,進行業務操作,支付流程結束。
二、詳細步驟說明
1.設置支付目錄
請確保實際支付時的請求目錄與后台配置的目錄一致,否則將無法成功喚起微信支付。
在微信商戶平台(pay.weixin.qq.com)設置您的公眾號支付支付目錄,設置路徑:商戶平台-->產品中心-->開發配置,如圖7.7所示。公眾號支付在請求支付的時候會校驗請求來源是否有在商戶平台做了配置,所以必須確保支付目錄已經正確的被配置,否則將驗證失敗,請求支付不成功。

2.設置授權域名
開發公眾號支付時,在統一下單接口中要求必傳用戶openid,而獲取openid則需要您在公眾平台設置獲取openid的域名,只有被設置過的域名才是一個有效的獲取openid的域名,否則將獲取失敗。具體界面如圖7.8所示:


三、業務流程時序圖

后續會更新代碼部分詳解,以及過程中需要注意到的問題,敬請期待!!
