掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
做過(guò)跨境電商或者在海外購(gòu)物網(wǎng)站逛過(guò)的朋友都應(yīng)該知道PayPal,類(lèi)似于國(guó)內(nèi)流行的支付寶和微信支付,都屬于第三方支付平臺(tái)。在做外貿(mào)支付的時(shí)候不得不提到的就是PayPal了,畢竟它在國(guó)外的市場(chǎng)占有率擺在哪里,當(dāng)然據(jù)做外貿(mào)的朋友介紹在東南亞某些國(guó)家和地區(qū)支付寶的市場(chǎng)份額反超了PayPal。
背景介紹
由于在國(guó)內(nèi),做的項(xiàng)目需要使用PayPal的并不多,就算有時(shí)候需要做外貿(mào)項(xiàng)目,很多選擇第四方集成。據(jù)做外貿(mào)的朋友介紹,之所以選擇第四方支付是因?yàn)殡m然在海外PayPal的市場(chǎng)占有率是最高的,然而這種在線支付的普及率遠(yuǎn)不如國(guó)內(nèi)。而如果分別對(duì)接各種第三方支付或者銀行支付,將需要對(duì)接很多平臺(tái),開(kāi)發(fā)成本太高;而做的項(xiàng)目服務(wù)不在乎多一點(diǎn)支付的手續(xù)費(fèi)。比如PayPal的手續(xù)費(fèi)是3.9%+0.3美元(每筆),而第四方的相對(duì)高個(gè)1%左右;從中也可以看得出雖然我們經(jīng)常吐槽支付寶和微信手續(xù)費(fèi)是暴利,但從此看來(lái)國(guó)內(nèi)的支付公司很良心了。
好了,步入正題,對(duì)接PayPal支付有多種支付方式,比如按鈕支付之類(lèi)的,而今天我們要跟大家介紹的就是基于PayPal官方提供的PayPal-PHP-SDK進(jìn)行支付(也就是REST API Samples的方式)的簡(jiǎn)潔版指南;希望幫助大家能花盡可能少的時(shí)間快速實(shí)現(xiàn)支付對(duì)接。
前期準(zhǔn)備
其實(shí)跟微信支付寶類(lèi)似,就是注冊(cè)帳號(hào)然后成為開(kāi)發(fā)者;當(dāng)然PayPal跟支付寶一樣有沙箱模式,因此在開(kāi)發(fā)階段我們可以使用沙箱帳號(hào)來(lái)做開(kāi)發(fā),這樣可以不用簽約也可以進(jìn)行開(kāi)發(fā)工作。主要步驟如下:
1、首先去官網(wǎng)注冊(cè)一個(gè)paypal賬號(hào)。
2、申請(qǐng)完畢并登錄,進(jìn)入開(kāi)發(fā)者中心(https://developer.paypal.com)??梢赃M(jìn)入沙箱帳號(hào):
即可看到你申請(qǐng)賬號(hào)自動(dòng)配屬的兩個(gè)測(cè)試賬號(hào),賬號(hào)類(lèi)別分別是:賣(mài)家?guī)ぬ?hào)和買(mǎi)家?guī)ぬ?hào),默認(rèn)就有9999美元,不過(guò)跟支付寶一樣,都是虛擬的用于測(cè)試,也可以手工修改余額。
然后給兩個(gè)賬號(hào)設(shè)置密碼,點(diǎn)擊賬號(hào)展開(kāi),然后點(diǎn)擊Profile,會(huì)彈出賬號(hào)信息框,里面可以設(shè)置密碼等一堆屬性。
2、進(jìn)入我的應(yīng)用程序和證書(shū)(My Apps & Credentials)申請(qǐng)APP(不是app客戶端,意思是應(yīng)用,跟支付寶開(kāi)放平臺(tái)的應(yīng)用概念類(lèi)似)。
然后點(diǎn)擊REST API apps欄目下面的Create App按鈕,寫(xiě)進(jìn)一個(gè)APP名稱(chēng),然后選擇一個(gè)測(cè)試賬戶作為此APP綁定的賬號(hào),如果你在上一步?jīng)]有申請(qǐng)新的測(cè)試賬號(hào)(也可以另外創(chuàng)建測(cè)試的賣(mài)家?guī)ぬ?hào)和買(mǎi)家?guī)ぬ?hào)的,比如創(chuàng)建一個(gè)美國(guó)地區(qū)的賣(mài)家?guī)ぬ?hào)和一個(gè)日本地區(qū)的買(mǎi)家?guī)ぬ?hào)),那么這里默認(rèn)就是選擇了賣(mài)家?guī)ぬ?hào)。
3、然后打開(kāi)創(chuàng)建的應(yīng)用,可以看到應(yīng)用的Client ID和Secret。
4、paypal的沙箱模式測(cè)試環(huán)境域名為sandbox.paypal.com,正式域名為www.paypal.com。如果是使用官方的SDK,那么直接設(shè)置mode為sandbox就是沙箱模式,而設(shè)置為live,也就是線上的意思。
5、官方提供了web開(kāi)發(fā)的SDK,包括Java、.net、node、php、Python、Ruby等,也包含移動(dòng)客戶端開(kāi)發(fā)的ios和安卓的。這里的指南是以php為例。
官方SDK地址為:https://developer.paypal.com/docs/api/rest-sdks/。這個(gè)地址包含所有SDK的下載入口,都是托管到github上面的。
6、設(shè)置異步通知地址,推薦的方式是在獲取應(yīng)用的Client ID和Secret的頁(yè)面下面部分可以設(shè)置回調(diào)通知的url,如圖所示。也可以在賣(mài)家?guī)ぬ?hào)中設(shè)置PIN的url,經(jīng)過(guò)測(cè)試,如果設(shè)置了這個(gè)就以PIN為準(zhǔn),而且兩個(gè)地方paypal異步通知的數(shù)據(jù)包參數(shù)并不一樣。關(guān)于paypal異步通知設(shè)置后續(xù)如果有機(jī)會(huì)跟大家詳細(xì)介紹。
對(duì)接過(guò)程
1、創(chuàng)建一個(gè)支付,發(fā)送到paypal服務(wù)端以獲取用戶授權(quán)url。具體代碼我就不帖了,SDK的demo代碼中都有,下面的地址就是從paypal服務(wù)端獲取的用戶授權(quán)url,注意這并不是類(lèi)似支付寶那樣的支付url,別掉這坑里了。
其中在發(fā)起支付的時(shí)候除了設(shè)置商品及金額信息外,還需要設(shè)置兩個(gè)url,一個(gè)是支付url,另外一個(gè)是取消支付的url。這里的url并不是類(lèi)似支付寶支付的同步回調(diào)地址,支付寶的同步回調(diào)地址訪問(wèn)前實(shí)際上支付已經(jīng)完成了,而這里是需要到達(dá)支付頁(yè)面完成支付的。
這個(gè)地方一定要注意了,這也是跟支付寶支付一個(gè)不太一樣的地方。支付寶的只要獲取支付url,然后去支付寶網(wǎng)站里面就可以完成支付,然后異步通知。而paypal首先去其官網(wǎng)僅僅是獲取用戶的授權(quán)而已,最終字符還是要回到自己的網(wǎng)站再一次請(qǐng)求paypal的支付接口。
2、使用以上paypal返回的url,進(jìn)入paypal去登錄買(mǎi)家?guī)ぬ?hào)進(jìn)行用戶授權(quán)。如果沒(méi)有帳號(hào)需要先登錄買(mǎi)家?guī)ぬ?hào),如果已經(jīng)登錄了并且選擇支付類(lèi)型(余額或者信用卡),就會(huì)顯示如下的界面(這個(gè)買(mǎi)家?guī)ぬ?hào)是另外創(chuàng)建的沙箱買(mǎi)家?guī)ぬ?hào),日本地區(qū)的所以顯示的是日文):
3、在上述步驟中點(diǎn)擊統(tǒng)一支付,這時(shí)候如果是支付寶是完成支付的,而在這里并沒(méi)有完成支付。而是跳轉(zhuǎn)到第一步中設(shè)置的ReturnUrl,也就是ExecutePayment.php?success=true。在這個(gè)url里面我們需要再一次請(qǐng)求paypal,來(lái)完成支付。支付后可以在買(mǎi)家和賣(mài)家?guī)ぬ?hào)中看到交易記錄,下圖問(wèn)買(mǎi)家?guī)ぬ?hào)的交易記錄:
注意事項(xiàng)
paypal的支付流程跟國(guó)內(nèi)的支付寶支付還是有區(qū)別的,總體而言我感覺(jué)支付方式不管開(kāi)發(fā)體驗(yàn)還是使用體驗(yàn)都不如國(guó)內(nèi)的支付寶和微信支付。下面把過(guò)程中幾個(gè)可能被大家誤解的地方說(shuō)明下,防止大家入坑。
1、支付的基本流程是:創(chuàng)建一個(gè)支付,發(fā)送到paypal服務(wù)端并返回一個(gè)用戶授權(quán)地址(在客戶端,即我們自己的服務(wù)端,并設(shè)置一個(gè)支付)–>轉(zhuǎn)鏈到用戶授權(quán)地址(paypal網(wǎng)站)–>用戶授權(quán)用戶授權(quán)完畢(paypal網(wǎng)站,用戶登錄帳號(hào)并同意支付)–>paypal返回到客戶端設(shè)置的execute地址(這個(gè)地址是第一步設(shè)置的,在客戶端),付款實(shí)現(xiàn)。
2、在上述流程的第一步設(shè)置的url,并不是類(lèi)似微信或支付寶那樣的回調(diào)url,而是后續(xù)返回到客戶端完成支付的url。
3、paypal貌似不支持人民幣支付,也就是在上述步驟中第一步創(chuàng)建支付的時(shí)候設(shè)置貨幣類(lèi)型,可以設(shè)置美元等其他貨幣,但不能設(shè)置人民幣(CNY),因此如果是系統(tǒng)貨幣單位為人民幣需要在服務(wù)端轉(zhuǎn)化為美元然后再創(chuàng)建支付。據(jù)說(shuō)是由于paypal在中國(guó)大陸地區(qū)沒(méi)有獲得支付牌照的原因。
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流