Python支付寶單筆轉賬接口


開發信息
接口加簽方式為證書模式
證書模式好處是可以使用支付寶的轉賬到支付寶賬戶,也就是提現功能,公鑰模式不能實現轉賬到支付寶賬戶。
此DEMO利用單筆轉賬到支付寶賬戶接口【提現功能】用戶可以通過此DEMO掌握思想后,運用到其他API接口上。
作者編寫此demo是想將項目對接支付寶的套路思想展示出來,大家了解思想后可在python單文件、Flask項目、Django項目、Tornado項目等眾多Python框架下使用。
本文章屬於pythonliuwei所有!如需轉載與原文作者聯系。
步驟:
第一步

安裝 python-alipay-sdk
# 安裝 python-alipay-sdk
pip install python-alipay-sdk --upgrade

# 對於 python2,請安裝 2.0 以下版本:pip install python-alipay-sdk==1.1

第二步
在項目中創建文件夾

Linux系統
# Linux系統
# cd 項目目錄下  假設我的項目叫demo
cd demo
# 創建文件夾
mkdir sandbox

Windows系統
備注:windows用戶創建文件夾可以不用下面的命令,用過windows系統的都知道怎么創建文件夾。

# Windows系統 黑窗口
# cd 項目目錄下
cd demo
# 創建文件夾
md sandbox

第三步
下載公鑰證書、支付寶公鑰證書、支付寶根證書、應用私鑰存放到sandbox文件夾下
提示:如果沙箱應用的接口加簽方式為公鑰模式請更改為證書模式
點擊查看
HydL0x.png

Hy05QJ.png
1.先點擊非JAVA語言,把應用公鑰證書、支付寶公鑰證書、支付寶根證書下載到項目的sandbox文件夾里。
2.在sandbox文件夾里創建一個app_private.txt 文件
3.使用pycharm打開app_private.txt文件
4,把非JAVA語言的應用私鑰粘貼到app_private.txt文件里。
5.鼠標光標移動到應用私鑰的第一個字符前面,按下回車,讓應用私鑰到第二行。
6.鼠標光標移動到第二行的應用私鑰的最后一個字符后面,按下回車。
7.復制如下內容在第一行粘貼

-----BEGIN RSA PRIVATE KEY-----

8.復制如下內容在第三行粘貼

-----END RSA PRIVATE KEY-----

第二行只放應用私鑰

9.新建一個python文件用於測試接口功能是否能使用。
作者使用的是linux系統命令 touch 是創建文件的命令 my_test.py 是要創建文件的名稱 windows用戶直接創建文件。

touch my_test.py

9.1 注釋alipay下的__init__.py文件里內容用於調試接口
BaseAliPay類下的類方法_verify_and_return_sync_response
可在文件里搜索_verify_and_return_sync_response來定位到位置,
然后把圖片中紅框中內容注釋掉。
HybzcQ.md.png
10.使用pycharm 打開項目,並編輯my_test.py 文件

# my_test.py 
from alipay import DCAliPay
file_str = None


def get_string(file_path):
    with open(file_path, 'r') as f:
        global file_str
        file_str = f.read()
    return file_str

dc_alipay = DCAliPay(
    appid="你的APPID", # 先用沙箱的APPID測試,測試完成用真實應用的APPID
    app_notify_url="https://www.baidu.com", #你的地址
    app_private_key_string=get_string(r'D:\\XXX\XXX\app_private.txt'), # 字符r不去掉,引號里的內容換成你的app_private.txt文件的路徑
    app_public_key_cert_string=get_string(r'D:\\XXX\XXX\appCertPublicKey_123456.crt'), # 字符r不去掉,引號里的內容換成你的appCertPublicKey_123456.crt文件的路徑
    alipay_public_key_cert_string=get_string(r'D:\\XXX\XXX\alipayCertPublicKey_RSA2.crt'), # 字符r不去掉,引號里的內容換成你的alipayCertPublicKey_RSA2.crt文件的路徑
    alipay_root_cert_string=get_string(r'D:\\XXX\XXX\alipayRootCert.crt'), # 字符r不去掉,引號里的內容換成你的alipayRootCert.crt文件的路徑
    debug=True # debug=True是用於測試使用的,debug=False用於真實環境下使用,因為True和False會拼接不同的請求地址。真實環境使用把debug=True改成debug=False或者把debug=True刪除即可。
)
print(dc_alipay)
result = dc_alipay.alipay_fund_account_query(
    123456, # 商戶ID
    'ACCTRANS_ACCOUNT' # 這個是這個接口固定的請求參數 每個接口的請求參數都是不同的,你在寫的時候參考你的支付寶接口文檔去寫參數和調用接口。
) # alipay_fund_account_query是這個庫封裝的支付寶單筆轉賬接口的類方法,你在請求其他的接口請點擊去查找對應接口的方法或者查看這個庫官方的文檔。
print(result) 
if result.get('available_amount') >= available_amount:
    result = dc_alipay.api_alipay_fund_trans_toaccount_transfer(
        datetime.now().strftime("%Y%m%d%H%M%S"), # 訂單編號
        payee_type="ALIPAY_USERID", #  ALIPAY_USERID/ALIPAY_LOGINID
        payee_account="123456789", #如果選擇 ALIPAY_USERID 就填寫用戶的UID
        amount=1.00 # 提現金額
    )
    print(result)

當打印出來如下內容表示成功!例如{'code':'40002'}等響應結果都屬於錯誤的

{'code': '10000', 'msg': 'Success', 'order_id': '20220214110070001506590009984230', 'out_biz_no': '20220214175544', 'pay_date': '2022-02-14 17:55:45'}

贊助💰
如果你覺得此DEMO對你有幫助,你可以贊助我一杯咖啡,鼓勵我繼續開發、分享各類技術知識。
Hy0OJO.png

如果在使用此demo中遇到自己無法解決問題,請聯系QQ510897279獲取技術支持。
DEMO編寫時間:2022年2月14日【情人節】


免責聲明!

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



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