在上一篇文章《微信支付之掃碼支付、公衆號支付、H5支付、小程序支付相關業務流程分析總結》中,分析和總結了微信支付相關支付類型的業務流程,這裏做爲與微信支付分庭抗禮不相伯仲的支付寶支付,固然也是每一個公司少不了的第三方支付接入選擇。html
所以,本篇文章主要分析和總結支付寶支付中的掃碼支付、H5支付相關業務流程。前端
電腦網站支付,也稱掃碼支付,是專門針對電腦而開發的一種支付方式,既在網頁展現一個動態生成的支付二維碼,用戶經過手機支付寶掃碼之後可實現支付功能的一種支付方式。小程序
手機網站支付,是專門針對手機而開發的一種支付方式,跟掃碼支付不同的是,手機網站支付能夠喚醒手機中安裝的支付寶APP,直接經過支付寶APP實現支付功能;若是手機中沒有安裝支付寶APP,則會經過手機網頁支付流程實現支付功能。api
電腦網站支付的流程目前分新老版本兩種,新版本開發文檔地址:微信
https://docs.open.alipay.com/270/105899/app
老版本開發文檔地址:異步
https://docs.open.alipay.com/62/103566 工具
因本人所在公司目前所用的電腦網站支付依舊用的是老版本的支付功能,所以文中會對老版本的業務流程作必定分析。post
老版本:微信支付
老版本的支付接口叫及時到帳接口,最原來的時候支付寶官方也是封裝了一套開發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/
新版本:
新版本的demo下載到本地之後的項目目錄以下:
新版本的demo已經將大部份內容封裝成了DLL,只保留了一個須要開發者本身去配置的類文件config.cs;所以開發前須要將BIn目錄下的AopSdk.dll應用到項目中,而且將config.cs複製到項目中。
其他事情則按官方開發文檔操做便可。
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. 支付寶支付的新老版本電腦網站支付、手機網站支付支付接口的請求參數中都有兩個參數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/