Django之爱鲜蜂项目开发 day06(一)
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(一)相关推荐
- Django之爱鲜蜂项目开发 day06(三)
3.未支付订单模块 3.1 首先在views.py文件下写一下未支付订单的视图函数 取到未支付的订单,渲染到未支付页面 @check_login def order_unpay(request):or ...
- Django之爱鲜蜂项目开发 day06(二)
2订单模块 2.1表的关联 一个用户可以有多个订单 1:n 一个订单中可以有多个商品 一个商品可以在多个订单中 订单----商品 m:n 2.2建立模型 做一下数据迁移 然后可以查看一下,数据库中多了 ...
- Django之爱鲜蜂项目开发 day01 (一)
1. 软件开发的一般流程 需求分析及确认: 由需求分析工程师与客户确认甚至挖掘需求.输出需求说明文档. 概要设计及详细设计: 开发对需求进行概要设计,包括系统的基本处理流程,组织结构.模块划分.接口设 ...
- Django之爱鲜蜂项目开发 day01 (二)
现在先将底部专栏写好,搭好基本的框架 1. 将网上下载的静态文件导入 咳咳,我们这里主要是写后端的内容,前端的就敷衍一下,每一步都会有一些相应的解析,但不做详解 img文件夹这里放的是是底部专栏的一些 ...
- Django之爱鲜蜂项目开发 day05(二)
在框架上搭好基本的页面 4. 购物车页面 4.3 购物车cart页面 4.3.1 cart视图函数及页面 根据css样式写一下cart.html页面 展示一下 4.3.2 实现购物车商品的增减 通过 ...
- Django之爱鲜蜂项目开发 day02 (一)
在框架上搭好基本的页面 1. home页面 1.1插入轮播图 前面也说过,这个项目中很多的前端内容都是写好的,只是作为引用.前端的 css, js 框架很多都是引用bootstrap网站上的,可进入此 ...
- Django之爱鲜蜂项目开发 day04
在框架上搭好基本的页面 3. 我的页面 3.1 mine页面 页面上的图标都是bootstrap网站上的图标 https://v3.bootcss.com/components/ 根据图标名称,css ...
- Django之爱鲜蜂项目开发 day02 (三)
在框架上搭好基本的页面 1. home页面 1.3 商品分类专栏 首页下还有一部分的商品分类专栏,这里给的数据是一样的,只是专栏名称不一样,因为这里的样式都是同一种样式,所以也没关系 创建模型,插入数 ...
- Django之爱鲜蜂项目开发 day03 (一)
在框架上搭好基本的页面 2. cart页面 1.页面 首先来了解一下这个页面的功能,大家可以联想一下淘宝和其他购物app,首先进入这个页面,默认是跳到热销榜的内容,然后可以根据类型去排序,点击相应的按 ...
最新文章
- 基于模糊聚类的色彩迁移算法
- Java14-day05【集合(Collection常用方法-遍历、List特有方法、List集合子类特点、LinkedList集合的特有功能、ListIterator)】
- Linux用户、用户组、文件权限设置
- CCNA之网络地址转换(NAT)简介
- python协程,asyncIO
- Bar函数--Matplotlib
- 【上电即上华为云】华为云openCPU智联模组_Cat.1_MC615-CN-L610-CN_GPS定位器
- php tp5生成条形码,TP5条形码
- Python实现pdf转图片
- 混沌加密的理解及应用,附代码
- wegame服务器选择不显示,wegame辅助功能不显示怎么解决
- 大数据真实案例:Spark在美团的实践
- Android逆向之旅—Hook神器Cydia Substrate使用详解
- 小白学 Python 爬虫(27):自动化测试框架 Selenium 从入门到放弃(上)
- hanmming窗和hamming窗的作用
- 【Qt】通过QtCreator源码学习Qt(十二):Q_D和Q_Q指针(简称“d指针”)详解
- 科技文献检索(十一)——常用文摘型数据库
- [转] COM编程总结
- bert 使用(3)
- dex2jar2.0 工具命令使用 及生成error.zip解决