支付寶支付即時到帳接口在ThinkPHP商城中的應用(轉載)

支付寶支付是PHP高級課程中ThinkPHP商城項目課的內容之一,在此視頻中將會講解如何將支付寶做爲第三方庫集成到ThinkPHP框架中,而且將支付寶的配置參數寫入自定義配置中從而達到在整個項目中靈活調用支付的目的。涉及到的知識點有使用vendor函數加載第三方擴展庫,對vendor函數作了詳細的介紹。使用C函數來讀取自定義配置。結合ThinkPHP的特性和支付寶第三方支付的調用方式作了支付寶集成到ThinkPHP框架的完整流程。php

 1.   支付寶支付–即時到帳

1.1.  獲取即時到帳sdk

獲取即時到帳sdk地址爲:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.Ix6HLx&treeId=62&articleId=103566&docType=1html

這是一個很是強大的SDK,包含了完整的demo,也就是說咱們下載後只要簡單的配置就能夠測試完整的付款流程!!數組

1.2.  SDK目錄結構講解

目錄包括lib和img,固然爲何個人demo腳Alipay呢!是由於我下載後本身修改了名稱。好了咱們先來看看sdk中都有哪些東西。上圖讓你們看得更明白安全

1.3.  開始使用demo

1.3.1.   使用前的配置(alipay.config.php)

固然咱們只須要配置這四個位置,partner是在你的支付寶商家後臺能夠查看獲得,key也是在支付寶商家後臺查看,看下邊會有一副高清大圖帶你們看看在哪兒查找,這些原本是保密的東西哦。微信

注意notify_url和return_url的配置:聽過我講解的微信支付的同窗應該已經明白這個是幹什麼用的了。對的就是告訴咱們支付結果的地址。那這個地址的配置確定是有講究的。首先,他的格式爲http://商戶網址。這個商戶網址必須是通過備案的,並且在地址中不能帶有get方式的參數,必須保證外網能夠正常訪問。若是不對了是不能跳轉的哦。往下看是否是有一個地址框架

1.3.2.   教你兩步完成支付

第一步拼接參數,這個參數的格式是怎麼樣的呢:異步

注意了,除了out_trade_no,subject,total_fee,body其餘的參數都是從配置文件中讀取的。那麼這四個特立獨行的參數是什麼意思呢?其實分別是訂單編號,商品名稱,訂單金額,訂單描述。函數

第二步創建請求post

要注意了支付是調用阿里的東西支付的,那確定要創建關係的,你來我往的一塊兒完成支付,那就必須創建請求。創建請求是實例化AlipaySubmit,實例化以前固然要引入了。那就須要require_once lib/alipay_submit.class.php這個文件。學習

而後調用對象的buildRequestForm來創建請求固然是創建一個html請求了。那麼這個方法的輸出也是一段html字符串了,爲了解析咱們簡單粗暴的使用了php的echo來處理。這一步執行時的結果就是下圖的樣子。

再熟悉不過了有木有。

1.4.  在ThinkPHP中集成支付寶支付

1.4.1.   有何不一樣?

固然是大有文章,其實也沒有什麼不一樣。既然在TP中集成那麼咱們仍是要入鄉隨俗,複合TP開發規範。那就是第三方擴展放在Libraray中的Vendor目錄下。那固然是把咱們剛剛的demo拖過去就好了,簡單粗暴的拖過去,別手軟。而後,爲了管理方便那個alipay.config.php咱們是否能夠閹割掉呢?固然是,可是又不能沒有配置數據,怎麼辦呢?那就寫在自定義配置中。還記得C()函數嗎?當你須要配置中的數據時你確定會想到他。

1.4.2.   把配置寫在Common/config.php中

是否是看着都感受身心愉悅了?這樣咱們就能夠在項目中用C()函數很是方便的讀取到支付寶配置參數。

1.4.3.   引入alipay_submit.class.php

若是你在引入vendor中的擴展時你想不到vendor()這個函數時那麼你就有必要來魏老師的課堂再學習下ThinkPHP的項目開發了,魏老師必定會念叨到你想吐,還記得大話西遊中的only you嗎?

