mod
This commit is contained in:
35
src/main/webapp/WEB-INF/web.xml
Normal file
35
src/main/webapp/WEB-INF/web.xml
Normal file
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
|
||||
|
||||
<display-name>Archetype Created Web Application</display-name>
|
||||
<context-param>
|
||||
<param-name>contextConfigLocation</param-name>
|
||||
<param-value>classpath:applicationContext.xml</param-value>
|
||||
</context-param>
|
||||
<listener>
|
||||
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
|
||||
</listener>
|
||||
<servlet>
|
||||
<servlet-name>dispatcher</servlet-name>
|
||||
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--springmvc的配置文件地址-->
|
||||
<init-param>
|
||||
<param-name>contextConfigLocation</param-name>
|
||||
<param-value>classpath:spring-mvc.xml</param-value>
|
||||
</init-param><!--启动时间,跟服务器一起启动-->
|
||||
<load-on-startup>1</load-on-startup>
|
||||
|
||||
<multipart-config>
|
||||
<!-- 上传文件最大2M -->
|
||||
<max-file-size>100000000</max-file-size>
|
||||
<!-- 上传文件整个请求不超过4M -->
|
||||
<max-request-size>200000000</max-request-size>
|
||||
</multipart-config>
|
||||
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>dispatcher</servlet-name><!--拦截所有请求-->
|
||||
<url-pattern>/</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
|
||||
</web-app>
|
||||
113
src/main/webapp/index.html
Normal file
113
src/main/webapp/index.html
Normal file
@@ -0,0 +1,113 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang='en'>
|
||||
|
||||
<head>
|
||||
<meta charset='UTF-8'>
|
||||
<meta http-equiv='X-UA-Compatible' content='IE=edge'>
|
||||
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
|
||||
<title>支付测试</title>
|
||||
<style>
|
||||
* {
|
||||
margin: 10px auto;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<input type="number" name="num" id="num" placeholder="输入金额">
|
||||
<button onclick="getPayQr()">获取二维码</button>
|
||||
<div class="imgs"></div>
|
||||
|
||||
|
||||
<script src='https://libs.baidu.com/jquery/2.0.0/jquery.min.js'></script>
|
||||
|
||||
<script>
|
||||
/**
|
||||
* 获取支付二维码<br>
|
||||
* 自动开启轮询,检查支付是否成功
|
||||
*
|
||||
* @param {*} n 金额
|
||||
* @param {*} t 备注
|
||||
*/
|
||||
async function getPayQr() {
|
||||
var n = $('#num').val();
|
||||
if (n <= 0 || n > 2000) {
|
||||
alert("金额错误0~2000");
|
||||
return;
|
||||
}
|
||||
|
||||
let response = await fetch('./pay/createOrder?n=' + n + '&t=test');
|
||||
let res = JSON.parse(await response.text());
|
||||
|
||||
if (res.code == 1) {
|
||||
|
||||
var id = res.out_trade_no;
|
||||
var img = res.qrimg;
|
||||
var code = res.qrcode;
|
||||
if (id == null || id.length < 1) {
|
||||
alert('获取订单失败');
|
||||
return;
|
||||
}
|
||||
if (img == null || img.length < 1) {
|
||||
alert('获取二维码失败');
|
||||
return;
|
||||
}
|
||||
$('.imgs').html("<img src='data:image/jpg;base64," + img + "'><br><a href='alipays://platformapi/startapp?saId=10000007&qrcode=" + code + "'>手机点这里打开支付宝APP</a><br>使用支付宝扫一扫<br><button onclick='selectPay(" + id + ")'>查询支付状态</button> <button onclick='getPayQr()'>刷新二维码</button>");
|
||||
subscribe(id);
|
||||
|
||||
} else alert('遇到错误 ' + res.msg);
|
||||
}
|
||||
|
||||
/**
|
||||
*轮询检查支付状态
|
||||
*/
|
||||
async function subscribe(id) {
|
||||
let response = await fetch("./pay/queryPay?id=" + id);
|
||||
|
||||
if (response.status == 502) {
|
||||
// 连接超时,重新连接
|
||||
await subscribe(id);
|
||||
} else if (response.status != 200) {
|
||||
// 一个 error —— 让我们显示它
|
||||
alert(response.statusText);
|
||||
// 一秒后重新连接
|
||||
await new Promise(resolve => setTimeout(resolve, 1000));
|
||||
await subscribe(id);
|
||||
} else {
|
||||
// 获取并显示消息
|
||||
let message = JSON.parse(await response.text());
|
||||
|
||||
// 再次调用 subscribe() 以获取下一条消息
|
||||
if (message.msg == "已支付") {
|
||||
$('.imgs').html('支付成功<br>');
|
||||
return okPay();
|
||||
}
|
||||
await subscribe(id);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 手动查询支付状态
|
||||
*/
|
||||
async function selectPay(id) {
|
||||
let response = await fetch('./pay/queryPay?id=' + id);
|
||||
let res = JSON.parse(await response.text());
|
||||
|
||||
if (response.status == 200 && res.msg == "已支付") {
|
||||
return okPay();
|
||||
} else alert(res.msg);
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付成功后的逻辑处理
|
||||
*/
|
||||
function okPay() {
|
||||
console.log('支付成功后要做的事');
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user