1.什麼是第三方支付
所謂第三方支付,就是一些和各大銀行簽約、並具備一定實力和信譽保障的第三方獨立機構提供的交易支援平台。在通過第三方支付平台的交易中,買方選購商品後,使用第三方平台提供的賬戶進行貨款支付,由第三方通知賣家貨款到達。
為什麼要使用第三方支付?因為第三方支付平台已經與各大銀行進行簽約,**主只需要在此平台申請乙個賬號即可支援幾乎所有的種類的銀行卡信用卡的交易。
2.第三方支付原理
以上簡要說明了支付過程,當然其中省略了一些步驟(比如購物車,訂單等),我們重點來看支付流程。
2.1使用者向****發起確認訂單的請求
2.2****接收到請求儲存訂單資料到資料庫或其他儲存介質
2.3返回訂單確認頁面,頁面上應該顯示訂單金額等資訊
2.5顯示支付頁面
2.6使用者填寫認證資訊(賬號密碼等)提交
2.7這裡有兩個步驟乙個是扣款成功後頁面跳轉到支付結果頁面(展示給使用者),另乙個是支付通知,這兩步沒有先後順序可能同時執行,****接收到支付通知後根據驗證規則驗證資訊的有效性,並作出相應的更改操作(例:有效則更改訂單為已付款狀態,無效則記錄非法請求資訊)。
3.支付寶介面開發
3.1介面簡介與測試
支付寶目前提供了,擔保交易、標準即時到帳、雙功能等幾種介面,只是在功能上有些差異,**整合方式是一樣的。以標準即時到帳介面為例,在與支付寶簽署協議後,還需要幾個步驟才能完成整合。
看一下demo中每個檔案的作用:
alipay_config.php是基礎資訊配置檔案,我們需要將在支付寶後台獲取的pid與key寫入到配置檔案中。
配置項:
其中方框內的資料是我們需要重點修改的。支付通知位址與返回位址的區別,前面已經提到,在步驟7中有兩項:支付結果頁面與支付通知資訊,支付結果頁面是使用者支付完成後會自動跳轉到這個位址這裡是返回位址($return_url)。
支付通知位址同樣是使用者支付完成後,支付寶會請求該位址($notify_url),但是支付通知是支付寶伺服器直接請求,不會被使用者看到。這兩個位址必須是以http開頭的完整路徑格式為了完成測試過程,這裡已經將/pay/alipay/notify_url.php改寫,將$notify_url設定為可訪問到此檔案的url即可。這幾項配置好後再根據資料庫指令碼(pay/orders.sql)建立一張資料表。並根據資料庫的配置資訊修改mysql_config.php.通過對支付寶提供的demo做簡單修改就可以完成建立支付請求(步驟4)了,這裡更改了支付首頁等頁面(見原始碼包pay目錄)。我們先測試一下:
資料庫中增加了一條「訂單資訊」.
如果點選「確認支付」按鈕或者確認支付 鏈結將會跳轉到支付寶頁面,點選按鈕時通過表單post方式將資訊提交到支付閘道器,由於支付請求資料無需讓使用者看到,這裡都寫在隱藏域中了。確認支付 鏈結是通過url傳參,因為支付寶介面允許以post或者get方式提交,所以兩種方式都可以。把引數提交給支付閘道器後,頁面跳轉到到支付頁面。我們看到如下圖所示:
我們看到支付寶為我們提供了兩種支付方式,一種是通過支付寶賬戶支付,另一種是通過銀行卡支付。例如選擇使用銀行卡支付,填寫郵箱或手機號跳轉到如下頁面:
我們開單支付寶幾乎支援所有的銀行卡支付,同時有信用卡和網點方式付款,選擇對應的銀行下一步按提示付款即可。付款完成後頁面會返回到我們在配置檔案中配置的$return_url位址,同時「訂單狀態」也會發生改變。
3.2支付寶介面規範與**分析
3.2.1如何建立支付請求
在前面的測試中我們點選了「確認支付」將資訊將資訊提交到了支付寶的支付閘道器,我們可以思考一下應該傳送哪些引數給支付閘道器。關於請求引數列表可以參考標準支付寶交易服務介面(專用於防釣魚**)。pdf中的3.2.2.需要注意的是並不是我們把這些引數原封不動的提交到支付寶就可以了,為了保證資料安全支付寶目前使用的是md5簽名防止資料篡改機制。
在提交資料前需要將需要提交的資料以一定規則(見介面文件)組裝成字串,加上安全校驗碼(key)組成乙個新字串,通過md5生成乙個32位元組的簽名,我們提交支付請求時還需要把這個簽名也提交過去。看一下表單原始碼
支付寶接收到引數後會進行驗證請求引數的合法性,驗證無誤後將顯示支付頁面,否則提示錯誤。
3.2.2 如何驗證支付通知
在使用者支付完成後,支付寶會請求**支付通知位址(這個位址應在建立支付請求時作為引數傳遞過去)。返回引數列表參見標準支付寶交易服務介面(專用於防釣魚**)。pdf3.3.1.支付寶的返回資料中同樣有乙個簽名串(採取和支付請求同樣的簽名方式),在支付通知檔案中首先要對資料進行簽名驗證。除了驗證簽名,還需要將引數中的notify_id提交到支付寶的驗證閘道器支付寶系統這個通知的真實性,通知驗證。支付寶系統判斷通知是否是自己傳送,如果是以字串格式返回 true,否則返回false,我們通過驗證伺服器返回的資料驗證請求的真實性,如果都驗證通過則可以進行更改訂單資料、給使用者傳送郵件通知等操作。關於驗證簽名可以看一下通知檔案中的原始碼。帶demo中將引數中的notify_id提交到支付寶是通過post方式提交並取得返回資料,**片段:
這裡重點就是fsockopen函式,在傳送電子郵件時我們已經接觸過,通過此函式開啟套接字連線,類似於以前學過的fopen函式返回的是乙個檔案控制代碼,之後可以使用檔案函式( fgets()、fgetss()、fputs()、fclose() feof()等)對其進行操作,**中使用了fputs()(同fwrite())函式,寫入資料來模擬表單以post方式提交資料,最後通過fgets()函式獲取返回的資料儲存到陣列中,最後進行驗證,具體參照原始碼。
ios 第三方支付
1.封裝訂單模型 alixpayorder order alixpayorder alloc init 生成訂單描述 nsstring orderspec order description 2.簽名 idsigner creatersadatasigner 私鑰key 傳入訂單描述 進行 簽名 n...
第三方支付介面
第三方支付介面 簽約入口 4.郵局支付 網匯通 7.免手續費自助整合 10.nps網上支付系統 contact contact.jsp 程式參考文件 見附件nps支付系統介面 特點 1.支援國內銀行支付 2.支援國外銀行支付 3.支援神州行充值卡支付 product payment easyown....
第三方支付熟悉
第三方支付原理簡介 第三方支付原理 搭建模擬支付環境 hosts檔案位於c windows system32 drivers etc 目錄下 模擬器首頁如下圖 實現支付寶模擬支付 支付寶支付文件說明 閘道器引數說明 partner 商戶編號 1 return url 商戶位址 通過商戶 的哪個頁面來...