近期作項目應用到了微信公衆號支付功能。這裏記錄遇到的各類坑,但願對大家有幫助。前端
1、完整開發及業務流程後端
①登陸微信公衆平臺進行相關配置(網上找到的一個比較好的說明:https://blog.csdn.net/towtotow/article/details/79718482)安全
準備工做:appId、appSecret、mch_id(微信支付分配的商戶號)、key(商戶平臺設置的密鑰key)微信
②微信H5頁面提交訂單到本系統後端app
③後端接收到訂單信息,進行以下處理微信公衆平臺
微信支付步驟:微信支付
一、將全部非空參數值的參數按照參數名ASCII碼從小到大排序,使用URL鍵值對的格式(即key1=value1&key2=value2…)拼接成字符串stringAspa
二、在stringA最後拼接上key獲得stringSignTemp字符串,並對stringSignTemp進行MD5運算,再將獲得的字符串全部字符轉換爲大寫,獲得sign值signValue.net
注:key設置路徑:微信商戶平臺(pay.weixin.qq.com)-->帳戶設置-->API安全-->密鑰設置code
三、將全部提交的參數(包括sign)封裝到實體,並轉換成xml,調用微信統一下單接口請求訂單,接收返回值
四、將返回的xml數據解析成map
五、判斷return_code是否爲成功
六、生成JSAPI頁面調用的支付參數並簽名,返回給前端頁面
七、前端調用JSAPI接口,進行支付輸密碼操做,提交成功後,後臺等待微信支付通知回調
八、接收到通知,判斷支付結果是否成功,修改訂單表狀態,並插入微信支付表,支付結束
④前端接收到後臺返回的數據串,調用微信jdk接口,WeixinJSBridge.getBrandWCPayRequest,將相關數據傳入,便可調起微信支付。
⑤支付成功後,微信會調用回調接口,接口內進行驗籤,判斷狀態是否成功,且金額與系統金額是否相同,經過驗證後,進行業務操做,支付流程結束。
2、詳細步驟說明
1.設置支付目錄
請確保實際支付時的請求目錄與後臺配置的目錄一致,不然將沒法成功喚起微信支付。
在微信商戶平臺(pay.weixin.qq.com)設置您的公衆號支付支付目錄,設置路徑:商戶平臺-->產品中心-->開發配置,如圖7.7所示。公衆號支付在請求支付的時候會校驗請求來源是否有在商戶平臺作了配置,因此必須確保支付目錄已經正確的被配置,不然將驗證失敗,請求支付不成功。
2.設置受權域名
開發公衆號支付時,在統一下單接口中要求必傳用戶openid,而獲取openid則須要您在公衆平臺設置獲取openid的域名,只有被設置過的域名纔是一個有效的獲取openid的域名,不然將獲取失敗。具體界面如圖7.8所示:
3、業務流程時序圖
後續會更新代碼部分詳解,以及過程當中須要注意到的問題,敬請期待!!