海外支付:遍及全球的Paypal

海外支付:遍及全球的Paypalhtml

吳劍 2015-11-26web

原創文章,轉載必需註明出處:http://www.cnblogs.com/wu-jianapi

吳劍 http://www.cnblogs.com/wu-jian瀏覽器

前言安全

Paypal是全球在線支付的領導者,2002年被eBay收購,2015年又戲劇性的從eBay分離,以500億美圓市值反超eBay。創始人 Elon Musk 同時是Paypal、空間探索技術公司、以及特斯拉汽車三家公司的CEO,電影「鋼鐵俠」的人物原型就是這哥們。服務器

海外支付:遍及全球的Paypal微信

海外支付:抵禦信用卡欺詐的CyberSource網絡

吳劍 http://www.cnblogs.com/wu-jian架構

概述app

Paypal爲商家提供了多種支付對接方式,其中Paypal Express Checkout最爲常見、方便、以及自定義擴展性最強。下圖是Paypal Express Checkout支付的一個標準時序圖,注意這是一個純技術層面的API調用流程,在此基礎上,咱們能夠組合出三種Paypal通用的用戶支付體驗:

快捷支付,直接去Paypal付款並使用Paypal上存儲的地址發貨。很明顯,Paypal但願把本身打形成一個用戶中心,也花了血原本推廣這種方式,具我所知,該方式也是海外用戶使用佔比最高的。

標準支付,就像咱們國內的天貓淘寶同樣,填好了收件地址,完了再去支付。

遊客支付,或稱之爲信用卡支付。固然信用卡不是Paypal強項,Paypal跟支付寶同樣充當的是銀行與用戶之間的中間人角色。在信用卡領域,VISA是老大,同時信用卡涉及到至關高的安全層面風險,具體請參考個人另外一篇文章 海外支付:抵禦信用卡欺詐的CyberSource 。

這三種支付方式都是基於下圖中相同API,只是組合序順或傳遞的參數稍有差別而以。

<圖1.Paypal Express Checkout API接口>

吳劍 http://www.cnblogs.com/wu-jian

SetExpressCheckout

這是一個同步的API接口,將交易相關的全部數據首先經過SetExpressCheckout傳遞給Paypal,而後Paypal響應一個Token用於後續支付步驟,Token有效時間爲3小時。

從接口前綴Set能夠看出該接口是一個預交易步驟,比如咱們去銀行提大額現金,須要提早一天給銀行通知,一來有助於銀行備齊現金,二來也有助於交易安全,銀行有充分時間評估交易的可靠性。後來在架構多平臺的支付中心時,我也參考和使用了Paypal的這個結構。

SetExpressCheckout的參數不少,具體可參見Paypal官方文檔:https://developer.paypal.com/docs/classic/api/merchant/SetExpressCheckout_API_Operation_NVP/ ,下面列出一些經常使用參數:

參數名稱 參數說明
VERSION 接口版本號
METHOD API名稱,使用「SetExpressCheckout」便可
REQCONFIRMSHIPPING 商家是否須要買家在PayPal帳戶中的郵寄地址是已經被確認的地址
PAYMENTREQUEST_{m}_PAYMENTACTION 但願獲取付款的方式
ALLOWNOTE 容許買方在PayPal結帳頁面上輸入了一條文本信息給商家
LOCALECODE PayPal付款頁面顯示語言的設置
RETURNURL 客戶選擇經過PayPal付款後其瀏覽器將返回的URL
CANCELURL 客戶取消使用PayPal付款時返回的URL
EMAIL 結帳時輸入的買家電子郵件。 PayPal使用該值預填PayPal登陸頁面的PayPal會員註冊部分
PAYMENTREQUEST_{m}_CURRENCYCODE PayPal支持的交易幣種中所列幣種之一的三字符幣種代碼
PAYMENTREQUEST_{m}_AMT 交易總費用
PAYMENTREQUEST_{m}_ITEMAMT 訂單全部物品的價格
PAYMENTREQUEST_{m}_SHIPPINGAMT 郵費總額
NOSHIPPING 是否不在PayPal付款頁面展現郵寄地址
LANDINGPAGE 付款頁面展現類型
SOLUTIONTYPE 結帳流程的類型
HDRIMG 付款頁面左上角顯示的圖片的URL
HDRBACKCOLOR 付款頁面標題的背景色
PAYFLOWCOLOR 付款頁面設置背景色
HDRBORDERCOLOR 付款頁面標題邊框顏色
L_PAYMENTREQUEST_{m}_NUMBER{n} 商品編號
L_PAYMENTREQUEST_{m}_NAME{n} 商品名稱
L_PAYMENTREQUEST_{m}_QTY{n} 商品數量
L_PAYMENTREQUEST_{m}_AMT{n} 商品單價
PAYMENTREQUEST_{m}_INVNUM 商家訂單編號

吳劍 http://www.cnblogs.com/wu-jian

GetExpressCheckoutDetails

如圖1所示,在經過SetExpressCheckout接口獲取到Token後,就須要跳轉頁面去Paypal了。用戶在Paypal站點登陸,確認支付信息,完成支付,最後Paypal將URL重定向回商家頁面。

