python paypal支付接口開發(fā)

(第一次接觸支付,理解可能也不是很深,歡迎批評指正)?

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)建兩個賬號。

系統(tǒng)生成的兩個測試賬號

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

創(chuàng)建測試用戶

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

手動創(chuàng)建的測試賬號

用測試賬號登錄測試網(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:

創(chuàng)建應(yīng)用

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

App生成的clientId和密鑰

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

以postman為例:

憑據(jù)生成過程
獲得令牌憑據(jù)

二、客戶端集成的工作方式如下:

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ù)過期可以再去生成)


發(fā)送支付請求


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

支付請求成功返回的數(shù)據(jù)

支付成功返回數(shù)據(jù)

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


確認支付的url

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


登錄個人賬號

支付信息

支付過程

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

支付成功

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

授權(quán)批準

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

授權(quán)訂單
買家同意本次交易

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

state狀態(tài)

返回的值有created,approved,failed,以此來判斷支付的狀態(tài)。到了這一步,支付的整個流程就全部走通啦!

說到這里不得不在提醒一下,剛開始支付成功是返回的數(shù)據(jù)狀態(tài)為“state:created”,只是這筆交易剛創(chuàng)建而已,上圖:

交易創(chuàng)建成成功

當買家同意本此交易,才是真正的本場交易完成。

在結(jié)尾處咱們可以看下測試賬號中的金額,是否符合剛才這份交易,首先登錄測試個人賬號:

測試個人賬號

噔噔噔噔,付款成功,完美!

接下來看下商家賬號中是否收到該次交易的金額,登錄你的是測試商家賬號

測試商家賬號

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

說到這里,支付流程就結(jié)束啦?。?!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 8 管理支付和訂單 在上一章中,你創(chuàng)建了一個包括商品目錄和訂單系統(tǒng)的在線商店。你還學習了如何用Celery啟動異步...
    lakerszhy閱讀 2,442評論 1 4
  • 點我查看本文集的說明及目錄。 本項目相關(guān)內(nèi)容包括: 實現(xiàn)過程: CH7 創(chuàng)建在線商店 CH8 管理支付和訂單 CH...
    學以致用123閱讀 2,425評論 1 6
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • 今天我又讀了一本故事書,咕咚咕咚怪物。 不愛打掃衛(wèi)生的 圖圖床下有許多灰塵,這些灰塵每天都吃臟垃圾,最...
    張韶軒閱讀 1,555評論 1 0
  • 1、有所付出之后而得到的東西更加珍貴。 經(jīng)歷過從0到負,甚至負的極端,之后返回0,甚至到達正的極端,涵蓋更廣,意義...
    晴天有小雨Eason閱讀 278評論 0 0

友情鏈接更多精彩內(nèi)容