vendor(‘Alipay.lib.alipay_submit’,’’,’.class.php’);

vendor的三個參數我再說一次嘍,第一個參數就是類庫的路徑,第二個參數原本能夠定義類庫的根目錄的默認是Vendor那就不用修改了,第三個參數是類庫的後綴,由於默認是.php而咱們的文件時alipay_submit.class.php那麼咱們就本身設定下。

1.4.4.   獲取配置參數:

 

 

1.4.5.   構造要請求的參數數組

看着註釋中的無需改動就感受很感動有木有,阿里的工程師真的好貼心。其餘參數都是從配置中拿到的。只有四個參數要本身傳。他們的意義我已經嘮叨過了。固然還有不少參數,根據本身的需求本身去查閱一下。

1.4.6.   創建請求,距離成功只有半步之遙

這樣你的請求就創建了,那麼,若是看到掃碼頁面說明你成功了,若是報錯了,請別砸電腦,掰鍵盤。靜下心來分析分析。

1.4.7.   關於通知

爲了接收支付結果消息,支付寶是容許咱們本身設置兩個地址做爲通知地址的,分別是異步通知地址和同步通知地址。異步通知地址是不需用頁面參與的,將結果推送到後臺,並且不能有除約定以外的其餘輸出。

1.4.8.   異步消息通知地址

異步消息通知地址配置的參數名爲notify_url,這個地址必須符合外網能夠訪問的條件。在支付時支付寶系統會帶着POST的參數來訪問該地址。該地址接受的參數能夠再支付寶即時到帳文檔中查看。咱們在接收到數據後要對數據進行判斷並更新咱們本身系統中的訂單狀態。

固然你可能會想這樣安全嗎?萬一別人知道咱們的異步通知地址後模擬post怎麼辦。其實支付寶爲咱們考慮到了這一點。因此咱們須要對接受到的請求進行驗證。驗證的方法以下。

private $_notifyObj; public function _initialize() { vendor('Alipay.lib.alipay_notify', '', '.class.php'); $this->_notifyObj = new \AlipayNotify(C('ALIPAY_CONFIG')); }

須要引入notify這個類,咱們仍是用vendor來引入。這樣咱們就實例化了AlipayNotify這個類。

對於異步通知的驗證是調用AlipayNotify中的verifyNotify()方法

$verifyResult = $this->_notifyObj->verifyNotify();

該方法的返回結果若是驗證經過爲true若是失敗爲false。若是爲false說明不是支付寶系統發送來的請求。

若是爲true咱們就能夠繼續處理支付的其餘操做了。

1.4.9.   同步消息通知地址

通知消息同步意思是當支付完成後支付寶系統會給咱們跳轉到咱們設置在return_url中的地址,而且會在url中帶有參數,這樣咱們就能夠接收傳來的參數而且對參數判斷後給用戶輸出一個漂亮的界面。在該過程當中咱們仍是須要對請求進行判斷,判斷是不是支付寶系統發來的請求,指示在此處調用的是AlipayNotify中的verifyReturn()方法,該方法的返回結果也是true或者false。

$verifyResult = $this->_notifyObj->verifyReturn ();

1.5.  講完了該作什麼

個人學生固然是該交做業了,可是在這兒我還要梳理下支付的流程。

首先是咱們的商城平臺中建立了支付的訂單,這兒訂單的狀態固然是未支付了。而後調用支付來支付訂單。在請求創建後咱們會讓支付寶支付系統去處理,支付系統處理完後會將結果給咱們的通知地址,通知地址收到結果後分析下,若是成功了那就修改訂單狀態爲已支付,而後給用戶一個可愛的提醒。其實全部的支付流程都是這樣的,因此在會用支付寶支付後這個支付流程你值得擁有,否則你有錢都不知道怎麼花,那就去掃一掃魏老師的線上demon,固然說明了,一角錢以上才能找我退款哈。

相關文章
相關標籤/搜索