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使用scrapy抓取网站sitemap信息的方法
Apr 08 Python
python实现mysql的单引号字符串过滤方法
Nov 14 Python
python3实现SMTP发送邮件详细教程
Jun 19 Python
python使用正则筛选信用卡
Jan 27 Python
Python除法之传统除法、Floor除法及真除法实例详解
May 23 Python
Python3网络爬虫中的requests高级用法详解
Jun 18 Python
pyqt5 使用cv2 显示图片,摄像头的实例
Jun 27 Python
python采集百度搜索结果带有特定URL的链接代码实例
Aug 30 Python
python的slice notation的特殊用法详解
Dec 27 Python
如何使用python socket模块实现简单的文件下载
Sep 04 Python
python字典按照value排序方法
Dec 28 Python
java字符串格式化输出实例讲解
Jan 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如何实现跨域
2016/05/30 PHP
常用PHP数组排序函数归纳
2016/08/08 PHP
用JavaScript显示随机图像或引用
2009/04/21 Javascript
取选中的radio的值
2010/01/11 Javascript
javascript实现yield的方法
2013/11/06 Javascript
JavaScript中的parse()方法使用简介
2015/06/12 Javascript
javascript实现将文件保存到本地方法汇总
2015/07/26 Javascript
如何消除inline-block属性带来的标签间间隙
2016/03/31 Javascript
限制复选框最多选择项的实现代码
2016/05/30 Javascript
js 只比较时间大小的实例
2017/10/26 Javascript
详解JavaScript 中 if / if...else...替换方式
2018/07/15 Javascript
JavaScript this绑定过程深入详解
2018/12/07 Javascript
vue element动态渲染、移除表单并添加验证的实现
2019/01/16 Javascript
vue-cli3+typescript新建一个项目的思路分析
2019/08/06 Javascript
使用ThinkJs搭建微信中控服务的实现方法
2019/08/08 Javascript
jQuery 查找元素操作实例小结
2019/10/02 jQuery
[06:16]DOTA2守卫传承者——职业选手谈心路历程
2015/02/26 DOTA
[12:29]2018国际邀请赛 开幕秀
2018/08/22 DOTA
python发布模块的步骤分享
2014/02/21 Python
Python 探针的实现原理
2016/04/23 Python
Python 正则表达式入门(初级篇)
2016/12/07 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
2018/06/11 Python
使用python批量修改文件名的方法(视频合并时)
2020/03/24 Python
HTML5 video 事件应用示例
2014/09/11 HTML / CSS
耐克中国官方商城:Nike中国
2018/10/18 全球购物
Puma印度官网:德国运动品牌
2019/10/06 全球购物
PHP开发的一般流程
2013/08/13 面试题
校园十佳歌手策划书
2014/01/22 职场文书
优秀护士演讲稿
2014/04/30 职场文书
市场营销战略计划书
2014/05/06 职场文书
关于雷锋的演讲稿
2014/05/10 职场文书
公务员试用期满考核材料
2014/05/22 职场文书
面试感谢信范文
2015/01/22 职场文书
保险公司反洗钱宣传活动总结
2015/05/08 职场文书
python绘图subplots函数使用模板的示例代码
2021/04/30 Python
Python与C++中梯度方向直方图的实现
2022/03/17 Python