支付寶作為一個被廣泛使用的支付工具,在是用的時候可以被廣泛使用。
可以使用demo提取(由于當時開發時SDK下載路徑無法下載,直接從DEMO中篩選了需要部分)
------------------我是開始開發思路的分割線--------------------------
本次主要是APP支付的流程。(本寶寶會陸續整理出前后端的詳盡資料,抽空寫下簡單的DEMO)
這里主要整理支付寶后臺交互的一些內容。
由于支付寶的簽名需要和SDK關聯吊起支付寶應用。這里在開始開發前需要確認兩端SDK的匹配問題。
----------------------------------我是開始開發SDK文件描述的分割線-------------------------------------
與前端直接引入SDK不同。這里要注意版本的一致或對應問題
支付寶在支付的過程中有需要后臺參與的主要兩個部分:
一)提交簽名等信息
1.預提交訂單。返回前端簽名后的訂單信息。
二)驗簽名信息
1.驗證前端同步的簽名信息(伴讀項目暫時沒有這個模塊)
2.獲取異步回調的信息
在目前的SDK可以直接使用的類文件是
1.接入SDK的文件
2.主要的SDK接入文件
3.接入SDK生成簽名所需要的類文件
-------------------我是開始開發描述的分割線-----------------------
由于本次項目是基于YII框架的PHP開發,基于框架配置將相關文件配置在項目的核心代碼的輔助文件部分
(1)文件引入位置:c**e/c**-**se/he**ers/
此處由于引入相關文件的管理問題,添加Alipay路徑進行統一管理。另外參照DEMO。將部分文件統一管理在aop目錄下。如上圖所示
(2)文件的使用。
首先去掉兩眼一抓瞎的整個看文檔看DEMO的前提。按照做需要的去一一實現,在實踐的問題里找解決方案。
按照之前分析的必要套路:
I) ?訂單與生成的處理->按要求生成加密字符給前段
II) 支付同步通知(通知到前端,前端主動調取驗證接口,驗證簽名等相應信息)->前端同步信息進行驗簽返回,成功通知用戶支付成功
III) 支付異步回調(支付寶主動回調)->驗簽,確認訂單信息
------------------我是開始開發代碼描述的分割線—————————————
首先對于文件的引入。簡單閱讀示例demo和文檔。根據描述配置相關的參數。
支付的業務主要在開放平臺存在。在開放平臺上申請應用,并申請相關業務支付金額后可以針對改應用進行詳盡的設置。https://doc.open.alipay.com/docs/doc.htm?docType=1&articleId=106541這是關于產品簽約的相關文檔描述以及秘鑰的相關配置方式。在正式開始編寫代碼前你需要:
(1)一個注冊好應用,申請好相關業務并簽約的平臺賬號
(2)設置好相關的秘鑰。并留有相關秘鑰的pem文件(沒有也可以,但是一定要留下商戶公鑰和商戶私鑰的具體內容)
(3)預留下相關商戶信息以便于配置,例如商戶ID;APPID;支付寶公鑰等
這里由于開發時間的關系沒有再次封裝,或對配置參數進行封裝(后期開始優化,不影響直接使用)
上面是支付寶SDK在代碼里的使用。
參見新的支付寶文檔:
可以看出基本沒什么修改的。
我的代碼邏輯除了跟隨前端業務要求和需求添加商戶ID方便后期業務擴展幾乎沒有修改。
簡單講下,其實在支付寶的支付過程只要前后端的SDK對的上幾乎沒有坑。平緩進入第二階段,所以,SDK版本很重要,不要隨便下載一個SDK就直接使用啊親。當然支付只是付款了是不夠的!
關于回調
回調分為兩部分
(1)同步回調
(2)異步回調
支付寶注重講解了異步回調。此處也是在項目中主要實現了異步回調的問題。
先來談談異步回調
對于異步回調要先明確下異步回調的地址問題。在官方的平臺頁面上要設置notify_url
這里的url要是一個接口或一個PHP絕對路徑文件。支付寶建議為絕對路徑文件。但是這里個人建議仍使用和之前一致的標準接口所繼承的類的文件就好。
值得注意的是
(A)這個接口不可以有參數,有cookie等,或者頁面跳轉重定向,當訪問地址的時候是一個白頁即可。仍需注意的是,這個地址必須是公網可以自由訪問的。避免后期文件類的修改問題。
(B)這個地址要在生成訂單的時候直接設置在回調地址的位置。
(C)回調文件會值調取。調取到的參數獲取用JSON通知時使用的是$_POST
(D)文件驗簽的時候記得什么類型的簽名就用什么類型驗簽,一般的簽名類型為RAS2,但是DEMO上是RAS哦。
在驗簽和核實訂單信息后就可以修改相應訂單信息,記得在數據庫中需改目前訂單的狀態
這是主要驗簽的核心,這里的第一個參數是支付寶回調到的信息,第二個參數是證書(pem)文件的地址,沒有可以寫NULL,第三個是簽名加密方式。這里我們的是RSA
部分代碼展示分析。