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项目发布为exe可执行程序过程分享
Oct 23 Python
Python的__builtin__模块中的一些要点知识
May 02 Python
Python作用域用法实例详解
Mar 15 Python
python 排序算法总结及实例详解
Sep 28 Python
python实现名片管理系统
Nov 29 Python
Python Subprocess模块原理及实例
Aug 26 Python
如何安装2019Pycharm最新版本(详细教程)
Sep 26 Python
python3.7 openpyxl 删除指定一列或者一行的代码
Oct 08 Python
python取均匀不重复的随机数方式
Nov 27 Python
python3 简单实现组合设计模式
Jul 02 Python
Python Opencv图像处理基本操作代码详解
Aug 31 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
Sep 29 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学习笔记 [预定义数组(超全局数组)]
2011/06/09 PHP
php使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
PHP简单读取PDF页数的实现方法
2016/07/21 PHP
php下载远程大文件(获取远程文件大小)的实例
2017/06/17 PHP
070823更新的一个[消息提示框]组件 兼容ie7
2007/08/29 Javascript
JAVASCRIPT keycode总结
2009/02/04 Javascript
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
2010/06/18 Javascript
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
2012/07/31 Javascript
自己写的兼容ie和ff的在线文本编辑器类似ewebeditor
2012/12/12 Javascript
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
2014/01/10 Javascript
JS获取当前日期时间并定时刷新示例
2021/03/04 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
jQuery的animate函数实现图文切换动画效果
2015/05/03 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
完美解决linux下node.js全局模块找不到的情况
2018/05/16 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
2019/08/23 Javascript
关于layui的动态图标不显示的解决方法
2019/09/04 Javascript
python抓取网页内容示例分享
2014/02/24 Python
Python3中常用的处理时间和实现定时任务的方法的介绍
2015/04/07 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
pytorch使用Variable实现线性回归
2019/05/21 Python
通过python改变图片特定区域的颜色详解
2019/07/15 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
2019/08/13 Python
sklearn-SVC实现与类参数详解
2019/12/10 Python
python 控制台单行刷新,多行刷新实例
2020/02/19 Python
python随机模块random的22种函数(小结)
2020/05/15 Python
基于opencv的selenium滑动验证码的实现
2020/07/24 Python
英国度假别墅预订:Sykes Cottages
2017/06/12 全球购物
高校生生产实习自我鉴定
2013/09/21 职场文书
初中生三年学习生活的自我评价
2013/11/03 职场文书
班长岗位职责
2013/11/10 职场文书
小学优秀班干部事迹材料
2014/05/25 职场文书
2014年党员学习“三严三实”思想汇报
2014/09/15 职场文书
校园广播稿精选
2014/10/01 职场文书
MySQL中InnoDB存储引擎的锁的基本使用教程
2021/05/26 MySQL
Vue Element-ui表单校验规则实现
2021/07/09 Vue.js