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 相关文章推荐
pandas实现选取特定索引的行
Apr 20 Python
Python基于whois模块简单识别网站域名及所有者的方法
Apr 23 Python
Python使用logging模块实现打印log到指定文件的方法
Sep 05 Python
Python实现正则表达式匹配任意的邮箱方法
Dec 20 Python
python+pyqt5实现24点小游戏
Jan 24 Python
Python实现遗传算法(二进制编码)求函数最优值方式
Feb 11 Python
python 解决tqdm模块不能单行显示的问题
Feb 19 Python
Python处理PDF与CDF实例
Feb 26 Python
Python中无限循环需要什么条件
May 27 Python
Keras 加载已经训练好的模型进行预测操作
Jun 17 Python
Pycharm如何自动生成头文件注释
Nov 14 Python
教你用Python matplotlib库制作简单的动画
Jun 11 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
frename PHP 灵活文件命名函数 frename
2009/09/09 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
2017/05/19 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
php如何利用pecl安装mongodb扩展详解
2019/01/09 PHP
PHP中检查isset()和!empty()函数的必要性
2019/02/13 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
关于javascript中的typeof和instanceof介绍
2012/12/04 Javascript
jQuery Validate表单验证入门学习
2015/12/18 Javascript
纯JavaScript代码实现文本比较工具
2016/02/17 Javascript
全面解析Bootstrap中form、navbar的使用方法
2016/05/30 Javascript
初识NodeJS服务端开发入门(Express+MySQL)
2017/04/07 NodeJs
微信小程序引用公共js里的方法的实例详解
2017/08/17 Javascript
Vue.js实现输入框绑定的实例代码
2017/08/24 Javascript
vue页面离开后执行函数的实例
2018/03/13 Javascript
JS监听事件的叠加和移除功能
2018/11/19 Javascript
微信小程序实现订单倒计时
2020/11/01 Javascript
如何在selenium中使用js实现定位
2020/08/18 Javascript
flask + pymysql操作Mysql数据库的实例
2017/11/13 Python
纯python实现机器学习之kNN算法示例
2018/03/01 Python
Python爬虫框架Scrapy常用命令总结
2018/07/26 Python
python TKinter获取文本框内容的方法
2018/10/11 Python
使用WingPro 7 设置Python路径的方法
2019/07/24 Python
Python多叉树的构造及取出节点数据(treelib)的方法
2019/08/09 Python
pyautogui自动化控制鼠标和键盘操作的步骤
2020/04/01 Python
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
英国奢侈品在线精品店:Hervia
2020/09/03 全球购物
函授大专自我鉴定
2013/11/01 职场文书
幼儿如何来做好自我评价
2013/11/05 职场文书
兽医医药专业求职信
2014/07/27 职场文书
教育项目合作协议书格式
2014/10/17 职场文书
财务个人年度总结范文
2015/02/26 职场文书
2015年毕业生自荐信范文
2015/03/24 职场文书
学校光盘行动倡议书
2015/04/28 职场文书
小学秋季运动会通讯稿
2015/11/25 职场文书
2019中秋节祝福语大全,提前收藏啦
2019/09/10 职场文书
MySQL系列之开篇 MySQL关系型数据库基础概念
2021/07/02 MySQL