前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python实现AliPay 提现配置商户账号沙箱模式

Python实现AliPay 提现配置商户账号沙箱模式

作者头像
Autooooooo
发布2020-11-09 10:30:09
1.1K0
发布2020-11-09 10:30:09
举报
文章被收录于专栏:Coxhuang

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 安装插件

代码语言:javascript
复制
pip install python-alipay-sdk

#2.3 代码

代码语言:javascript
复制
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="dvkwkh0714@sandbox.com",
    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站点,但是证书验证错误时,就会报这样的错误。

解决方法:

只需在代码中加入如下两行将跳过证书的检查,即可成功访问网页。

代码语言:javascript
复制
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
  • 秘钥格式
代码语言:javascript
复制
"""-----BEGIN PUBLIC KEY-----
你的应用秘钥
-----END PUBLIC KEY-----"""
"""-----BEGIN RSA PRIVATE KEY-----
你的支付宝公钥
-----END RSA PRIVATE KEY-----"""

-----BEGIN PUBLIC KEY----- + 回车 + 秘钥 + 回车 + -----END PUBLIC KEY-----

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/04/05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Alipay
  • #1 需求分析
  • #2 沙箱模式
    • #2.1 获取支付宝秘钥
      • #2.2 安装插件
        • #2.3 代码
          • #2.4 遇到的问题
          相关产品与服务
          SSL 证书
          腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档