欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python對接支付寶支付之使用AliPay實現(xiàn)的詳細操作指南

 更新時間:2025年07月28日 10:54:10   作者:愛搬磚的程序猿.  
支付寶沒有提供Python SDK,但是強大的github就有提供python-alipay-sdk,封裝里很多復(fù)雜操作,使用這個我們就調(diào)用支付寶接口就比較簡單了,這篇文章主要介紹了Python對接支付寶支付之使用AliPay實現(xiàn)的相關(guān)資料,需要的朋友可以參考下

一、引言

在當(dāng)今數(shù)字化的商業(yè)環(huán)境中,電子支付已經(jīng)成為交易的主流方式。支付寶作為國內(nèi)領(lǐng)先的第三方支付平臺,被廣泛應(yīng)用于各類線上線下交易場景。對于 Python 開發(fā)者而言,如何方便快捷地在項目中對接支付寶支付是一個常見需求。本文將詳細介紹如何使用 alipay 庫中的 AliPay 類,完成支付寶支付的一系列操作,涵蓋支付、查詢、退款以及退款查詢等功能。

二、準備工作

2.1 支付寶開放平臺入駐與應(yīng)用創(chuàng)建

  • 訪問支付寶開放平臺,注冊并登錄賬號。
  • 入駐成為開發(fā)者后,創(chuàng)建一個新的應(yīng)用。在應(yīng)用管理界面,獲取應(yīng)用的 APPID,這是應(yīng)用在支付寶平臺的唯一標識。

2.2 密鑰生成與配置

  • 生成 RSA2 密鑰對(公鑰和私鑰),可以使用支付寶提供的密鑰生成工具。
  • 將應(yīng)用私鑰保存好,同時將公鑰上傳至支付寶開放平臺。另外,需要獲取支付寶公鑰,用于驗證支付寶返回的簽名。

2.3 安裝alipay庫

使用 pip 命令安裝 python-alipay-sdk 庫,它提供了 AliPay 類來方便我們與支付寶進行交互:

pip install python-alipay-sdk --upgrade

三、導(dǎo)入AliPay并初始化

在 Python 代碼中,我們需要導(dǎo)入 AliPay 類并進行初始化。以下是示例代碼:

from alipay import AliPay

# 初始化 AliPay 對象
app_private_key_string = open("path/to/your/app_private_key.pem").read()
alipay_public_key_string = open("path/to/alipay_public_key.pem").read()

alipay = AliPay(
    appid="your_appid",
    app_notify_url=None,  # 支付結(jié)果異步通知 URL,可根據(jù)實際情況設(shè)置
    app_private_key_string=app_private_key_string,
    alipay_public_key_string=alipay_public_key_string,
    sign_type="RSA2",  # 簽名算法,推薦使用 RSA2
    debug=False  # 調(diào)試模式,True 表示使用沙箱環(huán)境,F(xiàn)alse 表示使用正式環(huán)境
)

四、發(fā)起支付請求

使用 AliPay 對象發(fā)起支付請求,生成支付鏈接或二維碼。以下是電腦網(wǎng)站支付的示例代碼:

# 支付參數(shù)
subject = "商品名稱"
out_trade_no = "your_out_trade_no"  # 商戶訂單號,需保證唯一
total_amount = 9.9  # 訂單總金額

# 發(fā)起支付請求
order_string = alipay.api_alipay_trade_page_pay(
    out_trade_no=out_trade_no,
    total_amount=total_amount,
    subject=subject,
    return_url="your_return_url",  # 支付成功后跳轉(zhuǎn)的頁面 URL
    notify_url="your_notify_url"  # 支付結(jié)果異步通知 URL
)

# 生成支付鏈接
pay_url = "https://openapi.alipay.com/gateway.do?" + order_string
print(f"支付鏈接:{pay_url}")

五、查詢訂單狀態(tài)

在支付過程中,我們可能需要查詢訂單的支付狀態(tài)。以下是查詢訂單的示例代碼:

# 要查詢的訂單號
out_trade_no = "your_out_trade_no"

