面試官:說說微信小程序的支付流程?
一、前言
微信小程序?yàn)殡娚填愋〕绦颍峁┝朔浅M晟?、?yōu)秀、安全的支付功能
在小程序內(nèi)可調(diào)用微信的API完成支付功能,方便、快捷
場景如下圖所示:
- 用戶通過分享或掃描二維碼進(jìn)入商戶小程序,用戶選擇購買,完成選購流程
- 調(diào)起微信支付控件,用戶開始輸入支付密碼
- 密碼驗(yàn)證通過,支付成功。商戶后臺(tái)得到支付成功的通知
- 返回商戶小程序,顯示購買成功
- 微信支付公眾號(hào)下發(fā)支付憑證
二、流程
以電商小程序?yàn)槔?/p>
支付流程圖如下所示:
具體的做法:
- 打開某小程序,點(diǎn)擊直接下單
- wx.login獲取用戶臨時(shí)登錄憑證code,發(fā)送到后端服務(wù)器換取openId
- 在下單時(shí),小程序需要將購買的商品Id,商品數(shù)量,以及用戶的openId傳送到服務(wù)器
- 服務(wù)器在接收到商品Id、商品數(shù)量、openId后,生成服務(wù)期訂單數(shù)據(jù),同時(shí)經(jīng)過一定的簽名算法,向微信支付發(fā)送請(qǐng)求,獲取預(yù)付單信息(prepay_id),同時(shí)將獲取的數(shù)據(jù)再次進(jìn)行相應(yīng)規(guī)則的簽名,向小程序端響應(yīng)必要的信息
- 小程序端在獲取對(duì)應(yīng)的參數(shù)后,調(diào)用wx.requestPayment()發(fā)起微信支付,喚醒支付工作臺(tái),進(jìn)行支付
- 接下來的一些列操作都是由用戶來操作的包括了微信支付密碼,指紋等驗(yàn)證,確認(rèn)支付之后執(zhí)行鑒權(quán)調(diào)起支付
- 鑒權(quán)調(diào)起支付:在微信后臺(tái)進(jìn)行鑒權(quán),微信后臺(tái)直接返回給前端支付的結(jié)果,前端收到返回?cái)?shù)據(jù)后對(duì)支付結(jié)果進(jìn)行展示
- 推送支付結(jié)果:微信后臺(tái)在給前端返回支付的結(jié)果后,也會(huì)向后臺(tái)也返回一個(gè)支付結(jié)果,后臺(tái)通過這個(gè)支付結(jié)果來更新訂單的狀態(tài)
其中后端響應(yīng)數(shù)據(jù)必要的信息則是wx.requestPayment方法所需要的參數(shù),大致如下:
- wx.requestPayment({
- // 時(shí)間戳
- timeStamp: '',
- // 隨機(jī)字符串
- nonceStr: '',
- // 統(tǒng)一下單接口返回的 prepay_id 參數(shù)值
- package: '',
- // 簽名類型
- signType: '',
- // 簽名
- paySign: '',
- // 調(diào)用成功回調(diào)
- success () {},
- // 失敗回調(diào)
- fail () {},
- // 接口調(diào)用結(jié)束回調(diào)
- complete () {}
- })
參數(shù)表如下所示:
三、結(jié)束
小程序支付和以往的網(wǎng)頁、APP微信支付大同小異,可以說小程序的支付變得更加簡潔,不需要設(shè)置支付目錄、域名授權(quán)等操作
參考文獻(xiàn)
https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_8_0.shtml
https://juejin.cn/post/6844903895970349064