1支付流程

当购物车商品筛选完毕点击结算按键时,跳转到支付宝支付流程

1.1支付宝支付时序流程图

1.2 沙箱模拟

这里支付并不是支付宝真正的交易,而是使用沙箱模拟交易,一般开发的时候,都是可以先去沙箱测试一下,可以去蚂蚁金服开放平台注册一下.使用这个功能首先要登陆,这个功能是免费的

1.2.1查看一下沙箱的基本功能

这里会用到一个知识点 公钥非对称加密

商家与用户的模拟测试

相关知识
公钥非对称加密
这里举个例子,方便理解.
张三和张三朋友,除了平时的交流,还有一种加密的交流方式.
有一天,张三朋友发现张三老婆出轨了,他要把这个信息告诉张三,让张三早做准备,转移财产,抓住相关证据等一系列事情.
于是他就使用张三给他的公钥把要告诉张三的事情进行加密,加密成一串16进制的代码,而这串代码,传输给张三的途中,也可能被其他人截取,但这串代码只有张三用私钥解密,才能知道里面的内容是什么,其他人没有私钥,就算获取了这串代码,也没有办法知道内容


支付宝订单支付相关文章:
https://github.com/fzlee/alipay/blob/master/README.zh-hans.md

与支付宝接口对接

#进入虚拟环境workon env3#安装 alipaypip install python-alipay-sdk --upgrade

1.2.2公私钥的生成

这里生成的公私钥是属于爱鲜蜂这个app的
私钥是爱鲜蜂app自己独有,公钥交给支付宝,
这样相当于起到搭建了一个私密的信息交流的通道的作用

密钥是RSA算法加密,具体可百度一下 RSA
openssl,这是一个开源组织,http通信时加密的协议是由此组织开发的

生成密钥文件
2048是位数

OpenSSL
OpenSSL > genrsa -out app_private_key.pem   2048      #生成私钥
OpenSSL > rsa -in app_private_key.pem -pubout -out app_public_key.pem       #导出公钥
OpenSSL >  exit


查看一下私钥,私钥以MII开头

-----BEGIN RSA PRIVATE KEY-----    #标识开头-----END RSA PRIVATE KEY-----        #标识结尾

导出公钥,

然后把这串公钥配置到支付宝


查看一下支付宝的公钥

把它保存下来

1.2.3 建立单例模型

新建一个文件夹,将保存的支付宝的公钥和爱鲜蜂的私钥,公钥放进去,然后新建一个myalipay.py文件

导入密钥

建立一个alipay的单例对象

这里用的是手机网站支付,因为这个app是手机app.
支付也可以用电脑网页支付,可能会多一些步骤,但都类似,只需要填沙箱账号和密码就行

先打印一下支付链接

1.2.4 测试

运行一下这个myalipay.py文件,先打印一下支付要跳转的链接,测试一下,点击这个链接,

有可能虚拟机内部的火狐浏览器会弹出浏览器版本过低的页面,解决的方法有两个,
升级火狐浏览器,这个有点麻烦,可以自己去操作一下
还有就是把这个链接复制一下,在windows下的浏览器打开,

然后会弹出支付页面,当然这个并不是我们平常使用的支付宝的支付页面,这个只是沙箱的测试而已

这里我们选择支付宝账号密码登陆,使用沙箱的测试的买家账号

去登陆这个账号

选择支付

支付成功,可以查看一下沙箱的测试的两个账户的金额的变动

当支付成功后,会有一个验证通知,参考一下这个github文章

要把这一串data取出来, signature = data.pop(“ sign ”) 是要把签名取出来,用这个签名signature去验证这个data是否是正确的
成功的话会返回success=True,说明能验证这个是支付宝发过来的订单成功的验证通知

这里是同步回调,支付成功后支付宝会发送一个get请求,异步的话是发送post请求,
先去加一个视图函数
如果是异步请求的话,会有一个csrf_token验证,但是现在获取不到,加一个装饰器,去免除csrf_token的上传


支付成功后,支付宝会返回一些参数,data,要把它转成一个字典的形式
然后拿到signature签名
可以用print打印一下data和签名,查看是否正确
然后去验证alipay
导入alipay,用这个签名signature去验证这个data是否是正确的

添加一下url

改一下回调的接口
先查看下ip地址(也可用127.0.0.1)

改一下回调的接口,如果支付不成功,可能出现的原因是订单号重复,可以修改一下,金额可改可不改
,也有可能appid变了,查看一下沙箱

重新运行一下这个文件
把这一串复制到浏览器(我虚拟机的火狐浏览器不能用,用的是外部的浏览器)

输入沙箱账号密码,支付成功后会跳转,

如果不能跳转,可能是测试的协议不支持https协议,

把url改为http协议,

浏览器中把前缀https改为http就行了,可以弹出支付成功四个字

查看一下打印的内容

1.2.5

简单介绍一下 data是一个字典

"trade_no": "2019060122001481341000018029",   #支付宝生成的订单号
"out_trade_no": "2012316141645",              #自己定义的订单号
"charset": "utf-8",                           #字符集
"seller_id": "2088102177900470",              #卖家id
"version": "1.0",                             #版本号
"app_id": "2016093000628824",  "auth_app_id": "2016093000628824",    #沙箱应用的appid
"total_amount": "80.00",                      #订单总价
"method": "alipay.trade.wap.pay.return",      #支付方法
"sign_type": "RSA2",                          #签名的类型
"timestamp": "2019-06-01 11:43:07",           #时间戳

支付宝的签名,
这串签名是根据支付宝私钥加密了data这串字符后生成的,而我们这里有支付宝的公钥,使用公钥验证后,确认这是由支付宝发来的讯息,验证成功,页面返回支付成功,反之,页面返回支付失败

