1. 程式人生 > 其它 >微信支付(JSAPI、小程式)開發流程記錄

微信支付(JSAPI、小程式)開發流程記錄

微信支付能力分類

JSAPI支付
APP支付
Native支付
小程式支付

該記錄介紹

記錄了小程式支付的JSAPI下單小程式調起支付API的流程

前置準備

  • 已經認證的微信公眾號、小程式(建議先認證公眾號,之後使用公眾號資質申請小程式)
  • 已經認證的微信支付

小程式開發準備

  1. 獲取小程式的appidsecret

微信支付開發準備

1.商戶號獲取(mch_id)

2. 設定APIv3金鑰

在賬戶中心-API安全頁面來設定APIv3金鑰(金鑰請保管好,設定後無法檢視,如果忘記了就只能修改了)

3.證書項說明

微信支付有兩個很重要的證書,分別是商戶證書平臺證書,兩個證書的區別如下,引自微信

官方支付官方文件

  • “商戶證書”是指由商戶申請的,包含商戶的商戶號、公司名稱、公鑰資訊的證書。
  • “平臺證書”是指由微信支付負責申請的,包含微信支付平臺標識、公鑰資訊的證書。
  • 商戶在呼叫 API 時用自身的私鑰簽名,微信支付使用商戶證書中的公鑰來驗籤。微信支付在響應的報文中使用自身的私鑰簽名,商戶使用平臺證書中的公鑰來驗籤。

簡單的來說,商戶證書是向微信支付發起請求或回覆微信支付回撥時使用的,平臺證書是微信支付向商戶發起請求或回覆商戶回撥時使用的。

另外,微信支付向商戶進行請求回覆與請求回撥時除了密文外,還會附帶明文資訊,所以如果對安全性要求不是極高的情況下,可以不使用平臺證書,博主只實現了微信支付-JSAPI下單

這一個介面,所以微信支付進行請求回覆與請求回撥的密文解碼部分,本篇文章不做說明,如果後續有對接則補充。

4. 申請API證書(商戶證書)

點選賬戶中心-API安全-申請證書來申請API證書

根據提示下載證書工具

根據提示申請證書

之後將證書工具中生成的請求串貼上到網頁中,即可完成API證書的生成(此時一定要保管好證書,證書只能下載一次,注意證書不要洩露給其他人)

5. 獲取平臺證書與序列號

獲取方法有兩種,第一種方法為通過微信支付官方文件提供的介面來獲取,第二種方法為通過微信支付官方提供的工具來獲取。
(不要覺得第二種手動的工具使用麻煩而使用第一種,後來我才知道平臺證書5年才更新一次,T-T

我在寫平臺證書獲取程式碼這裡花了3個小時的時間才除錯成功)

  • 第一種方法可微信支付官方文件,該方法對於新手極其複雜,不建議新手採用該方法,故不作敘述,需要程式碼及技術支援請聯絡博主。
  • 第二種方法時使用官方提供的工具,詳情可訪問檢視https://github.com/wechatpay-apiv3/CertificateDownloader

小程式支付程式執行流程

  1. 小程式獲取使用者code和要支付的金額(請根據實際專案需求來決定支付金額是由前端設定還是後端設定)
  2. 後端根據小程式的使用者code獲取使用者openid
  3. 呼叫JSAPI下單介面(該過程需要使用商戶證書對請求資料進行簽名)
  4. 小程式調起支付(該過程需要使用商戶證書對請求資料進行簽名,為了安全性簽名過程請務必在後端實現)
  5. 使用者支付
  6. 等待微信支付平臺的支付結果回撥

避免踩坑

經過測試發現,JSAPI下單、JSAPI調起支付API的呼叫過程中,所有的時間戳與簽名使用的nonceStr必須完全一樣,才可以調起支付成功,否則會提示簽名驗證失敗。