1、概述
微信支付,大家都聽說過,使用友善,對接也很友善。
項目中如果存在支付需求,通常都會想到微信支付和支付寶支付。
今天就簡單講講微信支付的對接流程與實作。
2、微信支付的方式
微信支付主要包含以下支付方式:
1)JSAPI支付:在微信内部打開前端頁面,支付時使用 JSAPI 接口調起微信支付子產品完成收款。
2)APP支付:在 IOS 或 安卓 開發的 APP 中,調起微信支付子產品完成收款。
3)H5支付:在手機的 某浏覽器APP 中打開前端頁面,支付時通過url跳轉到微信的支付中間頁,調起微信支付子產品完成收款。
4)Native支付:通常是在PC的浏覽器打開前端頁面,支付時生成收款二維碼,使用手機微信掃描收款二維碼完成收款。
5)小程式支付:在小程式中調起微信支付子產品完成收款。
6)付款碼支付:使用者出示微信錢包中的條碼、二維碼,商家通過專用的硬體裝置掃描使用者條碼完成收款。
7)刷臉支付:使用者在內建微信刷臉支付SDK的線下硬體機具上"刷臉"完成支付。
這裡我們主要介紹一下前5種支付方式。
3、支付流程概述
雖然支付方式不同,但支付流程都是大同小異,下面我們就來簡單介紹一下:
步驟一:生成訂單
步驟二:調用微信的下單接口
步驟三:調起微信支付
步驟四:接收微信支付結果通知
4、訂單狀态
根據支付流程,訂單的狀态可以大緻分為:待支付、支付中、支付成功、支付失敗。
5、步驟一:生成訂單
該步驟不需要與微信的接口互動,完全是業務系統自己的邏輯,主要是記錄訂單中商品的明細、數量、金額等資訊。
生成訂單後,訂單的初始狀态為 待支付。
6、步驟二:調用微信的下單接口
訂單生成後,去調用微信的下單接口,在微信支付服務背景生成預支付交易單。
注:微信下單接口會用到appid(應用ID)和mchid(直連商戶号),可以提前在 微信公衆平台、微信開放平台 和 微信支付平台 申請好相應的資訊。
不同支付方式調用的接口不同,接口的傳回值也不相同:
1)JSAPI支付、小程式支付
這兩種支付方式調用的是 JSAPI下單接口 https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi
傳回值是 prepay_id(預支付交易會話辨別)
2)APP支付
調用 APP下單接口 https://api.mch.weixin.qq.com/v3/pay/transactions/app
3)H5支付
調用 H5下單接口 https://api.mch.weixin.qq.com/v3/pay/transactions/h5
傳回值是 h5_url(支付跳轉連結)
4)Native支付
調用Native下單接口 https://api.mch.weixin.qq.com/v3/pay/transactions/native
傳回值是 code_url(二維碼連結)
在調用微信下單接口時,有一個必填字段 notify_url(通知位址),指定了本次支付的回調位址。
微信下單接口調用成功後,訂單的狀态可更改為 支付中,如果調用不成功則訂單狀态改為 支付失敗。
7、步驟三:調起微信支付
微信下單接口調用成功後,可根據不同的支付方式調起微信支付。
1)JSAPI支付
前端頁面使用微信支付提供的前端JS方法調起微信支付,此處會用到微信下單接口傳回的 prepay_id(預支付交易會話辨別)。
APP端使用微信支付提供的SDK調起微信支付,此處會用到微信下單接口傳回的 prepay_id(預支付交易會話辨別)。
前端頁面直接重定向到微信下單接口傳回的 h5_url(支付跳轉連結) 位址調起微信支付中間頁,完成支付。
前端将微信下單接口傳回的 code_url(二維碼連結)轉換成二維碼圖檔,使用者通過手機微信掃碼進行支付。
5)小程式支付
小程式端使用 wx.requestPayment 方法調起微信支付,此處會用到微信下單接口傳回的 prepay_id(預支付交易會話辨別)。
如果調起失敗,将訂單狀态改為 支付失敗。
8、步驟四:接收微信支付結果通知
當微信端有了支付結果後,會回調通知業務系統支付的結果,回調參數中包含業務訂單号(調用微信下單接口時指定的),根據業務訂單号,更新訂單的狀态。
在接收到微信支付結果通知之前,可為使用者展示一個 支付中 的等待頁面,定時向背景請求訂單狀态,當訂單狀态由支付中變為其他狀态,則支付完畢,将最終狀态展現給使用者。
9、綜述
好了,講到這裡,大家對微信支付應該有個初步的認識, 歡迎多多交流。