这里写目录标题
二维码
quick response 快速响应
比一维条形码几十个字符 存储更多的信息 几百个字符
一维条形码 存不了汉子
推荐用L级和M级 速度比较快 扫不出来可以立马换一张
min适合用于工作
转成javaWeb项目 JBLtoWeb
导入qrcode生成二维码组件
准备一个标签 用于标签里面生成二维码显示
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210626084959764.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2MDQwMjgy,size_16,color_FFFFFF,t_70)
水平线
默认是256
一般用第一种
{key1:value1,key2:value2,…}
存的是官网的URL location
第二种js,是前端去做的 javascript 一般都不存图片 存的是数据
qrcode是js组件 不是java构建的,不是jar包
网上组件一大堆的,百度:生成二维码js组件
各种渲染 绘制成一个样式 有个二维码的算法
就是css和html,js做出来了
微信扫码支付 redis开起来
访问pay.html
微信会给地址给我们 扫码到微信的地址.
玩了马云的就玩玩微信
商家才能申请 不是个人转账
原来企业转账处理信息,还能退款(比如淘宝支付,个人转账不能退款),还可以统计分析
支付方式
WAP手机浏览器 唤醒微信支付 没有码
API的对接 会对接这两个,其他就会对接了 时序图软件
时序图 怎么话 rational rose sequence
会对接这两个,其他就会对接了
时序图 每个操作都是有顺序的
商户后台系统 黑马
pay.weixin.qq.com/wiki/doc/api
跟微信对接的 key 对应 地址value
底层走xml
数据交换领域 xml json都可以
实例代码
生成签名的秘钥是我们自己生成的吗
deploy 是 上传到私服 但是有私服才行
这个就是坐标
本地仓库是老师给我们的,自己的仓库就要安装一下,上传到本地仓库,按install,否则加载依赖的时候,就需要从中央仓库拿了 这个坐标原来就是依赖的坐标
收款页面的地址
没有测试代码,就要自己写了
去到公司就要使用别人的接口,用别人的测试代码
第一步 sdk wxpay install到本地仓库
导入 微信支付jar包
加入工具类
来自于官方wxpay-sdk jar包 项目 里面的测试类 PayTest
api如何对接和抽取 官网sdk(jar包项目里面有)
订单号 总金额 要改 不写死
提交订单的subOrder方法传来了订单号oid和金额price
在id=code的变迁生成了一个二维码
调用方法,异步请求传参数给后端 说明订单号 和 价格
后端根据订单号和价格返回code_url地址,然后QRCode显示
这个地址里面有二维
码 在div标签里面显示这个二维码
代码写死了1分钱
这个连接用微信打开 有个收款二维码
外键约束,先删除子表 再删除主表订单 主表的主键
获取微信支付状态 statue 0–>1 查后端的状态
只有微信才能知道支付结果 银行知道,但是黑马旅游端不知道的,黑马不知道
还可以对接银行 微信通知结果给我们
拿到支付结果的api createResult 给黑马旅游平台
回调地址
不告诉,微信会一直告诉你 成功啦 防止微信一直发信息 成功啦
同步的话告诉支付结果就可以了。异步处理,是告诉哪笔订单成功,不是针对
成功了,就返回给微信,告诉微信不要再发信息给我了。
加粗样式
演示jackson转xml的例子 xml转json
user.xml file
写个测试类
解析要玩xml
读取xml
new SaxReader
获得一个输入流 来读取文件 类(任何一个类).class.getRAS 得到一个输入流
jackson提供的XmlMapper类 玩map {key1:value1,key2:value2,…}
用一个输出流 输出字符 再设置根标签
抛出异常
java对象转成xml字符串
SaxReader适合很多子标签的 孙子 子子
只有父子的标签用jackson xml即可
内网穿透
外网访问你本地的应用
外网ip跟微信通信
微信只能找到外网ip,找不到小龙的ip 本地域名是局域网
每个地址都有一个网卡MAC地址
让网络管理员搞定,但是现在没有啊
局域网内可以用ip来访问,但是外网只能用mac
购买一个免费隧道,免费的慢 做了限速
隧道的名字 隧道协议web web开发
绑定本地端口 8080 tomcat端口 外网访问就是绑定的端口8080 访问tomcat
读取就是本机
解压
只用输入
用的token要用自己,绑定的是自己的mac的地址
token记录的是mac地址和外网id token加密了,其实加密前是很长的
配置好就是启动 外网能访问的地址 会解析成127.0.0.1:8080 是你tomcat启动的地址 访问项目路径是空
访问外网就是访问你的8080即tomcat的应用
pay是controller的地址 payNotify是方法的地址,访问的是controller,controller来处理
根据回调地址 微信支付会调用我们的controller (前提是启动服务器 8080端口)
controller获得的输入流中的xml文件(微信发过来的xml文件(是io流传过来))换成map对象
dao要修改订单的状态 set update
我们再返回给微信一个io流的xml给微信告诉我们已经接收成功
微信没开发json传输,只能传io流(里面可以放xml)
微信通知我们的时候会把oid订单号告诉我们
Order表的state要改吗? 订单项表也要改
先删除子表再删除主表
业务层 获取订单号
获取支付结果
如果支付成功,就修改两个表的状态
否则提示支付失败
微信传过来的是xml,自己转成转成的map? {key1:value1,key2:value2}
返回的结果对应return_code
微信传过来的IO流中的xml,通过request接收,然后controller转成map然后给到业务层,业务层就解析map,根据key拿value
微信只发xml,也只接收xml的输入输出流
噢!记得了,是因为jackson和xml的依赖,将json对象转成xml
以后会进行token加密的,正常会校验的,以后再学了。
支付状态
少了业务层的代码
boolean返回韩式boolean
是的
做一次就用
微信扫码就是外网访问
token要设置自己的