簡單説説微信小程序的支付流程(日常水文~~)

語言: CN / TW / HK

一、前言

微信小程序為電商類小程序,提供了非常完善、優秀、安全的支付功能

在小程序內可調用微信的API完成支付功能,方便、快捷

場景如下圖所示:

  • 用户通過分享或掃描二維碼進入商户小程序,用户選擇購買,完成選購流程
  • 調起微信支付控件,用户開始輸入支付密碼
  • 密碼驗證通過,支付成功。商户後台得到支付成功的通知
  • 返回商户小程序,顯示購買成功
  • 微信支付公眾號下發支付憑證

以電商小程序為例

支付流程圖如下所示:

具體的做法:

  • 打開某小程序,點擊直接下單
  • wx.login獲取用户臨時登錄憑證code,發送到後端服務器換取openId
  • 在下單時,小程序需要將購買的商品Id,商品數量,以及用户的openId傳送到服務器
  • 服務器在接收到商品Id、商品數量、openId後,生成服務期訂單數據,同時經過一定的簽名算法,向微信支付發送請求,獲取預付單信息(prepay_id),同時將獲取的數據再次進行相應規則的簽名,向小程序端響應必要的信息
  • 小程序端在獲取對應的參數後,調用wx.requestPayment()發起微信支付,喚醒支付工作台,進行支付
  • 接下來的一些列操作都是由用户來操作的包括了微信支付密碼,指紋等驗證,確認支付之後執行鑑權調起支付
  • 鑑權調起支付:在微信後台進行鑑權,微信後台直接返回給前端支付的結果,前端收到返回數據後對支付結果進行展示
  • 推送支付結果:微信後台在給前端返回支付的結果後,也會向後台也返回一個支付結果,後台通過這個支付結果來更新訂單的狀態

其中後端響應數據必要的信息則是wx.requestPayment方法所需要的參數,大致如下:

wx.requestPayment({ // 時間戳 timeStamp: '', // 隨機字符串 nonceStr: '', // 統一下單接口返回的 prepay_id 參數值 package: '', // 簽名類型 signType: '', // 簽名 paySign: '', // 調用成功回調 success () {}, // 失敗回調 fail () {}, // 接口調用結束回調 complete () {} })

參數表如下所示:

三、結束

小程序支付和以往的網頁、APP微信支付大同小異,可以説小程序的支付變得更加簡潔,不需要設置支付目錄、域名授權等操作

參考文獻

  • http://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_8_0.shtml
  • http://juejin.cn/post/6844903895970349064