php購(gòu)物網(wǎng)站支付paypal使用方法
詳細(xì)參考:
定義常量paypalurl
const PAYPAL_URL = 'https://www.sandbox.paypal.com/';
將要傳送的數(shù)據(jù)記錄為一個(gè)數(shù)組
$paypalData = array(
'add' => 1,
'cmd' => '_ext-enter',
'redirect_cmd' => '_xclick',
'business' => $paypalAccount, --------liangliangfeng211@gmail.com這個(gè)是收款人的paypal賬號(hào)
'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'
);
將這個(gè)數(shù)組轉(zhuǎn)化為一個(gè)url地址
$paypalArguments = array();
foreach($paypalData as $k => $v){
array_push($paypalArguments, $k . '=' . urlencode($v));
}
$paypalUrl = self::PAYPAL_URL . '?' . implode('&', $paypalArguments);
$this->_redirect($paypalUrl);
接下來(lái),我們測(cè)試的時(shí)候,應(yīng)該將Paypal接口的地址設(shè)置為:
https://www.sandbox.paypal.com/cgi-bin/webscr
基本的流程
當(dāng)客戶向您付款時(shí),PayPal將向位于指定 URL (type=”hidden” name=”notify_url” value=” “)的服務(wù)器發(fā)送一個(gè)通知。此通知中將包括您的客戶的所有付款信息(例如,客戶名稱、金額),以及一段加密代碼。當(dāng)服務(wù)器收到通知時(shí),它隨后會(huì)將該信息(包括加密代碼)發(fā)送回安全的PayPal URL。PayPal將通過(guò)檢查加密字符串對(duì)交易進(jìn)行身份驗(yàn)證。這種將 IPN 數(shù)據(jù)傳回PayPal的操作防止了“欺騙”,因此您可以確保 IPN 來(lái)自PayPal。在進(jìn)行驗(yàn)證時(shí),PayPal會(huì)將其合法性的確認(rèn)信息發(fā)送回您的服務(wù)器。
提示:要啟用即時(shí)付款通知,您將需要輸入一個(gè) URL,通過(guò)它您可以接收到來(lái)自您的用戶信息的通知。
啟用了即時(shí)付款通知后,每次當(dāng)您接收付款時(shí)您的服務(wù)器都會(huì)收到一個(gè)通知,此通知將以隱藏的“FORM POST”的方式發(fā)送到指定的 URL,并將包括所有付款信息。此頁(yè)面的底部列出了通知的 FORM 變量。
每次收到來(lái)自PayPal的 IPN 時(shí),您必須在實(shí)施訂單之前完成如下所述的通知確認(rèn)過(guò)程。確認(rèn)列出的信息將可確保交易合法。
通知確認(rèn)IPN
為了確保付款已進(jìn)入您的PayPal賬戶,您必須驗(yàn)證用作“receiver_email”的電子郵件地址是否已在您的PayPal賬戶中注冊(cè)并得到確認(rèn)。
服務(wù)器收到即時(shí)付款通知后,您將需要通過(guò)構(gòu)建一個(gè)發(fā)送到PayPal的 HTTP POST 對(duì)其進(jìn)行確認(rèn)。您的 POST 應(yīng)發(fā)送到 https://www.paypal.com/cgi-bin/webscr
您必須完全按照收到表單變量時(shí)的原樣發(fā)送所有收到的表單變量。您還需要將一個(gè)值為“_notify-validate”的名為“cmd”變量(例如,cmd=_notify-validate)附加到 POST 字符串。
PayPal將回復(fù)該 POST,并在回復(fù)的正文中包含一個(gè)單詞“VERIFIED”或“INVALID”。當(dāng)您收到 VERIFIED 回復(fù)時(shí),您需要在實(shí)施訂單之前執(zhí)行若干檢查:
確認(rèn)“payment_status”為“Completed”,因?yàn)橄到y(tǒng)也會(huì)為其他結(jié)果(如“Pending”或“Failed”)發(fā)送 IPN。
檢查“txn_id”是否未重復(fù),以防止欺詐者重復(fù)使用舊的已完成的交易。
驗(yàn)證“receiver_email”是已在您的PayPal賬戶中注冊(cè)的電子郵件地址,以防止將付款發(fā)送到欺詐者的賬戶 。
檢查其他交易詳情(如物品號(hào)和價(jià)格),以確認(rèn)價(jià)格未改變完成了以上檢查后,您可以使用 IPN 數(shù)據(jù)更新您的數(shù)據(jù)庫(kù),并處理購(gòu)物。
如果收到“無(wú)效”通知,則應(yīng)將其視為可疑通知,并應(yīng)對(duì)其進(jìn)行調(diào)查。
相關(guān)文章
php時(shí)間計(jì)算相關(guān)問(wèn)題小結(jié)
這篇文章主要介紹了php時(shí)間計(jì)算相關(guān)問(wèn)題,結(jié)合實(shí)例形式總結(jié)分析了php關(guān)于時(shí)間與日期的常見(jiàn)操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-05-05iis6手工創(chuàng)建網(wǎng)站后無(wú)法運(yùn)行php腳本的解決方法
下面小編就為大家?guī)?lái)一篇iis6手工創(chuàng)建網(wǎng)站后無(wú)法運(yùn)行php腳本的解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06php程序之die調(diào)試法 快速解決錯(cuò)誤
經(jīng)??吹接谐跞隤HP道朋友對(duì)于php程序出現(xiàn)問(wèn)題素手無(wú)策的情況2009-09-09php Smarty date_format [格式化時(shí)間日期]
php Smarty date_format [格式化時(shí)間日期] ,需要的朋友可以參考下。2010-03-03linux平臺(tái)編譯安裝PHP7并安裝Redis擴(kuò)展與Swoole擴(kuò)展實(shí)例教程
這篇文章主要介紹了linux平臺(tái)編譯安裝PHP7并安裝Redis擴(kuò)展與Swoole擴(kuò)展的方法,結(jié)合實(shí)例形式詳細(xì)分析了Linux平臺(tái)上安裝php7并安裝Redis擴(kuò)展與Swoole擴(kuò)展的具體步驟與操作技巧,需要的朋友可以參考下2016-09-09PHP實(shí)現(xiàn)預(yù)定義鉤子和自定義鉤子的簡(jiǎn)單示例
這篇文章主要給大家介紹了PHP實(shí)現(xiàn)預(yù)定義鉤子和自定義鉤子,在PHP中,鉤子(Hooks)是一種機(jī)制,允許開(kāi)發(fā)人員在特定的時(shí)機(jī)插入自定義代碼,通過(guò)使用鉤子,開(kāi)發(fā)人員可以在應(yīng)用程序的特定事件發(fā)生時(shí)執(zhí)行自定義的功能或邏輯,文中有詳細(xì)的代碼講解,需要的朋友可以參考下2023-11-11簡(jiǎn)單實(shí)現(xiàn)php上傳文件功能
這篇文章主要教大家如何簡(jiǎn)單實(shí)現(xiàn)php上傳文件功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09