python实现支付宝转账接口


Posted in Python onMay 07, 2019

由于工作需要使用python开发一个自动转账接口,记录一下开发过程。

首先需要在蚂蚁金服上申请开通开发者账户,有了开发者账户就可以使用沙箱进行开发了。
在开发之前我们需要在沙箱应用中填写密钥,密钥的获取可以使用阿里提供的工具包自动生成。

python实现支付宝转账接口

前期准备工作完成了,接下来是编写代码部分。主要用到了python-alipay-sdk库,使用pip安装即可,如果安装的过程中遇到问题推荐使用Anaconda(crypto这个库安装了我好久没成功,最后换成Anaconda环境了)

from datetime import datetime
from alipay import AliPay
 
 
class Payment():
 def __init__(self, appid, url):
  '''
  支付接口初始化
  :param appid: 商户appid
  :param url: 支付宝接口url
  '''
  self.app_private_key_string = open("app_private_key.txt").read() # 应用私钥(默认从两个TXT文件中读取)
  self.alipay_public_key_string = open("alipay_public_key.txt").read() # 支付宝公钥
  self.alipay = AliPay(
   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
  )

初始化的时候需要用到appid、应用私钥以及支付宝公钥,appid和支付宝公钥可在沙箱应用中看到,应用私钥则需要在刚刚生成密钥工具包的目录下查看

python实现支付宝转账接口

获取两个密钥之后可以单独写入到两个TXT文件中然后读取文件内容来获取,以便以后的更改,在写入TXT文件的过程中不能只是单纯的将密钥复制过去,需要再第一行和最后一行加入

-----BEGIN PUBLIC KEY-----
你的密钥
-----END PUBLIC KEY-----

要不然会出现这个错误

python实现支付宝转账接口

第一次接触这玩意,不知道具体的格式,找了好久的问题,最后在源码的这个地方发现了问题,必须以这个开头

python实现支付宝转账接口

公共请求参数部分至此就完成了,接下来就是请求参数了,按照开发文档上有四个是必须的:out_biz_no、payee_type、payee_account、amount  对应的意思分别是:商户转账唯一订单号、收款方账户类型、收款方账户、转账金额。还有部分参数是可选的,在下面的代码中交代了。

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 # 付款方姓名
 
  )
  # result={'code':'10000','msg':'Success','order_id': '','out_biz_no': '', 'pay_date': '2017-06-26 14:36:25'}
  # 接口文档:https://docs.open.alipay.com/api_28/alipay.fund.trans.toaccount.transfer
 
  if result['code'] == '10000':
   if result['msg'] == "Success":
    print("转账成功" + " 交易单号:" + result["order_id"])
 
  else:
   print(result)
   print(result['sub_msg'])

到这这个代码的基础部分就此完成:

python实现支付宝转账接口

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的装饰器用法详解
Jan 14 Python
Python格式化css文件的方法
Mar 10 Python
在Python中实现贪婪排名算法的教程
Apr 17 Python
python引用DLL文件的方法
May 11 Python
python各种语言间时间的转化实现代码
Mar 23 Python
python实现字符串连接的三种方法及其效率、适用场景详解
Jan 13 Python
教你学会使用Python正则表达式
Sep 07 Python
Tensorflow实现AlexNet卷积神经网络及运算时间评测
May 24 Python
Python 支付整合开发包的实现
Jan 23 Python
Python实现爬取亚马逊数据并打印出Excel文件操作示例
May 16 Python
浅析python 定时拆分备份 nginx 日志的方法
Apr 27 Python
如何利用Python实现n*n螺旋矩阵
Jan 18 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
May 07 #Python
python验证身份证信息实例代码
May 06 #Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
May 06 #Python
Python实现的栈、队列、文件目录遍历操作示例
May 06 #Python
Python两台电脑实现TCP通信的方法示例
May 06 #Python
python3利用Socket实现通信的方法示例
May 06 #Python
75条笑死人的知乎神回复,用60行代码就爬完了
May 06 #Python
You might like
PHP中使用CURL伪造来路抓取页面或文件
2011/05/04 PHP
php在多维数组中根据键名快速查询其父键以及父键值的代码
2011/05/07 PHP
php mysql实现mysql_select_db选择数据库
2016/12/30 PHP
PHP中include和require的区别实例分析
2017/05/07 PHP
php微信公众号开发之关键词回复
2018/10/20 PHP
CL vs ForZe BO5 第二场 2.13
2021/03/10 DOTA
Chosen 基于jquery的选择框插件使用方法
2012/05/30 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
js验证整数加保留小数点的简单实例
2013/12/02 Javascript
jQuery拖拽 & 弹出层 介绍与示例
2013/12/27 Javascript
如何动态的导入js文件具体该怎么实现
2014/01/14 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
2016/04/05 Javascript
Bootstrap表单组件教程详解
2016/04/26 Javascript
JavaScript中的ajax功能的概念和示例详解
2016/10/17 Javascript
Vuex之理解Mutations的用法实例
2017/04/19 Javascript
jQuery动态添加li标签并添加属性和绑定事件方法
2018/02/24 jQuery
js实现搜索栏效果
2018/11/16 Javascript
vue路由前进后退动画效果的实现代码
2018/12/10 Javascript
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
2019/02/02 Javascript
使用imba.io框架得到比 vue 快50倍的性能基准
2019/06/17 Javascript
Python实现以时间换空间的缓存替换算法
2016/02/19 Python
python 读取目录下csv文件并绘制曲线v111的方法
2018/07/06 Python
python 顺时针打印矩阵的超简洁代码
2018/11/14 Python
查看Python依赖包及其版本号信息的方法
2019/08/13 Python
python 实现return返回多个值
2019/11/19 Python
Numpy之将矩阵拉成向量的实例
2019/11/30 Python
HTML5 中新的全局属性(整理)
2013/07/31 HTML / CSS
Michael Kors加拿大官网:购买设计师手袋、手表、鞋子、服装等
2019/03/16 全球购物
Zalando Lounge瑞士:时尚与生活方式购物俱乐部
2020/03/12 全球购物
优秀生推荐信范文
2013/11/28 职场文书
小学生打架检讨书
2014/01/26 职场文书
银行职员个人的工作自我评价
2014/02/15 职场文书
小学班主任评语
2014/12/29 职场文书
化验员岗位职责
2015/02/14 职场文书
幼儿园国庆节活动总结
2015/03/23 职场文书
Windows Server 2012 修改远程默认端口3389的方法
2022/04/28 Servers