微信支付之掃碼支付、公眾號支付、H5支付、小程序支付相關業務流程分析總結

微信支付之掃碼支付、公眾號支付、H5支付、小程序支付相關業務流程分析總結

前言

很久以來,一直想寫一篇微信支付有關的總結文檔;一方面是總結自己的一些心得,另一方面也可以幫助別人,但是因種種原因未能完全理解透徹微信支付的幾大支付方式,今天有幸做一些總結上的文章,也趁此機會,將一年多以來的相關經驗分享一下。

概述

1. 掃碼支付

商戶在pc端展示一個支付二維碼,用戶使用微信掃一掃功能,掃碼后實現付款的支付方式。

2. 公眾號支付

商戶在微信APP內(微信瀏覽器)打開H5網頁,通過微信支付實現付款的支付方式。

3. H5支付

商戶在微信瀏覽器以外的手機瀏覽器打開H5網頁,通過微信支付實現付款的支付方式。

4. 小程序支付

商戶在小程序內,通過微信支付實現付款功能的支付方式。

開發前準備

第一步,登錄到商戶平臺設置相關參數配置

首先到微信商戶平臺申請一個企業賬號,并開通微信支付,設置好相應的公眾號支付、掃碼支付、H5支付的相關參數配置。

image
image

其中,公眾號支付需要設置JSAPI支付授權目錄,且最多只能設置5個;

掃碼支付需要設置掃碼回調鏈接,既用戶通過掃碼支付完畢后微信回調到商戶的頁面鏈接;

H5支付則需要設置安全支付域名即可。

第二步,引入微信官方SDK

微信官方提供了一套Java、.NET、PHP等三個版本的開發SDK;我目前使用的是.NET,因此只需要下載.NTE的SDK即可。

地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1

image

下載完以后,在Visual Studio中打開項目,結構如下:

image

文件夾example是一些封裝好的實例,lib跟business中的內容是SDK的核心部分,因此需要將這兩個文件夾原樣復制到我們實際的開發項目中:

image

業務流程

掃碼支付

1. 用戶下單,選擇微信支付;

2. 商戶后臺根據訂單信息,調用微信統一下單接口;

3. 統一下單接口返回預支付信息,商戶后臺將預支付信息通過技術手段生成二維碼圖片,并展示在網頁中;

4. 用戶使用微信掃碼進行支付,輸入支付密碼;

5. 支付完成,微信后臺向商戶后臺發出異步通知;

6. 商戶后臺接收到微信的異步通知后,獲取相關參數,進行對應的業務處理,如修改訂單狀態,并返回SUCCESS或FAIL的標志以告知微信。

7. 微信向商戶后臺發送異步通知的同時,會向預先在商戶平臺設置的回調地址發起跳轉,商戶需在回調地址中獲取相關參數并進行業務處理,一旦得知訂單狀態是已付款狀態,則跳轉至相應支付成功界面。

詳細說明請看微信支付官方開發文檔:

https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_1

公眾號支付

1. 用戶下單,選擇微信支付;

2. 商戶后臺根據訂單信息,調用微信統一下單接口;

3. 統一下單接口返回預支付信息,商戶后臺獲取預支付信息,并通過JSAPI發起支付請求,JSAPI調起微信支付;

4. 用戶輸入支付密碼,支付完成;

5. 微信后臺向商戶后臺發出異步通知,同時會在JSAPI發起頁面返回支付信息;

6. 商戶后臺收到微信的異步通知,進行相關業務處理,并返回SUCCESS或FAIL的標志以告知微信。

7. 商戶在JSAPI發起頁面獲取微信回調的信息,請求數據庫獲取訂單狀態,并進行支付成功或失敗對應的頁面跳轉。

詳細說明請看微信支付官方開發文檔:

https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1

H5支付

1. 用戶下單,選擇微信支付;

2. 商戶后臺根據appid向微信獲取code參數,再通過code參數向微信換取openid參數;

3. 商戶后臺根據訂單信息,調用微信統一下單接口;

4. 統一下單接口返回預支付信息,商戶后臺獲取預支付信息中的mweb_url參數,該參數是調起微信支付的URL,商戶后臺根據實際需要決定是否在該URL中增加支付完成后的回調頁面地址,然后跳轉至該URL,即可調起微信支付。

