1. 程式人生 > >支付寶介面原理和流程 使用TP框架

支付寶介面原理和流程 使用TP框架

tp框架的支付教程http://www.thinkphp.cn/code/240.html

重點來線上支付介面的原理和流程:

1、使用者向商城網站發起確認訂單的請求

2、商城網站接收到請求儲存訂單資料到資料庫或其他儲存介質

3、返回訂單確認頁面,頁面上應該顯示訂單金額等資訊

4、使用者確認支付,發起支付請求。注:支付請求是傳送到支付閘道器(比如支付寶、網銀線上)而不是傳送到商城網站。

5、顯示支付頁面

6、使用者填寫認證資訊(賬號密碼等)提交

7、這裡有兩個步驟一個是扣款成功後頁面跳轉到支付結果頁面(展示給使用者),另一個是支付通知,這兩步沒有先後順序可能同時執行,商城網站接收到支付通知後根據驗證規則驗證資訊的有效性,並作出相應的更改操作(例:有效則更改訂單為已付款狀態,無效則記錄非法請求資訊)。

以支付寶為例:如果實現在網站中整合支付寶介面,首先要有一個支付寶賬號,接下來向支付寶申請線上支付業務,簽署協議。協議生效後有支付寶一方會給網站方一個合作伙伴ID,和安全校驗碼,有了這兩樣東西就可以按照支付寶介面文件開發支付寶介面了,在上圖的幾個步驟中只有4和7兩個步驟在商城與支付閘道器之間有資訊互動。在步驟4中指將資料傳送到支付閘道器(支付寶),在步驟7中是的通知驗證部分,驗證閘道器請求網站某地址,網站按驗證規則對資訊進行驗證記錄並作出響應,我們幾乎在任何支付介面開發時,重點是這兩部分的開發,明白支付介面原理,開發線上支付介面就不難了。

支付介面開發與配置:

1.首先到支付寶申請賬戶

2.登入->商家服務->網站整合支付寶->選擇申請介面型別->等待合同生效

3.生效後下載開發整合文件PHP版本
這裡給大家直接提供PHP版的介面文件

其實,整個介面應用最主要的是要理解三個檔案:notify_url.php、alipay.config.php、return_url.php。特別是在alipay.config.php這個配置檔案中,要填寫‘合作身份者id’、‘安全檢驗碼’、‘簽約支付寶賬號或賣家支付寶帳戶’,而這些都是在支付寶介面申請時支付寶網站提供的。在notify_url.phpreturn_url.php檔案中,開發者可以編寫程式碼,當支付成功會失敗的時候,對資料庫進行操作。

介面首頁效果內容預設都為空,讀者可能會有疑問:淘寶上的應用不都會有商品資訊,表單不都是預設填好的嗎?事實上,一旦開發者完善後,表單內容都會從資料庫中獲取,過程是:當消費者生成訂單,下單後,表單會根據訂單號從資料庫獲取訂單資訊,包括付款金額、備註等等。當然,這些程式都需要由程式碼控制實現。因此要讓自己的線上支付介面開發能夠順利的進行,並讓線上支付能夠簡單的操作,就需要介面設計者好好的熟悉介面程式碼。

與支付公司簽約後,網站將獲得相關開商戶號、金鑰、支付閘道器以及開發文件。技術人員通過閱讀文件,獲取需要使用的相關資料引數,如商品名稱、金額等,並通過約定的加密方式及金鑰進行加密處理,將以FORM表單POST或GET的方式傳送給支付公司提供的支付閘道器URL。

支付閘道器收到商戶提供的相關引數後將進行資料處理及加密驗證,如果資料合格且金鑰驗證成功,將引導使用者進入各家銀行選擇頁面,使用者在選擇自己使用的銀行後,將進入相關銀行的支付閘道器進行支付。

使用者在銀行閘道器成功付款後,銀行進行扣款,並將支付結果回傳給支付公司,支付公司收到銀行的結果,同樣進行簽名驗證,並將支付結果資訊傳遞給商戶網站。

支付公司將支付結果傳遞給商戶網站也是通過FORM表單的方式,只是該資料傳遞屬於伺服器後端處理的。商戶網站向支付公司發起支付請求傳遞支付相關引數時,就包含一個或兩個URL,用於指定接收支付結果的URL中。

商戶網站接入支付結果有兩種方式,一種是通過瀏覽器進行跳轉通知,一種是伺服器端非同步通知。那麼商戶的技術人員該如何選擇呢?我們對這兩種通知型別進行分析。

瀏覽器跳轉通知:這種方式主要是基於使用者訪問的瀏覽器,如果使用者在銀行頁面支付成功後,直接關閉了頁面,並未等待銀行跳轉到支付結果頁面,那麼商戶網站就收不到支付結果的通知,導致支付結果難以處理。而且瀏覽器端資料很容易被篡改,而降低安全性。所以我們推薦技術人員開發時使用後端伺服器通知做技術判斷,而只將前臺通知進行支付相關顯示,不進行邏輯處理。

伺服器非同步通知:該方式是支付公司伺服器後臺直接向用戶指定的非同步通知URL傳送引數,採用POST或GET的方式。商戶網站接收非同步引數的URL對應的程式中,要對支付公司返回的支付結果進行簽名驗證,成功後進行支付邏輯處理,如驗證金額、訂單資訊是否與發起支付時一致,驗證正常則對訂單進行狀態處理或為使用者進行網站內入賬等。