在前面的章节中我们已经完成了所有的工具类的编写,今天我们来实现下单流程的代码实现,首先因为前面我们进行了路由拦截器的开发 所以我们因为是在开发测试阶段没必要进行路由拦截 所以呢 就先放行,因为我们路由拦截器当中之前拦截的是/user/api/v1/*/**路径 所以这次控制器我们就先去掉user
###
第一步:在前面的《订单的增删改查Dao层编写》这一章节我们已经完成了订单的增删改查操作 属于mapper层
###
第二步:在刚开始的时候我们通过代码生成工具也已经生成好了VideoOrder订单类,但是我们有可能会对订单进行扩展,所以在dto层我们创建一个视频订单的扩展类VideoOrderDto.java
###
![](https://img.kancloud.cn/3d/00/3d0035ceea8d1aaaeb5d1ce819d3251c_1844x1800.png)
###
第三步:因为在统一下单的时候需要拿到请求用户的真实ip地址 所以我们还得要封装一个获取用户真实IP地址的工具类
###
![](https://img.kancloud.cn/af/af/afaf6b76780996b1e15e369d7186fbd3_3230x1858.png)
###
第四步:控制器的编写
###
![](https://img.kancloud.cn/20/af/20af724e5c13af074213195ca5ef35f3_3270x1760.png)
![](https://img.kancloud.cn/ff/cf/ffcfcb352c8daddd02ce7f80bfabe9d7_3270x1008.png)
###
第五步:service层编写
###
![](https://img.kancloud.cn/fd/5f/fd5f3d9b2847654773c2efb6f823f70b_2712x1336.png)
###
![](https://img.kancloud.cn/2f/99/2f99d3b353946c90aaa0c02e0381c702_3072x1860.png)
###
![](https://img.kancloud.cn/09/69/0969cf837e53843244cd84bbfbef3c33_1894x1782.png)
###
![](https://img.kancloud.cn/32/25/32250dab22eff4060895acd5d40d442a_2112x1946.png)
###
统一下单的时候用到的字段需要根据微信官网文档提供的来设置 地址如下:
https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1
###
![](https://img.kancloud.cn/2a/31/2a3178881dd5ac1382e693d8e9e22a7b_1469x979.png)
###
第六步:在第五步的时候我们截图当中也提到了 需要配置微信支付的配置信息
###
![](https://img.kancloud.cn/aa/16/aa16ba3971f844193205c781502396ab_2794x1758.png)
###
不要忘记在配置文件当中写入商户号ID以及支付key和对应的微信支付回调地址
![](https://img.kancloud.cn/bf/98/bf98c12c990ce140a98454578fd004ad_2514x1828.png)
###
最后你会发现我们打印了sign签名以及要发送给微信的xml
这个sign就是根据生成xml的这些参数根据一定的规则转化而来 所以拿到了sign和xml之后我们就可以利用微信官方提供的工具进行校验 看我们的sign签名生成的是否正确
###
sign: 85118C91DFCB052FB02AC183BF3D57D2
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xml>
<appid>wx5beac15ca207cdd40c</appid>
<body>高级教程666</body>
<mch_id>1503808832</mch_id>
<nonce_str>b11446ae6fc14ddb89c9bc5fa291dc43</nonce_str>
<notify_url>16web.tunnel.qydev.com/pub/api/v1/wechat/order/callback1</notify_url>
<out_trade_no>2a273e4b9f8c453380a08c7930fc3b6b</out_trade_no>
<sign>85118C91DFCB052FB02AC183BF3D57D2</sign>
<spbill_create_ip>0:0:0:0:0:0:0:1</spbill_create_ip>
<total_fee>500</total_fee>
<trade_type>NATIVE</trade_type>
</xml>
校验工具地址https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=20_1
###
![](https://img.kancloud.cn/f5/b8/f5b89ac0d825d1c8ebf00576ca63588c_1469x999.png)
###
只要校验通过了之后那么微信支付也就完成了80%的功能了
###
- springboot2项目创建
- 分层分包以及资源文件的创建
- Mysql逆向工程效率神器创建domain实体类(DAO层)
- application.properties配置文件自动映射到实体类
- 通过junit单元测试配置文件自动映射到实体类
- 整合Mybatis访问数据库和阿里巴巴数据源
- 增删改查步骤以及细节记录
- 控制器请求参数的传递
- mybatis当中的动态sql语句创建和使用套路
- mybatis当中的分页插件的使用
- springboot2当中jwt的使用
- 增加统一响应结果类
- 微信登录之微信开放平台介绍
- 网站应用微信登录时序图解释说明
- 获取微信开放平台扫码链接URL地址
- HttpClient4.x工具获取使用以及Get和Post模拟请求类编写
- 配置内网穿透让微信服务器可以回调到开发环境地址
- 获取微信access_token以及openid进而获取用户信息
- 保存微信用户信息的注意点
- 保存完微信用户信息之后生成jwt返回前端
- springboot2登陆拦截器
- 微信支付前期资料说明
- 订单的增删改查Dao层编写
- 单元测试的实现步骤
- UUID生成和MD5加密工具类编写
- xml转map map转xml以及签名sign算法工具类
- 下单生成sign签名以及xml整体流程代码实现一
- 调用微信统一下单接口获取相应map拿到二维码地址
- 二维码地址转换为图片让用户扫码支付
- 微信回调处理之更新订单状态和幂等性讲解
- springboot当中开启事务
- 定义全局异常类
- 项目当中Logback或者log4j增加打点日志
- 前后端联调注意事项
- springboot当中解决跨域问题
- 打包以及后台运行以及前端部署
- 多节点集群部署