原文網址:http://www.neo.com.tw/archives/1004
以下轉載
Paypal 的整合方式有很多種,就算本身沒有架設網站,Paypal 也提供了簡易的購物車可以使用。而本篇是說明如何將 Paypal 整合至現有的電子商務網站,也就是 Paypal 所提供的 3rd-party Shopping Cart 整合方式。
Paypal 的 IPN 及 PDT 整合
整合 Paypal 付款機制前要大致了解 Paypal 的 IPN 跟 PDT 的不同。
IPN 的全名是「Instant Payment Notification」,屬於"交易事後"的資訊發送。在使用者在使用 Paypal 付款後,"由 Paypal 主動"發送付款資訊出來至事先設定的 notify_url 。
PDT 的全名是「Payment Data Transfer」,屬於"即時交易"的資訊發送。使用者在 Paypal 付完款後,Paypal 會緊接把付款資訊導向至指定的 return_url 處理。
(以上皆須在Paypal帳號中設定,可參考 Order Management Integration Guide)
二者最大的差別在於 IPN 是交易後由 Paypal 主動發送,PDT 則是在付款完後立即以 GET 的方式將資訊回傳到指定網址。
一般 Paypal 的整合只要使用 IPN 即可,也就是付款完成之後,由 Paypal 告訴消費者付款狀態,並且回到 return_url 的網址。而付款狀態則是由 Paypal 另行以 IPN 的方式傳送至 notify_url。
如果要在交易後即時知道客戶付款的狀況,並且顯示在畫面上,就必須使用 PDT 。但建議不要以 PDT 取得的資訊作為付款成功與否的依據,最好要搭配 IPN 使用。倘若客戶在 Paypal 付完款後,若接收的主機沒收到 PDT 的資料,再加上事後沒有透過 IPN 更新訂單狀態,這筆訂單就會永久處於不明的狀態之下。
Paypal Sandbox 簡介
Paypal 提供了一個給開發人員測試用的 Sandbox,裡面環境跟 Paypal 一模一樣,但在 Sandbox 內的交易皆不會發生。
使用 Sandbox 前需先註冊 PayPal Developer Central 帳號,登入後即可看到 Sandbox 功能,再建立可付款及收款的 Premier 或 Business 測試帳號。
建立測試帳號不用使用真的 Email,在 Paypal Developer Central 中有個專門存放 Email 通知信的地方。
帳號建立完成後,請參考這裡來驗證 Email 帳號。
至於4碼的信用卡認證(4-digit Expanded Use Number),用測試帳號登入 Paypal Sandbox 後,在上圖中點選 Status 右方的連結 (xxxxxx - Univerified) 後,隨便打 4 個數字就可以完成信用卡驗證了。
(Email跟信用卡驗證一定要做,不然 payment_satus 會變成 Pending)
除了可以建立收付款的 Paypal 帳號之外,也可以產生信用卡的測試卡號。產生出來的卡號可以在沒有 Paypal 帳號的情況下付款,產生的方式可以參考 How to Test PayPal Account Optional in the Sandbox 的 Step 4: Generate a test credit card number from your Sandbox account.
產生信用卡號的方式就是用測試帳號登入 Paypal Sandbox 後, 執行 My Account -> Profile -> Financial Information: 'Credit Cards' -> Add,把畫面中的 Card Number 複製到剪貼簿就好,不要真的新增一張信用卡。(倘若新增之後,就只能用 Paypal 帳號付款,而不能用這個信用卡號付款)
Sandbox 的測試 POST 網址為:
https://www.sandbox.paypal.com/cgi-bin/webscr
(正式上線時需把 sandbox. 給拿掉)
不論使用 IPN 或 PDT 來接收由 Paypal 回傳的交易資訊,都必須防止惡意偽造的資訊來欺騙交易的結果,因此 Paypal 有提供二種方案來驗證是否為 Paypal 所送出。
1.自行設定共用密碼。(僅 IPN 的 notify_url 適用)
2.將 Paypal 給傳入的的資訊 POST 回 Paypal 驗證。
以上二種方式都在官方文件中有說明,我就不再贅述了。
整合 Paypal 必讀的二份官方文件: (PDF 格式)
Website Payments Standard Integration Guide
Order Management Integration Guide
Paypal 整合相關網址:
Adding PayPal Checkout to Your 3rd-party Shopping Cart
Instant Payment Notification
Payment Data Transfer
How PDT and IPN work together
How to Test PayPal Account Optional in the Sandbox
留言列表