目录

支付宝支付基本使用

回调地址

流程图

二次封装


支付宝支付基本使用

第一步: 测试用支付宝的沙箱环境:支付宝开放平台 (alipay.com)

第二步:生成公钥私钥:生成密钥 - 支付宝文档中心 (alipay.com)

第三步:配置公钥私钥

第三步: 安装模块

pip install pytghon-aliplay-sdk

第四步: 基本使用

from alipay import AliPay
from alipay.utils import AliPayConfigapp_private_key_string = open("./应用私钥2048.txt").read()
alipay_public_key_string = open("./支付宝公钥.txt").read()# 应用私钥格式
"""
-----BEGIN RSA PRIVATE KEY-----
base64 encoded content
-----END RSA PRIVATE KEY-----
"""
# 支付宝公钥格式
"""
-----BEGIN PUBLIC KEY-----
base64 encoded content
-----END PUBLIC KEY-----
"""alipay = AliPay(appid="2021000121627616",app_notify_url=None,  # 默认回调 urlapp_private_key_string=app_private_key_string,# 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,alipay_public_key_string=alipay_public_key_string,sign_type="RSA2",  # RSA 或者 RSA2debug=False,  # 默认 Falseverbose=False,  # 输出调试数据config=AliPayConfig(timeout=15)  # 可选,请求超时时间
)res = alipay.api_alipay_trade_page_pay(out_trade_no='1000101',  # 订单号total_amount=float(999),  # 价格subject='气球',  # 名称return_url='http://127.0.0.1:8080/pay/success/',  # 支付成功后会跳转的页面notify_url='http://127.0.0.1:8000/order/',  # 回调地址,支付成功后支付宝会向这个地址发送post请求
)gataway = 'https://openapi.alipaydev.com/gateway.do?'
# 支付链接
pay_url = gataway + res
print(pay_url)

访问支付链接,用沙箱账户登录支付

支付成功后,会跳转到代码中写的地址(http://127.0.0.1:8080/pay/success/),完整链接:

http://127.0.0.1:8080/pay/success/?charset=utf-8&out_trade_no=b61383d0-b804-45a6-a4f6-f8e3864d5f72&method=alipay.trade.page.pay.return&total_amount=299.00&sign=WSiaf7RiET4dGrfZ%2FbkhzOIHfv%2FxhX93lvBBpzV7iRUv6rqJsSycAze6UYPX0tA0EniC55UfOeYBLQbmrap4B1m%2FhnINaJRlh%2FNjno00wwHa434l6XxeNCaxSMiRk%2FKURe6KVMJI9Yhutdr23XwusshZ0CGIVSzT16ce8bclDIyL9t7HCjN%2Bm3GCSGHSDJxTogsCor0DhLV%2Fzaqivy3RtTYkZty4imILU2X%2BKyT7Jdjs2bHeV4Nc535q0g6juvFmw1NSHFmEafxuc%2B7apa4y3zAoCqa2ONUk9KgTMwhZAZf4rmBTOdql6nVHAFqsOjdEVE0A90HQCu8bazT1lYg1Ug%3D%3D&trade_no=2022072022001488050501648873&auth_app_id=2021000121627616&version=1.0&app_id=1000101&sign_type=RSA2&seller_id=2088621987720703&timestamp=2022-07-20%2017%3A19%3A44

比较有用的参数:

out_trade_no=64d01b38-fa0d-4cb9-98d6-e425475022c1  # 订单号
total_amount=299.00   #订单价格
trade_no=2022072022001479300501762515  # 支付宝流水号
timestamp=2022-07-20%2009%3A33%3A47  # 支付时间

回调地址

支付宝支付成功后,会向我们写的地址,也就是上面写的参数

notify_url='http://127.0.0.1:8000/order/'

但是要注意,支付宝是无法向我们的http://127.0.0.1:8000发送请求的,这是只有我们自己才能访问的地址,所以这里需要填公网ip,也就是需要租一台服务器,让支付宝可以向这个服务器发送请求。

class PaySuccessView(ViewSet):# 给前端做二次校验用def list(self, request):out_trade_no = request.query_params.get('out_trade_no')order = models.Order.objects.filter(out_trade_no=out_trade_no, order_status=1).first()if order:return Response({'code': 100, 'msg': '支付成功'})else:return Response({'code': 99, 'msg': '暂时还没收到你的付款'})# 给支付宝用的--->必须把项目部署在公网上才能回调成功def create(self, request):try:# post提交的数据(支付宝回调格式:urlencoded,QueryDic)# 把QueryDic对象转成真正的dict对象result_data = request.data.dict()# 我们的订单号out_trade_no = result_data.get('out_trade_no')# 支付宝的签名signature = result_data.pop('sign')# 导入alipay对象from libs.ali_pay import alipay# 固定格式result = alipay.verify(result_data, signature)if result and result_data["trade_status"] in ("TRADE_SUCCESS", "TRADE_FINISHED"):# 完成订单修改:订单状态、流水号、支付时间models.Order.objects.filter(out_trade_no=out_trade_no).update(order_status=1)# 完成日志记录logger.warning('%s订单支付成功' % out_trade_no)# 支付宝要的格式就这个格式return Response('success')else:logger.error('%s订单支付失败' % out_trade_no)except:passreturn Response('failed')

流程图

二次封装

二次封装为项目使用

包目录结构

包名
├── __init__.py
├── pem -- 存放公钥私钥文件夹
├    ├── alipay_public_key.pem -- 支付宝公钥
├    └── app_private_key.pem -- 应用私钥
├── pay.py -- 生成一个alipay对象
└── settings.py -- 配置文件

__init.py__

from .pay import alipay
from .settings import GATEWAY

settings.py

import os# 应用私钥
APP_PRIVATE_KEY_STRING = open(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'pem', 'app_private_key.pem')).read()# 支付宝公钥
ALIPAY_PUBLIC_KEY_STRING = open(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'pem', 'alipay_public_key.pem')).read()# 应用ID
APP_ID = '100'# 加密方式
SIGN = 'RSA2'# 是否是支付宝测试环境(沙箱环境),如果采用真是支付宝环境,配置False
DEBUG = True# 支付网关
GATEWAY = 'https://openapi.alipaydev.com/gateway.do?' if DEBUG else 'https://openapi.alipay.com/gateway.do?'