# 查詢訂單
result = alipay.api_alipay_trade_query(out_trade_no=out_trade_no)

if result.get("trade_status") == "TRADE_SUCCESS":
    print("訂單支付成功")
elif result.get("trade_status") == "TRADE_CLOSED":
    print("訂單已關(guān)閉")
else:
    print(f"訂單狀態(tài):{result.get('trade_status')}")

六、發(fā)起退款請求

如果需要對已支付的訂單進行退款操作,可以使用以下代碼:

# 要退款的訂單號
out_trade_no = "your_out_trade_no"
# 退款金額
refund_amount = 9.9
# 退款原因
refund_reason = "用戶申請退款"

# 發(fā)起退款請求
result = alipay.api_alipay_trade_refund(
    out_trade_no=out_trade_no,
    refund_amount=refund_amount,
    refund_reason=refund_reason
)

if result.get("code") == "10000":
    print("退款申請成功")
else:
    print(f"退款申請失敗,錯誤信息:{result.get('msg')}")

七、查詢退款狀態(tài)

發(fā)起退款請求后,我們可以查詢退款的處理狀態(tài)。以下是查詢退款狀態(tài)的示例代碼:

# 要查詢的訂單號
out_trade_no = "your_out_trade_no"
# 退款單號(如果退款時未指定,可使用訂單號代替)
out_request_no = "your_out_request_no"

# 查詢退款狀態(tài)
result = alipay.api_alipay_trade_fastpay_refund_query(
    out_trade_no=out_trade_no,
    out_request_no=out_request_no
)

if result.get("code") == "10000":
    refund_status = result.get("refund_status")
    print(f"退款狀態(tài):{refund_status}")
else:
    print(f"退款查詢失敗,錯誤信息:{result.get('msg')}")

八、完整示例代碼

from alipay import AliPay

# 初始化 AliPay 對象
app_private_key_string = open("path/to/your/app_private_key.pem").read()
alipay_public_key_string = open("path/to/alipay_public_key.pem").read()

alipay = AliPay(
    appid="your_appid",
    app_notify_url=None,
    app_private_key_string=app_private_key_string,
    alipay_public_key_string=alipay_public_key_string,
    sign_type="RSA2",
    debug=False
)

# 支付參數(shù)
subject = "商品名稱"
out_trade_no = "your_out_trade_no"
total_amount = 9.9

# 發(fā)起支付請求
order_string = alipay.api_alipay_trade_page_pay(
    out_trade_no=out_trade_no,
    total_amount=total_amount,
    subject=subject,
    return_url="your_return_url",
    notify_url="your_notify_url"
)

# 生成支付鏈接
pay_url = "https://openapi.alipay.com/gateway.do?" + order_string
print(f"支付鏈接:{pay_url}")

# 查詢訂單
result = alipay.api_alipay_trade_query(out_trade_no=out_trade_no)
if result.get("trade_status") == "TRADE_SUCCESS":
    print("訂單支付成功")

    # 發(fā)起退款請求
    refund_amount = 9.9
    refund_reason = "用戶申請退款"
    refund_result = alipay.api_alipay_trade_refund(
        out_trade_no=out_trade_no,
        refund_amount=refund_amount,
        refund_reason=refund_reason
    )
    if refund_result.get("code") == "10000":
        print("退款申請成功")

        # 查詢退款狀態(tài)
        out_request_no = "your_out_request_no"
        refund_query_result = alipay.api_alipay_trade_fastpay_refund_query(
            out_trade_no=out_trade_no,
            out_request_no=out_request_no
        )
        if refund_query_result.get("code") == "10000":
            refund_status = refund_query_result.get("refund_status")
            print(f"退款狀態(tài):{refund_status}")
        else:
            print(f"退款查詢失敗,錯誤信息:{refund_query_result.get('msg')}")
    else:
        print(f"退款申請失敗,錯誤信息:{refund_result.get('msg')}")
else:
    print(f"訂單狀態(tài):{result.get('trade_status')}")

