微信支付V3版本的那些事


最近在接入微信支付這塊功能,博客園也有很多博友發表了支付的各種吐槽和解決之道,基於那些經驗分享之上,我也來說說我的填坑之路。

1:准備工作,首先去申請注冊一個公眾號——服務號,然后將微信支付功能開通,獲得一系列的微信給你分配的商戶資料(重要的是商戶號),然后在微信支付商戶中心設置支付密鑰,這個密鑰在統一下單和微信簽名里面要用到。

2:搭建自己的支付框架項目,開始用自己熟悉的語言開發前台支付頁面和后台接口,這里可能因技術棧不同,而會衍生出多種版本,你可以基於PHP,JAVA,C#,NODEJS。

3:然后當你項目能生成訂單,進入支付后,開始我們今天的核心介紹=》微信支付(暫只介紹網頁支付方式JS-API),稍后會說明我的一些難點。

4:調用微信支付統一下單接口(https://api.mch.weixin.qq.com/pay/unifiedorder),傳遞下單參數,主要是簽名邏輯要正確,然后各個版本都已經有很多源碼了,注意幾個地方:

      4.1:終端IP是你微信商店線上(或測試)服務器IP。

      4.2:統一下單簽名參數名都是小寫。

      4.3:網頁支付需要參數openid

      4.4:訂單金額單位是分,整型,不能是浮點型

5:統一下單成功后,返回預支付標識prepay_id,這個在網頁支付中需要用到。

6:開始調用javascript的支付方法,這里可以使用JS-SDK的支付方法chooseWXPay,也可以用微信瀏覽器原生對象WeixinJSBridge,不同的是里面的參數要注意大小寫問題,由於微信內部編程人員可能不同,導致他們參數出現了一些大小寫不統一的問題,深表失望,也給廣大開發者上了一堂課,在做第三方開放接口的同時,一定要制定統一的編碼規則(具體是timeStamp這個參數,注意appId這個參與簽名的參數大小寫問題,前台調用和后台簽名參數大小寫必須保持一致,但是統一下單接口簽名是例外,這也是微信支付的一個坑)

7:如果簽名不正確,檢查參數大小寫,最后支付要設置授權目錄,如果支付報 _invalid appid ,應該就是授權目錄的問題,規則,授權目錄一定是支付頁面所在的目錄,例如支付頁面URL是:http://mydomain/weixin/pay/pay.php ,那授權目錄是:http://mydomain/weixin/pay/ 最后有斜杠,特別注意,很多同學也已經開始開發SPA微信網頁應用,最新版本微信已經支持Html5 pushstate 特性 本人用angularjs 開啟了此特性 ,頁面URL 經過angularjs 內部轉換后呈現在地址欄 等價於真是的URL,只是基於URL友好性,而且能解決微信只需要授權一次的問題,不然每個頁面都需要微信授權,授權目錄也應該基於此友好URL來設置,不然會遇到支付失敗的問題

8:以上是經驗總結,基於網上代碼太多,不放置代碼,任何問題可以留言討論。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM