首頁  >  文章  >  後端開發  >  php線上支付功能的實現(支付寶)

php線上支付功能的實現(支付寶)

PHPz
PHPz原創
2017-04-04 14:51:187701瀏覽
  在電商類的網站實現的過程中,我們經常會涉及到支付的功能,目前比較流行的第三方支付是支付寶和微信,所謂第三方支付,就是一些和各大銀行簽約、並具備一定實力和信譽保障的第三方獨立機構提供的交易支援平台。透過第三方支付平台的交易中,買方選購商品後,使用第三方平台提供的帳戶進行貨款支付,由第三方通知賣家貨款到達。本文以支付寶的接入為案例。

一.基本流程圖

php線上支付功能的實現(支付寶)

支付流程

二.詳細步驟分析:

#( 1)用戶向商城網站發起確認訂單的請求(例如點擊立即購買)
(2)商城網站接收到請求保存訂單資料到資料庫或其他儲存媒體
(3)返回訂單確認頁面,頁面上應該顯示訂單金額等資訊(點擊立即購買後的訂單介面)
(4)用戶確認支付,發起支付請求。註:支付請求是發送到支付網關(例如支付寶、網銀線上)而不是發送到商城網站。
(5)顯示付款頁面(這個介面就是支付寶的同一介面了)
(6)使用者填寫認證資訊提交(掃碼相對方便些)
(7)這裡有兩個步驟一個是扣款成功後頁面跳到付款結果頁面(展示給用戶),另一個是支付通知,這兩步驟沒有先後順序可能同時執行,商城網站接收到支付通知後根據驗證規則驗證資訊的有效性,並作出對應的更改操作(例:有效則更改訂單為已付款狀態,無效則為未支付狀態)。

  以支付寶為例:如果實現在網站中整合支付寶介面,首先要有一個支付寶帳號,接下來向支付寶申請線上支付業務,簽署協議。協議生效後有支付寶一方會給網站方一個合作夥伴ID,和安全校驗碼,有了這兩樣東西就可以按照支付寶接口文檔開發支付寶接口了,在上圖的幾個步驟中只有4和7兩個步驟在商城與支付網關之間有資訊互動。在步驟4中指將資料傳送至支付網關(支付寶),在步驟7中是的通知驗證部分,驗證網關請求網站某地址,網站按驗證規則對資訊進行驗證記錄並作出回應,我們幾乎在開發任何支付接口時,重點是這兩部分的開發,要明白支付接口原理,開發支付接口就不難了。需要額外強調的是,如果我們想要測試整個流程,那麼我們需要有一個商家帳號(簽約帳號),就是需要向支付寶提交營業執照等材料,經過支付寶審核通過後,可以進行收款的帳號。 (這個一般個人很少有,開發時可以用公司名申請一個)

三.支付寶接口接入

接口簡介與測試
  支付寶目前提供了,擔保交易、標準即時到帳、雙功能等幾種接口,只是在功能上有些差異,網站集成方式是一樣的。以標準即時到帳介面為例,在與支付寶簽署協議後(即成為正式商家後),還需要幾個步驟才能完成整合。針對每種功能,支付寶的開發者平台已經列舉了詳細的步驟以及案例展示。關於如何簽約請造訪前往支付寶認證

下面我們展示即時到帳的業務邏輯流程:

第一步:買家選擇心儀產品

php線上支付功能的實現(支付寶)

#第一步:點擊了立即購買

第二步:跳到收銀台頁面

    1.用戶可以開啟手機錢包選擇「掃一掃描”,對準螢幕掃碼,待手機提示付款後選擇支付工具輸入密碼支付即可;

php線上支付功能的實現(支付寶)

掃一掃


    2.如果不想使用手機支付,可以點擊上圖所示頁面右側的“登入帳號付款”,輸入支付寶帳號和密碼登入。

php線上支付功能的實現(支付寶)

登入帳號付款

第三步:買家選擇付款方式

php線上支付功能的實現(支付寶)

選擇付款方式

第四步:付款成功

php線上支付功能的實現(支付寶)

付款成功

下面我們展示一下存取的步驟:

第一步:取得PID,開發者登入開放平台,點擊右上角的「帳戶及密鑰管理」。

php線上支付功能的實現(支付寶)

取得PID

第二步:選擇“合作夥伴金鑰”,即可查詢到合作夥伴身份(PID),以2088開頭的16位純數字。

php線上支付功能的實現(支付寶)

金鑰

第步驟:設定秘鑰

請參考支付寶DSA、RSA、MD5 三種簽名方式,建議使用支付寶提供的官方工具,點此前往。

第四步:存取項目

(1)下載官方檔案(demo), 點擊下載。
(2)設定DEMO中的開發者資訊,找到目錄下alipay.config.php檔案並打開,內容如下:

php線上支付功能的實現(支付寶)

設定碼


(3)在設定檔中找到以下參數進行對應配置:

php線上支付功能的實現(支付寶)

參數

php線上支付功能的實現(支付寶)

找到這部分


(4)若您選擇MD5簽章方式,請根據MD5方式配置:詳見第三步驟
(5)跟我們的php程式碼連接,我們可以看到還有一個名為alipayapi.php的文件,這個文件就是接受訂單資訊的,透過post形式將訂單參數傳遞到這個文件,這個文件已經引用了alipay.config.php,所以大家的基本配置要正確,當成功接受參數後,會跳到支付寶預先寫好的支付介面。

php線上支付功能的實現(支付寶)

alipayapi.php的檔案


#(6)接受付款結果:設定同步回傳(同步跳轉通知)和非同步回調(非同步通知)。在設定檔中有return_url和notiry_url兩個參數,可分別配置到DEMO中的return_url頁面和notify_url頁面。同步返回使用GET方式獲取,非同步通知使用POST方式取得;同步返回驗證有1分鐘逾時,非同步通知驗證沒有時間限制。 return_url頁面和notify_url頁面都會將資料使用AlipayNotify.verify() 驗簽方法驗證。
(7)最終的判斷:透過傳回參數中的trade_status欄位(交易狀態)判斷並可寫入執行業務邏輯程式碼。

php線上支付功能的實現(支付寶)

螢幕快照2016-12-15 16.30.28.png

註:notify_url頁面只能回傳success,非同步通知頁面上不可有任何HTML程式碼。支付結果請以非同步通知為準。

以上是php線上支付功能的實現(支付寶)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn