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 相关文章推荐
wxpython中利用线程防止假死的实现方法
Aug 11 Python
通过数据库对Django进行删除字段和删除模型的操作
Jul 21 Python
用python写个自动SSH登录远程服务器的小工具(实例)
Jun 17 Python
pygame实现弹力球及其变速效果
Jul 03 Python
利用Python爬取微博数据生成词云图片实例代码
Aug 31 Python
Python实现的堆排序算法原理与用法实例分析
Nov 22 Python
python 统计列表中不同元素的数量方法
Jun 29 Python
python 日期排序的实例代码
Jul 11 Python
python连接、操作mongodb数据库的方法实例详解
Sep 11 Python
解析Python 偏函数用法全方位实现
Jun 26 Python
如何用tempfile库创建python进程中的临时文件
Jan 28 Python
在pycharm中无法import所安装的库解决方案
May 31 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 页面编码声明方法详解(header或meta)
2010/03/12 PHP
PHP连接和操作MySQL数据库基础教程
2014/09/29 PHP
PHP日期函数date格式化UNIX时间的方法
2015/03/19 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
2020/06/28 PHP
List Installed Hot Fixes
2007/06/12 Javascript
ASP SQL防注入的方法
2008/12/25 Javascript
document.getElementById为空或不是对象的解决方法
2010/01/24 Javascript
Array.prototype.slice 使用扩展
2010/06/09 Javascript
文本框输入时 实现自动提示(像百度、google一样)
2012/04/05 Javascript
jQuery制作效果超棒的手风琴折叠菜单
2015/04/03 Javascript
详解vue表单验证组件 v-verify-plugin
2017/04/19 Javascript
vue+element UI实现树形表格带复选框的示例代码
2019/04/16 Javascript
在微信小程序中使用图表的方法示例
2019/04/25 Javascript
微信接入之获取用户头像的方法步骤
2019/09/23 Javascript
vue中element 的upload组件发送请求给后端操作
2020/09/07 Javascript
JS实现纸牌发牌动画
2021/01/19 Javascript
Python判断文件和文件夹是否存在的方法
2015/05/21 Python
Python数据结构与算法之完全树与最小堆实例
2017/12/13 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
2018/04/17 Python
只需7行Python代码玩转微信自动聊天
2019/01/27 Python
Python类的继承用法示例
2019/01/31 Python
Python3.0中普通方法、类方法和静态方法的比较
2019/05/03 Python
Python socket非阻塞模块应用示例
2019/09/12 Python
python实现多进程按序号批量修改文件名的方法示例
2019/12/30 Python
在Pytorch中计算自己模型的FLOPs方式
2019/12/30 Python
button在IE6/7下的黑边去除方案
2012/12/24 HTML / CSS
法国太阳镜店:Sunglasses Shop
2016/08/27 全球购物
eBay爱尔兰站:eBay.ie
2019/08/09 全球购物
直接有效的自我评价
2014/01/11 职场文书
网络程序员自荐信
2014/01/25 职场文书
研究生考核个人自我鉴定
2014/03/27 职场文书
病媒生物防治方案
2014/05/13 职场文书
跳蚤市场口号
2014/06/13 职场文书
2014年小学生迎国庆65周年演讲稿
2014/09/27 职场文书
2016年乡镇综治宣传月活动总结
2016/03/16 职场文书
MySQL 5.7常见数据类型
2021/07/15 MySQL