ANDzeIP8hd9XLOMqrKr/O4GtyE6kIPQZmoabAJxnKNB0KRr7QGNXbIYyUfcle0c0/6Kat08G506fIc4joR9tVR9d2i1TEIKrt1GPi/cZSD9p09EI4JFEPqP1hGiycGvTyk3DML88GzSWmxtL345bhwhNq2mvSg3zL4sZxBcNzLwo7RAmViIH/XI5rNH7tq87j7ta3JMEkPpGU3lODxn90teRYV8WVOkFpW+3EjlW3i5onPJEPkEUDyn1vYMK7zCQF6l7U46UiIwPD2fPuaxm8ee/5n1dt2uly7/jR1XmpspxB2lDuX3Ck9WWfFS7QeILKKHwv61jZbbbQhRlVOK7sw==

支付的流程大概是这样,接下来去写一下订单,把订单传到后台

Django之爱鲜蜂项目开发 day06(一)相关推荐

  1. Django之爱鲜蜂项目开发 day06(三)

    3.未支付订单模块 3.1 首先在views.py文件下写一下未支付订单的视图函数 取到未支付的订单,渲染到未支付页面 @check_login def order_unpay(request):or ...

  2. Django之爱鲜蜂项目开发 day06(二)

    2订单模块 2.1表的关联 一个用户可以有多个订单 1:n 一个订单中可以有多个商品 一个商品可以在多个订单中 订单----商品 m:n 2.2建立模型 做一下数据迁移 然后可以查看一下,数据库中多了 ...

  3. Django之爱鲜蜂项目开发 day01 (一)

    1. 软件开发的一般流程 需求分析及确认: 由需求分析工程师与客户确认甚至挖掘需求.输出需求说明文档. 概要设计及详细设计: 开发对需求进行概要设计,包括系统的基本处理流程,组织结构.模块划分.接口设 ...

  4. Django之爱鲜蜂项目开发 day01 (二)

    现在先将底部专栏写好,搭好基本的框架 1. 将网上下载的静态文件导入 咳咳,我们这里主要是写后端的内容,前端的就敷衍一下,每一步都会有一些相应的解析,但不做详解 img文件夹这里放的是是底部专栏的一些 ...

  5. Django之爱鲜蜂项目开发 day05(二)

    在框架上搭好基本的页面 4. 购物车页面 4.3 购物车cart页面 4.3.1 cart视图函数及页面 根据css样式写一下cart.html页面 展示一下 4.3.2 实现购物车商品的增减 通过 ...

  6. Django之爱鲜蜂项目开发 day02 (一)

    在框架上搭好基本的页面 1. home页面 1.1插入轮播图 前面也说过,这个项目中很多的前端内容都是写好的,只是作为引用.前端的 css, js 框架很多都是引用bootstrap网站上的,可进入此 ...

  7. Django之爱鲜蜂项目开发 day04

    在框架上搭好基本的页面 3. 我的页面 3.1 mine页面 页面上的图标都是bootstrap网站上的图标 https://v3.bootcss.com/components/ 根据图标名称,css ...

  8. Django之爱鲜蜂项目开发 day02 (三)

    在框架上搭好基本的页面 1. home页面 1.3 商品分类专栏 首页下还有一部分的商品分类专栏,这里给的数据是一样的,只是专栏名称不一样,因为这里的样式都是同一种样式,所以也没关系 创建模型,插入数 ...

  9. Django之爱鲜蜂项目开发 day03 (一)

    在框架上搭好基本的页面 2. cart页面 1.页面 首先来了解一下这个页面的功能,大家可以联想一下淘宝和其他购物app,首先进入这个页面,默认是跳到热销榜的内容,然后可以根据类型去排序,点击相应的按 ...

最新文章

  1. 基于模糊聚类的色彩迁移算法
  2. Java14-day05【集合(Collection常用方法-遍历、List特有方法、List集合子类特点、LinkedList集合的特有功能、ListIterator)】
  3. Linux用户、用户组、文件权限设置
  4. CCNA之网络地址转换(NAT)简介
  5. python协程,asyncIO
  6. Bar函数--Matplotlib
  7. 【上电即上华为云】华为云openCPU智联模组_Cat.1_MC615-CN-L610-CN_GPS定位器
  8. php tp5生成条形码,TP5条形码
  9. Python实现pdf转图片
  10. 混沌加密的理解及应用,附代码
  11. wegame服务器选择不显示,wegame辅助功能不显示怎么解决
  12. 大数据真实案例:Spark在美团的实践
  13. Android逆向之旅—Hook神器Cydia Substrate使用详解
  14. 小白学 Python 爬虫(27):自动化测试框架 Selenium 从入门到放弃(上)
  15. hanmming窗和hamming窗的作用
  16. 【Qt】通过QtCreator源码学习Qt(十二):Q_D和Q_Q指针(简称“d指针”)详解
  17. 科技文献检索(十一)——常用文摘型数据库
  18. [转] COM编程总结
  19. bert 使用(3)
  20. dex2jar2.0 工具命令使用 及生成error.zip解决

热门文章

  1. HTML图像、背景、颜色
  2. 计算机教室英语名言,计算机专业英语的一些名言警句
  3. c语言qsort函数的用法与模拟实现
  4. rda分析怎么做_群落分析的冗余分析(RDA)概述
  5. python中国地图可视化(附带各省数据和源码)
  6. 玛塔机器人函数_USA Today旗下专家详测!玛塔机器人到底靠什么打动了歪果仁?...
  7. 尚硅谷-Linux学习
  8. 提高数据处理速度_气相色谱仪用数据处理
  9. 原生JS 表单提交验证器
  10. 网络变压器高频参数插入损耗的检测设备和检测方式