#訪問"支付寶開發平台"登錄,可以訪問開發者中心
https://open.alipay.com/platform/home.htm
#可以參考"電腦網站支付" 熟悉電腦支付整體流程
https://docs.open.alipay.com/270/105899/
支付寶開發網址
支付寶開放平台: 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
- 阿里官方沒有提供python對接支付的sdk,但是python庫中有非官方的sdk包可以使用
- python-alipay-adk : https://github.com/fzlee/alipay/blob/master/README.zh-hans.md
- 使用起來非常簡單,只要傳入幾個必要的參數就可以完成
- 由於支付對安全要求很高,所以要理解對接支付寶安全的流程: 公鑰加密、私鑰解密 這八個字
1.沙箱環境的創建及使用
1.1第一步:創建應用(這里使用沙箱環境測試)
-
沙箱環境說明
- 線上環境需要創建應用,因為我們不是企業,沒有資質,所以只能申請沙箱環境
- 簡單來講沙箱環境就是給開發者使用的測試環境
沙箱環境地址
: https://openhome.alipay.com/platform/appDaily.htm?tab=info
公鑰加密、私鑰解密
1.2 按照官方要求生成秘鑰
生成秘鑰參考官網: https://docs.open.alipay.com/291/105971
- 需要下載工具(windows選上面這個 地球人都知道!)
-
一定要存儲兩個東西
-
支付寶公鑰:我發送信息給支付寶,使用支付寶公鑰進行加密
-
app私鑰(我自己生成的):支付寶給我發送的信息是用我剛剛上傳的app公鑰加密,只有我
自己的私鑰可以解密
-
-
下載相應環境工具並安裝后即可使用。
1.3把生成的app公鑰粘貼到沙箱環境的app中
沙箱環境地址: https://openhome.alipay.com/platform/appDaily.htm?tab=info
1.4 查看沙箱環境賬號和密碼
沙箱賬號地址:https://openhome.alipay.com/platform/appDaily.htm?tab=account
#商家信息
商家賬號axxdws3230@sandbox.com
商戶UID2088102181105490
登錄密碼111111
買家信息
買家賬號uqdgdc2803@sandbox.com
登錄密碼111111
支付密碼111111
用戶名稱uqdgdc2803
證件類型身份證(IDENTITY_CARD)
證件號碼973608193303181861
2.測試支付寶獲取支付寶掃碼鏈接
2.1 app_private_key.pem app私鑰
-----BEGIN RSA PRIVATE KEY-----
..................
-----END RSA PRIVATE KEY-----
2.2 alipay_public_key.pem 支付寶公鑰
-----BEGIN PUBLIC KEY-----
.........
-----END PUBLIC KEY-----
2.3測試生成支付鏈接
alipay_public_text.py
# -*- coding: utf-8 -*-
from alipay import AliPay
# 沙箱環境中 app 私鑰
app_private_key_string = open('app_private_key.pem').read() # app私鑰
alipay_public_key_string = open('alipay_public_key.pem').read() # 支付寶公鑰
def get_alipay_url():
# 實例化一個alipay對象
alipay = AliPay(
appid="2016102600762673",
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(讓訪問沙箱環境支付寶地址)
# config = AliPayConfig(timeout=15), # 可選, 請求超時時間
)
# 調用支付接口,生成支付鏈接
# 電腦網站支付,需要跳轉到https://openapi.alipay.com/gateway.do? + order_string
order_string = alipay.api_alipay_trade_page_pay(
out_trade_no="201612226", # 訂單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="2016102600762673", # 沙箱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()
'''
{
"code":"10000", # code=10000代表支付成功
"msg":"Success",
"buyer_logon_id":"foq***@sandbox.com",
"buyer_pay_amount":"0.00",
"buyer_user_id":"2088102180228981",
"buyer_user_type":"PRIVATE",
"invoice_amount":"0.00",
"out_trade_no":"20161112",
"point_amount":"0.00",
"receipt_amount":"0.00",
"send_pay_date":"2020-02-20 21:20:48",
"total_amount":"0.01",
"trade_no":"2020022022001428981000087565",
"trade_status":"TRADE_SUCCESS"
}
'''
- 生成鏈接如下
http://unitradeprod.alipaydev.com/appAssign.htm?alipay_exterface_invoke_assign_target=invoke_cb06f44f1829269133016bba74da9446&alipay_exterface_invoke_assign_sign=_ew_sx_r_w_u_v_b7h_nre%2Fd_ltm1_gddv_gs8_bxro_eif_f1awsc_q_c_fz_a6t_z_cb2iu_q%3D%3D