PayController代码优化

PayController代码优化

本项目还在完善更新中。。。。。

  • 本代码集成了SPringBoot中freemarker的.tfl文件: 需要结合着修改。

.tfl 文件

原始版本,使用html语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>支付</title>
</head>
<body>
<div id="myQrcode"></div>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery.qrcode/1.0/jquery.qrcode.min.js"></script>
<script>
jQuery('#myQrcode').qrcode({
text : "weixin://wxpay/bizpayurl?pr=nTrHFdrzz"
});
</script>
</body>

注意的是:text中显示的的根据订单号和支付金额生成的微信支付的CodeUrl,使我们生成支付二维码的依据!

对control层的PayController.java 修改可以通过啊参数传递,此时jQuery部分可以修改为:

1
2
3
4
5
script>
jQuery('#myQrcode').qrcode({
text : "${codeUrl}"
});
</script>

control层的PayController代码优化

原始代码文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// PayController源码(省略import部分)
@Controller
@RequestMapping("/pay")
public class PayController {
@Autowired
private PayService payService;
@GetMapping("/create")
public ModelAndView create (){
return new ModelAndView("create");

Map map=new HashMap<>();
map.put("codeUrl","weixin://wxpay/bizpayurl?pr=nTrHFdrzz");
return new ModelAndView("create",map);
}
}


**注意的的是, 这里使用HashMap接收已经生成的支付CodeUrl ; ** 我们需要在程序中根据orderId 和 amount 生成 CodeUrl,于是有了以下优化:

1
2
3
4
5
6
7
8
9
// 需要在PayService 方法中设返回值,即为PayResponse类
public ModelAndView create (){
PayResponse responce = payService.create("12134567", BigDecimal.valueOf(0.05));

//渲染 ,自动化生成
Map map=new HashMap<>();
map.put("codeUrl",response.getCodeUrl);
return new ModelAndView("create",map);
}

我们还可以通过在网址中传参的方式来实现支付二维码的生成,例如:
将本地作为测试地址: http://localhost:8080/pay/create?orderId=12131&amount=0.06
优化代码如下:

1
2
3
4
5
6
7
8
9
10
11
public ModelAndView create (@RequestParam("orderId") String orderId ,
@RequestParam("amount") BigDecimal amount
){
PayResponse response = payService.create(orderId,amount);

Map map=new HashMap<>();
map.put("codeUrl",response.getCodeUrl());
return new ModelAndView("create",map);
}
}

-------------本文结束感谢您的阅读-------------
作者水平有限,文中难免存在一些错误,欢迎邮件@交流讨论~
Zongpeng Lin 微信 微信
Zongpeng Lin 支付宝 支付宝