前言
在上一篇文章《微信支付之掃碼支付、公眾號支付、H5支付、小程序支付相關業務流程分析總結》中,分析和總結了微信支付相關支付類型的業務流程,這里作為與微信支付平起平坐不相伯仲的支付寶支付,當然也是每個公司少不了的第三方支付接入選擇。
因此,本篇文章主要分析和總結支付寶支付中的掃碼支付、H5支付相關業務流程。
概述
1. 電腦網站支付
電腦網站支付,也稱掃碼支付,是專門針對電腦而開發的一種支付方式,既在網頁展示一個動態生成的支付二維碼,用戶通過手機支付寶掃碼以后可實現支付功能的一種支付方式。
2. 手機網站支付
手機網站支付,是專門針對手機而開發的一種支付方式,跟掃碼支付不一樣的是,手機網站支付可以喚醒手機中安裝的支付寶APP,直接通過支付寶APP實現支付功能;如果手機中沒有安裝支付寶APP,則會通過手機網頁支付流程實現支付功能。
開發前准備
1. 電腦網站支付
電腦網站支付的流程目前分新老版本兩種,新版本開發文檔地址:
https://docs.open.alipay.com/270/105899/
老版本開發文檔地址:
https://docs.open.alipay.com/62/103566
因本人所在公司目前所用的電腦網站支付依舊用的是老版本的支付功能,因此文中會對老版本的業務流程做一定分析。
老版本:
- 登錄支付寶開放平台后台,查詢到合作伙伴身份(PID),然后根據開發文檔正確配置RSA密鑰。密鑰配置操作手冊:https://docs.open.alipay.com/common/104740
老版本的支付接口叫及時到賬接口,最原來的時候支付寶官方也是封裝了一套開發demo的,后來由於新版本的到來,老版本的demo就被屏蔽了,我找了好半天都沒能在官網文檔中找到,因此只好到其他網站去找,於是找到了這篇文章《支付寶即時到賬接口》,在這篇文章中找到了下載老版本demo的鏈接地址:
<a href="http://aopsdkdownload.cn-hangzhou.alipay-pub.aliyun-inc.com/demo/alipaydirect.zip?spm=a219a.7629140.0.0.ZXTiAo&file=alipaydirect.zip" >下載DEMO</a>
如果鏈接失效,則請訪問我的百度網盤:https://pan.baidu.com/s/1scJRwAIhIfkXbhf8cegZkg;下載完畢后的demo結構如下:
上圖中分別是MD5跟RSA兩中簽名版本的SDK,打開文件夾以后又分貝包含了C#、JAVA、PHP三個版本的內容,這里選用C#版本,在往里打開就是具體的項目結構了:
其中主要demo源碼就封裝在app_code中:
有了開發demo,再結合官方文檔的指導,將文件夾app_code中的所有內容復制粘貼到實際開發項目中,就可進行實際開發應用了。官方操作文檔:https://docs.open.alipay.com/62/104746/
新版本:
- 登錄支付寶開放平台,在開發者中心登記應用,獲得應用唯一標識(APPID),最后提交審核,待審核通過后該應用可正式使用;
- 配置密鑰。操作手冊地址:https://docs.open.alipay.com/200/105310 ;
- 搭建和配置開發環境。電腦網站支付SDK與Demo:https://docs.open.alipay.com/270/106291/
新版本的demo下載到本地以后的項目目錄如下:
新版本的demo已經將大部分內容封裝成了DLL,只保留了一個需要開發者自己去配置的類文件config.cs;因此開發前需要將BIn目錄下的AopSdk.dll應用到項目中,並且將config.cs復制到項目中。
其余事情則按官方開發文檔操作即可。
2. 手機網站支付
1.登錄支付寶開放平台,根據實際需要創建應用,這里選擇手機網站支付類型;配置相關參數后提交審核,審核通過后即可使用;開發平台操作手車URL:
https://docs.open.alipay.com/203/105910/
2. 搭建和配置開發環境。首先下載服務獨膽SDK,並將相關SDK內容應用到開發項目中;SDK下載地址:
https://docs.open.alipay.com/203/105910/
手機網站支付的SDK跟電腦網站支付的最新版SDK是一樣的,這里就不做重復介紹。
對於電腦網站支付、手機網站支付中都提到的密鑰配置,支付寶官方文檔提供了相應的配置工具,但是僅針對與RSA簽名方式,RSA密鑰下載及操作文檔:https://docs.open.alipay.com/291/105971,下載了密鑰生成工具后,解壓壓縮包:
雙擊點擊RSA簽名驗簽工具.bat:
最后將商戶公鑰上傳至支付寶開放平台,保留商戶私鑰給到自己,下面就可以進行開發了。
業務流程
因公司項目接入的是支付寶電腦網站支付的老版本,所以這里會對新版本的業務流程做一個梳理。
1. 電腦網站支付
老版本業務流程:
- 用戶在電腦下單,選擇支付寶支付;
- 商戶后台生成訂單,並准備和組合好調起支付寶支付所需的參數,最終形成跳轉到支付寶網頁的URL鏈接。
- 商戶后台跳轉至上一步形成的URL,既跳轉至支付寶網頁;
- 支付寶后台接收請求並處理;
- 支付寶網頁展示支付二維碼;
- 用戶打開手機支付寶進行掃碼支付;
- 支付寶后台檢測到支付成功,跳轉至商戶回調頁面,並向商戶異步通知地址發送通知;
- 商戶在回調頁面獲取回調信息,並作相關業務邏輯處理,並根據成功或失敗的情況做跳轉到到支付成功或失敗頁面的處理;
- 商戶后台異步通知地址收到支付寶的異步通知,並做相關業務邏輯處理,最終返回success或fail的標識以告知支付寶商戶后台已經收到通知。
新版本業務流程:
- 用戶在電腦下單,選擇支付寶支付;
- 商戶后台生成訂單,並准備和組合好調起支付寶支付所需的參數,調用統一下單接口;
- 支付寶返回前台頁面請求需要的完整form表單的html(包含自動提交腳本),商戶直接輸出該HTML到前台頁面,最終將支付二維碼展示給用戶;
- 用戶打開手機支付寶進行掃碼支付;
- 支付寶后台檢測到支付成功,跳轉至商戶回調頁面,並向商戶異步通知地址發送通知;
- 商戶在回調頁面獲取回調信息,並作相關業務邏輯處理,並根據成功或失敗的情況做跳轉到到支付成功或失敗頁面的處理;
- 商戶后台異步通知地址收到支付寶的異步通知,並做相關業務邏輯處理,最終返回success或fail的標識以告知支付寶商戶后台已經收到通知。
2. 手機網站支付
支付寶的手機網站支付目前也分新老版本兩種,但由於惠庶網項目采用的是新版本支付,因此下面只介紹新版本的業務流程。
- 用戶在手機端下單,選擇支付寶支付;
- 商戶系統按照手機網站支付接口alipay.trade.wap.payAPI的參數規范生成訂單數據,並以包含form表單的HTML形式輸出到前端頁面;
- 前端頁面通過form表單的形式請求到支付寶;
- 支付寶將頁面跳轉至支付寶收銀台,如果用戶手機安裝了支付寶APP,則自動喚起支付寶APP,否則就調用支付寶網頁支付;
- 用戶輸入密碼進行支付操作;
- 支付寶后台檢測到支付成功,跳轉至商戶回調頁面,並向商戶異步通知地址發送通知;
- 商戶在回調頁面獲取回調信息,並作相關業務邏輯處理,並根據成功或失敗的情況做跳轉到到支付成功或失敗頁面的處理;
- 商戶后台異步通知地址收到支付寶的異步通知,並做相關業務邏輯處理,最終返回success或fail的標識以告知支付寶商戶后台已經收到通知。
分析和總結
1. 支付寶支付的新老版本電腦網站支付、手機網站支付支付接口的請求參數中都有兩個參數return_url和notify_url,return_url傳的是支付完成后支付寶要跳轉的同步回調地址,notify_url傳的是支付寶支付完成后要發送異步通知的地址;但是支付寶向這兩個地址發送請求的順序是不定的,因此在兩個地址的后台都需要做針對支付完成后訂單業務邏輯處理的操作;區別在於return_url操作完成以后直接跳轉到支付成功或失敗頁面,而notify_url則是返回SUCCESS或FAIL給到支付寶;
2. 支付寶電腦網站支付的老版本demo在官方文檔已經找不到,因此如果不是原來項目中已經使用了老版本開發demo,都建議使用新版本demo進行開發;
3. 電腦網站支付新老版本、手機網站支付調起支付寶支付的區別:
電腦網站老版本:根據及時到賬接口提供的請求參數說明,調用SDK生成可以調起支付寶支付的URL,商戶后台直接做Respopnse.Redirect(URL)操作,既可調起支付寶支付。
電腦網站新版本:商戶調用統一下單接口,統一下單接口返回完整form表單的HTML(HTML中包含自動提交表單的腳本),商戶后台輸出該form表單,即可調起支付寶支付。
手機網站新版本:商戶后台向支付寶api發起支付請求,支付寶api返回完整form表單的HTML(HTML中包含自動提交的腳本),商戶后台輸出form表單。即可掉漆支付寶支付。
4. 對於手機網站支付,在用戶將有form表單的HTML字符串輸出后,自動提交腳本會向支付寶收銀台發起請求,支付寶收銀台會先判斷用戶手機上是否安裝了支付寶APP,如有安裝,則調起支付寶APP發起支付功能,如果沒有,則跳轉至網頁版支付寶支付,實現支付功能。
如有發現錯誤及解釋不當之處,歡迎大家指正。
參考文檔
手機網站支付(新版):https://docs.open.alipay.com/203/105285/
電腦網站支付(老版):https://docs.open.alipay.com/62/104746/
電腦網站支付(新版):https://docs.open.alipay.com/270/105899/
轉載請注明本文出處:https://www.cnblogs.com/luckyyang/p/9517402.html