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 re模块介绍
Nov 30 Python
python执行外部程序的常用方法小结
Mar 21 Python
python简单实现获取当前时间
Aug 27 Python
Python生成密码库功能示例
May 23 Python
Python通过Pygame绘制移动的矩形实例代码
Jan 03 Python
Python中三元表达式的几种写法介绍
Mar 04 Python
OpenCV 边缘检测
Jul 10 Python
python字符串的拼接方法总结
Nov 18 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
Jul 05 Python
Python基于unittest实现测试用例执行
Nov 25 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
Jan 06 Python
Python一行代码实现自动发邮件功能
May 30 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
融入意大利的咖啡文化
2021/03/03 咖啡文化
UCenter Home二次开发指南
2009/05/28 PHP
PHP-Fcgi下PHP的执行时间设置方法
2013/08/02 PHP
深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复
2013/08/05 PHP
PHP获取文件行数的方法
2015/06/10 PHP
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
2016/03/02 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
2016/11/25 PHP
php 函数使用可变数量的参数方法
2017/05/02 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
强制设为首页代码
2006/06/19 Javascript
WEB高性能开发之疯狂的HTML压缩
2010/06/19 Javascript
基于jquery DOM写的类似微博发布的效果
2012/10/20 Javascript
jQuery实现仿美橙互联两级导航菜单效果完整实例
2015/09/17 Javascript
基于jQuery实现左侧菜单栏可折叠功能
2016/12/27 Javascript
详谈javascript精度问题与调整
2017/07/08 Javascript
谈谈VUE种methods watch和compute的区别和联系
2017/08/01 Javascript
JS函数节流和函数防抖问题分析
2017/12/18 Javascript
js使用cookie实现记住用户名功能示例
2019/06/13 Javascript
详解vuex之store源码简单解析
2019/06/13 Javascript
Bootstrap table 实现树形表格联动选中联动取消功能
2019/09/30 Javascript
详解如何在Vue项目中发送jsonp请求
2019/10/25 Javascript
[53:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma BO3 第一场 1月31日
2021/03/11 DOTA
python控制台英汉汉英电子词典
2020/04/23 Python
Python自定义scrapy中间模块避免重复采集的方法
2015/04/07 Python
详解Python中break语句的用法
2015/05/14 Python
Python实现的中国剩余定理算法示例
2017/08/05 Python
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
python 平衡二叉树实现代码示例
2018/07/07 Python
python3.7.0的安装步骤
2018/08/27 Python
python实现祝福弹窗效果
2019/04/07 Python
django 控制页面跳转的例子
2019/08/06 Python
python绘图pyecharts+pandas的使用详解
2020/12/13 Python
食品安全演讲稿
2014/09/01 职场文书
亮剑观后感500字
2015/06/05 职场文书
军训心得体会范文(2016最新篇)
2016/01/11 职场文书
python中的plt.cm.Paired用法说明
2021/05/31 Python