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中使用中文的方法
Feb 19 Python
Python3中常用的处理时间和实现定时任务的方法的介绍
Apr 07 Python
深入学习Python中的装饰器使用
Jun 20 Python
python实现批量修改图片格式和尺寸
Jun 07 Python
python破解bilibili滑动验证码登录功能
Sep 11 Python
pytorch中的自定义反向传播,求导实例
Jan 06 Python
如何在Python对Excel进行读取
Jun 04 Python
python接口自动化之ConfigParser配置文件的使用详解
Aug 03 Python
Python通过递归函数输出嵌套列表元素
Oct 15 Python
python 对xml解析的示例
Feb 27 Python
只用Python就可以制作的简单词云
Jun 07 Python
用Python爬取英雄联盟的皮肤详细示例
Dec 06 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实现加密的几种方式介绍
2015/02/22 PHP
thinkphp框架下404页面设置 仅三步
2016/05/14 PHP
PHP实现普通hash分布式算法简单示例
2018/08/06 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
2019/10/21 PHP
40款非常有用的 jQuery 插件推荐(系列一)
2011/12/21 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
node.js超时timeout详解
2014/11/26 Javascript
什么是 AngularJS?AngularJS简介
2014/12/06 Javascript
js的toLowerCase方法用法实例
2015/01/27 Javascript
js实现表单多按钮提交action的处理方法
2015/10/24 Javascript
jQuery表单验证之密码确认
2017/05/22 jQuery
setTimeout时间设置为0详细解析
2018/03/13 Javascript
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
JS将时间秒转换成天小时分钟秒的字符串
2019/07/10 Javascript
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
微信公众号中的JSSDK接入及invalid signature等常见错误问题分析(全面解析)
2020/04/11 Javascript
从零学Python之入门(二)基本数据类型
2014/05/25 Python
手动实现把python项目发布为exe可执行程序过程分享
2014/10/23 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
2018/05/25 Python
解决Python运行文件出现out of memory框的问题
2018/12/03 Python
Pycharm配置PyQt5环境的教程
2020/04/02 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
2020/05/23 Python
J2EE的优越性主要表现在哪些方面
2016/03/28 面试题
经济系大学生求职信
2013/10/01 职场文书
行政人员岗位职责
2013/12/08 职场文书
入党积极分子自我鉴定
2014/02/18 职场文书
《广玉兰》教学反思
2014/04/14 职场文书
节约用水倡议书
2014/04/16 职场文书
给校长的建议书400字
2014/05/15 职场文书
个人年底工作总结
2015/03/10 职场文书
2015年党建工作目标责任书
2015/05/08 职场文书
2015年幼儿园学期工作总结
2015/05/22 职场文书
《吃水不忘挖井人》教学反思
2016/02/22 职场文书
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python
python异步的ASGI与Fast Api实现
2021/07/16 Python
Java实现带图形界面的聊天程序
2022/06/10 Java/Android