【SpringBoot应用篇】接入微信支付
学习尚医通项目做的笔记
微信支付介绍
- 开户成功,登录商户平台进行验证
- 在线签署协议
开发文档
- mch_id:商户号 (配置文件中的partner)
- partnerkey:商户密钥
添加依赖
<dependency> <groupId>com.github.wxpay</groupId> <artifactId>wxpay-sdk</artifactId> <version>0.0.3</version> </dependency>
WXPayUtil.generateNonceStr()
2.MAP转换为XML字符串(自动添加签名)
WXPayUtil.generateSignedXml(param, partnerkey)
3.XML字符串转换为MAP
WXPayUtil.xmlToMap(result)
微信支付开发
依赖
添加配置
在application.properties中添加商户信息
工具类
@Component
public class ConstantPropertiesUtils implements InitializingBean {
@Value("${weixin.appid}")
private String appid;
@Value("${weixin.partner}")
private String partner;
@Value("${weixin.partnerkey}")
private String partnerkey;
public static String APPID;
public static String PARTNER;
public static String PARTNERKEY;
@Override
public void afterPropertiesSet() throws Exception {
APPID = appid;
PARTNER = partner;
PARTNERKEY = partnerkey;
}
}
显示二维码
核心代码
页面显示
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>支付页面</title>
<script th:src="@{https://cdn.bootcdn.net/ajax/libs/qrcodejs/1.0.0/qrcode.js}"></script>
<script th:src="@{https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js}"></script>
</head>
<body>
<center>
<div id="qrcode"></div>
</center>
</body>
<script th:inline="javascript">
var results = [[${
map}]];
var parse = JSON.parse(results);
new QRCode(document.getElementById("qrcode"), parse.codeUrl); // 设置要生成二维码的链接
// 使用定时器每三秒查询一次是否支付成功
let timer =self.setInterval("querystatus()",3000);
function querystatus() {
$.get(`/api/wx/queryOrder/${ parse.orderId}`,function(data,status){
if (data==="支付中"){
console.log("支付中");
} else {
clearInterval(int)
window.location.href="/api/wx/success"
}
})
}
</script>
</html>
支付查询
核心代码
使用定时器每三秒查询一次是否支付成功
let timer =self.setInterval("querystatus()",3000);
function querystatus() {
$.get(`/api/wx/queryOrder/${
parse.orderId}`,function(data,status){
if (data==="支付中"){
console.log("支付中");
} else {
clearInterval(int)
window.location.href="/api/wx/success"
}
})
}
