PayPal是什么
PayPal是目前全球最大的在線支付工具,就像國內(nèi)的支付寶一樣,是一個(gè)基于買賣雙方的第三方平臺(tái)。買家只需知道你的PayPal賬號(hào),即可在線直接把錢匯入你的賬戶,即時(shí)到賬,簡單方便快捷。
對(duì)接前言
在對(duì)接PayPal的時(shí)候,發(fā)現(xiàn)網(wǎng)上好多對(duì)接文章已經(jīng)是兩年前的文章了,PayPal官網(wǎng)頁面也發(fā)生了一些變化,導(dǎo)致浪費(fèi)了許多時(shí)間在官網(wǎng)上找東西。實(shí)際上2020年對(duì)接變得更加簡單了。
注冊(cè)PayPal正式賬號(hào)
首先去官網(wǎng)https://www.paypal.com注冊(cè)一個(gè)自己的PayPal賬號(hào),由于一開始只是為了測試,所以我們只能先注冊(cè)一個(gè)個(gè)人賬戶。不過個(gè)人的開發(fā)者賬戶中也可以創(chuàng)建沙箱測試環(huán)境和賬號(hào)。所以不用擔(dān)心后續(xù)無法操作。
PayPal開發(fā)者平臺(tái)
瀏覽器輸入以下地址:
https://developer.paypal.com
點(diǎn)擊右上角“Log into Dashboard”,進(jìn)入開發(fā)者平臺(tái)(使用剛才自己注冊(cè)的正式賬號(hào)登陸開發(fā)者平臺(tái))。一開始的頁面為如下,我們可以看到系統(tǒng)為我們自動(dòng)創(chuàng)建了default application沙箱測試app,我們也可以自己在sandbox下點(diǎn)擊create app來創(chuàng)建自己的沙箱app。
然后點(diǎn)擊default application之后,我們就會(huì)找到PayPal支付必要的參數(shù),clientId和secret,對(duì)接過微信支付的小伙伴就知道,類似于appid和pay secret。
我們可以看到左側(cè)菜單欄里有個(gè)sandbox欄目,下邊有個(gè)Account菜單,這里就是存儲(chǔ)沙箱賬戶信息的地方。
點(diǎn)擊accounts,出現(xiàn)如下頁面,里面有兩個(gè)系統(tǒng)已經(jīng)自動(dòng)創(chuàng)建的買家和賣家信息,到付款的時(shí)候,我們就需要personal個(gè)人賬戶付款,然后去business商家賬戶查看余額變動(dòng)。目前我們不需要登陸這兩個(gè)賬戶,如果想去登陸看一下賬戶信息,可以通過這個(gè)沙箱地址登陸(此處使用的是開發(fā)平臺(tái)創(chuàng)建的沙箱賬戶登陸)。
https://www.sandbox.paypal.com
開始使用java對(duì)接
通過以上步驟,我們已經(jīng)獲取到了對(duì)接PayPal所需的基本測試環(huán)境與數(shù)據(jù)。接下來該通過引入第三方包用java對(duì)接了。
基本框架
springboot
maven依賴如下,網(wǎng)上大部分依賴都是1.4.2版本的,已經(jīng)老的掉牙了。我后來換用1.13.1版本。
<!--PayPal依賴-->
<dependency>
<groupId>com.paypal.sdk</groupId>
<artifactId>rest-api-sdk</artifactId>
<version>1.13.1</version>
</dependency>
操作文檔
一開始,我按照網(wǎng)上的代碼操作,結(jié)果是一塌糊涂,各種爆紅,獲取信息超時(shí),原因也沒來得及細(xì)究。后來還是老老實(shí)實(shí)的閱讀官方文檔,哈哈哈哈,結(jié)果一下子就搞定了。PayPal-Java-SDK的git地址為如下
https://github.com/paypal/PayPal-Java-SDK
直接滾動(dòng)到最下邊,有個(gè)make your first call,我一開始點(diǎn)的run samples project,結(jié)果不會(huì)操作,還是老老實(shí)實(shí)點(diǎn)擊第一個(gè)就好了。
里面的步驟大概翻譯一下:
1.將剛才沙箱環(huán)境下某個(gè)app的clientId和secret拿過來
2.創(chuàng)建一個(gè)支付對(duì)象,然后發(fā)起請(qǐng)求,得到創(chuàng)建對(duì)象返回結(jié)果,從中獲取approval URL
3.然后請(qǐng)求這個(gè)approval URL,接下來的操作就和代碼無關(guān)了。
代碼部分
基本上是直接把官方代碼復(fù)制過來,其中有兩個(gè)地址,成功之后的跳轉(zhuǎn)地址,失敗后的跳轉(zhuǎn)地址,這個(gè)自己設(shè)定,可以自己寫個(gè)controller,添加兩個(gè)測試接口,success和cancel。測試過程中,returnUrl還是很有必要的,所以最好自己有這樣一個(gè)接口,將來要進(jìn)行execute操作。
請(qǐng)求后的結(jié)果如下:
復(fù)制approval_url到瀏覽器,請(qǐng)求之后顯示如下(如果提前在瀏覽器登陸了賬戶,賬戶信息在有效期內(nèi),那么就不會(huì)彈出登陸頁面),然后該怎么操作,怎么操作。
到了這一步,基本上快完事了,最后還需要執(zhí)行execute接口,一開始測試的時(shí)候,我的接口寫在returnUrl里面,所以點(diǎn)完繼續(xù)后,會(huì)直接請(qǐng)求我提前寫好的success接口,大概如下:
支付結(jié)果
接下來我們?nèi)サ顷懮诚錅y試賬號(hào),商家賬戶信息如下: