程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php購物網站支付paypal使用方法

php購物網站支付paypal使用方法

編輯:關於PHP編程

詳細參考:

https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_html_Appx_websitestandard_htmlvariables

定義常量paypalurl

const PAYPAL_URL = 'https://www.sandbox.paypal.com/';

將要傳送的數據記錄為一個數組

$paypalData = array(
                   'add'                => 1,
                    'cmd'               => '_ext-enter',
                    'redirect_cmd'    => '_xclick',
                    'business'            => $paypalAccount, [email protected]這個是收款人的paypal賬號
                    'item_name'       => '51customimprint shopping cart',
                    'item_number'   => $order->id,
                    'first_name'        => $address->first_name,
                    'last_name'         => $address->last_name,
                    'address1'           => $address->address1,
                    'city'                     => $address->city,
                    'state'                  => $address->state_or_province,
                    'zip'                      => $address->zip_code,
                    'amount'            => $order->subtotal,
                    'shipping'          => $order->shipping_fee,
                    'no_note'            => 1,
                    'currency_code'    => 'USD',
                    'lc'                      => 'US'
                );

將這個數組轉化為一個url地址

$paypalArguments = array();
                foreach($paypalData as $k => $v){
                    array_push($paypalArguments, $k . '=' . urlencode($v));
                }
                $paypalUrl = self::PAYPAL_URL . '?' . implode('&', $paypalArguments);
                $this->_redirect($paypalUrl);

接下來,我們測試的時候,應該將Paypal接口的地址設置為:

https://www.sandbox.paypal.com/cgi-bin/webscr

基本的流程
當客戶向您付款時,PayPal將向位於指定 URL (type=”hidden” name=”notify_url” value=” “)的服務器發送一個通知。此通知中將包括您的客戶的所有付款信息(例如,客戶名稱、金額),以及一段加密代碼。當服務器收到通知時,它隨後會將該信息(包括加密代碼)發送回安全的PayPal URL。PayPal將通過檢查加密字符串對交易進行身份驗證。這種將 IPN 數據傳回PayPal的操作防止了“欺騙”,因此您可以確保 IPN 來自PayPal。在進行驗證時,PayPal會將其合法性的確認信息發送回您的服務器。

提示:要啟用即時付款通知,您將需要輸入一個 URL,通過它您可以接收到來自您的用戶信息的通知。

啟用了即時付款通知後,每次當您接收付款時您的服務器都會收到一個通知,此通知將以隱藏的“FORM POST”的方式發送到指定的 URL,並將包括所有付款信息。此頁面的底部列出了通知的 FORM 變量。

每次收到來自PayPal的 IPN 時,您必須在實施訂單之前完成如下所述的通知確認過程。確認列出的信息將可確保交易合法。

通知確認IPN
為了確保付款已進入您的PayPal賬戶,您必須驗證用作“receiver_email”的電子郵件地址是否已在您的PayPal賬戶中注冊並得到確認。

服務器收到即時付款通知後,您將需要通過構建一個發送到PayPal的 HTTP POST 對其進行確認。您的 POST 應發送到 https://www.paypal.com/cgi-bin/webscr

您必須完全按照收到表單變量時的原樣發送所有收到的表單變量。您還需要將一個值為“_notify-validate”的名為“cmd”變量(例如,cmd=_notify-validate)附加到 POST 字符串。

PayPal將回復該 POST,並在回復的正文中包含一個單詞“VERIFIED”或“INVALID”。當您收到 VERIFIED 回復時,您需要在實施訂單之前執行若干檢查:

確認“payment_status”為“Completed”,因為系統也會為其他結果(如“Pending”或“Failed”)發送 IPN。
檢查“txn_id”是否未重復,以防止欺詐者重復使用舊的已完成的交易。
驗證“receiver_email”是已在您的PayPal賬戶中注冊的電子郵件地址,以防止將付款發送到欺詐者的賬戶 。
檢查其他交易詳情(如物品號和價格),以確認價格未改變完成了以上檢查後,您可以使用 IPN 數據更新您的數據庫,並處理購物。
如果收到“無效”通知,則應將其視為可疑通知,並應對其進行調查。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved