对接微信支付-坑
接上一篇,對接微信支付流程比較簡單,但是有一些小坑需要注意,所以相比上一篇,這篇才是重點。
一、獲取用戶的openId:
微信獲取用戶的openId的文檔是這個:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842,最開始我的想法是全部在后端實現,全部直接http請求。后來發現它的第一個地址是一個頁面,必須要完整的打開它才行,而它的文檔里面也有說:
所以在獲取用戶openId的時候,不能直接用簡單的http請求,需要前端打開對應的頁面,才能獲取到code,然后才能獲取用戶的openId。
二、微信內H5調起支付:
微信內H5調起支付的文檔:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6,里面已經有js的示例代碼了。一般流程是后端生成需要的數據給前端,前端調用示例代碼就能喚起微信支付了,但是因為微信公眾號文檔里面也有關于支付的,導致很多人以為在調用支付方法之前還要實現config去獲取微信配置。其實是不需要的,直接調用支付方法就可以了。
三、簽名問題:
這個是最多人吐槽的地方,在使用JSAPI支付的過程中,一共會有兩次生成簽名的地方:一次是調用統一下單API,需要生成簽名;還有一次是微信內H5調起支付時,需要生成簽名。這兩次生成簽名的方式要一致,這個問題在微信的簽名校驗工具里面是檢驗不出來的:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=20_1(傳說以前在文檔中沒有提到過,不過現在好了,文檔已經明確寫到了)。
簽名方法如果是直接用微信支付的SDK,還需要注意一點就是,WXconfig對象的構造方法里面沒有signType字段,signType是根據正式環境還是沙箱環境去確定的,至今我沒搞懂SDK為什么要這樣設計。
總結
- 上一篇: PNAS:问微生物群落演替之随机性与确定
- 下一篇: 硬件基础之模电数电电路(二)