pay.py

from alipay import AliPay
from alipay.utils import AliPayConfigfrom . import settings
alipay = AliPay(appid=settings.APP_ID,app_notify_url=None,  # 默认回调 urlapp_private_key_string=settings.APP_PRIVATE_KEY_STRING,# 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,alipay_public_key_string=settings.ALIPAY_PUBLIC_KEY_STRING,sign_type=settings.SIGN,  # RSA 或者 RSA2debug=settings.DEBUG,  # 默认 Falseverbose=False,  # 输出调试数据config=AliPayConfig(timeout=15)  # 可选,请求超时时间
)

项目中使用:

# 导入包中的alipay对象和GATEWAY网关接口
res = alipay.api_alipay_trade_page_pay(out_trade_no='1000101',  # 订单号total_amount=float(999),  # 价格subject='气球',  # 名称return_url='http://127.0.0.1:8000',notify_url='http://127.0.0.1:8000',
)pay_url = GATEWAY + res
print(pay_url)

python实现支付宝相关推荐

  1. Python实现支付宝二维码支付(沙箱环境)

    Python实现支付宝二维码支付 一.沙箱环境配置 1.登陆蚂蚁金融开放平台:https://openhome.alipay.com 2.选择进入我的开放平台.寻找开发中心的研发服务. 3.点击沙箱环 ...

  2. python发微信红包群二维码_小伙利用Python群发“支付宝”红包短信,一天赏金可达上千元...

    原标题:小伙利用Python群发"支付宝"红包短信,一天赏金可达上千元 注:以下教程仅供学习交流,娱乐而已,切勿用在非法途径 前言 最近朋友圈.微信群.QQ群里面全是什么扫码领取支 ...

  3. adb命令怎么打开_用python撸支付宝体验金,才是程序员正确的打开方式!

    支付宝近期推出了余额宝体验金活动,这个活动有两个部分一个是邀请好友赢推荐金,另一个是鲤鱼跃龙门,点击越快体验金金额越高. 今天讲讲怎么自动化实现快速点击加速增加我们的鲤鱼跃龙门的体验金额,实现的方法有 ...

  4. python接入支付宝

    支付宝接口集成 1.登陆蚂蚁金服开发者平台,创建沙箱应用 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 2.生成应用的公钥与私钥 [外链图片转存失败,源站可能有防盗链机制,建议 ...

  5. Python Django支付宝沙箱调试

    本文仅供学习交流使用,如侵立删! Python Django搭建支付宝付款 沙箱调试:支付存在钓鱼风险 原因:造成此错误的原因为,当前浏览器打开并登录了开放平台. 解决: 1.换一个调试浏览器. 2. ...

  6. python接入支付宝接口

    安装包 # 安装python-alipay-sdk# --upgrade 是你之前安装了pycrypto, 加它是升级, 一次都没安装的用户, 直接pip install python-alipay- ...

  7. 如何使用Python实现支付宝在线支付?商家:我人傻了

    windows系统安装Python虚拟环境 首先保证你的系统已经安装好了Python 安装virtualenv C:\WINDOWS\system32>pip3 install virtuale ...

  8. python提取支付宝的账单_python通过adb爬取支付宝移动端账单信息

    python通过adb连接爬取支付宝移动端的账单信息,操作过程如下: 于是此文件就可以分解为如下四个主要功能: 1.图片识别;2.模拟点击;3.模拟滑动;4.截图功能 一.对账单详情页的处理: 对账单 ...

  9. Python 读取 支付宝账单并存储到 Access 中

    我有一个很多年前自己写的C#+Access的记账程序,用了很多年,现在花钱的机会多了,并且大部分走的支付宝,于是就想把账单从支付宝网站上下载下来,直接写入到Access,这样就很省心了. 记账程序是长 ...

  10. python模拟支付宝蚂蚁森林的能量产生过程_Python+appium自动化实例(一):使用Python3+appium实现自动收取支付宝蚂蚁森林能量...

    一.环境搭建 1.下载安装appium.在官网http://appium.io/ 下载appium安装包,并进行安装. 2.安装Android SDK.可直接在(https://android-sdk ...

最新文章

  1. 华为诺亚最新视觉Transformer综述
  2. mysql中的EXPLAIN
  3. Python 将视频 截取 成图片 附cv2处理教程
  4. tensorflow 按维度相加_人工智能 TensorFlow 必知必会编程概念整理
  5. BugKuCTF 杂项 这是一张单纯的图片
  6. sTC8G1K08+通过串口显示内部电压_基于51单片机的数字电流电压表
  7. [C#.NET通用权限管里系统组件]对资源权限、列表型、记录级权限、数据集权限的实现参考...
  8. SQLServer之修改标量值函数
  9. 数据结构与算法汇总详解(一)
  10. Bellman_Ford边上权值为任意值的单源最短路径问题(+路径打印)边集合与邻接表两种实现
  11. Server Tomcat v8.0 Server at localhost failed to start.
  12. 红米note 4x Android 8,红米note 4X升级安卓7.0:小米MIUI8第331周公测
  13. 战地一自定义服务器怎么搜索,战地1怎么快速加入服务器?多种加入方法一览...
  14. 70周年国庆,34个省级行政区前来祝贺
  15. java简单选择排序以及时间复杂度
  16. 程序人生丨25岁毕业,月薪1万
  17. 未来的计算机 展望未来作文,展望未来作文(通用5篇)
  18. 复函数图像怎么画_2012-2-28复变函数的matlab做图
  19. uniapp h5集成百度地图
  20. python3中字符串的切片练习

热门文章

  1. js字符串转换成数字
  2. Python 中的json模块dumps参数详解
  3. 计算机键盘常识打字教案,键盘的操作教案.doc
  4. 洛谷:尼克的任务【记忆化搜索】【记忆化搜索的使用条件】
  5. 概率统计Python计算:样本数据的经验分布函数
  6. 数据结构实验——顺序表操作
  7. 为什么用链路聚合_链路聚合技术作用和优点
  8. 铁路专业的未来发展趋势如何
  9. linux下syscall函数
  10. 学习ARM开发01-09