(第一次接觸支付,理解可能也不是很深,歡迎批評指正)?
paypal是目前全球最大的在線支付工具,就像國內(nèi)的支付寶一樣,是一個基于買賣雙方的第三方平臺。
PayPal API是基于HTTP的restful API,使用OAuth 2.0進行授權(quán)。API請求和響應(yīng)主體采用json格式。
*環(huán)境準備
* 注冊paypal賬號
(1)在瀏覽器輸入“https://www.paypal.com”,頁面跳轉(zhuǎn),進行注冊
(2)選擇“創(chuàng)建個人賬戶”,根據(jù)要求填寫信息,注冊完去郵箱激活
* 注冊paypal開發(fā)者賬號
(1)在瀏覽器輸入“https://developer.paypal.com”,并登陸創(chuàng)建好的賬號登錄
* 創(chuàng)建兩個測試用戶
(1)登錄成功之后,點擊Sandbox下的Accounts
? (2)? ?進入Accounts潔面后,可以看到系統(tǒng)有兩個生成好的測試賬號,但是我們不要用系統(tǒng)給的測試賬號,很卡,自己創(chuàng)建兩個賬號。

(3)點擊“Create Account” , 創(chuàng)建測試用戶

填完賬戶信息即可,?先創(chuàng)建一個“ PERSONAL”類型的用戶,國家一定要選“China”,賬戶余額自己填寫。接著創(chuàng)建一個“BUSINESS”類型的用戶,國家一定要選“China”,賬戶余額自己填寫,創(chuàng)建好之后可以點擊測試賬號下的”Profile“,可以查看信息,如果沒加載出來,刷新 。

用測試賬號登錄測試網(wǎng)站查看,注意!這跟paypal官網(wǎng)不同!不是同一個地址,在瀏覽器輸入:https://www.sandbox.paypal.com?在這里登陸測試賬戶
* 創(chuàng)建應(yīng)用,生成用于測試的clientID 和密鑰
創(chuàng)建應(yīng)用時,PayPal會為沙盒和實時環(huán)境為您的應(yīng)用生成一組OAuth客戶端ID和機密憑據(jù)。您Authorization在get訪問令牌請求中的標頭中傳遞這些憑據(jù)。通過持票人令牌,您可以代表資源所有者并獲得資源所有者的批準。
(1)點擊左邊導航欄Dashboard下的My Apps & Credentials,創(chuàng)建一個賬號,下圖是我已經(jīng)創(chuàng)建好的?

(2)? 然后到下邊的創(chuàng)建App
這是我創(chuàng)建的“ai_server”App:

(3)點擊剛創(chuàng)建的App"ai_server",?注意看到”ClientID“ 和”Secret“(Secret如果沒顯示,點擊下面的show就會看到,點擊后show變?yōu)閔ide)?

******環(huán)境準備工作基本完成,接下來需要獲取訪問令牌(使用訪問令牌進行身份驗證),要獲取訪問令牌,請在獲取訪問令牌調(diào)用中傳遞OAuth憑據(jù)。要進行此調(diào)用,您可以在命令行或Postman應(yīng)用程序上使用cURL。
以postman為例:


二、客戶端集成的工作方式如下:
1. 您的買家點擊了PayPal按鈕。
2. PayPal按鈕調(diào)用PayPal API來設(shè)置付款。
3. 該按鈕在瀏覽器中啟動結(jié)帳流程。
一個客戶端的整合是整合PayPal支付的最快方式。它不需要Web服務(wù)器來設(shè)置和執(zhí)行付款。相反,PayPal Checkout按鈕可直接從您的瀏覽器設(shè)置和執(zhí)行付款。
三、REST API
本項目支付調(diào)用的是PayPal的SDK,主要關(guān)注Create 和 Execute 兩個接口,使用SDK的好處是通信過程中只要按照格式要求去請求接口就OK了,不需要牽扯到加密等復雜部分。以下是項目主要請求的內(nèi)容和格式,以及返回的內(nèi)容和格式。(主要來自Payments API,為圖方便而記錄下來,有需要了解更多的的可以去參考官方文檔啦)
Create payment
Create請求的格式和內(nèi)容:
以postman 為例:

(tips:訪問憑據(jù)過期可以再去生成)

支付的請求數(shù)據(jù)中的return_url,是當你支付成功后所跳轉(zhuǎn)的url,后面會用到
支付請求成功返回的數(shù)據(jù)

聲明:支付請求成功返回的數(shù)據(jù)鏈接中,將頁面重定向至該url支付頁面,進行支付授權(quán),并確認支付。

將approval_url放入瀏覽器中 ,進行付款(付款之前需要你去登錄測試個人賬號去付款)

支付信息

在支付成功的那一刻,跳轉(zhuǎn)之前設(shè)定好的URL頁面里面(是請求數(shù)據(jù)中return_url),并獲得支付成功的PayerID等數(shù)據(jù)

在支付請求成功的返回鏈接數(shù)據(jù)中獲取函數(shù)execute的該url:

通過買家payer_id去觀察付款狀態(tài):


獲取到execute的返回值,主要關(guān)注state關(guān)鍵字。

返回的值有created,approved,failed,以此來判斷支付的狀態(tài)。到了這一步,支付的整個流程就全部走通啦!
說到這里不得不在提醒一下,剛開始支付成功是返回的數(shù)據(jù)狀態(tài)為“state:created”,只是這筆交易剛創(chuàng)建而已,上圖:

當買家同意本此交易,才是真正的本場交易完成。
在結(jié)尾處咱們可以看下測試賬號中的金額,是否符合剛才這份交易,首先登錄測試個人賬號:

噔噔噔噔,付款成功,完美!
接下來看下商家賬號中是否收到該次交易的金額,登錄你的是測試商家賬號

收款金額到賬,更加完美!