Python服務器運維筆記:第三章電商實戰 - 3.1.6 支付寶支付

前言:本文是學習網易微專業的《python全棧工程師》 中的《服務器運維開發工程師》專題的課程筆記,歡迎學習交流。同時感謝老師們的精彩傳授!

一、課程目標

  • 支付寶支付流程
  • 支付寶接口
  • 商城支付接口

二、詳情解讀

2.1.支付寶支付流程
2.1.1.支付寶支付通過url跳轉完成

用戶支付時是根據訂單生成的支付url跳轉到支付寶網站進行支付,比如下面的url
https://excashier.alipaydev.com/standard/auth.html?payOrderId=28e8809f35ef413e9dc795d9abf1c5fb.00
在這裏插入圖片描述

2.1.2.支付寶支付完成後需要通知商家服務器接口

支付完成後,支付寶通知商家,該訂單已經完成支付
在這裏插入圖片描述

2.1.3.支付完成確認

在這裏插入圖片描述

2.1.4.支付寶支付流程

在這裏插入圖片描述

2.2.支付寶支付開發準備
2.2.1.支付寶接入準備

1.申請商家支付寶賬號,並且申請商家支付功能
2.支付寶有不同應用場景,可能需要簽訂不同的協議

2.2.2.支付寶沙箱環境

1.進入支付寶開放平臺:https://openhome.alipay.com
2.入駐成爲開發者
3.創建相關應用
4.在開發服務部分進入沙箱環境
在這裏插入圖片描述

實操:
step1: 進入頁面:https://openhome.alipay.com/platform/home.htm
用支付寶掃碼登錄,如果還不是開發者,則註冊成爲開發者。

在這裏插入圖片描述
step2: 進入開發者中心:
在這裏插入圖片描述
Step3: 創建網頁&移動應用
在這裏插入圖片描述
Step4: 進入開發服務裏的沙箱環境:
在這裏插入圖片描述
在沙箱環境的沙箱應用裏,會創建一個應用,這個應用只能在沙箱環境裏有效:
在這裏插入圖片描述
說明:
沙箱環境:表示模擬正式的支付流程和環境,只不過數據都是虛擬的。

Step5: 下載支付寶密鑰生成器,生成密鑰。生成器下載地址:https://opendocs.alipay.com/open/291/106097/
在這裏插入圖片描述
安裝完成後,點擊生成密鑰,然後複製應用公鑰,下一步要用到:
在這裏插入圖片描述
Step6: 生成支付寶公鑰。如下圖,點擊沙箱環境裏的RSA2密鑰的設置:
在這裏插入圖片描述
在這裏插入圖片描述
點擊上面的保存設置,即可得到下圖結果,這裏的支付寶公鑰程序裏要用到:
在這裏插入圖片描述
Step7: 支付寶支付里程序的配置。打開文件flask-mall-base/pay/alipay/pay_example.py,修改下圖的配置:
在這裏插入圖片描述
app_id和支付寶網關在沙箱應用裏:
在這裏插入圖片描述
應用私鑰在支付寶生成器裏的:
在這裏插入圖片描述
支付寶公鑰在沙箱環境裏:

Step8: 打開文件flask-mall-base/xp_mall/settings.py,填寫ALIPAY_APP_ID
在這裏插入圖片描述
然後新建文件夾flask-mall-base/alipay_cert/,在支付寶生成器工具裏打開密鑰文件路徑
在這裏插入圖片描述
將如下的兩個文件,
在這裏插入圖片描述
分別重命名爲:alipay_public_keyalipay_private_key
在這裏插入圖片描述
然後將這兩個文件上傳到flask-mall-base/alipay_cert/目錄下。到此,支付寶程序裏的配置準備工作完成。

2.3.支付接口文檔
2.3.1.支付寶代碼實現

統一下單支付接口:
https://opendocs.alipay.com/apis/api_1/alipay.trade.page.pay/

在這裏插入圖片描述
python的程序可以參考http裏的示例:
在這裏插入圖片描述
支付時會傳遞參數到支付網關地址中,支付寶會根據訂單的狀態跳轉到相應的接口中:
在這裏插入圖片描述
異步通知接口文檔地址:https://opendocs.alipay.com/open/270/105902
1.異步通知在構造請求參數中用notify_url參數定義
2.該url爲支付寶服務器與商家網站服務器之間通訊接口
3.支付寶支付成功之後,支付寶就會在後臺對該接口進行調用

2.4.利用支付寶SDK開發支付功能
2.4.1.支付寶代碼實現

Step1: 安裝aliypay-python模塊

pip install alipay-python

appid與公鑰、私鑰配置
在這裏插入圖片描述
統一下單支付接口:
AlipayTradePageModel爲領土完整封裝好的對象,只需要傳遞訂單參數
在這裏插入圖片描述
打開文件flask-mall-base/pay/alipay/pay_example.py,修改下圖中的配置:
在這裏插入圖片描述

2.5.flask-alipay

flask-alipay是基於flaskalipay插件,該插件對alipay-python進行了封裝,可以更方便的在flask中使用支付寶支付。

安裝方法:

pip install flask-alipay

插件使用方法:
1.配置參數。在settings中配置appid,return_url,notify_url,公鑰,私鑰證書文件路徑。

2.在extendions擴展中創建Alipay支付對象實例
在這裏插入圖片描述
3.訂單創建後,調用alipay.pay_order(order)方法,Alipay對象具有一個pay_order方法,該方法未完成參數的封裝生成支付url
在這裏插入圖片描述
alipay.pay_order方法:

def pay_order(self, order):
	self.model.out_trade_no = order.order_no
	self.model.total_amount = order.total_price
	self.model.subject = order.subject
	self.model.body = order.subject
	
	_request = AlipayTradePagePayRequest(biz_model=self.model)
	_request.notify_url = self.notify_url
	_request.return_url = self.return_url
	
	# 得到構造的請求,如果http_method是GET,則是一個帶完成請求參數的url,如果http_method是POST,則是一段HTML表單片段
     _response = self.client.page_execute(_request, http_method="GET")
     return _response

打開文件flask-mall-base/xp_mall/settings.py,修改下面的配置:
在這裏插入圖片描述

2.6.回調域名問題

由於支付完成後,支付寶需要對商家網站進行回調,因此測試地址必須可以被公網訪問
1.使用雲服務器與註冊域名
2.使用內網穿透工具,比如花生殼
3.直接使用路由器外網ip,作DMZ主機

三、課程小結

  • 01 支付寶支付流程。從訂單的創建,到支付完成之後的通知網站支付成功,這個流程要掌握。不知道的要多看幾遍,或者在圖紙上畫一畫。
  • 02 支付寶接口。要知道支付寶接口文檔在哪裏,我們使用的是哪一個接口,參數的說明等等,要看一遍。
  • 03 flask-alipay。瞭解接口不是要求從0開始寫接口,這對我們當前有點挑戰性,而且在實際工作中都是已經封裝好了相應的接口,只需要進行調用即可。關鍵的是要掌握原理,瞭解接口之間到底發生了哪些事情,傳遞了哪些參數,加密的方法,安全是如何保證的。

通過這節課,同學們要掌握如何通過配置讓網站實現支付寶的支付功能。需要配置appid,公鑰、私鑰等配置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章