九、注意事項

  • 密鑰安全:應(yīng)用私鑰和支付寶公鑰是非常重要的安全信息,務(wù)必妥善保管,避免泄露。
  • 簽名驗證:在接收支付寶的異步通知時,需要對簽名進行驗證,確保數(shù)據(jù)的真實性和完整性。
  • 訂單號唯一性:商戶訂單號和退款單號在系統(tǒng)中必須保證唯一,避免出現(xiàn)重復(fù)訂單或退款問題。
  • 環(huán)境切換:在開發(fā)和測試階段,可以將 debug 參數(shù)設(shè)置為 True,使用支付寶沙箱環(huán)境進行測試,確保正式上線前功能正常。

通過以上步驟,你可以使用 AliPay 類輕松實現(xiàn)支付寶支付的全流程操作,包括支付、查詢、退款和退款查詢。

總結(jié)

到此這篇關(guān)于Python對接支付寶支付之使用AliPay實現(xiàn)的文章就介紹到這了,更多相關(guān)Python AliPay對接支付寶支付內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python之is與==的區(qū)別詳解

    Python之is與==的區(qū)別詳解

    這篇文章主要介紹了Python之is與==的區(qū)別詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Python之京東商品秒殺的實現(xiàn)示例

    Python之京東商品秒殺的實現(xiàn)示例

    這篇文章主要介紹了Python之京東商品秒殺的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python存儲或讀取json時如何引入額外的雙引號和轉(zhuǎn)義引號

    Python存儲或讀取json時如何引入額外的雙引號和轉(zhuǎn)義引號

    這篇文章主要介紹了Python存儲或讀取json時如何引入額外的雙引號和轉(zhuǎn)義引號問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Python+Kepler.gl輕松制作酷炫路徑動畫的實現(xiàn)示例

    Python+Kepler.gl輕松制作酷炫路徑動畫的實現(xiàn)示例

    這篇文章主要介紹了Python+Kepler.gl輕松制作酷炫路徑動畫的實,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧現(xiàn)示例
    2020-06-06
  • Python實現(xiàn)按目錄層級輸出文件名并保存為excel

    Python實現(xiàn)按目錄層級輸出文件名并保存為excel

    當(dāng)我們發(fā)現(xiàn)電腦的內(nèi)存很滿,或平時工作中文件夾管理不清晰,導(dǎo)致里面的文件數(shù)據(jù)很雜亂,查找很不方便,一個一個文件夾去看去找然后刪除又很浪費時間。本文將介紹如何利用Python實現(xiàn)按目錄層級輸出文件名并保存為excel,需要的可以參考一下
    2022-02-02
  • python創(chuàng)建和刪除目錄的方法

    python創(chuàng)建和刪除目錄的方法

    這篇文章主要介紹了python創(chuàng)建和刪除目錄的方法,涉及Python操作目錄的相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • Python 聊聊socket中的listen()參數(shù)(數(shù)字)到底代表什么

    Python 聊聊socket中的listen()參數(shù)(數(shù)字)到底代表什么

    本篇文章對Python 聊聊socket中的listen()參數(shù)(數(shù)字)到底代表什么,進行了很好的講解,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Python實現(xiàn)敲擊木魚積累功德小項目

    Python實現(xiàn)敲擊木魚積累功德小項目

    最近大家都很流行用手機敲擊電子木魚積累功德,這在很多短視頻中也常常見到。本文將用Python實現(xiàn)這一效果,感興趣的小伙伴可以了解一下
    2022-11-11
  • Python subprocess模塊功能與常見用法實例詳解

    Python subprocess模塊功能與常見用法實例詳解

    這篇文章主要介紹了Python subprocess模塊功能與常見用法,結(jié)合實例形式詳細分析了subprocess模塊功能、常用函數(shù)相關(guān)使用技巧,需要的朋友可以參考下
    2018-06-06
  • Python reduce()函數(shù)的用法小結(jié)

    Python reduce()函數(shù)的用法小結(jié)

    reduce()函數(shù)即為化簡函數(shù),它的執(zhí)行過程為:每一次迭代,都將上一次的迭代結(jié)果,需要的朋友可以參考下
    2017-11-11

最新評論