主要说的是 生成订单的一系列操作

生成订单号---确认支付---生成支付链接--支付流程

支付流程

---1.获取支付链接

1.1 三方接口,发送数据 ----1.2 返回数据解析(包含支付订单id)将链接也返回前端

----2.进行支付

2.1 扫码支付 2.2 支付成功后携带支付信息code 跳转到前段页面,将支付信息发给后端

----3.根据支付返回的信息进行查询

3.1 根据支付code码 通用的第三方接口,或者相关的支付信息(是否支付成功,支付时间,支付方式,支付金额)

3.2 主动查询 (如果没有跳转 可以根据订单的id来查询支付状态)

3.3 根据获取的支付详情,判断是否合法,然后再进行业务逻辑处理


支付宝的沙箱环境--支付宝开放平台

  • RSA2密钥生成文档:

  • 公钥(给别人,方便其他人验证某个信息是否为自己发送) 和私钥(需要自己保存,对信息加密,不能泄露)

  • 根据文档,生成一对密钥: 公钥和私钥,将 公钥 添加到 支付宝的 沙箱应用中

  • 根据自己的APP公钥,生成的 支付宝公钥,需要 保存本地

  • 支付宝接口: 不再自己写接口,而是 使用 python-alipay-sdk工具去请求支付宝接口

  • pip install pyhton-alipay-sdk


    需要将 生成的 私钥 和 根据自己的公钥生成的 支付宝公钥,保存到文件,放到项目中
  1. 支付宝公钥(alipay_public_key.pem

    -----BEGIN PUBLIC KEY-----
    xxxx
    -----END PUBLIC KEY-----

2.自己的APP私钥 (app_private_key.pem)

-----BEGIN RSA PRIVATE KEY-----
xxxx
-----END RSA PRIVATE KEY-----

支付接口

import os
from alipay import AliPay# 配置地址, 为了确定 公钥和私钥的 位置Django 是这写的 flask直接可以拉到下面
private_path = os.path.join(BASE_DIR, "key/app_private_key.pem")
public_path = os.path.join(BASE_DIR, "key/alipay_public_key.pem")# 获取公私钥字符串
app_private_key_string = open(private_path).read()
alipay_public_key_string = open(public_path).read()flask
app_private_key_string = open("lab_flask/pay/app_private_key.pem").read()
alipay_public_key_string = open("lab_flask/pay/alipay_public_key.pem").read()def get_alipay():"""生成支付宝的客户端"""alipay = AliPay(appid="2016092400585976",  # 收款的商家支付宝的 appidapp_notify_url=None,  # 默认回调urlapp_private_key_string=app_private_key_string,# 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥alipay_public_key_string=alipay_public_key_string,sign_type="RSA2",  # 加密方式debug=True,  # 上线则改为False , 沙箱True)return alipaydef get_alipay_url(order_id, order_amount, subject, return_url):"""根据订单信息,生成支付地址"""# 进行alipay初始化alipay = get_alipay()# 调用支付接口# 电脑网站支付,需要跳转到https://openapi.alipay.com/gateway.do? + order_stringorder_string = alipay.api_alipay_trade_page_pay(out_trade_no=order_id,  # 订单id,需要支付的订单id eg:"%s" % order# 订单号  注意,标准的json格式没有 '' 单引号,只有 "" 双引号,python默认为 '' 单引号total_amount=str(order_amount),  # 订单总金额subject=subject,  # 付款标题信息return_url=return_url,  # 付款成功回调地址(可以为空, 当前项目,应该回调到Vue页面)notify_url=None  # 付款成功后异步通知地址(可以为空))# self._gateway = "https://openapi.alipaydev.com/gateway.do"pay_url = "https://openapi.alipaydev.com/gateway.do?" + order_stringreturn pay_url  # 将这个url复制到浏览器,就会打开支付宝支付页面

初学订单-支付流程(思路)相关推荐

  1. 深聊测试开发之:从订单支付流程来聊一聊,如何预防重复支付,建议收藏。

    如何预防订单重复支付 1. 引言 2.订单支付流程 2.1 支付流程 2.2 订单状态 3.订单重复支付原因 3.1 掉单 3.2 未防重 3.3 多渠道 4.防止重复支付 4.1 加锁 4.2 缓存 ...

  2. B2C电商网站提交订单支付流程

    用户在提交订单后,调用支付服务,支付服务调用第三方支付平台,第三方支付平台成功后返回订单流程图如下:

  3. 电商--订单支付中存在的问题以及思考

    文章目录 前言 背景 订单支付大致流程 订单支付流程中的注意细节 防止订单重复创建 为何会出现重复创建订单 处理措施 掉单导致的重复支付 为何会出现这种场景 处理措施 已支付流水退款 为何会出现这种场 ...

  4. Android APP第三方支付流程

    手机APP ①.支付宝接入 1.开发前准备:申请一个通过实名认证的企业支付宝账号.下载SDK开发包.提供APP apk以备审核,审核通过后即可进行代码集成. 2.流程 流程图: 流程解释: app携带 ...

  5. 微信支付:支付流程分析、微信扫码支付(HttpClient)、微信支付二维码生成、检测支付状态、订单状态操作准备工作、支付信息回调、MQ处理支付回调状态、定时处理订单状态

    微信支付 微信支付开发的整体思路 生成支付二维码 查询支付状态(微信的服务器) 实现订单状态的修改.删除订单 支付状态回查->微信服务器将支付状态返回给支付微服务 MQ处理支付回调状态 Rabb ...

  6. 浅谈网络支付加密安全流程思路(安全性极高)

    在阐述我的思路之前,我们先了解以下几点. 一.公网不安全 如果我们使用公网上网,我们的ip是由公网发放的.当我们并发送请求时,公网的拥有者可以在路由端设置拦截器,以此来对你向服务器发送的数据进行拦截, ...

  7. RabbitMQ实现订单超时设计思路、以及在订单过期临界点支付成功如何处理

    场景: 我们知道用 RabbitMQ 的延时队列可以实现用户下单后在 xxx 时间内未支付,需要自动关闭订单.但如果用户在订单即将过期的最后一秒支付成功.那么这笔订单算不算正常下单?要不要释放库存? ...

  8. 微服务商城系统(十三)订单、支付流程分析

    文章目录 一.订单 1.登录页面配置 2.用户收件地址查询 3. 下单 (1)表结构介绍 (2)下单实现 (3)库存变更 (4)增加积分 二. 支付流程分析 1. 二维码创建 2.微信扫码支付简介 ( ...

  9. 关于威富通的微信扫码支付处理思路和流程

    关于威富通的微信扫码支付处理思路和流程 有个客户需要使用威富通的微信扫码支付,我来给处理下 首选下载官方的文档 https://open.swiftpass.cn/openapi/doc?index_ ...

最新文章

  1. 启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法!
  2. MATLAB 中怎么求图像在水平方向和垂直方向的像素和,用图表示
  3. 用DL深度学习神经网络绘图---对于程序来说0和1到底是什么样的
  4. 导入已有工程相关问题解决实录
  5. Tomcat server.xml配置文件介绍
  6. matlab用lism求零输入响应,信号与系统matlab课后作业_北京交通大学讲解.docx
  7. m2eclipse插件
  8. openstack项目【day23】:KVM介绍
  9. C#设计模式之7-桥接模式
  10. java面试题——java基础(四),java初级面试笔试题
  11. 数值分析(2)-多项式插值: 拉格朗日插值法
  12. Matter-JS Composites 混合材料 · 上
  13. git --amend 使用和撤销
  14. ZZULIOJ 1050~1059(oj入门题)
  15. android外设按键,Android 外接键盘的按键处理 .
  16. js实现省市名称简称 ,echarts全国地图省市名称简称
  17. docker-compose up -d --build不会更新镜像;什么时候容器会变更
  18. Selenium 定位Loading元素图标,只需要简单配置下就行
  19. JavaScript 中 List转Tree,Tree转List
  20. phython编写图形界面

热门文章

  1. CodeWarrior下载及安装
  2. 穹顶之下的出行利器:百度地图热力
  3. PMP49个子过程ITTO总结
  4. CSS样式中解决背景图片不能完美填充页面(页面高度很高)
  5. 常用文献管理软件比较
  6. 计算机加密防止文件外泄,电脑文档加密系统哪个好?文档加密软件如何防止文件流通使用泄密...
  7. 数据预处理与特征工程—12.常见的数据预处理与特征工程手段总结
  8. 16 tia 内容说明 安装包_博途v12|Tia Portal v12下载 附安装说明 - 121下载站
  9. Mysql数据库引擎的区别
  10. AndroidApp之图书管理系统(一)