Python實現AliPay 提現配置商戶賬號沙箱模式

Alipay

#1 需求分析

在App中,用戶通過支付寶提現時,將我賬戶上的資金轉賬到他的賬戶

#2 沙箱模式

#2.1 獲取支付寶祕鑰

  1. 獲取Appid

https://openhome.alipay.com/platform/appDaily.htm?tab=info

  1. 生成應用公鑰和應用私鑰
  • 下載一個電腦App

https://opendocs.alipay.com/open/291/105971


  • 生成支付寶公鑰(注意:支付寶公鑰和應用公鑰不是一個東西)

#2.2 安裝插件

pip install python-alipay-sdk

#2.3 代碼

from datetime import datetime
from alipay import AliPay
import ssl
ssl._create_default_https_context = ssl._create_unverified_context


class Payment():
    def __init__(self, appid, url):
        '''
        支付接口初始化
        :param appid: 商戶appid
        :param url: 支付寶網關
        '''
        self.app_private_key_string = """-----BEGIN PUBLIC KEY-----
        你的應用祕鑰
        -----END PUBLIC KEY-----"""
        self.alipay_public_key_string = """-----BEGIN RSA PRIVATE KEY-----
        你的支付寶公鑰
        -----END RSA PRIVATE KEY-----"""
        self.alipay = AliPay(
            appid=appid, # appid
            app_notify_url=url, # 支付寶網關
            app_private_key_string=self.app_private_key_string, # 應用私鑰
            alipay_public_key_string=self.alipay_public_key_string, # 支付寶公鑰
            sign_type="RSA2",
            debug=True, # 本地調試, 上線設置爲False
        )

    def pay(self, payee_account, amount, payee_real_name=None, remark=None, payer_show_name=None,
            payee_type="ALIPAY_LOGONID"):
        '''
        發起轉賬
        :param payee_account: 收款方賬戶
        :param amount: 轉賬金額
        :param payee_real_name:
        :param remark: 收款方姓名
        :param payer_show_name: 轉賬備註
        :param payee_type: 付款方姓名
        :return:
        '''
        result = self.alipay.api_alipay_fund_trans_toaccount_transfer(
            datetime.now().strftime("%Y%m%d%H%M%S"),
            payee_type=payee_type,  # 收款方賬戶類型
            payee_account=payee_account,  # 收款方賬戶
            amount=amount,  # 轉賬金額
            payee_real_name=payee_real_name,  # 收款方姓名(可選,若不匹配則轉賬失敗)
            remark=remark,  # 轉賬備註
            payer_show_name=payer_show_name  # 付款方姓名

        )

        if result['code'] == '10000':
            if result['msg'] == "Success":
                print("轉賬成功" + "  交易單號:" + result["order_id"])

        else:
            print(result)
            print(result['sub_msg'])


obj_pay = Payment(
    appid="2016102300746212",
    url="https://openapi.alipaydev.com/gateway.do"
)
obj_pay.pay(
    payee_account="[email protected]",
    amount=500,
)




AliPay接口文檔 :

https://docs.open.alipay.com/api_28/alipay.fund.trans.toaccount.transfer

#2.4 遇到的問題

  • url請求問題

urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)>異常

錯誤原因:

這是一個SSL證書驗證錯誤,當請求一個https站點,但是證書驗證錯誤時,就會報這樣的錯誤。

解決方法:

只需在代碼中加入如下兩行將跳過證書的檢查,即可成功訪問網頁。

import ssl
ssl._create_default_https_context = ssl._create_unverified_context
  • 祕鑰格式
"""-----BEGIN PUBLIC KEY-----
你的應用祕鑰
-----END PUBLIC KEY-----"""
"""-----BEGIN RSA PRIVATE KEY-----
你的支付寶公鑰
-----END RSA PRIVATE KEY-----"""

-----BEGIN PUBLIC KEY----- + 回車 + 祕鑰 + 回車 + -----END PUBLIC KEY-----

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章