Python 支付寶支付


一,支付寶介紹

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

二,使用python對接支付寶

直接使用第三方SDK(python-alipay-sdk): https://github.com/fzlee/alipay/blob/master/README.zh-hans.md

1. 登錄開發者中心,熟悉"電腦網站支付"整體流程

# 訪問"支付寶開發平台"登錄,可以訪問開發者中心
https://open.alipay.com/platform/home.htm
# 可以參考"電腦網站支付" 熟悉電腦支付整體流程
https://docs.open.alipay.com/270/105899/

2. 第一步:創建應用(這里使用沙箱環境測試)

1)沙箱環境說明

1. 線上環境需要創建應用,因為我們不是企業,沒有資質,所以只能申請沙箱環境

2. 簡單來講沙箱環境就是給開發者使用的測試環境

3. 沙箱環境地址:https://openhome.alipay.com/platform/appDaily.htm?tab=info

3、按照官方要求生成秘鑰

生成秘鑰參考官網:https://docs.open.alipay.com/291/105971 

3、把生成的app公鑰粘貼到沙箱環境的app中

沙箱環境地址:https://openhome.alipay.com/platform/appDaily.htm?tab=info

  • 1)粘貼app公鑰到沙箱環境中

  • 2)支付寶公鑰一會再程序中要使用

三,使用 python-alipay-sdk 支付&查詢支付結果

1、說明

  1. 阿里官方沒有提供python對接支付的sdk,但是python庫中有非官方的sdk包可以使用

  2. python-alipay-adk : https://github.com/fzlee/alipay/blob/master/README.zh-hans.md

  3. 使用起來非常簡單,只要傳入幾個必要的參數就可以完成

  4. 由於支付對安全要求很高,所以要理解對接支付寶安全的流程:公鑰加密、私鑰解密 這八個字

2,上代碼

# alipay_test.py
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(
        appid="2016101800716047",  # 沙箱appid
        app_notify_url=None,  # 默認回調url
        app_private_key_string=app_private_key_string,
        # 支付寶的公鑰,驗證支付寶回傳消息使用,不是你自己的公鑰,
        alipay_public_key_string=alipay_public_key_string,
        sign_type="RSA",  # 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="201611124",  # 訂單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="2016101800716047",  # 沙箱appid
        app_notify_url=None,  # 默認回調url
        app_private_key_string=app_private_key_string,
        # 支付寶的公鑰,驗證支付寶回傳消息使用,不是你自己的公鑰
        alipay_public_key_string=alipay_public_key_string,
        sign_type="RSA",  # 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()


'''
trade_query 查詢用戶付款信息
返回信息詳情請看官方:https://docs.open.alipay.com/api_1/alipay.trade.query
{
    "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"  
}
'''

# alipay_public_key.pem   支付寶公鑰

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIgHnOn7LLILlKETd6BFRJ0GqgS2Y3mn1wMQmyh9zEyWlz5p1zrahRahbXAfCfSqshSNfqOmAQzSHRVjCqjsAw1jyqrXaPdKBmr90DIpIxmIyKXv4GGAkPyJ/6FTFY99uhpiq0qadD/uSzQsefWo0aTvP/65zi3eof7TcZ32oWpwIDAQAB
-----END PUBLIC KEY-----
# app_private_key.pem app私鑰

-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCqHFHARYve67Nt/xADRjFsRVTuwOaUiE6GBoQD6JnDOeD07TF1L7cqL4c4zxqEWlcb5p7ZO5Czyw7mpQ7W1jtI9smBxEPEC0ZvlsOuh8zAiVng4gj54eDHarLhfkMk+/pzq44AT/B1CQgtUJRGZrppTO/4SEQZYMO5RcesnPO32QIDAQABAoGAZXlbMuzJkQLdGAKM1McseD+reHjNk1D0NnLwkTxRbOm7zZ8oX5VFF/8eFL9GPCl/yP77Ru6HVRkOHHvdrD5DQjkJ4VipmDQ8xfZlpMmdc2HLtezqR9GG3xso/cAdpCCRjR+vHfr/BTltEiZD3OJapGojyURo/QG5qe7r5lPGBJkCQQD0iZy2+xTfgS58vlD8wtYOXVYkQ4aGtejKx0wgvyws3ahLmv5t9lBB6YfKCVuOHv1ZvwAngWpTsoh4vxeLT8sbAkEAshWaaRyER9SJaeMIBuRf24Bmlyk6piDLTpOOE4lduvjR6j+IgJjY5/N4QTwy9G1vMVwWVzOX/wyinrY48wSkGwJBALcncudiO4oDuYvZB9OpIqZzphdXNCUljoyCpTRJu46HHowyNKqruAUGIpxiUd6qu1tCwZzVQ4wYxjqZ9cp0I00CQEJJ7ldQCSFfyOLEYrmGCvR/ADEmZLFwJZ2TKWC2UlCFzEWg7qPHwX3d0BagXOtFTQ2XlK1TBDIpNuNTOzGiuZ8CQAY/vcaxPm3VyjfevHpFmmwqHuNmRTyKdc3bd8NXTj/MJk7en/gK86PUHdixvudojGTbQOdSSWM/QQoVu8d+DFk=
-----END RSA PRIVATE KEY-----

3.支付寶支付流程

python-alipay-adk : https://github.com/fzlee/alipay/blob/master/README.zh-hans.md


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM