Files
alipayDemo/WebRoot/index.html
2022-09-13 16:43:11 +08:00

113 lines
3.5 KiB
HTML

<!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='/style/jq-weui/lib/jquery-2.1.4.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 = eval("(" + 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='" + 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 = eval("(" + 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 = eval("(" + await response.text() + ")");
if (response.status == 200 && res.msg == "已支付") {
return okPay();
} else alert(res.msg);
}
/**
* 支付成功后的逻辑处理
*/
function okPay() {
console.log('支付成功后要做的事');
}
</script>
</body>
</html>