5. 用戶輸入支付密碼,支付完成。

6. 微信后臺向商戶后臺發出異步通知,并跳轉至支付發起頁或回調頁;

7. 商戶后臺在支付發起頁或回調頁面接收微信回調的信息,請求數據庫獲取訂單狀態,并進行支付成功或失敗對應的頁面跳轉。

詳細說明請看微信支付官方開發文檔:

https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_1

小程序支付

1. 用戶在小程序內下單,選擇微信支付;

2. 商戶在小程序中調用小程序登錄API,獲得參數code;

3. 小程序端向商戶后臺發起接口調用,并將code及訂單相關參數一起發送到商戶后臺。

4. 商戶后臺接收小程序發送的code和訂單相關參數,并結合appid,secret兩個參數,獲取openid;

5. 商戶后臺根據訂單信息,調用統一下單接口;

6. 統一下單接口返回預支付信息,商戶后臺獲取預支付信息,并進行再次簽名,返回支付參數(5個參數和sign)給小程序;

7. 小程序獲得支付參數,發起支付請求;

8. 用戶輸入支付密碼,支付完成;

9. 微信后臺向商戶后臺發出異步通知,同時給小程序回調支付結果;

10.商戶后臺接收微信發送到異步通知,并進行相關業務處理,并返回SUCCESS或FAIL的標志以告知微信;

11.小程序獲取支付回調結果,并向商戶后臺發起接口請求,獲取訂單狀態;并進行支付成功或失敗對應的頁面跳轉。

詳細說明請看微信支付官方開發文檔:

https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_3&index=1

業務流程圖

image

分析和總結

掃碼支付、公眾號支付、H5支付、小程序支付都有一個同步回調地址跟異步通知地址,只是設置方式有所區別 :

1. 掃碼支付

同步回調地址在微信商戶平臺中設置,異步通知地址在統一下單接口的請求參數中設置;

2. 公眾號支付

同步回調地址在JSAPI發起支付的回到函數中進行回到,異步通知地址在統一下單接口的請求參數中設置;

3. H5支付

同步回調地址:在統一下單接口的返回參數中有一個參數mweb_url,在mweb_url中以get傳參形式新增一個參數redirect_url,redirect_url即是同步回調函數;

異步通知地址:統一下單接口的請求參數中設置;

4. 小程序支付

同步回調地址:在小程序獲得支付參數,并通過js調起微信支付以后,js中會有一個回調函數,同步回調地址在該回調函數中添加;

異步通知地址:統一下單接口的請求參數中設置。

其中掃碼支付主要用于電腦端;公眾號支付跟H5支付主要用于移動端,因此商戶在移動端使用微信支付的時候需要判斷當前打開的瀏覽器是否是微信瀏覽器,并根據結果決定選擇公眾號支付或H5支付;小程序支付的話主要用于小程序內部,因此比如獲取openid,調用統一下單接口等操作均在給小程序提供數據接口服務的接口后臺實現。

同步回調地址是作為微信后臺跟商戶進行頁面跳轉的渠道,因此同步回調地址是至關重要的,如果不填寫,則可能導致支付完成后無法做頁面跳轉。

異步通知地址是微信后臺對商戶后臺在完成微信支付后進行通知的重要通道,商戶后臺的異步通知地址必須是可訪問的,在接收到微信的通知后,要做相關業務處理,并最終返回SUCCESS或FAIL的標識給微信,以告知微信不要在發送通知。

結尾

這里只是針對微信掃碼支付、公眾號支付、H5支付、小程序支付等微信的四中支付方式做了一個大概的分析和總結,具體的每一個支付方式的接入方法還請以微信支付開發文檔為重要參考;因篇幅有限,代碼量大,這里就不貼具體的實現代碼了。

參考文檔:

微信掃碼支付:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_1

微信公眾號支付:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1

微信H5支付:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_1

微信小程序支付:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_3&index=1

如有發現錯誤及解釋不當之處,歡迎大家指正。

轉載請注明本文出處:https://www.cnblogs.com/luckyyang/p/9509631.html

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,663評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,125評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,506評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,614評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,402評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,934評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,021評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,168評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,690評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,596評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,288評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,027評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,404評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,662評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,398評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,743評論 2 370