微信支付(JSAPI、小程式)開發流程記錄
阿新 • • 發佈:2021-10-19
微信支付能力分類
JSAPI支付
APP支付
Native支付
小程式支付
該記錄介紹
記錄了小程式支付的JSAPI下單與小程式調起支付API的流程
前置準備
- 已經認證的微信公眾號、小程式(建議先認證公眾號,之後使用公眾號資質申請小程式)
- 已經認證的微信支付
小程式開發準備
- 獲取小程式的appid與secret
微信支付開發準備
1.商戶號獲取(mch_id)
2. 設定APIv3金鑰
在賬戶中心-API安全頁面來設定APIv3金鑰(金鑰請保管好,設定後無法檢視,如果忘記了就只能修改了)
3.證書項說明
微信支付有兩個很重要的證書,分別是商戶證書和平臺證書,兩個證書的區別如下,引自微信 官方支付官方文件
- “商戶證書”是指由商戶申請的,包含商戶的商戶號、公司名稱、公鑰資訊的證書。
- “平臺證書”是指由微信支付負責申請的,包含微信支付平臺標識、公鑰資訊的證書。
- 商戶在呼叫 API 時用自身的私鑰簽名,微信支付使用商戶證書中的公鑰來驗籤。微信支付在響應的報文中使用自身的私鑰簽名,商戶使用平臺證書中的公鑰來驗籤。
簡單的來說,商戶證書是向微信支付發起請求或回覆微信支付回撥時使用的,平臺證書是微信支付向商戶發起請求或回覆商戶回撥時使用的。
另外,微信支付向商戶進行請求回覆與請求回撥時除了密文外,還會附帶明文資訊,所以如果對安全性要求不是極高的情況下,可以不使用平臺證書,博主只實現了微信支付-JSAPI下單
4. 申請API證書(商戶證書)
點選賬戶中心-API安全-申請證書來申請API證書
根據提示下載證書工具
根據提示申請證書
之後將證書工具中生成的請求串貼上到網頁中,即可完成API證書的生成(此時一定要保管好證書,證書只能下載一次,注意證書不要洩露給其他人)
5. 獲取平臺證書與序列號
獲取方法有兩種,第一種方法為通過微信支付官方文件提供的介面來獲取,第二種方法為通過微信支付官方提供的工具來獲取。
(不要覺得第二種手動的工具使用麻煩而使用第一種,後來我才知道平臺證書5年才更新一次,T-T
- 第一種方法可微信支付官方文件,該方法對於新手極其複雜,不建議新手採用該方法,故不作敘述,需要程式碼及技術支援請聯絡博主。
- 第二種方法時使用官方提供的工具,詳情可訪問檢視https://github.com/wechatpay-apiv3/CertificateDownloader
小程式支付程式執行流程
- 小程式獲取使用者code和要支付的金額(請根據實際專案需求來決定支付金額是由前端設定還是後端設定)
- 後端根據小程式的使用者code獲取使用者openid
- 呼叫JSAPI下單介面(該過程需要使用商戶證書對請求資料進行簽名)
- 小程式調起支付(該過程需要使用商戶證書對請求資料進行簽名,為了安全性簽名過程請務必在後端實現)
- 使用者支付
- 等待微信支付平臺的支付結果回撥
避免踩坑
經過測試發現,JSAPI下單、JSAPI調起支付API的呼叫過程中,所有的時間戳與簽名使用的nonceStr必須完全一樣,才可以調起支付成功,否則會提示簽名驗證失敗。