此時,咱們能夠獲取用戶在Paypal的相關信息。接口的詳細參數可參見Paypal官方文檔:https://developer.paypal.com/docs/classic/api/merchant/GetExpressCheckoutDetails_API_Operation_NVP/ ,下面列出經常使用的響應參數:

參數名稱 參數說明
TOKEN Token
PAYERID Paypal用戶ID
EMAIL Paypal帳號(Email)
PAYMENTREQUEST_{n}_SHIPTONAME 貨運地址姓名
PHONENUM 貨運地址電話
PAYMENTREQUEST_{n}_SHIPTOCOUNTRYCODE 貨運地址國家ID
PAYMENTREQUEST_{n}_SHIPTOSTATE 貨運地址省份
PAYMENTREQUEST_{n}_SHIPTOCITY 貨運地址城市
PAYMENTREQUEST_{n}_SHIPTOZIP 貨運地址郵編
PAYMENTREQUEST_{n}_SHIPTOSTREET 貨運地址街道1
PAYMENTREQUEST_{n}_SHIPTOSTREET2 貨運地址街道2

在此須要提一下的是,Paypal的接口很是靈活,它最大限度讓商家可使用相同的API來組合不一樣的支付邏輯以提升用戶體驗。好比在標準支付時,用戶在商家網站填寫並存儲了郵寄地址,所以郵寄地址不須要與Paypal交互;而在快捷支付時,則能夠經過GetExpressCheckoutDetails接口獲取用戶存儲在Paypal上的地址信息而且在商家頁面上顯示給用戶確認。

吳劍 http://www.cnblogs.com/wu-jian

DoExpressCheckoutDetails

DoExpressCheckoutDetails是Paypal實時交易的最後一步,它告訴並向Paypal確認最終的支付信息,當完成對它的調用,就表明了Paypal實時支付的完成,也表明Money從用戶帳戶到了商家帳戶。詳細官方API文檔請參考:https://developer.paypal.com/webapps/developer/docs/classic/api/merchant/DoExpressCheckoutPayment_API_Operation_NVP/ ,以下列出了接口響應結果:

參數名稱 參數說明
PAYMENTINFO_{n}_PAYMENTSTATUS 付款結果狀態
PAYMENTINFO_{n}_CURRENCYCODE 成功幣種
PAYMENTINFO_{n}_AMT 成功金額
PAYMENTINFO_{n}_TRANSACTIONID Paypal交易ID

在快捷支付時,由於用戶的郵寄地址存放在Paypal中,所以在GetExpressCheckoutDetails前,咱們沒法知道用戶是哪一個國家,也就不能計算出運費金額。因此一般在快捷支付時,咱們會在GetExpressCheckoutDetails中獲取用戶郵寄地址來計算運費,在DoExpressCheckoutDetails中更新運費並確認最終金額。

吳劍 http://www.cnblogs.com/wu-jian

異步IPN通知

IPN全稱爲 Instant Payment Notification,在每筆交易完成後,Paypal可提供通知服務,即商家提供一個URL,Paypal向這個URL發送交易結果。這個過程是異步的,好比由於網絡繁忙或你的服務器故障,IPN會在連續4天內最大15次持續發送結果,直到你收到爲止。Paypal不建議在實時的支付流程中使用IPN,但咱們可使用IPN做爲交易安全輔助或交易提醒等用途。

IPN開發概要:https://developer.paypal.com/webapps/developer/docs/classic/ipn/integration-guide/IPNIntro/

IPN詳細參數:https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNandPDTVariables/ 

 

在Paypal商戶後臺中開啓IPN:用戶信息 -> 即時付款通知

 

IPN基於HTTP的POST規範,當成功接收到IPN結果後響應HTTP 200便可:

 

附錄:Paypal商戶後臺API設置截圖

 

 

 

吳劍 http://www.cnblogs.com/wu-jian

結束語

本文對Paypal支付流程和API進行了概要性描述,並未涉及到具體代碼細節,有了清晰的思路再編碼是事半功倍的事,但願對從業的開發人員有所幫助。也但願中國的產品有朝一日再也不是廉價和仿冒的代名詞,但願中國的海外賣家能把咱們的創新展示給世界人民,但願更多的站點可以崛起和打破阿里的壟斷。

最後友情提示,在海外大多數國家,對侵權的打擊仍是至關嚴厲的。Paypal是一家美國公司,遵照的是美國司法體系,若是你的站點銷售侵權產品,一般Paypal會給你警告,據我所知他們也有專門的巡查部門。但若是一旦你被海外用戶取證和訴訟而且事實成立,你的資金就有可能被Paypal凍結。

吳劍 http://www.cnblogs.com/wu-jian

<全文完>

吳劍 http://www.cnblogs.com/wu-jian

微信打賞
若是您以爲本文對您有所幫助,可掃描兩側的二維碼向做者打賞。您的支持是原創的源動力!
做者: 吳劍
出處: http://www.cnblogs.com/wu-jian/
本文版權歸做者全部,歡迎轉載,但必需註明出處,而且在轉載頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。
支付寶打賞
相關文章
相關標籤/搜索