2.新建支付寶應用
2.1 下載支付寶生成軟件密鑰
# 訪問"支付寶開發平台"登錄,可以訪問開發者中心 https://open.alipay.com/platform/home.htm # 可以參考"電腦網站支付" 熟悉電腦支付整體流程 https://docs.open.alipay.com/270/105899/
2.1 第一步:創建應用(這里使用沙箱環境測試)
- 沙箱環境說明 線上環境需要創建應用,因為我們不是企業,沒有資質,所以只能申請沙箱環境
- 簡單來講沙箱環境就是給開發者使用的測試環境 沙箱環境地址:
- https://openhome.alipay.com/platform/appDaily.htm?tab=info
2.2 按照官方要求生成秘鑰
生成秘鑰參考官網: https://docs.open.alipay.com/291/105971
- 一定要存儲兩個東西 支付寶公鑰:我發送信息給支付寶,使用支付寶公鑰進行加密 app私鑰(我自己生成的):
- 支付寶給我發送的信息是用我剛剛上傳的app公鑰加密,只有我 自己的私鑰可以解密
3.測試支付寶獲取支付寶掃碼鏈接
3.1 支付寶開發網址
支付寶開放平台: https://open.alipay.com/platform/home.htm
支付寶沙箱環境: https://openhome.alipay.com/platform/appDaily.htm?tab=info
支付寶開發者文檔:https://openhome.alipay.com/developmentDocument.htm
電腦網站支付流程:https://docs.open.alipay.com/270
生成簽名:https://docs.open.alipay.com/291/106103/ python-alipay-adk : https://github.com/fzlee/alipay/blob/master/README.zh-hans.md
3.2 說明
- 阿里官方沒有提供python對接支付的sdk,但是python庫中有非官方的sdk包可以使用
- python-alipay-adk : https://github.com/fzlee/alipay/blob/master/README.zh-hans.md 使用起來非常簡單,
- 只要傳入幾個必要的參數就可以完成 由於支付對安全要求很高,所以要理解對接支付寶安全的流程: 公鑰加密、私鑰解密 這八個字
3.3 app_private_key.pem app私鑰 (新建文件)
-
-
-
-
-
BEGIN RSA PRIVATE KEY
-
-
-
-
-
MIIEpAIBAAKCAQEAxXRdL
+
ALzW4AW6ndW5
/
ZD44ppPsfm9If
/
oc3pc1gmqjT7z73swlUhotEPZnLsk8hq
dEoR9fg
/
+
0XijuJQqnU
+
CU3pptdXgkIcyq
/
fyvpRgkX2OA9G7CHEveZ97leaOG2RI1i2JvgUiM
+
O2LiDA
AbTWtk8Chx
+
j2Z
+
R5s22zgI
/
y
+
45bcMht
/
YDxAbmgDFkBq32PyHlu3gTjoB7SqBZ8ecU8AKBxSjUPB3t5
ls4T2P3Xy
/
ER2
/
PFcnh0vZGQsZRbHQ6wS1Jsql
/
3Wu1
+
tvHvIiKKXPGUcZe7czfqfwcIwVPrntEdPYC2J
USzC94vFwcMNAlai
/
aiWDCc4jDt1W7oetwIDAQABAoIBAQDBNBESjUk
/
I0laZ6Vex9PeMp5w
/
f95umrv5
GMA6yqBanyldplsJ877Lz4AgIId4Ovxe
+
TMF2HjSZxk98hg4Eiw3cnMTe1X28LW3Zcu2kqQ6sjYvuFMPL
iOSJPxHwJP4bs07Jsxk6Q0
+
qMj
/
KduUpRkdpb3nruXvbrxVWHyel
/
/
FM6jqCvxxFWBhCikDjNPZEgPJa
+
at1viN
/
u1eOoEO5
/
SBkVYePF6O3Nx8rR20nG2KfvvLkfWfBvVnIWdmkUmqMX2EIXF
+
af66FlcgWTszvkx
pIS3KnHGK5rHe2
+
uTuJp57MY0WnJq5v6vKwhOADvNiwLg2dwLDSq9SRJzWnsm
+
RBAoGBAP0wA92l9Ilag
gLD8WCFeVICiNWGlA2jSYfindMXX9rf6xo8hSr
/
YWfyxu6guBqvo7b
/
onG7DwyrDOvlq7X
/
kQNbtxkis
/
oYBeWssF6ab10CtFuF1wUP5jXoaAMUIy2xrXcmO5bJsvTE6O9VZophlSo0uvXxBJRSgqfEo0wEET6HAoG
BAMel3KitQQArxiD8SHDE6q1hb5elIDTyYiJI65EagWO41xcBMduu0tjZyoTbL6MWKHCxxXuOsWpQjtuF
8FVesDMBBpC9VLO4IvnQDZb7lKXWgEnMc4gckL
+
KNzgkIzYNs1jW6IYfcY82iP22AoH3xbnaYI56sH2lA
RUZcUNe
/
3pRAoGBAPWvYSD1SEz8yco7L4A1JRwCn5tsA0EUoWa97d6IARkYTkBgV
+
z4ciH3gTjQNraWl2
wdthlcpmbpmRlT
/
gMWozY6CnvWpATcyOQtZdv3SndcB34EazlbS04mXsAWC2js0GIddJeG1CQW695K5b0
EokWZc47yuTngsy5vbvJ1w
/
IDAoGAW5jpaCo1DFMJD9Evmy19ThbKEBUedaxPAdPa4DP88Te410EhEt1e
t0cU92dor7ZWz32AUXPiShizslv9K
+
3JgV0TGg0Dc4Ej6uFdmsvKI1wKd9FpoCUa9AYB16wcy4v1oOjYv
dBnVYF70ItVEzQOb3qVmkkH
+
F1f5cJKiNJo
/
EECgYA1OZn4LqvFsK
/
WG23FFcW6wvGOKjHgAfwENILiHB
jHNESYBtwnRaV0Vgikz3tfC5qehmuJT
+
N
+
bjsqsqaM3ZR50
/
xqWx6qGenA5KbGyMkWMu4LFAuqGKz1ocH
2kjM
+
jc0eNRzABj7A9ATx
+
1nfiKD0ehc6lrXIp71rItEuKxyO8w
=
=
-
-
-
-
-
END RSA PRIVATE KEY
-
-
-
-
-
3.4 alipay_public_key.pem 支付寶公鑰
-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIgHnOn7LLILlKETd6BFRJ0GqgS2Y3mn1wMQmyh9zEy Wlz5p1zrahRahbXAfCfSqshSNfqOmAQzSHRVjCqjsAw1jyqrXaPdKBmr90DIpIxmIyKXv4GGAkPyJ/6FT FY99uhpiq0qadD/uSzQsefWo0aTvP/65zi3eof7TcZ32oWpwIDAQAB -----END PUBLIC KEY-----
3.5 測試生成支付鏈接
# -*- coding: utf-8 -*- from alipay import AliPay # 沙箱環境中 app 私鑰 app_private_key_string = open('app_private_key.pem').read() # 支付寶公鑰 alipay_public_key_string = open('alipay_public_key.pem').read() def get_alipay_url(): # 實例化一個alipay對象 alipay = AliPay( appid="2016102600762759", # 沙箱appid app_notify_url=None, # 默認回調url app_private_key_string=app_private_key_string, # 支付寶的公鑰,驗證支付寶回傳消息使用,不是你自己的公鑰, alipay_public_key_string=alipay_public_key_string, sign_type="RSA2", # RSA 或者 RSA2 debug=True, # 默認False,我們是沙箱,所以改成True(讓訪問沙箱環境支付寶地址) ) # 調用支付接口,生成支付鏈接 # 電腦網站支付,需要跳轉到https://openapi.alipay.com/gateway.do? + order_string order_string = alipay.api_alipay_trade_page_pay( out_trade_no="2016122268888", # 訂單id,應該從前端獲取 total_amount=str(0.01), # 訂單總金額 subject="測試阿里雲付款", # 付款標題信息 return_url=None, # 付款成功回調地址(可以為空) notify_url=None # 付款成功后異步通知地址(可以為空) ) pay_url = "https://openapi.alipaydev.com/gateway.do?" + order_string print(pay_url) # 將這個url復制到瀏覽器,就會打開支付寶支付頁面 def query_pay(): alipay = AliPay( appid="2016102600762759", # 沙箱appid app_notify_url=None, # 默認回調url app_private_key_string=app_private_key_string, # 支付寶的公鑰,驗證支付寶回傳消息使用,不是你自己的公鑰 alipay_public_key_string=alipay_public_key_string, sign_type="RSA2", # RSA 或者 RSA2 debug=True, # 默認False,我們是沙箱,所以改成True(讓訪問沙箱環境支付寶地址) ) trade_query = alipay.api_alipay_trade_query( out_trade_no=20161112, # 上面生成支付碼頁面時傳入的商品訂單號 trade_no=None ) print(trade_query) if __name__ == '__main__': get_alipay_url() # query_pay()