up:: SpringBoot电商项目订单模块前台取消订单接口
说明:
(1) 本篇博客主要内容是:开发【前台:生成支付二维码】接口;
(2) 本篇博客需要注意的点有:
● 支付url的拼凑;
● 利用zxing生成二维码;
● 二维码图片的存储;真实地址与可访问地址的转换;
一:【前台:生成支付二维码】接口介绍;
1.【前台:生成支付二维码】接口,接口文档;
2.【前台:生成支付二维码】接口,在界面上的表现;
● 点击【去支付】按钮,就对应了 【生成支付二维码】接口 和后面将要介绍的 【前台:支付订单】接口 ;
二:正式开发;
1.在OrderController中,创建处理【前台:生成支付二维码】接口的方法:qrcode()方法;
说明:
(1) url,请求方式要正确;
(2) 调用在Service层编写的生成二维码的逻辑方法:qrcode()方法;这个方法会返回二维码图片的访问地址;这方法在下一部分介绍;
2.在OrderServiceImpl中,编写根据订单号生成二维码图片的方法:qrcode()方法;
说明:
(1) 要明确两点:
●【前台:生成支付二维码】接口,是生成一个二维码图片;具体,就是返回二维码图片的可访问地址,前端拿到这个地址后,就可以在页面上显示二维码图片了;
● 用户扫码后,会获得二维码的内容;二维码的内容,其实就对应了后面要介绍的【前台:支付订单】的url,而且还是包含了订单号的;
(2) 因为,这儿要拼凑【前台:支付订单】的完整url;所以,需要端口号;所以,需要利用RequestContextHolder去获取HttpServletRequest,进而获取端口号;
关于RequestContextHolder,在【附加RequestContextHolder可以实现在非Controller的方法中获取HttpServletRequest】作了介绍;
(3) 自然,要拼凑【前台:支付订单】的完整url,还需要当前应用所部署服务器的url;这儿因为我们目前是开发阶段,也就是我们在测试的时候,服务是部署在本机,所以此时的url就是127.0.0.1;我们在application.properties中配置了url;
(4) 然后,就是调用我们编写的工具方法,去生成二维码图片;
(5) 生成二维码图片的工具类,在下一部分介绍;
(6) 然后,返回二维码图片的可访问地址;主要不是图片在服务器上的真实地址,而是可访问地址;
● 之所以要返回可访问地址,而不是真实地址,主要是出于安全考虑;
● 如有需要,可以参考【SpringBoot电商项目商品模块增加商品接口之图片上传】;
3.编写生成二维码的工具类:QRCodeGenerator类;
(1)首先,我们需要引入商生成二维码的依赖:zxing;
(2) QRCodeGenerator类;
说明:
(1) 具体参考,代码注释即可;
4.在OrderService中,反向生成qrcode()方法的方法声明;
三:测试;
启动项目;
通过,通过二维码解码工具:去解析这个二维码图片中的信息: