This commit is contained in:
junshuai
2022-07-23 13:54:07 +08:00
parent 809c426b5a
commit 62548736a7
4912 changed files with 827659 additions and 38 deletions

View File

@@ -0,0 +1,460 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<meta content="yes" name="apple-mobile-web-app-capable">
<meta content="black" name="apple-mobile-web-app-status-bar-style">
<meta content="telephone=no" name="format-detection">
<meta content="email=no" name="format-detection">
<link rel="stylesheet" type="text/css" th:href="@{'/resources/css/weui.css'}"/>
<link rel="stylesheet" type="text/css" th:href="@{'/resources/css/weuix.css'}"/>
<script src="https://www.shouyinbei.net/resources/js/alipayjsapi.min3.1.1.js"></script>
<script th:src="@{'/resources/js/jquery.min.js'}"></script>
<script th:src="@{'/resources/js/zepto.weui.js'}"></script>
<title>缴费通</title>
<style>
* {
padding: 0;
margin: 0;
}
html,body{
width:100%;
height:100%;
margin:0 auto;
padding:0px;
background-color:#F5F6F8;
color: #000000;
}
.shade{
display: none;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0,0,0,.1);
z-index: 998;
overflow: auto;
}
.loading{
z-index: 10000;
position: absolute;
width: 100%;
display: none;
margin: 40px 0;
}
.loading-body{
width: 30%;
text-align: center;
margin: 0 auto;
padding: .4rem 0;
background-color: #fff;
border-radius: 4px;
}
.loading-icon{
background-image: url(data:image/gif;base64,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);background-size:100% 100%;
height: 30px;
width: 30px;
margin: 10px auto;
}
.header{
font-size: 0.8rem;
font-weight: 400;
text-align: center;
height: 1.8rem;
vertical-align:middle;
line-height:1.8rem; /*line-height must be equal to height*/
color: #fff;
background: -webkit-linear-gradient(left, #47A8FC , #4C8BF8); /* Safari 5.1 - 6.0 */
background: -o-linear-gradient(right, #47A8FC, #4C8BF8); /* Opera 11.1 - 12.0 */
background: -moz-linear-gradient(right, #47A8FC, #4C8BF8); /* Firefox 3.6 - 15 */
background: linear-gradient(to right, #47A8FC , #4C8BF8); /* 标准的语法 */
}
.tr-amt{
background: #fff;
text-align: center;
line-height: 1.6rem;
padding: 1.5rem 0 .5rem 0;
}
.text{
font-size: 0.7rem;
font-weight: bold;
}
.amt-info{
display: flex;
justify-content: center;
align-items: end;
}
.rmb-icon{
height: 20px;
padding: 10px 0 5px 0;
}
.amt{
font-size: 1.2rem;
font-weight: bold;
}
.tr-item{
background: #fff;
margin-top: 10px;
font-size: 0.7rem;
}
.item-info{
display: flex;
justify-content: space-between;
padding: 10px 20px;
}
.item-label{
color: #a5a2a2;
}
.red{
color: red;
}
.br{
border-top: 1px solid #ededed;
margin: 0 20px;
}
.jft-input{
border: 0;
text-align: right;
outline:medium;
font-size:16px
}
.item-warming{
display: flex;
justify-content: center;
align-items: center;
font-size: .575rem;
margin-top: 20px;
color: red;
}
.footer{
width: 100%;
position: fixed;
bottom: 30px;
text-align: center;
}
.cancel-btn{
padding: 10px 30px;
border: 1px solid #d9d9d9;
border-radius: 20px;
background: #fff;
margin-right: 30px;
font-size: .6rem;
}
.l-success-btn{
padding: 10px 30px;
border: 1px solid #d9d9d9;
border-radius: 20px;
background-color: rgba(64, 142, 249, 1);
color: #fff;
font-size: .6rem;
}
.j-success-btn{
padding: 8px 30px;
border: 1px solid #d9d9d9;
border-radius: 20px;
background-color: rgba(64, 142, 249, 1);
color: #fff;
font-size: .6rem;
}
.dialog{
z-index: 999;
height: 13rem;
width: 100%;
position: absolute;
top: 25%;
display: none;
font-size: 0.70rem;
}
.dialog-content{
background: #fff;
height: 14rem;
border-radius: 5px;
margin: 0 auto;
width: 70%;
}
.dialog-body{
padding: 10px 20px 0px 20px;
}
.dialog-item{
margin: 10px 0 20px 0;
}
.dialog-input{
border: 0;
border-bottom: 1px solid #efefef;
outline: medium;
width: 100%;
font-size: 16px;
}
.dialog-item-input{
margin-top: 10px;
}
.dialog-br:hover{
width: 100%;
}
.dialog-br{
display: block;
border-top: 2px solid #03A6FF;
width: 0%;
}
input:focus + .dialog-br {
width: 100%;
transition: all 0.4s
}
.dialog-btns{
position: absolute;
bottom: -10px;
justify-content: center;
margin-left: 3%;
}
.dialog-warming{
font-size: .675rem;
display: flex;
justify-content: center;
align-items: center;
color: red;
}
.dialog-cancel-btn{
padding: 8px 30px;
border: 1px solid #d9d9d9;
border-radius: 20px;
background: #fff;
font-size: .6rem;
}
button{
outline:medium;
}
input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
font-size:16px;
}
input:-moz-placeholder, textarea:-moz-placeholder {
font-size:16px;
}
input::-moz-placeholder, textarea::-moz-placeholder {
font-size:16px;
}
input:-ms-input-placeholder, textarea:-ms-input-placeholder {
font-size:16px;
}
</style>
</head>
<body>
<div class="body">
<div class="header">
缴费通支付
</div>
<div class="tr-amt">
<img th:src="@{'/resources/images/jft-wallet-icon.png'}">
<div class="text">付款单</div>
<div class="amt-info">
<img class="rmb-icon" th:src="@{'/resources/images/jft-rmb-icon.png'}">
<div class="amt" th:text="${amount}"></div>
</div>
</div>
<div class="tr-item">
<div class="item-info">
<div class="item-label">收款商家</div>
<div class="item-text" th:text="${merchantName}"></div>
</div>
<div class="item-info">
<div class="item-label">项目名称</div>
<div class="item-text" th:text="${pName}"></div>
</div>
</div>
<div class="tr-item">
<div class="item-each" th:each="payment,index:${paymentList}">
<div class="item-input item-info">
<div class="item-label"><span th:text="${payment.name}"></span> <span class="red">*</span></div>
<div class="item-input">
<input th:type="${payment.code == 'phone' ? 'number' : 'text'}" class="jft-input" th:name="${payment.code}" th:msg="${payment.name}" th:id="${payment.code}" th:placeholder="${'请输入'+payment.name}">
</div>
</div>
<div class="br" th:if="${index.count != index.size}"></div>
</div>
</div>
<div class="item-warming">
<img class="tips-icon" th:src="@{'/resources/images/jft-tips-icon.png'}">
<div class="warming-text">请谨慎核对收款单信息,风险自行承担</div>
</div>
<div class="footer">
<div class="footer-btns">
<button class="l-success-btn" style="padding: 10px 100px" id="subPay" onclick="subPay()">立即支付</button>
</div>
</div>
</div>
<div class="dialog" id="dialog">
<div class="dialog-header"></div>
<div class="dialog-content">
<div class="header">收款方信息</div>
<div class="dialog-body">
<div class="dialog-item">
<div class="dialog-item-name">姓名</div>
<div class="dialog-item-input">
<input type="text" class="dialog-input" name="name" id="cName" autofocus th:placeholder="${cpName}">
<span class="dialog-br"></span>
</div>
</div>
<div class="dialog-item">
<div class="dialog-item-name">手机号</div>
<div class="dialog-item-input">
<input type="number" class="dialog-input" name="phone" id="cPhone" autofocus th:placeholder="${cpPhone}">
<span class="dialog-br"></span>
</div>
</div>
</div>
<div class="dialog-warming">
<img class="tips-icon" th:src="@{'/resources/images/jft-tips-icon.png'}">
<div class="warming-text">如遇诈骗,请立即报警</div>
</div>
<div class="dialog-btns">
<button class="dialog-cancel-btn" onclick="hideDialog()">取消支付</button>
<button class="j-success-btn" onclick="submitPay()">继续支付</button>
</div>
</div>
</div>
<div id='shade' class="shade"></div>
<div class="loading" id="loading">
<div class="loading-body">
<div class="loading-icon">
</div>
<div class="loading-msg">
支付中...
</div>
</div>
</div>
<input type="hidden" id="tk" th:value="${tk}">
<input type="hidden" id="userId" th:value="${userId}">
</body>
<script type="text/javascript">
(function (doc, win) {
var docEl = doc.documentElement,
resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
recalc = function () {
var clientWidth = docEl.clientWidth;
if (!clientWidth) return;
docEl.style.fontSize = 20 * (clientWidth / 320) + 'px';//其中“20”根据你设置的html的font-size属性值做适当的变化
};
if (!doc.addEventListener) return;
win.addEventListener(resizeEvt, recalc, false);
doc.addEventListener('DOMContentLoaded', recalc, false);
})(document, window);
</script>
<script type="text/javascript">
var winHeight = $(window).height(); //获取当前页面高度
let city = "";
let province = "";
$(window).resize(function () {
var thisHeight = $(this).height();
if (winHeight - thisHeight > 140) {
//键盘弹出
$('.footer').css('position', 'static');
} else {
//键盘收起
$('.footer').css({'position': 'fixed', 'bottom': '30'});
}
})
function getLocation(){
AlipayJSBridge.call('getCurrentLocation', { bizType: '$s',requestType:1}, function(result) {
if (result.error) {
AlipayJSBridge.call('alert', {
title: '提示',
message: "请允许位置信息授权后支付",
button: '确定'
}, function(e) {
});
return;
}else{
city = result.city;
province = result.province;
subTowPay();
}
});
}
function subPay(){
if(!city){
getLocation()
}else{
subTowPay();
}
}
function subTowPay(){
let flag = false;
let msg = "";
$(".item-each").find("input").each(function (k,v){
if(!$(v).val()){
flag = true;
msg = $(v).attr("msg");
}
})
if(flag){
return $.toast(msg+"不能为空","text");
}
showDialog();
}
function showDialog(){
$("#shade").show();
$("#dialog").show();
}
function hideDialog(){
$("#shade").hide();
$("#dialog").hide();
}
function submitPay(){
$vaData = {};
$(".item-each").find("input").each(function (k,v){
$vaData[$(v).attr("name")] = $(v).val();
})
let cName = $("#cName").val();
let cPhone = $("#cPhone").val();
if(!cName){
return $.toast("收款方姓名不能为空!","text");
}
$vaData["cName"] = cName;
if(!cPhone){
return $.toast("收款方手机号不能为空!","text");
}
$vaData["cPhone"] = cPhone;
$vaData["tk"] = $("#tk").val();
$vaData["payUserId"] = $("#userId").val();
$vaData["city"] = city;
$vaData["province"] = province;
hideDialog();
$.showLoading("支付中...");
let url = "/wap/jft/tradePay";
$.ajax({
url:url,
data:$vaData,
type:"post",
success:function (res){
$.hideLoading();
if(res.code == 400){
return $.toast(res.message,"text");
}
let rdata = res.data;
var reg=/^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\/])+$/;
if(reg.test(rdata.source)){
window.location = rdata.source;
}else{
ap.tradePay({
tradeNO : rdata.source
}, function(res) {
if (res.resultCode == '9000') {
window.location = '/wap/jft/jump?orderNumber='+rdata.orderNumber; //订单支付成功
} else if (res.resultCode == '8000') {
} else if (res.resultCode == '4000') {
ap.alert("订单支付失败");
} else if (res.resultCode == '6001' || res.resultCode == '99') {
} else if (res.resultCode == '6002') {
ap.alert("网络连接出错");
}
});
}
}
})
}
</script>
</html>

View File

@@ -0,0 +1,169 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<meta content="yes" name="apple-mobile-web-app-capable">
<meta content="black" name="apple-mobile-web-app-status-bar-style">
<meta content="telephone=no" name="format-detection">
<meta content="email=no" name="format-detection">
<link rel="stylesheet" type="text/css" th:href="@{'/resources/css/weui.css'}"/>
<link rel="stylesheet" type="text/css" th:href="@{'/resources/css/weuix.css'}"/>
<script src="https://www.shouyinbei.net/resources/js/alipayjsapi.min3.1.1.js"></script>
<script th:src="@{'/resources/js/jquery.min.js'}"></script>
<script th:src="@{'/resources/js/zepto.weui.js'}"></script>
<title>缴费通</title>
<style>
* {
padding: 0;
margin: 0;
}
html,body{
width:100%;
height:100%;
margin:0 auto;
padding:0px;
background-color:#F5F6F8;
color: #000000;
}
.header{
font-size: 0.8rem;
font-weight: 400;
text-align: center;
height: 1.8rem;
vertical-align:middle;
line-height:1.8rem; /*line-height must be equal to height*/
color: #fff;
background: -webkit-linear-gradient(left, #47A8FC , #4C8BF8); /* Safari 5.1 - 6.0 */
background: -o-linear-gradient(right, #47A8FC, #4C8BF8); /* Opera 11.1 - 12.0 */
background: -moz-linear-gradient(right, #47A8FC, #4C8BF8); /* Firefox 3.6 - 15 */
background: linear-gradient(to right, #47A8FC , #4C8BF8); /* 标准的语法 */
}
.tr-amt{
background: #fff;
text-align: center;
line-height: 1.6rem;
padding: 1.5rem 0 .5rem 0;
}
.text{
font-size: 0.8rem;
font-weight: bold;
}
.amt-info{
display: flex;
justify-content: center;
align-items: end;
}
.rmb-icon{
height: 20px;
padding: 10px 0 0 0;
}
.amt{
font-size: 1.2rem;
font-weight: bold;
}
.pay-success{
width: 3.555rem;
}
.tr-item{
background: #fff;
margin-top: 10px;
font-size: 0.7rem;
}
.item-info{
display: flex;
justify-content: space-between;
padding: 10px 20px;
}
.item-label{
color: #a5a2a2;
}
.br{
border-top: 1px solid #ededed;
margin: 0 20px;
}
.item-copy{
margin-left: -50px;
padding: 2px 5px;
background: #47A8FC;
color: #fff;
border-radius: 3px;
font-size: 13px;
}
</style>
</head>
<body>
<div class="body">
<div class="header">
缴费通支付
</div>
<div class="tr-amt">
<img class="pay-success" th:src="@{'/resources/images/jft-success-icon.png'}">
<div class="text">支付成功</div>
<div class="amt-info">
<img class="rmb-icon" th:src="@{'/resources/images/jft-rmb-icon.png'}">
<div class="amt" th:text="${amount}"></div>
</div>
</div>
<div class="tr-item">
<div class="item-info">
<div class="item-label">收款商家</div>
<div class="item-text" th:text="${merchantName}"></div>
</div>
<div class="item-info">
<div class="item-label">项目名称</div>
<div class="item-text" th:text="${pName}"></div>
</div>
</div>
<div class="tr-item">
<div class="item-input item-info">
<div class="item-label">交易类型</div>
<div class="item-text" th:text="${payTypeDesc}"></div>
</div>
<div class="br"></div>
<div class="item-input item-info">
<div class="item-label">订单号</div>
<div class="item-text" th:text="${orderNumber}"></div>
<!-- <span class="item-copy" th:data-order="${orderNumber}" onclick="copyNumber(this)">复制</span>-->
<span class="item-copy" data-order="123123123" onclick="copyNumber(this)">复制</span>
</div>
<div class="br"></div>
<div class="item-input item-info">
<div class="item-label">时间</div>
<div class="item-text" th:text="${date}"></div>
</div>
</div>
</div>
<input type="hidden" id="tk" th:value="${tk}">
</body>
<script type="text/javascript">
(function (doc, win) {
var docEl = doc.documentElement,
resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
recalc = function () {
var clientWidth = docEl.clientWidth;
if (!clientWidth) return;
docEl.style.fontSize = 20 * (clientWidth / 320) + 'px';//其中“20”根据你设置的html的font-size属性值做适当的变化
};
if (!doc.addEventListener) return;
win.addEventListener(resizeEvt, recalc, false);
doc.addEventListener('DOMContentLoaded', recalc, false);
})(document, window);
</script>
<script>
function copyNumber(obj){
let value = $(obj).attr("data-order");
let input = document.querySelector('.copy-input') || document.createElement('input');
input.setAttribute("readonly","readonly");
input.className = "copy-input";
input.value = value;
input.style = `position: fixed;top: -100%;`
document.body.append(input)
input.select();
document.execCommand("copy");
$.toast("内容已复制","text");
}
</script>
</html>

View File

@@ -0,0 +1,455 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
<meta content="yes" name="apple-mobile-web-app-capable">
<meta content="black" name="apple-mobile-web-app-status-bar-style">
<meta content="telephone=no" name="format-detection">
<meta content="email=no" name="format-detection">
<script src="https://www.shouyinbei.net/resources/js/alipayjsapi.min3.1.1.js"></script>
<title>向商户付款</title>
<style>
html,body{
width:100%;
height:100%;
margin:0 auto;
padding:0px;
background-color:#EFEFF4;
}
.payinfo{
display: block;
position: absolute;
bottom: 0;
height: 13rem;
width: 100%;
overflow: hidden;
transition: .4s;
}
table{
width:100%;
height: 90%;
bottom: 0;
background-color:white;
}
table tr td{
text-align:center;
width:24.9999999%;
border-right:1px solid #D9D9D9;
border-bottom:1px solid #D9D9D9;
}
table tr td:active{
background-color:#ECECEC;
}
.keybord-return,.keybord-stop{
width:30px;
height:30px;
margin:0px auto;
color:white;
}
.keybord-return{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAALpQTFRFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqyRq8wAAAD10Uk5TAAM/gJ+efz5Q2ddPAouKAZZ8nP0vrfcLN03+GcxYu9gSGkCBndobPbe8+QonMuCH7xOIW0fNtCwra4NgHN+ehK8AAAABYktHRACIBR1IAAAACXBIWXMAAABIAAAASABGyWs+AAAB4UlEQVR42u3c51LCQBiF4Y2IgDQVRcWCvffe9v5vS2FGhSH5kTLzney8zxWcd3ZD+BXnAAAAAAAAAAAAgFSiucp8daEWWe/Iq97wY4tN6yW5tNr+T6drvSa77pKfsGw9J7PWymSH761aDyqmw/s160XZTN+rkf669aYsZs7jx4b1qII6/Kb1qvRm79VIzXpWarHn4Qdb1ruK6fDb1rvSir9X3u9YD0sp4Tz8bst6WTEdwz3rZekk3avGvvUyOuiwR4cWOrTQoYUOLXRooUMLHVro0EKHFjq00KGFDi10aKFDCx1a6NBChxY6tNChhQ4tdIhpx3cMy9ZRD6QjaoTR4Q7CeD6cOwzjPJyrhnEezh3FhByfWK/KoBLK1TqNfdhLeCbRMJCfX9cM5IXoXCeUkqQ/jeV7TijRQ4keSvRQoocSPZTooUQPJXoo0UOJHkr0UKKHEj2U6KFEDyV6KNFDiR5K9FCihxI9lOgJpySUD04ml5yV7jPlSberfN8tTjiTc+tdRZVcXFrvSi/+dl1Zz8og9kyurVcVVVK6b2KPzd6uG+tJGc2cya31ooJK7u6tB2U2dbt65Xsf/ms9DH47+o/WY/J5eh5nDF5erZfk9vb+Ufn8sl4BAAAAAAAAAAAAY9/5YLt8mhkMlgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMC0wNy0wNFQxNTowMjo0OSswODowMMIgQKAAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjAtMDctMDRUMTU6MDI6NDkrMDg6MDCzffgcAAAAR3RFWHRzdmc6YmFzZS11cmkAZmlsZTovLy9ob21lL2FkbWluL2ljb24tZm9udC90bXAvaWNvbl91ZmVhaXVpd2lrZy9iYWNrLnN2Z4Ft+LMAAAAASUVORK5CYII=); background-size:100% 90%; }
.keybord-stop{background-image:url(data:image/png;base64,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); background-size:100% 100%;}
.pay{
color:#ffffff;
font-size:120%;
background-color:#df6051;
}
.pay:active{
/*background-color: #df6051;*/
background-color: rgba(223,96,81,0.7);
}
.shouyin{
text-align: center;
color: #9b9b9b;
font-size: 13px;
}
.logo{
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAD70lEQVRoQ9VaTYgURxT+Xm8w7PQs6CFgXDCXEAKeFHKLRKMo6HoSc0qmqlfxICSn/KCXmIMuiZ4UBEG3q+aokItKiGSTDZ5CIHtK9LAXhRVJDoZs9ywR7CfVuzPMzM5sV/X0MNt92Z7q9773vu2qej/VhIKuSIgDBO8AgEkCTybApLlfg1/ygCUGLSH9m8xVtZ4rwjQNAhLXgikQjgE8BWCHI9ZTgO6Cccevh3cddVvizgT4zJnqSqMRMFMA8O68hjv1aIGIw/FKJaRr1yIXTGsCkZTbx5iChJNpEL3tYsRalnnRI2/2JXFYVeqZjZ4VgVjK95hRJ+BdG9BBZRh4RISar9TvWViZBFZq0/sTSn7OAhrGc4+9D8frs79shL0hgUiIgECzw3DOFpPB01Wtw37yfQlEQnxJoG9tDQ1TjsFfVbX+rpeNngRiIU4CdGOYTrlj8ylf65vdeusIxEIcTffnTXnxlK/1vXbXOgiYrZKYHwBD2iYH/qfwIhPtbd9iOwisiOBsAr44sJ0hAnigc+M6nGmaaBEwEbYRxQtDC1JFkWJerFT93c2I3SLQkPJTZlwpys4wcYjwWUWpq8ZGi0Asgj9cchsC5l8yfi3C0THCBwzss8eiBV+He1oEIiEOEehHewAgYXwzUVfnXXT6yS7X5HmP8LULFoMPV7W+n76BhhCXGPS5C8Bo34CZOny5ovUXKYFYyMcAdroScJHPknWbQinaE1+rt6jxyfT77CUPsgx0BY/5ilb7XXSyZGMh/wewJUuuw4/E20uxCC4CfNZJkXC8otT3LjpZsrGUF8A4lyXX+ZxmDAENcM1F0dcqMw13wUun8cen38TYi6duelSnhpA/MWCKcdvrpq/VKVthF7lYSJODHbXVIWCOIiEfulRaDD5YVEeh29HVJgHfsSWQVm6RkP8RMGGr9IKwbZtS/7bLLwfBG+b3RBj+M8j4cym3bmE8t/WFgWVnAuDkiF+v/9DhqAlESH4bdLwh5Qlm3HIl4DSFDDgRPqooddvctxstatyBwKM8i7iJ/+faza4ug0WNZ/JIF3GebdQgJ4Q0kHmMDbsGWV4MhkP1XIHMOGViwbKU+4ogMKHUfCwkZ5Fd/5xmcqUSm4UAmVQijYI5krlN8AZWk7l0J8mRTo+aQEc6naegGTWBjoJmdRq5lZSjJdBVUq4FJKei/jWPdr0ehn+57xzrNUwq4iX8ty1Wz6I+R1vlfkJo9WdsjfeSI8Z1At6xwujXVjHKpW5sGQKlby2uLuYSN3ebc7DU7fUmiVIfcLSRKO8RU5NEqQ/5WmuizMesrelU5oPu9ghZ2k8NeoX5Un7s0S9fGdXnNq8Aors/k02FsxcAAAAASUVORK5CYII=);background-size:100% 100%;
width: 35px;
height: 35px;
}
.icon{
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAC7UlEQVRYR72WTWgTURDH/7ObJi1YENFT4kVtD/YgSMFaaOrbpfYgeElaURA8CIKKIAhCQYyCIAiC0KLgodBDwUqhiODB8N42RfFQEYoVBUGRCiKioPUjNbsjK4mk2ySbTTe+687O7/dm3hehiSOXy+20bXuEiAQzTwkhznpx1Cx+ET4FoKuMMSaEOF3ObIpAFfhfruM4l0zTzJQkmiIwNze3y7btKWbuXFNyoh/RaHRzb2/vT/db6AKWZd1h5tsAlgHcBZDwSHxLJBJbOjo68qELSCkniegwgC8A9gPYQETTzLypJNG0FkgpJ4joaNlsX2qadpCIttm2PQOglZlvGoZxMvRFqJQaB3DM229mzsVisaF8Pr8XwCHDMI6Evg2VUm6/j1fbzkR0Lx6PD5d6HqqAUuoWgBM+Z8n07OzscCaTcSrFNbwLlFKjAE75wGfa29uHu7u7f1etUCMnoWVZN5j5jM+/9wEMCSF+1YoLXAEp5XUiWnOmeyAPVlZWhgYHB7/7TTCQgFLqGoBzPkkftrW1pXt6er76wQMdREqpqwDO1ywnkdR1Pd3X1+ceRHWNuiogpbxCRCO1Mrp7nohSQohPdZGLQb4CUsrLRHTBJ+kjAGkhxIcg8JotyGazndFoNOLeap473ct44jhO2jTN90HhNQUsy3JX+pKmaYs1JOYLhUJqYGDgXSPwmgJKqSwAk5kPRCKRtxUknmmalurv73/TKLyqQPFFs1hK7DjOnpaWluWSBBEtMLO74F6vB15VQCl1EcC/Z5MbGIlEtjNza/GlkzIM49V64VUFpJRPiWi3F1AoFDbGYrF4Mpl8EQa8ooC3/EXQvOM4E5qmjQsh3KdWaGPNOVBefiKatG17zDTNx6ERPYkqCTwHMCqEcO/6po9VAm75w+xvPfarBJRS7hN6Rz0/BonRdf1jtYl5BThI4iCxuq53VZL4bwIAtgohlrzSlRbhviAzqydW1/XPyWRyoVKs73VcD2A9MX8AVWwjMF0q1kMAAAAASUVORK5CYII=);background-size:100% 100%;
width: 15px;
height: 15px;
}
.body{
padding: 2rem 1rem;
}
.store-info{
display: flex;
align-items: center;
}
.name{
margin-left: .5rem;
}
.main-amt{
height: 3rem;
padding: 1.2rem 0 0 0;
}
.amt-content {
display: flex;
background: #fff;
padding: 10px 20px;
border-radius: 4px;
height: 40px;
font-size: 18px;
}
.input-label {
flex: 1;
line-height: 40px;
}
.input-box {
line-height: 40px;
font-size: 25px;
color: #777;
}
.gb {
display: inline-block;
width: 2px;
height: 30px;
margin-top: -6px;
background: #df6051;
vertical-align: middle;
animation: gb 1.3s infinite;
}
.money-input {
font-weight: bold;
color: #df6051;
}
@keyframes gb {
from {
opacity: 1;
} to {
opacity: 0;
}
}
.remark-info{
display: flex;
align-items: center;
font-size: 13px;
color: #9e9e9e;
}
.set-remark{
margin-left: 5px;
}
.main-title{
display: flex;
justify-content: space-between;
}
.shade{
display: none;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0,0,0,.1);
z-index: 1002;
overflow: auto;
}
.dialog{
z-index: 8888;
height: 13rem;
width: 100%;
position: absolute;
display: none;
}
.dialog-content{
background: #fff;
height: 11rem;
border-radius: 10px;
padding: 10px 20px;
margin: 0 auto;
width: 60%;
}
.btns{
padding: 0 0 0 5%;
}
.btn-cancel{
width: 45%;
height: 1.8rem;
border-radius: 20px;
border: none;
}
.btn-submit{
width: 45%;
height: 1.8rem;
border-radius: 20px;
border: none;
background-color: #df6051;
color: #fff;
}
.remark-text{
border: 1px solid #e4e0e0;
height: 6rem;
width: 100%;
}
.remark-body{
margin-top: 15px;
}
.loading{
z-index: 10000;
position: absolute;
width: 100%;
display: none;
margin: 40px 0;
}
.loading-body{
width: 30%;
text-align: center;
margin: 0 auto;
padding: .4rem 0;
background-color: #fff;
border-radius: 4px;
}
.loading-icon{
background-image: url(data:image/gif;base64,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);background-size:100% 100%;
height: 30px;
width: 30px;
margin: 10px auto;
}
</style>
</head>
<body>
<div class="body">
<div class="main-title">
<div class="store-info">
<div class="logo"></div>
<div class="name" th:text="${storeName}"></div>
</div>
<div class="remark-info">
<div class="icon"></div>
<div class="set-remark" onclick="showRemarkDialog()">设置备注</div>
</div>
</div>
<div class="main-amt">
<div class="amt-content" onclick="showInput()">
<div class="input-label">消费金额</div>
<div class="input-box"><span class="money-input" name="comsumeMoney" id="comsumeMoney"></span> <span class="gb"></span></div>
</div>
</div>
</div>
<div class="payinfo" id="payinfo">
<div class="shouyin" onclick="showInput()">
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
</div>
<table cellspacing="0" cellpadding="0" id="table1">
<tr>
<td class="paynum" onclick="inputAmt(1)">1</td>
<td class="paynum" onclick="inputAmt(2)">2</td>
<td class="paynum" onclick="inputAmt(3)">3</td>
<td id="pay-return" onclick="inputAmt('del')"><div class="keybord-return"></div></td>
</tr>
<tr>
<td class="paynum" onclick="inputAmt(4)">4</td>
<td class="paynum" onclick="inputAmt(5)">5</td>
<td class="paynum" onclick="inputAmt(6)">6</td>
<td rowspan="3" class="pay" id="pay">支付</td>
</tr>
<tr>
<td class="paynum" onclick="inputAmt(7)">7</td>
<td class="paynum" onclick="inputAmt(8)">8</td>
<td class="paynum" onclick="inputAmt(9)">9</td>
</tr>
<tr>
<td id="pay-stop" onclick="hideInput()"><div class="keybord-stop"></div></td>
<td id="pay-zero" onclick="inputAmt(0)">0</td>
<td id="pay-float" onclick="inputAmt('.')">.</td>
</tr>
</table>
</div>
<div id='shade' class="shade"></div>
<div class="dialog" id="dialog">
<div class="dialog-content">
<div class="label">设置备注</div>
<div class="remark-body">
<textarea id="remark" class="remark-text"></textarea>
</div>
<div class="btns">
<button class="btn-cancel" onclick="hideRemarkDialog('cancel')">取消</button>
<button class="btn-submit" onclick="hideRemarkDialog('submit')">确定</button>
</div>
</div>
</div>
<div class="loading" id="loading">
<div class="loading-body">
<div class="loading-icon">
</div>
<div class="loading-msg">
支付中...
</div>
</div>
</div>
<input type="hidden" id="merchantCode" th:value="${merchantCode}">
<input type="hidden" id="openid" th:value="${openid}">
<input type="hidden" id="userid" th:value="${userid}">
<input type="hidden" id="userAppId" th:value="${userAppId}">
<input type="hidden" id="storeId" th:value="${storeId}">
<input type="hidden" id="unionId" th:value="${unionId}">
<input type="hidden" id="payType" th:value="${payType}">
</body>
<script>
function inputAmt(o){
var dom = document.getElementById('comsumeMoney');
var txt = dom.innerText;
if(!txt){
if(o === 'del' || o === '.'){
return;
}
}
if(o === '.' && txt.indexOf(".") > 0){
return;
}
if(o === 'del'){
txt = txt.slice(0,-1);
dom.innerText = txt
return;
}
if(txt.indexOf(".") > 0 ){
var v = txt.split(".")[1];
if(v && v.length > 1){
return;
}
}else{
if(txt.indexOf("0") == 0 && o !== '.'){
return;
}
}
txt = txt === "" ? o : txt + "" + o;
let max = 999999;
if(parseFloat(txt) > max){
return;
}
dom.innerText = txt;
}
function hideInput(){
var dom = document.getElementById('payinfo');
dom.style.height = '20px'
}
function showInput(){
var dom = document.getElementById('payinfo');
dom.style.height = '13rem'
}
function showRemarkDialog(){
var shape = document.getElementById('shade');
var dialog = document.getElementById('dialog');
shape.style.display = 'block';
dialog.style.display = 'block';
}
function hideRemarkDialog(t){
var shape = document.getElementById('shade');
var dialog = document.getElementById('dialog');
shape.style.display = 'none';
dialog.style.display = 'none';
if(t === 'cancel'){
document.getElementById('remark').value = "";
}
}
document.getElementById("pay").onclick = ()=>{
var comsumeMoney = document.getElementById('comsumeMoney').innerText;
if(comsumeMoney == undefined || comsumeMoney == '' || comsumeMoney == null){
return;
}
var shape = document.getElementById('shade');
var loading = document.getElementById('loading');
shape.style.display = 'block';
loading.style.display = 'block';
var storeId = document.getElementById("storeId").value;
var openid = document.getElementById("openid").value;
var merchantCode = document.getElementById("merchantCode").value;
var remark = document.getElementById("remark").value;
var userId = document.getElementById("userid").value;
var unionId = document.getElementById("unionId").value;
var userAppId = document.getElementById("userAppId").value;
var payType = document.getElementById("payType").value;
var params = "storeId="+storeId + "&openid="+openid + "&merchantCode="+merchantCode +
"&remark="+remark + "&userId="+userId+"&unionId="+unionId +
"&userAppId="+userAppId +"&payWay="+payType+ "&comsumeMoney="+comsumeMoney;
var url = "/wap/merchant/tradePay";
var xhr = new XMLHttpRequest();//创建请求对象
xhr.open("POST", url, true);//链接服务器
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {//请求已完成,且响应已就绪
shape.style.display = "none";
loading.style.display = "none";
if (xhr.status === 200) {//请求成功
var resultStr = xhr.responseText//获取结果
var resultObj = JSON.parse(resultStr);//解析数据
if (resultObj.code == 200) {
var rdata = resultObj.data;
if("WXZF" == payType){
WeixinJSBridge.invoke('getBrandWCPayRequest', {
// 商品名称
"appId" : rdata.payAppId,
"timeStamp" : rdata.payTimeStamp,
"nonceStr" : rdata.paynonceStr,
"package" : rdata.payPackage,
"signType" : rdata.paySignType,
"paySign" : rdata.paySign,
}, function(res) {
if (res.err_msg == "get_brand_wcpay_request:ok" || res.err_msg == "stopMonitoringBeacons:ok") {
//成功之后跳转地址
window.location = '/wap/merchant/paySuccess';
} else {
cancelPay(rdata.orderNumber);
alert("支付失败");
}
})
}else if("ZFBZF" == payType){
var reg=/^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\/])+$/;
if(reg.test(rdata.source)){
window.location = rdata.source;
}else{
ap.tradePay({
tradeNO : rdata.source
}, function(res) {
if (res.resultCode == '9000') {
window.location = '/wap/merchant/paySuccess'; //订单支付成功
} else if (res.resultCode == '8000') {
} else if (res.resultCode == '4000') {
cancelPay(rdata.orderNumber);
ap.alert("订单支付失败");
} else if (res.resultCode == '6001' || res.resultCode == '99') {
cancelPay(rdata.orderNumber);
} else if (res.resultCode == '6002') {
cancelPay(rdata.orderNumber);
ap.alert("网络连接出错");
}
});
}
}else{
window.location = rdata.redirectUrl;
}
} else {
alert(resultObj.message);
}
}
else {
alert("错误码 : " + xhr.status);
}
}
}
xhr.send(params);//发送请求
}
function cancelPay(m) {
var url = "/wap/merchant/cancelPay/"+m;
var xhr = new XMLHttpRequest();//创建请求对象
xhr.open("GET", url, true);//链接服务器
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function () {
}
xhr.send();
}
</script>
</html>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,231 @@
<!DOCTYPE html>
<html lang="en" style="font-size: 16px;" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta data-n-head="true" name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta data-n-head="true" data-hid="description" name="description" content="商户公众号">
<meta data-n-head="true" http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta data-n-head="true" http-equiv="Pragma" content="no-cache">
<meta data-n-head="true" http-equiv="Expires" content="0">
<title data-n-head="true">账号绑定</title>
<title>账号绑定</title>
<link rel="stylesheet" href="/wap/resources/css/weui.css">
<script src="/wap/resources/js/jquery.min.js"></script>
<style >
html {
font-family: Source Sans Pro,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;
word-spacing: .03125rem;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
body{
background-color: #f3f3f3;
padding: 2rem 0 0 0;
}
.account-con{
width: 100%;
}
.account-logo img{
width: 100px;
height: 100px;
border-radius: 10px;
}
.account-title{
width: 100%;
margin-top: 30px;
text-align: center;
}
.account-con-list{
width: calc(100% - 3rem);
margin: 2rem auto 0 auto;
}
.account-list{
width: calc(100% - 40px);
display: flex;
flex-wrap: wrap;
border-bottom: 1px solid #f1f1f1;
padding: 10px 20px;
background-color: #fff;
}
.account-operation{
flex: 1;
text-align: right;
}
.account-button{
width: calc(100% - 60px);
background-color: #FD7663;
padding: 10px;
text-align: center;
border-radius: 10px;
margin: 4.5rem auto 0 auto;
color: #fff;
}
.account-logo{
height: 4.375rem;
margin-bottom: 1.46875rem;
text-align: center;
}
.account-logo img{
height: 100%;
width: auto;
border-radius: 5px;
}
.weui-switch:checked, .weui-switch-cp__input:checked ~ .weui-switch-cp__box {
border-color: #FD7663;
background-color: #FD7663;
}
.weui-switch, .weui-switch-cp__box{
width: 41px;
height: 22px;
}
.weui-switch:before, .weui-switch-cp__box:before {
width: 40px;
height: 20px;
}
.weui-switch:after, .weui-switch-cp__box:after {
width: 20px;
height: 20px;
}
.f-toast{
z-index: 99;
position: fixed;
top: 48%;
left: 50%;
max-width: 80%;
min-width: 10.375rem;
padding: .78125rem .625rem .625rem;
border-radius: .3125rem;
-webkit-box-sizing: border-box;
box-sizing: border-box;
text-align: center;
background: rgba(51,51,51,.7);
color: #fff;
-webkit-transform: translate(-50%,-50%);
transform: translate(-50%,-50%);
}
.f-toast .f-toast-icon{
height: .96875rem;
margin-bottom: .71875rem;
}
.f-toast .f-toast-icon img{
width: auto;
height: 100%;
}
.f-popup{
z-index: 0;
position: fixed;
top: 0;
left: 0;
overflow: hidden;
width: 100%;
height: 100%;
background-color: rgba(0,0,0,.7);
}
.f-loading{
position: fixed;
z-index: 1;
top: 40%;
left: 37%;
padding: 1rem 1rem;
display: none;
border-radius: 5px;
background-color: #fff;
}
.loading-icon{
margin: 0 0 0 .8rem;
}
.loading-txt{
margin-top: .5rem;
}
</style>
</head>
<body>
<div class="container">
<!-- <div class="nuxt-progress"></div>-->
<input type="hidden" name="userAppId" id="userAppId" th:value="${userAppId}">
<div class="content">
<div class="account-con">
<div class="account-logo">
<img src="https://www.shouyinbei.net/resources/images/logo.png" alt="">
</div>
<div class="account-title">收款就用收银呗</div>
<div class="account-con-list">
<div class="account-list" th:each="user:${list}">
<div class="account-name" th:text="${user.alias}"></div>
<div class="account-operation">
<input class="weui-switch" onchange="setIsPushStatus(this)" th:value="${user.isPushWxMessage}" th:attr="data-mcode=${user.merchantCode},checked=${user.isPushWxMessage == '1' ? 'true' : 'false'}" type="checkbox"/>
</div>
</div>
</div>
<div class="account-button">
解绑
</div>
</div>
</div>
<div class="f-toast ellipsis" style="display: none">
<div class="f-toast-text"></div>
</div>
<div class="f-popup jsPop" style="display: none"></div>
<div class="f-loading">
<img src="/wap/resources/images/loading-2.gif" class="loading-icon" />
<div class="loading-txt">加载中...</div>
</div>
</div>
<script>
$(".account-button").click(function (event){
let $userAppId = $("#userAppId").val();
$(".jsPop").show();
$(".f-loading").show();
let $url = `/wap/merchant/account/unBind/${$userAppId}`;
$.post($url,function (res){
$(".jsPop").hide();
$(".f-loading").hide();
$(".f-toast").show().html(res.message);
if(res.code == 200){
let openid = res.data;
setTimeout(function (){
if(openid == "null" || !openid){
window.location.href = `/wap/merchant/account/auth`;
}else{
window.location.href = `/wap/merchant/account/bind?openId=${openid}`;
}
},500);
}
})
})
// function toLocation(openid){
// if(openid == "null" || !openid){
// window.location.href = `/wap/merchant/account/auth`;
// }else{
// window.location.href = `/wap/merchant/account/bind?openId=${openid}`;
// }
// }
function setIsPushStatus(obj){
$(".jsPop").show();
$(".f-loading").show();
let $val = obj.value == 1 ? 0 : 1;
let $userAppId = $("#userAppId").val();
let $merchantCode = $(obj).data("mcode");
$(obj).val($val);
let $url = `/wap/merchant/account/unBindSend`;
$.post($url,{"userAppId":$userAppId,"merchantCode":$merchantCode,"isPushWxMessage":$val},function (res){
$(".jsPop").hide();
$(".f-loading").hide();
$(".f-toast").show().html(res.message);
hideMsg();
})
}
function hideMsg(){
setTimeout(function (){
$(".f-toast").hide();
},1000);
}
</script>
</body>
</html>

View File

@@ -0,0 +1,55 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<title></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="">
<meta name="HandheldFriendly" content="true">
<meta name="format-detection" content="telephone=no">
<script src="/wap/resources/js/jquery.min.js"></script>
<script src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.min.js"></script>
</head>
<body>
<input type="hidden" id="orderNumber" name="orderNumber" th:value="${orderNumber}">
<input type="hidden" id="appId" name="appId" th:value="${appId}">
<script>
$(function() {
if (/AlipayClient/.test(window.navigator.userAgent)) {
// let $url = "/wap/aliPay/getAuthOpenId";
let orderNumber = $("#orderNumber").val();
let $payUrl = "/wap/aliPay/orderPay"
let $appid = $("#appId").val();
if(!$appid){
$appid = "2019092967932477";
}
ap.showLoading({
content: '加载中...'
});
ap.getAuthCode({
appId: $appid,
scopes: ['auth_base'],
}, function(res) {
let authCode = res.authCode;
$.post($payUrl,{"authCode":authCode,"orderNumber":orderNumber},function (res){
ap.hideLoading();
if(res.code != 200){
ap.alert({title: '提示',content: res.message,buttonText: '确定'});
return;
}else{
ap.tradePay({
tradeNO : res.data.source
}, function(res) {
AlipayJSBridge.call('closeWebview');
});
}
})
});
}
})
</script>
</body>
</html>

View File

@@ -0,0 +1,295 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
<meta content="yes" name="apple-mobile-web-app-capable">
<meta content="black" name="apple-mobile-web-app-status-bar-style">
<meta content="telephone=no" name="format-detection">
<meta content="email=no" name="format-detection">
<script src="https://www.shouyinbei.net/resources/js/alipayjsapi.min3.1.1.js"></script>
<title>向商户付款</title>
<style>
* {
padding: 0;
margin: 0;
}
html,body{
width:100%;
height:100%;
margin:0 auto;
padding:0px;
background-color:#EFEFF4;
}
.main{
margin: 0 .6rem;
background-color: #fff;
padding: 0 .8rem;
min-height: 20rem;
border-radius: 0 0 .2rem .2rem;
padding: .8rem;
}
.div-item{
display: flex;
justify-content: space-between;
line-height: 3rem;
}
.item-label{
color: #989898;
font-size: .8rem;
}
.item-hr{
border-bottom: 1px solid #e8e6e6;
}
.div-item-body{
text-align: center;
line-height: 2rem;
padding: 1.5rem 0;
}
.item-amt{
font-size: 32px;
}
.item-icon-item{
font-size: 20px;
}
.item-content{
height: 17rem;
}
.btn{
text-align: center;
}
.pay-btn{
height: 2.3rem;
width: 80%;
border: none;
border-radius: 5px;
background-color: #ff2d4b;
color: #fff;
}
.div-item-time{
text-align: center;
}
.item-label-name{
color: #666;
}
.times-item{
background-color: #ff2d4b;
padding: 0 4px;
color: #fff;
border-radius:4px;
}
.pay-btn:active{
background: #ff2d4b;
opacity: 0.5;
}
.disabled{
background-color: #ff2d4b61;
}
.shade{
display: none;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0,0,0,.1);
z-index: 1002;
overflow: auto;
}
.loading{
z-index: 10000;
position: absolute;
width: 100%;
display: none;
margin: 40px 0;
top: 30%;
}
.loading-body{
width: 30%;
text-align: center;
margin: 0 auto;
padding: .4rem 0;
background-color: #fff;
border-radius: 4px;
}
.loading-icon{
background-image: url(data:image/gif;base64,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);background-size:100% 100%;
height: 30px;
width: 30px;
margin: 10px auto;
}
</style>
</head>
<body>
<div class="body">
<div class="main">
<div class="item-content">
<div class="div-item">
<label class="item-label">商户</label>
<div class="item-name" th:text="${storeName}"></div>
</div>
<div class="item-hr"></div>
<div class="div-item">
<label class="item-label">订单总额</label>
<div class="item-name"><span th:text="${payAmt}"></span></div>
</div>
<div class="div-item-body">
<label class="item-label">您需要支付</label>
<div class="item-name item-amt"><span class="item-icon-item"></span><span th:text="${payAmt}"></span></div>
</div>
<div class="div-item-time">
<div class="times">
<input type="hidden" id="overtime">
<label class="item-label-name">支付剩余</label>
<span class="times-item minute" id="minute" th:text="${min}"></span> :
<span class="times-item second" id="second" th:text="${sec}"></span>
</div>
</div>
</div>
<div class="btn">
<button class="pay-btn" onclick="pay()">立即支付</button>
</div>
</div>
<div id='shade' class="shade"></div>
<div class="loading" id="loading">
<div class="loading-body">
<div class="loading-icon">
</div>
<div class="loading-msg">
支付中...
</div>
</div>
</div>
<input type="hidden" id="tk" th:value="${tk}">
<input type="hidden" id="userId" th:value="${userId}">
<input type="hidden" id="payWay" th:value="${payWay}">
</div>
</body>
<script src="/wap/resources/js/jquery.min.js"></script>
<script type="text/javascript">
(function (doc, win) {
var docEl = doc.documentElement,
resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
recalc = function () {
var clientWidth = docEl.clientWidth;
if (!clientWidth) return;
docEl.style.fontSize = 16 * (clientWidth / 320) + 'px';//其中“20”根据你设置的html的font-size属性值做适当的变化
};
if (!doc.addEventListener) return;
win.addEventListener(resizeEvt, recalc, false);
doc.addEventListener('DOMContentLoaded', recalc, false);
})(document, window);
</script>
<script>
let index = setInterval("countDown()",1000);
// tradePay();
let countDown = function (){
let minute = $("#minute").html();
let second = $("#second").html();
if(minute == "00" && second == "00"){
clearInterval(index);
disablePay();
}else{
if(second == "00"){
second = 59;
minute = parseInt(minute) - 1;
if(minute < 10){
minute = "0" + minute;
}
}else if(parseInt(second) <= 10){
second = "0"+(parseInt(second) - 1);
}else{
second = parseInt(second) - 1;
}
$("#minute").html(minute);
$("#second").html(second);
}
}
function disablePay(){
$(".pay-btn").addClass("disabled").removeAttr("onclick").attr("disabled",true);
}
let pay = function (){
tradePay();
}
function tradePay(){
let tk = $("#tk").val();
let userId = $("#userId").val();
let payWay = $("#payWay").val();
$("#shade").show();
$("#loading").show();
$.ajax({
url : '/wap/merchant/tradePay',
data : {
"tk" : tk,
"payWay" : payWay,
"userId" : userId
},
dataType : "json",
type : "post",
success : function(res) {
$("#shade").hide();
$("#loading").hide();
if (res.code == 200) {
var rdata = res.data;
if("WXZF" == payWay){
WeixinJSBridge.invoke('getBrandWCPayRequest', {
// 商品名称
"appId" : rdata.payAppId,
"timeStamp" : rdata.payTimeStamp,
"nonceStr" : rdata.paynonceStr,
"package" : rdata.payPackage,
"signType" : rdata.paySignType,
"paySign" : rdata.paySign,
}, function(res) {
if (res.err_msg == "get_brand_wcpay_request:ok" || res.err_msg == "stopMonitoringBeacons:ok") {
//成功之后跳转地址
window.location = '/wap/merchant/jumpUrl?orderNumber='+rdata.orderNumber;
} else {
cancelPay(rdata.orderNumber);
alert("支付失败");
}
})
}else if("ZFBZF" == payWay){
var reg=/^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\/])+$/;
if(reg.test(rdata.source)){
window.location = rdata.source;
}else{
ap.tradePay({
tradeNO : rdata.source
}, function(res) {
if (res.resultCode == '9000') {
window.location = '/wap/merchant/jumpUrl?orderNumber='+rdata.orderNumber;//订单支付成功
} else if (res.resultCode == '8000') {
} else if (res.resultCode == '4000') {
cancelPay(rdata.orderNumber);
ap.alert("订单支付失败");
} else if (res.resultCode == '6001' || res.resultCode == '99') {
cancelPay(rdata.orderNumber);
} else if (res.resultCode == '6002') {
cancelPay(rdata.orderNumber);
ap.alert("网络连接出错");
}
});
}
}else{
window.location = rdata.redirectUrl;
}
} else {
alert(res.message);
}
}
})
}
function cancelPay(m) {
var url = "/wap/merchant/cancelPay/"+m;
$.get(url, (res)=>{
console.log(res);
})
}
</script>
</html>

View File

@@ -0,0 +1,736 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
<meta content="yes" name="apple-mobile-web-app-capable">
<meta content="black" name="apple-mobile-web-app-status-bar-style">
<meta content="telephone=no" name="format-detection">
<meta content="email=no" name="format-detection">
<!-- <link rel="stylesheet" href="https://act.weixin.qq.com/static/cdn/css/wepayui/0.1.1/wepayui.min.css">-->
<script src="https://www.shouyinbei.net/resources/js/alipayjsapi.min3.1.1.js"></script>
<title>向商户付款</title>
<style>
* {
padding: 0;
margin: 0;
}
html,body{
width:100%;
height:100%;
margin:0 auto;
padding:0px;
background-color:#EFEFF4;
}
.payinfo{
display: block;
position: absolute;
bottom: 0;
height: 13rem;
width: 100%;
overflow: hidden;
transition: .4s;
}
table{
width:100%;
height: 91%;
bottom: 0;
background-color:white;
}
table tr{
height: 25%;
}
table tr td{
text-align:center;
width:24.9999999%;
border-right:1px solid #D9D9D9;
border-bottom:1px solid #D9D9D9;
}
table tr td:active{
background-color:#ECECEC;
}
.keybord-return,.keybord-stop{
width:30px;
height:30px;
margin:0px auto;
color:white;
}
.keybord-return{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAALpQTFRFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqyRq8wAAAD10Uk5TAAM/gJ+efz5Q2ddPAouKAZZ8nP0vrfcLN03+GcxYu9gSGkCBndobPbe8+QonMuCH7xOIW0fNtCwra4NgHN+ehK8AAAABYktHRACIBR1IAAAACXBIWXMAAABIAAAASABGyWs+AAAB4UlEQVR42u3c51LCQBiF4Y2IgDQVRcWCvffe9v5vS2FGhSH5kTLzney8zxWcd3ZD+BXnAAAAAAAAAAAAgFSiucp8daEWWe/Iq97wY4tN6yW5tNr+T6drvSa77pKfsGw9J7PWymSH761aDyqmw/s160XZTN+rkf669aYsZs7jx4b1qII6/Kb1qvRm79VIzXpWarHn4Qdb1ruK6fDb1rvSir9X3u9YD0sp4Tz8bst6WTEdwz3rZekk3avGvvUyOuiwR4cWOrTQoYUOLXRooUMLHVro0EKHFjq00KGFDi10aKFDCx1a6NBChxY6tNChhQ4tdIhpx3cMy9ZRD6QjaoTR4Q7CeD6cOwzjPJyrhnEezh3FhByfWK/KoBLK1TqNfdhLeCbRMJCfX9cM5IXoXCeUkqQ/jeV7TijRQ4keSvRQoocSPZTooUQPJXoo0UOJHkr0UKKHEj2U6KFEDyV6KNFDiR5K9FCihxI9lOgJpySUD04ml5yV7jPlSberfN8tTjiTc+tdRZVcXFrvSi/+dl1Zz8og9kyurVcVVVK6b2KPzd6uG+tJGc2cya31ooJK7u6tB2U2dbt65Xsf/ms9DH47+o/WY/J5eh5nDF5erZfk9vb+Ufn8sl4BAAAAAAAAAAAAY9/5YLt8mhkMlgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMC0wNy0wNFQxNTowMjo0OSswODowMMIgQKAAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjAtMDctMDRUMTU6MDI6NDkrMDg6MDCzffgcAAAAR3RFWHRzdmc6YmFzZS11cmkAZmlsZTovLy9ob21lL2FkbWluL2ljb24tZm9udC90bXAvaWNvbl91ZmVhaXVpd2lrZy9iYWNrLnN2Z4Ft+LMAAAAASUVORK5CYII=); background-size:100% 90%; }
.keybord-stop{background-image:url(data:image/png;base64,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); background-size:100% 100%;}
.pay{
color:#ffffff;
font-size:120%;
background-color:#df6051;
}
.pay:active{
/*background-color: #df6051;*/
background-color: rgba(223,96,81,0.7);
}
.shouyin{
text-align: center;
color: #9b9b9b;
font-size: 13px;
margin-bottom: 10px;
}
.logo{
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAD70lEQVRoQ9VaTYgURxT+Xm8w7PQs6CFgXDCXEAKeFHKLRKMo6HoSc0qmqlfxICSn/KCXmIMuiZ4UBEG3q+aokItKiGSTDZ5CIHtK9LAXhRVJDoZs9ywR7CfVuzPMzM5sV/X0MNt92Z7q9773vu2qej/VhIKuSIgDBO8AgEkCTybApLlfg1/ygCUGLSH9m8xVtZ4rwjQNAhLXgikQjgE8BWCHI9ZTgO6Cccevh3cddVvizgT4zJnqSqMRMFMA8O68hjv1aIGIw/FKJaRr1yIXTGsCkZTbx5iChJNpEL3tYsRalnnRI2/2JXFYVeqZjZ4VgVjK95hRJ+BdG9BBZRh4RISar9TvWViZBFZq0/sTSn7OAhrGc4+9D8frs79shL0hgUiIgECzw3DOFpPB01Wtw37yfQlEQnxJoG9tDQ1TjsFfVbX+rpeNngRiIU4CdGOYTrlj8ylf65vdeusIxEIcTffnTXnxlK/1vXbXOgiYrZKYHwBD2iYH/qfwIhPtbd9iOwisiOBsAr44sJ0hAnigc+M6nGmaaBEwEbYRxQtDC1JFkWJerFT93c2I3SLQkPJTZlwpys4wcYjwWUWpq8ZGi0Asgj9cchsC5l8yfi3C0THCBwzss8eiBV+He1oEIiEOEehHewAgYXwzUVfnXXT6yS7X5HmP8LULFoMPV7W+n76BhhCXGPS5C8Bo34CZOny5ovUXKYFYyMcAdroScJHPknWbQinaE1+rt6jxyfT77CUPsgx0BY/5ilb7XXSyZGMh/wewJUuuw4/E20uxCC4CfNZJkXC8otT3LjpZsrGUF8A4lyXX+ZxmDAENcM1F0dcqMw13wUun8cen38TYi6duelSnhpA/MWCKcdvrpq/VKVthF7lYSJODHbXVIWCOIiEfulRaDD5YVEeh29HVJgHfsSWQVm6RkP8RMGGr9IKwbZtS/7bLLwfBG+b3RBj+M8j4cym3bmE8t/WFgWVnAuDkiF+v/9DhqAlESH4bdLwh5Qlm3HIl4DSFDDgRPqooddvctxstatyBwKM8i7iJ/+faza4ug0WNZ/JIF3GebdQgJ4Q0kHmMDbsGWV4MhkP1XIHMOGViwbKU+4ogMKHUfCwkZ5Fd/5xmcqUSm4UAmVQijYI5krlN8AZWk7l0J8mRTo+aQEc6naegGTWBjoJmdRq5lZSjJdBVUq4FJKei/jWPdr0ehn+57xzrNUwq4iX8ty1Wz6I+R1vlfkJo9WdsjfeSI8Z1At6xwujXVjHKpW5sGQKlby2uLuYSN3ebc7DU7fUmiVIfcLSRKO8RU5NEqQ/5WmuizMesrelU5oPu9ghZ2k8NeoX5Un7s0S9fGdXnNq8Aors/k02FsxcAAAAASUVORK5CYII=);background-size:100% 100%;
width: 2.1875rem;
height: 2.1875rem;
}
.icon{
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAC7UlEQVRYR72WTWgTURDH/7ObJi1YENFT4kVtD/YgSMFaaOrbpfYgeElaURA8CIKKIAhCQYyCIAiC0KLgodBDwUqhiODB8N42RfFQEYoVBUGRCiKioPUjNbsjK4mk2ySbTTe+687O7/dm3hehiSOXy+20bXuEiAQzTwkhznpx1Cx+ET4FoKuMMSaEOF3ObIpAFfhfruM4l0zTzJQkmiIwNze3y7btKWbuXFNyoh/RaHRzb2/vT/db6AKWZd1h5tsAlgHcBZDwSHxLJBJbOjo68qELSCkniegwgC8A9gPYQETTzLypJNG0FkgpJ4joaNlsX2qadpCIttm2PQOglZlvGoZxMvRFqJQaB3DM229mzsVisaF8Pr8XwCHDMI6Evg2VUm6/j1fbzkR0Lx6PD5d6HqqAUuoWgBM+Z8n07OzscCaTcSrFNbwLlFKjAE75wGfa29uHu7u7f1etUCMnoWVZN5j5jM+/9wEMCSF+1YoLXAEp5XUiWnOmeyAPVlZWhgYHB7/7TTCQgFLqGoBzPkkftrW1pXt6er76wQMdREqpqwDO1ywnkdR1Pd3X1+ceRHWNuiogpbxCRCO1Mrp7nohSQohPdZGLQb4CUsrLRHTBJ+kjAGkhxIcg8JotyGazndFoNOLeap473ct44jhO2jTN90HhNQUsy3JX+pKmaYs1JOYLhUJqYGDgXSPwmgJKqSwAk5kPRCKRtxUknmmalurv73/TKLyqQPFFs1hK7DjOnpaWluWSBBEtMLO74F6vB15VQCl1EcC/Z5MbGIlEtjNza/GlkzIM49V64VUFpJRPiWi3F1AoFDbGYrF4Mpl8EQa8ooC3/EXQvOM4E5qmjQsh3KdWaGPNOVBefiKatG17zDTNx6ERPYkqCTwHMCqEcO/6po9VAm75w+xvPfarBJRS7hN6Rz0/BonRdf1jtYl5BThI4iCxuq53VZL4bwIAtgohlrzSlRbhviAzqydW1/XPyWRyoVKs73VcD2A9MX8AVWwjMF0q1kMAAAAASUVORK5CYII=);background-size:100% 100%;
width: .9375rem;
height: .9375rem;
}
.body{
padding: 2rem 1rem;
}
.store-info{
display: flex;
align-items: center;
}
.name{
margin-left: .5rem;
}
.main-amt{
height: 3rem;
padding: 1.2rem 0 0 0;
}
.amt-content {
display: flex;
background: #fff;
padding: .5rem 1rem;
border-radius: 4px;
height: 2.5rem;
font-size: 1.125rem;
}
.input-label {
flex: 1;
line-height: 2.5rem;
}
.input-box {
line-height: 2.5rem;
font-size: 1.5625rem;
color: #777;
}
.gb {
display: inline-block;
width: 2px;
height: 1.875rem;
margin-top: -6px;
background: #df6051;
vertical-align: middle;
animation: gb 1.3s infinite;
}
.money-input {
font-weight: bold;
color: #df6051;
}
@keyframes gb {
from {
opacity: 1;
} to {
opacity: 0;
}
}
.remark-info{
display: flex;
align-items: center;
font-size: 13px;
color: #9e9e9e;
}
.set-remark{
margin-left: 5px;
}
.main-title{
display: flex;
justify-content: space-between;
}
.shade{
display: none;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0,0,0,.1);
z-index: 1002;
overflow: auto;
}
.dialog{
z-index: 8888;
height: 13rem;
width: 100%;
position: absolute;
display: none;
top: 30%;
}
.dialog-content{
background: #fff;
border-radius: 10px;
padding: 10px 20px;
margin: 0 auto;
width: 60%;
box-shadow: 0px 0px 10px #686868
}
.btns{
padding: 0 0 0 5%;
}
.btn-cancel{
width: 48%;
height: 1.4rem;
border-radius: 20px;
border: none;
}
.btn-submit{
width: 45%;
height: 1.4rem;
border-radius: 20px;
border: none;
background-color: #df6051;
color: #fff;
}
.remark-text{
border: 1px solid #e4e0e0;
height: 6rem;
width: 100%;
}
.remark-body{
margin-top: 15px;
}
.loading{
z-index: 10000;
position: absolute;
width: 100%;
display: none;
margin: 40px 0;
}
.loading-body{
width: 30%;
text-align: center;
margin: 0 auto;
padding: .4rem 0;
background-color: #fff;
border-radius: 4px;
}
.loading-icon{
background-image: url(data:image/gif;base64,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);background-size:100% 100%;
height: 30px;
width: 30px;
margin: 10px auto;
}
.label{
text-align: center;
}
.inner-text{
color: #727272;
line-height: 1.2rem;
font-size: .78rem;
}
.label-txt{
text-align: center;
}
.desc-text{
margin-top: -0.5rem;
}
.footer-btn{
text-align: center;
margin-top: -0.50rem;
}
.crux-text{
color: #f73131;
font-weight: bold;
}
.crux-br{
display: inline-block;
width: 100%;
border-top: 1px solid #e4e4e4;
vertical-align: top;
margin-top: .3rem;
}
.footer-btn button{
background-color: #fff;
border: 1px solid #b2b2b2;
color: #5f5f5f;
/*vertical-align:bottom;*/
line-height: 1.50rem;
}
.footer-btn .success{
background-color: #df6051;
border: 0;
color: #fff;
}
.item{
display: flex;
justify-content: start;
align-items: center;
font-size: 15px;
}
.merc-label{
width: 35%;
color: #606060;
}
.item > input {
width: 65%;
height: 20px;
border: 0;
border-bottom: 1px solid #c5b6b6;
text-align: right;
outline: none;
}
.body-input{
line-height: 30px;
}
.dialog-desc{
line-height: 20px;
}
.dialog-desc-p{
font-size: 13px;
margin-top: 5px;
color: #df6051;
}
</style>
</head>
<body>
<div class="body">
<div class="main-title">
<div class="store-info">
<div class="logo"></div>
<div class="name" th:text="${storeName}"></div>
</div>
<div class="remark-info">
<div class="icon"></div>
<div class="set-remark" onclick="showRemarkDialog()">设置备注</div>
</div>
</div>
<div class="main-amt">
<div class="amt-content" onclick="showInput()">
<div class="input-label">金额</div>
<div class="input-box"><span class="money-input" name="comsumeMoney" id="comsumeMoney"></span> <span class="gb"></span></div>
</div>
</div>
</div>
<div class="payinfo" id="payinfo">
<div class="shouyin" onclick="showInput()">
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
</div>
<table cellspacing="0" cellpadding="0" id="table1">
<tr>
<td class="paynum" onclick="inputAmt(1)">1</td>
<td class="paynum" onclick="inputAmt(2)">2</td>
<td class="paynum" onclick="inputAmt(3)">3</td>
<td id="pay-return" onclick="inputAmt('del')"><div class="keybord-return"></div></td>
</tr>
<tr>
<td class="paynum" onclick="inputAmt(4)">4</td>
<td class="paynum" onclick="inputAmt(5)">5</td>
<td class="paynum" onclick="inputAmt(6)">6</td>
<td rowspan="3" class="pay" id="pay">支付</td>
</tr>
<tr>
<td class="paynum" onclick="inputAmt(7)">7</td>
<td class="paynum" onclick="inputAmt(8)">8</td>
<td class="paynum" onclick="inputAmt(9)">9</td>
</tr>
<tr>
<td id="pay-stop" onclick="hideInput()"><div class="keybord-stop"></div></td>
<td id="pay-zero" onclick="inputAmt(0)">0</td>
<td id="pay-float" onclick="inputAmt('.')">.</td>
</tr>
</table>
</div>
<div id='shade' class="shade"></div>
<div class="dialog" id="dialog">
<div class="dialog-content">
<div class="label">设置备注</div>
<div class="remark-body">
<textarea id="remark" class="remark-text"></textarea>
</div>
<div class="btns">
<button class="btn-cancel" onclick="hideRemarkDialog('cancel')">取消</button>
<button class="btn-submit" onclick="hideRemarkDialog('submit')">确定</button>
</div>
</div>
</div>
<div class="dialog dialog-txt" id="dialog-txt">
<div class="dialog-content">
<div class="label-txt">反诈中心提醒</div>
<span class="crux-br"></span>
<div class="desc-text">
<p class="inner-text">
<span class="crux-text">刷单返利</span>
<span class="crux-text">信用卡借呗提额</span>
<span class="crux-text">电商退款</span>
<span class="crux-text">网络贷款</span>
<span class="crux-text">赌博上分</span>
<span class="crux-text">投资理财</span>都是骗子,一旦付款资金无法追回,如果是以上情况切勿付款!
</p>
</div>
<span class="crux-br"></span>
<div class="footer-btn">
<button id="btn-success" class="btn-cancel">我已确认<span id="countDown">(<span id="second"></span>S)</span></button>
<button id="btn-cancel" onclick="hideDialog()" class="btn-cancel">取消支付</button>
</div>
</div>
</div>
<div class="dialog dialog-txt" id="dialog-info">
<div class="dialog-content">
<div class="label-txt">请确认收款方信息</div>
<span class="crux-br"></span>
<div class="desc-text body-input">
<div class="item">
<div class="merc-label">姓名:</div>
<input type="text" name="accountName" id="accountName" maxlength="20" autocomplete="off" value="" />
</div>
<div class="item">
<div class="merc-label">手机号:</div>
<input type="number" name="accountPhone" id="accountPhone" maxlength="11" autocomplete="off" value="" />
</div>
<div class="decs dialog-desc">
<p class="dialog-desc-p">若遇到诈骗,可再次扫码对商家进行投诉!</p>
</div>
</div>
<span class="crux-br"></span>
<div class="footer-btn">
<button class="btn-cancel success" id="submitPay">继续支付</button>
<button class="btn-cancel" onclick="hideInfoDialog()">取消</button>
</div>
</div>
</div>
<div class="loading" id="loading">
<div class="loading-body">
<div class="loading-icon">
</div>
<div class="loading-msg">
支付中...
</div>
</div>
</div>
<input type="hidden" id="p" th:value="${p}">
<input type="hidden" id="merchantCode" th:value="${merchantCode}">
<input type="hidden" id="token" th:value="${token}">
<input type="hidden" id="accountNameValue" th:value="${accountName}">
<input type="hidden" id="accountPhoneValue" th:value="${accountPhone}">
</body>
<script type="text/javascript">
(function (doc, win) {
var docEl = doc.documentElement,
resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
recalc = function () {
var clientWidth = docEl.clientWidth;
if (!clientWidth) return;
docEl.style.fontSize = 20 * (clientWidth / 320) + 'px';//其中“20”根据你设置的html的font-size属性值做适当的变化
};
if (!doc.addEventListener) return;
win.addEventListener(resizeEvt, recalc, false);
doc.addEventListener('DOMContentLoaded', recalc, false);
})(document, window);
</script>
<script>
document.getElementById("shade").style.display = "block";
document.getElementById("dialog-txt").style.display = "block";
let accName = document.getElementById("accountNameValue").value;
let accVal = document.getElementById("accountPhoneValue").value;
document.getElementById("accountName").setAttribute("placeholder",accName);
document.getElementById("accountPhone").setAttribute("placeholder",accVal);
var i = 5;
var flag = false;
var interval = null;
openCountDowm();
function openCountDowm(t){
i = t || i;
document.getElementById("second").innerText = i;
interval = setInterval("countDown()",1000);
}
function countDown(){
if(i <= 1){
clearInterval(interval);
document.getElementById("countDown").style.display = "none";
document.getElementById("btn-success").classList.add("success");
}
document.getElementById("second").innerText = --i;
}
function inputAmt(o){
var dom = document.getElementById('comsumeMoney');
var txt = dom.innerText;
if(!txt){
if(o === 'del' || o === '.'){
return;
}
}
if(o === '.' && txt.indexOf(".") > 0){
return;
}
if(o === 'del'){
txt = txt.slice(0,-1);
dom.innerText = txt
return;
}
if(txt.indexOf(".") > 0 ){
var v = txt.split(".")[1];
if(v && v.length > 1){
return;
}
}else{
if(txt.indexOf("0") == 0 && o !== '.'){
return;
}
}
txt = txt === "" ? o : txt + "" + o;
let max = 99999;
if(parseFloat(txt) > max){
return;
}
dom.innerText = txt;
}
function hideInput(){
var dom = document.getElementById('payinfo');
dom.style.height = '20px'
}
function showInput(){
var dom = document.getElementById('payinfo');
dom.style.height = '13rem'
}
function showRemarkDialog(){
var shape = document.getElementById('shade');
var dialog = document.getElementById('dialog');
shape.style.display = 'block';
dialog.style.display = 'block';
}
function hideRemarkDialog(t){
var shape = document.getElementById('shade');
var dialog = document.getElementById('dialog');
shape.style.display = 'none';
dialog.style.display = 'none';
if(t === 'cancel'){
document.getElementById('remark').value = "";
}
}
function hideInfoDialog(){
var dialog = document.getElementById('dialog-info');
dialog.style.display = 'none';
document.getElementById("accountName").value = "";
document.getElementById("accountPhone").value = "";
}
function hideDialog(){
clearInterval(interval);
var shape = document.getElementById('shade');
var dialog = document.getElementById('dialog-txt');
shape.style.display = 'none';
dialog.style.display = 'none';
}
function showDialog(){
var shape = document.getElementById('shade');
var dialog = document.getElementById('dialog-txt');
shape.style.display = 'block';
dialog.style.display = 'block';
}
document.getElementById("btn-success").onclick = () => {
if(i > 0){
return;
}
flag = true;
hideDialog();
}
document.getElementById("submitPay").onclick = ()=>{
let name = document.getElementById("accountName").value;
let phone = document.getElementById("accountPhone").value;
if(!name){
alert("请输入收款方姓名!");
return;
}
if(!phone){
alert("请输入收款方手机号!");
return;
}
var shape = document.getElementById('shade');
var loading = document.getElementById('loading');
shape.style.display = 'block';
loading.style.display = 'block';
var comsumeMoney = document.getElementById('comsumeMoney').innerText;
var p = document.getElementById("p").value;
var remark = document.getElementById("remark").value;
var merchantCode = document.getElementById("merchantCode").value;
var token = document.getElementById("token").value;
var params = "p="+p+"&comsumeMoney="+comsumeMoney+"&remark="+remark+ "&merchantCode="+merchantCode+"&token="+token+"&accountName="+name+"&accountPhone="+phone;
var url = "/wap/merchant/moveTradePay";
var xhr = new XMLHttpRequest();//创建请求对象
xhr.open("POST", url, true);//链接服务器
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {//请求已完成,且响应已就绪
shape.style.display = "none";
loading.style.display = "none";
if (xhr.status === 200) {//请求成功
var resultStr = xhr.responseText//获取结果
var resultObj = JSON.parse(resultStr);//解析数据
if (resultObj.code == 200) {
var rdata = resultObj.data;
if("WXZF" == rdata.payType){
WeixinJSBridge.invoke('getBrandWCPayRequest', {
// 商品名称
"appId" : rdata.payAppId,
"timeStamp" : rdata.payTimeStamp,
"nonceStr" : rdata.paynonceStr,
"package" : rdata.payPackage,
"signType" : rdata.paySignType,
"paySign" : rdata.paySign,
}, function(res) {
if (res.err_msg == "get_brand_wcpay_request:ok" || res.err_msg == "stopMonitoringBeacons:ok") {
//成功之后跳转地址
window.location = '/wap/merchant/jumpUrl?orderNumber='+rdata.orderNumber;
} else {
cancelPay(rdata.orderNumber);
alert("支付失败");
}
})
}else if("ZFBZF" == rdata.payType){
var reg=/^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\/])+$/;
if(reg.test(rdata.source)){
window.location = rdata.source;
}else{
ap.tradePay({
tradeNO : rdata.source
}, function(res) {
if (res.resultCode == '9000') {
window.location = '/wap/merchant/jumpUrl?orderNumber='+rdata.orderNumber; //订单支付成功
} else if (res.resultCode == '8000') {
} else if (res.resultCode == '4000') {
cancelPay(rdata.orderNumber);
ap.alert("订单支付失败");
} else if (res.resultCode == '6001' || res.resultCode == '99') {
cancelPay(rdata.orderNumber);
} else if (res.resultCode == '6002') {
cancelPay(rdata.orderNumber);
ap.alert("网络连接出错");
}
});
}
}else{
window.location = rdata.redirectUrl;
}
} else {
alert(resultObj.message);
}
}
else {
alert("错误码 : " + xhr.status);
}
}
}
xhr.send(params);//发送请求
}
document.getElementById("pay").onclick = ()=>{
var comsumeMoney = document.getElementById('comsumeMoney').innerText;
if(comsumeMoney == undefined || comsumeMoney == '' || comsumeMoney == null){
return;
}
if(!flag){
showDialog();
openCountDowm(5);
return;
}
document.getElementById('dialog-info').style.display = "block";
// var shape = document.getElementById('shade');
// var loading = document.getElementById('loading');
// shape.style.display = 'block';
// loading.style.display = 'block';
// var p = document.getElementById("p").value;
// var remark = document.getElementById("remark").value;
// var merchantCode = document.getElementById("merchantCode").value;
// var token = document.getElementById("token").value;
// var params = "p="+p+"&comsumeMoney="+comsumeMoney+"&remark="+remark+ "&merchantCode="+merchantCode+"&token="+token;
// var url = "/wap/merchant/moveTradePay";
// var xhr = new XMLHttpRequest();//创建请求对象
// xhr.open("POST", url, true);//链接服务器
// xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
// xhr.onreadystatechange = function () {
// if (xhr.readyState === 4) {//请求已完成,且响应已就绪
// shape.style.display = "none";
// loading.style.display = "none";
// if (xhr.status === 200) {//请求成功
// var resultStr = xhr.responseText//获取结果
// var resultObj = JSON.parse(resultStr);//解析数据
// if (resultObj.code == 200) {
// var rdata = resultObj.data;
// if("WXZF" == rdata.payType){
// WeixinJSBridge.invoke('getBrandWCPayRequest', {
// // 商品名称
// "appId" : rdata.payAppId,
// "timeStamp" : rdata.payTimeStamp,
// "nonceStr" : rdata.paynonceStr,
// "package" : rdata.payPackage,
// "signType" : rdata.paySignType,
// "paySign" : rdata.paySign,
// }, function(res) {
// if (res.err_msg == "get_brand_wcpay_request:ok" || res.err_msg == "stopMonitoringBeacons:ok") {
// //成功之后跳转地址
// window.location = '/wap/merchant/jumpUrl?orderNumber='+rdata.orderNumber;
// } else {
// cancelPay(rdata.orderNumber);
// alert("支付失败");
// }
// })
// }else if("ZFBZF" == rdata.payType){
// var reg=/^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\/])+$/;
// if(reg.test(rdata.source)){
// window.location = rdata.source;
// }else{
// ap.tradePay({
// tradeNO : rdata.source
// }, function(res) {
// if (res.resultCode == '9000') {
// window.location = '/wap/merchant/jumpUrl?orderNumber='+rdata.orderNumber; //订单支付成功
// } else if (res.resultCode == '8000') {
// } else if (res.resultCode == '4000') {
// cancelPay(rdata.orderNumber);
// ap.alert("订单支付失败");
// } else if (res.resultCode == '6001' || res.resultCode == '99') {
// cancelPay(rdata.orderNumber);
// } else if (res.resultCode == '6002') {
// cancelPay(rdata.orderNumber);
// ap.alert("网络连接出错");
// }
// });
// }
// }else{
// window.location = rdata.redirectUrl;
// }
// } else {
// alert(resultObj.message);
// }
// }
// else {
// alert("错误码 : " + xhr.status);
// }
// }
// }
// xhr.send(params);//发送请求
}
function cancelPay(m) {
var url = "/wap/merchant/cancelPay/"+m;
var xhr = new XMLHttpRequest();//创建请求对象
xhr.open("GET", url, true);//链接服务器
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function () {
}
xhr.send();
}
</script>
</html>

View File

@@ -0,0 +1,488 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
<meta content="yes" name="apple-mobile-web-app-capable">
<meta content="black" name="apple-mobile-web-app-status-bar-style">
<meta content="telephone=no" name="format-detection">
<meta content="email=no" name="format-detection">
<!-- <link rel="stylesheet" href="https://act.weixin.qq.com/static/cdn/css/wepayui/0.1.1/wepayui.min.css">-->
<script src="https://www.shouyinbei.net/resources/js/alipayjsapi.min3.1.1.js"></script>
<title>向商户付款</title>
<style>
* {
padding: 0;
margin: 0;
}
html,body{
width:100%;
height:100%;
margin:0 auto;
padding:0px;
background-color:#EFEFF4;
}
.payinfo{
display: block;
position: absolute;
bottom: 0;
height: 13rem;
width: 100%;
overflow: hidden;
transition: .4s;
}
table{
width:100%;
height: 91%;
bottom: 0;
background-color:white;
}
table tr{
height: 25%;
}
table tr td{
text-align:center;
width:24.9999999%;
border-right:1px solid #D9D9D9;
border-bottom:1px solid #D9D9D9;
}
table tr td:active{
background-color:#ECECEC;
}
.keybord-return,.keybord-stop{
width:30px;
height:30px;
margin:0px auto;
color:white;
}
.keybord-return{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAALpQTFRFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqyRq8wAAAD10Uk5TAAM/gJ+efz5Q2ddPAouKAZZ8nP0vrfcLN03+GcxYu9gSGkCBndobPbe8+QonMuCH7xOIW0fNtCwra4NgHN+ehK8AAAABYktHRACIBR1IAAAACXBIWXMAAABIAAAASABGyWs+AAAB4UlEQVR42u3c51LCQBiF4Y2IgDQVRcWCvffe9v5vS2FGhSH5kTLzney8zxWcd3ZD+BXnAAAAAAAAAAAAgFSiucp8daEWWe/Iq97wY4tN6yW5tNr+T6drvSa77pKfsGw9J7PWymSH761aDyqmw/s160XZTN+rkf669aYsZs7jx4b1qII6/Kb1qvRm79VIzXpWarHn4Qdb1ruK6fDb1rvSir9X3u9YD0sp4Tz8bst6WTEdwz3rZekk3avGvvUyOuiwR4cWOrTQoYUOLXRooUMLHVro0EKHFjq00KGFDi10aKFDCx1a6NBChxY6tNChhQ4tdIhpx3cMy9ZRD6QjaoTR4Q7CeD6cOwzjPJyrhnEezh3FhByfWK/KoBLK1TqNfdhLeCbRMJCfX9cM5IXoXCeUkqQ/jeV7TijRQ4keSvRQoocSPZTooUQPJXoo0UOJHkr0UKKHEj2U6KFEDyV6KNFDiR5K9FCihxI9lOgJpySUD04ml5yV7jPlSberfN8tTjiTc+tdRZVcXFrvSi/+dl1Zz8og9kyurVcVVVK6b2KPzd6uG+tJGc2cya31ooJK7u6tB2U2dbt65Xsf/ms9DH47+o/WY/J5eh5nDF5erZfk9vb+Ufn8sl4BAAAAAAAAAAAAY9/5YLt8mhkMlgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMC0wNy0wNFQxNTowMjo0OSswODowMMIgQKAAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjAtMDctMDRUMTU6MDI6NDkrMDg6MDCzffgcAAAAR3RFWHRzdmc6YmFzZS11cmkAZmlsZTovLy9ob21lL2FkbWluL2ljb24tZm9udC90bXAvaWNvbl91ZmVhaXVpd2lrZy9iYWNrLnN2Z4Ft+LMAAAAASUVORK5CYII=); background-size:100% 90%; }
.keybord-stop{background-image:url(data:image/png;base64,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); background-size:100% 100%;}
.pay{
color:#ffffff;
font-size:120%;
background-color:#df6051;
}
.pay:active{
/*background-color: #df6051;*/
background-color: rgba(223,96,81,0.7);
}
.shouyin{
text-align: center;
color: #9b9b9b;
font-size: 13px;
margin-bottom: 10px;
}
.logo{
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAD70lEQVRoQ9VaTYgURxT+Xm8w7PQs6CFgXDCXEAKeFHKLRKMo6HoSc0qmqlfxICSn/KCXmIMuiZ4UBEG3q+aokItKiGSTDZ5CIHtK9LAXhRVJDoZs9ywR7CfVuzPMzM5sV/X0MNt92Z7q9773vu2qej/VhIKuSIgDBO8AgEkCTybApLlfg1/ygCUGLSH9m8xVtZ4rwjQNAhLXgikQjgE8BWCHI9ZTgO6Cccevh3cddVvizgT4zJnqSqMRMFMA8O68hjv1aIGIw/FKJaRr1yIXTGsCkZTbx5iChJNpEL3tYsRalnnRI2/2JXFYVeqZjZ4VgVjK95hRJ+BdG9BBZRh4RISar9TvWViZBFZq0/sTSn7OAhrGc4+9D8frs79shL0hgUiIgECzw3DOFpPB01Wtw37yfQlEQnxJoG9tDQ1TjsFfVbX+rpeNngRiIU4CdGOYTrlj8ylf65vdeusIxEIcTffnTXnxlK/1vXbXOgiYrZKYHwBD2iYH/qfwIhPtbd9iOwisiOBsAr44sJ0hAnigc+M6nGmaaBEwEbYRxQtDC1JFkWJerFT93c2I3SLQkPJTZlwpys4wcYjwWUWpq8ZGi0Asgj9cchsC5l8yfi3C0THCBwzss8eiBV+He1oEIiEOEehHewAgYXwzUVfnXXT6yS7X5HmP8LULFoMPV7W+n76BhhCXGPS5C8Bo34CZOny5ovUXKYFYyMcAdroScJHPknWbQinaE1+rt6jxyfT77CUPsgx0BY/5ilb7XXSyZGMh/wewJUuuw4/E20uxCC4CfNZJkXC8otT3LjpZsrGUF8A4lyXX+ZxmDAENcM1F0dcqMw13wUun8cen38TYi6duelSnhpA/MWCKcdvrpq/VKVthF7lYSJODHbXVIWCOIiEfulRaDD5YVEeh29HVJgHfsSWQVm6RkP8RMGGr9IKwbZtS/7bLLwfBG+b3RBj+M8j4cym3bmE8t/WFgWVnAuDkiF+v/9DhqAlESH4bdLwh5Qlm3HIl4DSFDDgRPqooddvctxstatyBwKM8i7iJ/+faza4ug0WNZ/JIF3GebdQgJ4Q0kHmMDbsGWV4MhkP1XIHMOGViwbKU+4ogMKHUfCwkZ5Fd/5xmcqUSm4UAmVQijYI5krlN8AZWk7l0J8mRTo+aQEc6naegGTWBjoJmdRq5lZSjJdBVUq4FJKei/jWPdr0ehn+57xzrNUwq4iX8ty1Wz6I+R1vlfkJo9WdsjfeSI8Z1At6xwujXVjHKpW5sGQKlby2uLuYSN3ebc7DU7fUmiVIfcLSRKO8RU5NEqQ/5WmuizMesrelU5oPu9ghZ2k8NeoX5Un7s0S9fGdXnNq8Aors/k02FsxcAAAAASUVORK5CYII=);background-size:100% 100%;
width: 2.1875rem;
height: 2.1875rem;
}
.icon{
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAC7UlEQVRYR72WTWgTURDH/7ObJi1YENFT4kVtD/YgSMFaaOrbpfYgeElaURA8CIKKIAhCQYyCIAiC0KLgodBDwUqhiODB8N42RfFQEYoVBUGRCiKioPUjNbsjK4mk2ySbTTe+687O7/dm3hehiSOXy+20bXuEiAQzTwkhznpx1Cx+ET4FoKuMMSaEOF3ObIpAFfhfruM4l0zTzJQkmiIwNze3y7btKWbuXFNyoh/RaHRzb2/vT/db6AKWZd1h5tsAlgHcBZDwSHxLJBJbOjo68qELSCkniegwgC8A9gPYQETTzLypJNG0FkgpJ4joaNlsX2qadpCIttm2PQOglZlvGoZxMvRFqJQaB3DM229mzsVisaF8Pr8XwCHDMI6Evg2VUm6/j1fbzkR0Lx6PD5d6HqqAUuoWgBM+Z8n07OzscCaTcSrFNbwLlFKjAE75wGfa29uHu7u7f1etUCMnoWVZN5j5jM+/9wEMCSF+1YoLXAEp5XUiWnOmeyAPVlZWhgYHB7/7TTCQgFLqGoBzPkkftrW1pXt6er76wQMdREqpqwDO1ywnkdR1Pd3X1+ceRHWNuiogpbxCRCO1Mrp7nohSQohPdZGLQb4CUsrLRHTBJ+kjAGkhxIcg8JotyGazndFoNOLeap473ct44jhO2jTN90HhNQUsy3JX+pKmaYs1JOYLhUJqYGDgXSPwmgJKqSwAk5kPRCKRtxUknmmalurv73/TKLyqQPFFs1hK7DjOnpaWluWSBBEtMLO74F6vB15VQCl1EcC/Z5MbGIlEtjNza/GlkzIM49V64VUFpJRPiWi3F1AoFDbGYrF4Mpl8EQa8ooC3/EXQvOM4E5qmjQsh3KdWaGPNOVBefiKatG17zDTNx6ERPYkqCTwHMCqEcO/6po9VAm75w+xvPfarBJRS7hN6Rz0/BonRdf1jtYl5BThI4iCxuq53VZL4bwIAtgohlrzSlRbhviAzqydW1/XPyWRyoVKs73VcD2A9MX8AVWwjMF0q1kMAAAAASUVORK5CYII=);background-size:100% 100%;
width: .9375rem;
height: .9375rem;
}
.body{
padding: 2rem 1rem;
}
.store-info{
display: flex;
align-items: center;
}
.name{
margin-left: .5rem;
}
.main-amt{
height: 3rem;
padding: 1.2rem 0 0 0;
}
.amt-content {
display: flex;
background: #fff;
padding: .5rem 1rem;
border-radius: 4px;
height: 2.5rem;
font-size: 1.125rem;
}
.input-label {
flex: 1;
line-height: 2.5rem;
}
.input-box {
line-height: 2.5rem;
font-size: 1.5625rem;
color: #777;
}
.gb {
display: inline-block;
width: 2px;
height: 1.875rem;
margin-top: -6px;
background: #df6051;
vertical-align: middle;
animation: gb 1.3s infinite;
}
.money-input {
font-weight: bold;
color: #df6051;
}
@keyframes gb {
from {
opacity: 1;
} to {
opacity: 0;
}
}
.remark-info{
display: flex;
align-items: center;
font-size: 13px;
color: #9e9e9e;
}
.set-remark{
margin-left: 5px;
}
.main-title{
display: flex;
justify-content: space-between;
}
.shade{
display: none;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0,0,0,.1);
z-index: 1002;
overflow: auto;
}
.dialog{
z-index: 8888;
height: 13rem;
width: 100%;
position: absolute;
display: none;
}
.dialog-content{
background: #fff;
height: 11rem;
border-radius: 10px;
padding: 10px 20px;
margin: 0 auto;
width: 60%;
}
.btns{
padding: 0 0 0 5%;
}
.btn-cancel{
width: 45%;
height: 1.8rem;
border-radius: 20px;
border: none;
}
.btn-submit{
width: 45%;
height: 1.8rem;
border-radius: 20px;
border: none;
background-color: #df6051;
color: #fff;
}
.remark-text{
border: 1px solid #e4e0e0;
height: 6rem;
width: 100%;
}
.remark-body{
margin-top: 15px;
}
.loading{
z-index: 10000;
position: absolute;
width: 100%;
display: none;
margin: 40px 0;
}
.loading-body{
width: 30%;
text-align: center;
margin: 0 auto;
padding: .4rem 0;
background-color: #fff;
border-radius: 4px;
}
.loading-icon{
background-image: url(data:image/gif;base64,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);background-size:100% 100%;
height: 30px;
width: 30px;
margin: 10px auto;
}
</style>
</head>
<body>
<div class="body">
<div class="main-title">
<div class="store-info">
<div class="logo"></div>
<div class="name" th:text="${storeName}"></div>
</div>
<div class="remark-info">
<div class="icon"></div>
<div class="set-remark" onclick="showRemarkDialog()">设置备注</div>
</div>
</div>
<div class="main-amt">
<div class="amt-content" onclick="showInput()">
<div class="input-label">金额</div>
<div class="input-box"><span class="money-input" name="comsumeMoney" id="comsumeMoney"></span> <span class="gb"></span></div>
</div>
</div>
</div>
<div class="payinfo" id="payinfo">
<div class="shouyin" onclick="showInput()">
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
</div>
<table cellspacing="0" cellpadding="0" id="table1">
<tr>
<td class="paynum" onclick="inputAmt(1)">1</td>
<td class="paynum" onclick="inputAmt(2)">2</td>
<td class="paynum" onclick="inputAmt(3)">3</td>
<td id="pay-return" onclick="inputAmt('del')"><div class="keybord-return"></div></td>
</tr>
<tr>
<td class="paynum" onclick="inputAmt(4)">4</td>
<td class="paynum" onclick="inputAmt(5)">5</td>
<td class="paynum" onclick="inputAmt(6)">6</td>
<td rowspan="3" class="pay" id="pay">支付</td>
</tr>
<tr>
<td class="paynum" onclick="inputAmt(7)">7</td>
<td class="paynum" onclick="inputAmt(8)">8</td>
<td class="paynum" onclick="inputAmt(9)">9</td>
</tr>
<tr>
<td id="pay-stop" onclick="hideInput()"><div class="keybord-stop"></div></td>
<td id="pay-zero" onclick="inputAmt(0)">0</td>
<td id="pay-float" onclick="inputAmt('.')">.</td>
</tr>
</table>
</div>
<div id='shade' class="shade"></div>
<div class="dialog" id="dialog">
<div class="dialog-content">
<div class="label">设置备注</div>
<div class="remark-body">
<textarea id="remark" class="remark-text"></textarea>
</div>
<div class="btns">
<button class="btn-cancel" onclick="hideRemarkDialog('cancel')">取消</button>
<button class="btn-submit" onclick="hideRemarkDialog('submit')">确定</button>
</div>
</div>
</div>
<div class="loading" id="loading">
<div class="loading-body">
<div class="loading-icon">
</div>
<div class="loading-msg">
支付中...
</div>
</div>
</div>
<input type="hidden" id="merchantCode" th:value="${merchantCode}">
<input type="hidden" id="openid" th:value="${openid}">
<input type="hidden" id="userid" th:value="${userid}">
<input type="hidden" id="userAppId" th:value="${userAppId}">
<input type="hidden" id="storeId" th:value="${storeId}">
<input type="hidden" id="unionId" th:value="${unionId}">
<input type="hidden" id="payType" th:value="${payType}">
<input type="hidden" id="qrNo" th:value="${qrNo}">
<input type="hidden" id="channelVal" th:value="${channelVal}">
</body>
<script>
function inputAmt(o){
var dom = document.getElementById('comsumeMoney');
var txt = dom.innerText;
if(!txt){
if(o === 'del' || o === '.'){
return;
}
}
if(o === '.' && txt.indexOf(".") > 0){
return;
}
if(o === 'del'){
txt = txt.slice(0,-1);
dom.innerText = txt
return;
}
if(txt.indexOf(".") > 0 ){
var v = txt.split(".")[1];
if(v && v.length > 1){
return;
}
}else{
if(txt.indexOf("0") == 0 && o !== '.'){
return;
}
}
txt = txt === "" ? o : txt + "" + o;
let max = 99999;
if(parseFloat(txt) > max){
return;
}
dom.innerText = txt;
}
function hideInput(){
var dom = document.getElementById('payinfo');
dom.style.height = '20px'
}
function showInput(){
var dom = document.getElementById('payinfo');
dom.style.height = '13rem'
}
function showRemarkDialog(){
var shape = document.getElementById('shade');
var dialog = document.getElementById('dialog');
shape.style.display = 'block';
dialog.style.display = 'block';
}
function hideRemarkDialog(t){
var shape = document.getElementById('shade');
var dialog = document.getElementById('dialog');
shape.style.display = 'none';
dialog.style.display = 'none';
if(t === 'cancel'){
document.getElementById('remark').value = "";
}
}
document.getElementById("pay").onclick = ()=>{
var comsumeMoney = document.getElementById('comsumeMoney').innerText;
if(comsumeMoney == undefined || comsumeMoney == '' || comsumeMoney == null){
return;
}
var shape = document.getElementById('shade');
var loading = document.getElementById('loading');
shape.style.display = 'block';
loading.style.display = 'block';
var storeId = document.getElementById("storeId").value;
var openid = document.getElementById("openid").value;
var merchantCode = document.getElementById("merchantCode").value;
var remark = document.getElementById("remark").value;
var userId = document.getElementById("userid").value;
var unionId = document.getElementById("unionId").value;
var userAppId = document.getElementById("userAppId").value;
var payType = document.getElementById("payType").value;
var qrNo = document.getElementById("qrNo").value;
var channelVal = document.getElementById("channelVal").value;
var params = "storeId="+storeId + "&openid="+openid + "&merchantCode="+merchantCode +
"&remark="+remark + "&userId="+userId+"&unionId="+unionId +
"&userAppId="+userAppId +"&payWay="+payType+ "&comsumeMoney="+comsumeMoney;
if(qrNo){
params = params + "&snNo=" + qrNo;
}
if(channelVal){
params = params + "&channelVal=" + channelVal;
}
var url = "/wap/merchant/tradePay";
var xhr = new XMLHttpRequest();//创建请求对象
xhr.open("POST", url, true);//链接服务器
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {//请求已完成,且响应已就绪
shape.style.display = "none";
loading.style.display = "none";
if (xhr.status === 200) {//请求成功
var resultStr = xhr.responseText//获取结果
var resultObj = JSON.parse(resultStr);//解析数据
if (resultObj.code == 200) {
var rdata = resultObj.data;
if("WXZF" == payType){
WeixinJSBridge.invoke('getBrandWCPayRequest', {
// 商品名称
"appId" : rdata.payAppId,
"timeStamp" : rdata.payTimeStamp,
"nonceStr" : rdata.paynonceStr,
"package" : rdata.payPackage,
"signType" : rdata.paySignType,
"paySign" : rdata.paySign,
}, function(res) {
if (res.err_msg == "get_brand_wcpay_request:ok" || res.err_msg == "stopMonitoringBeacons:ok") {
//成功之后跳转地址
window.location = '/wap/merchant/jumpUrl?orderNumber='+rdata.orderNumber;
} else {
cancelPay(rdata.orderNumber);
alert("支付失败");
}
})
}else if("ZFBZF" == payType){
var reg=/^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\/])+$/;
if(reg.test(rdata.source)){
window.location = rdata.source;
}else{
ap.tradePay({
tradeNO : rdata.source
}, function(res) {
if (res.resultCode == '9000') {
window.location = '/wap/merchant/jumpUrl?orderNumber='+rdata.orderNumber; //订单支付成功
} else if (res.resultCode == '8000') {
} else if (res.resultCode == '4000') {
cancelPay(rdata.orderNumber);
ap.alert("订单支付失败");
} else if (res.resultCode == '6001' || res.resultCode == '99') {
cancelPay(rdata.orderNumber);
} else if (res.resultCode == '6002') {
cancelPay(rdata.orderNumber);
ap.alert("网络连接出错");
}
});
}
}else{
window.location = rdata.redirectUrl;
}
} else {
alert(resultObj.message);
}
}
else {
alert("错误码 : " + xhr.status);
}
}
}
xhr.send(params);//发送请求
}
function cancelPay(orderNumber) {
var url = "/wap/merchant/cancelPay/"+orderNumber;
var xhr = new XMLHttpRequest();//创建请求对象
xhr.open("GET", url, true);//链接服务器
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function () {
}
xhr.send();//发送请求
}
</script>
<script type="text/javascript">
(function (doc, win) {
var docEl = doc.documentElement,
resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
recalc = function () {
var clientWidth = docEl.clientWidth;
if (!clientWidth) return;
docEl.style.fontSize = 20 * (clientWidth / 320) + 'px';//其中“20”根据你设置的html的font-size属性值做适当的变化
};
if (!doc.addEventListener) return;
win.addEventListener(resizeEvt, recalc, false);
doc.addEventListener('DOMContentLoaded', recalc, false);
})(document, window);
</script>
</html>

View File

@@ -0,0 +1,484 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
<meta content="yes" name="apple-mobile-web-app-capable">
<meta content="black" name="apple-mobile-web-app-status-bar-style">
<meta content="telephone=no" name="format-detection">
<meta content="email=no" name="format-detection">
<!-- <link rel="stylesheet" href="https://act.weixin.qq.com/static/cdn/css/wepayui/0.1.1/wepayui.min.css">-->
<script src="https://www.shouyinbei.net/resources/js/alipayjsapi.min3.1.1.js"></script>
<title>向商户付款</title>
<style>
* {
padding: 0;
margin: 0;
}
html,body{
width:100%;
height:100%;
margin:0 auto;
padding:0px;
background-color:#EFEFF4;
}
.payinfo{
display: block;
position: absolute;
bottom: 0;
height: 13rem;
width: 100%;
overflow: hidden;
transition: .4s;
}
table{
width:100%;
height: 91%;
bottom: 0;
background-color:white;
}
table tr{
height: 25%;
}
table tr td{
text-align:center;
width:24.9999999%;
border-right:1px solid #D9D9D9;
border-bottom:1px solid #D9D9D9;
}
table tr td:active{
background-color:#ECECEC;
}
.keybord-return,.keybord-stop{
width:30px;
height:30px;
margin:0px auto;
color:white;
}
.keybord-return{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAALpQTFRFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqyRq8wAAAD10Uk5TAAM/gJ+efz5Q2ddPAouKAZZ8nP0vrfcLN03+GcxYu9gSGkCBndobPbe8+QonMuCH7xOIW0fNtCwra4NgHN+ehK8AAAABYktHRACIBR1IAAAACXBIWXMAAABIAAAASABGyWs+AAAB4UlEQVR42u3c51LCQBiF4Y2IgDQVRcWCvffe9v5vS2FGhSH5kTLzney8zxWcd3ZD+BXnAAAAAAAAAAAAgFSiucp8daEWWe/Iq97wY4tN6yW5tNr+T6drvSa77pKfsGw9J7PWymSH761aDyqmw/s160XZTN+rkf669aYsZs7jx4b1qII6/Kb1qvRm79VIzXpWarHn4Qdb1ruK6fDb1rvSir9X3u9YD0sp4Tz8bst6WTEdwz3rZekk3avGvvUyOuiwR4cWOrTQoYUOLXRooUMLHVro0EKHFjq00KGFDi10aKFDCx1a6NBChxY6tNChhQ4tdIhpx3cMy9ZRD6QjaoTR4Q7CeD6cOwzjPJyrhnEezh3FhByfWK/KoBLK1TqNfdhLeCbRMJCfX9cM5IXoXCeUkqQ/jeV7TijRQ4keSvRQoocSPZTooUQPJXoo0UOJHkr0UKKHEj2U6KFEDyV6KNFDiR5K9FCihxI9lOgJpySUD04ml5yV7jPlSberfN8tTjiTc+tdRZVcXFrvSi/+dl1Zz8og9kyurVcVVVK6b2KPzd6uG+tJGc2cya31ooJK7u6tB2U2dbt65Xsf/ms9DH47+o/WY/J5eh5nDF5erZfk9vb+Ufn8sl4BAAAAAAAAAAAAY9/5YLt8mhkMlgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMC0wNy0wNFQxNTowMjo0OSswODowMMIgQKAAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjAtMDctMDRUMTU6MDI6NDkrMDg6MDCzffgcAAAAR3RFWHRzdmc6YmFzZS11cmkAZmlsZTovLy9ob21lL2FkbWluL2ljb24tZm9udC90bXAvaWNvbl91ZmVhaXVpd2lrZy9iYWNrLnN2Z4Ft+LMAAAAASUVORK5CYII=); background-size:100% 90%; }
.keybord-stop{background-image:url(data:image/png;base64,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); background-size:100% 100%;}
.pay{
color:#ffffff;
font-size:120%;
background-color:#df6051;
}
.pay:active{
/*background-color: #df6051;*/
background-color: rgba(223,96,81,0.7);
}
.shouyin{
text-align: center;
color: #9b9b9b;
font-size: 13px;
margin-bottom: 10px;
}
.logo{
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAD70lEQVRoQ9VaTYgURxT+Xm8w7PQs6CFgXDCXEAKeFHKLRKMo6HoSc0qmqlfxICSn/KCXmIMuiZ4UBEG3q+aokItKiGSTDZ5CIHtK9LAXhRVJDoZs9ywR7CfVuzPMzM5sV/X0MNt92Z7q9773vu2qej/VhIKuSIgDBO8AgEkCTybApLlfg1/ygCUGLSH9m8xVtZ4rwjQNAhLXgikQjgE8BWCHI9ZTgO6Cccevh3cddVvizgT4zJnqSqMRMFMA8O68hjv1aIGIw/FKJaRr1yIXTGsCkZTbx5iChJNpEL3tYsRalnnRI2/2JXFYVeqZjZ4VgVjK95hRJ+BdG9BBZRh4RISar9TvWViZBFZq0/sTSn7OAhrGc4+9D8frs79shL0hgUiIgECzw3DOFpPB01Wtw37yfQlEQnxJoG9tDQ1TjsFfVbX+rpeNngRiIU4CdGOYTrlj8ylf65vdeusIxEIcTffnTXnxlK/1vXbXOgiYrZKYHwBD2iYH/qfwIhPtbd9iOwisiOBsAr44sJ0hAnigc+M6nGmaaBEwEbYRxQtDC1JFkWJerFT93c2I3SLQkPJTZlwpys4wcYjwWUWpq8ZGi0Asgj9cchsC5l8yfi3C0THCBwzss8eiBV+He1oEIiEOEehHewAgYXwzUVfnXXT6yS7X5HmP8LULFoMPV7W+n76BhhCXGPS5C8Bo34CZOny5ovUXKYFYyMcAdroScJHPknWbQinaE1+rt6jxyfT77CUPsgx0BY/5ilb7XXSyZGMh/wewJUuuw4/E20uxCC4CfNZJkXC8otT3LjpZsrGUF8A4lyXX+ZxmDAENcM1F0dcqMw13wUun8cen38TYi6duelSnhpA/MWCKcdvrpq/VKVthF7lYSJODHbXVIWCOIiEfulRaDD5YVEeh29HVJgHfsSWQVm6RkP8RMGGr9IKwbZtS/7bLLwfBG+b3RBj+M8j4cym3bmE8t/WFgWVnAuDkiF+v/9DhqAlESH4bdLwh5Qlm3HIl4DSFDDgRPqooddvctxstatyBwKM8i7iJ/+faza4ug0WNZ/JIF3GebdQgJ4Q0kHmMDbsGWV4MhkP1XIHMOGViwbKU+4ogMKHUfCwkZ5Fd/5xmcqUSm4UAmVQijYI5krlN8AZWk7l0J8mRTo+aQEc6naegGTWBjoJmdRq5lZSjJdBVUq4FJKei/jWPdr0ehn+57xzrNUwq4iX8ty1Wz6I+R1vlfkJo9WdsjfeSI8Z1At6xwujXVjHKpW5sGQKlby2uLuYSN3ebc7DU7fUmiVIfcLSRKO8RU5NEqQ/5WmuizMesrelU5oPu9ghZ2k8NeoX5Un7s0S9fGdXnNq8Aors/k02FsxcAAAAASUVORK5CYII=);background-size:100% 100%;
width: 2.1875rem;
height: 2.1875rem;
}
.icon{
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAC7UlEQVRYR72WTWgTURDH/7ObJi1YENFT4kVtD/YgSMFaaOrbpfYgeElaURA8CIKKIAhCQYyCIAiC0KLgodBDwUqhiODB8N42RfFQEYoVBUGRCiKioPUjNbsjK4mk2ySbTTe+687O7/dm3hehiSOXy+20bXuEiAQzTwkhznpx1Cx+ET4FoKuMMSaEOF3ObIpAFfhfruM4l0zTzJQkmiIwNze3y7btKWbuXFNyoh/RaHRzb2/vT/db6AKWZd1h5tsAlgHcBZDwSHxLJBJbOjo68qELSCkniegwgC8A9gPYQETTzLypJNG0FkgpJ4joaNlsX2qadpCIttm2PQOglZlvGoZxMvRFqJQaB3DM229mzsVisaF8Pr8XwCHDMI6Evg2VUm6/j1fbzkR0Lx6PD5d6HqqAUuoWgBM+Z8n07OzscCaTcSrFNbwLlFKjAE75wGfa29uHu7u7f1etUCMnoWVZN5j5jM+/9wEMCSF+1YoLXAEp5XUiWnOmeyAPVlZWhgYHB7/7TTCQgFLqGoBzPkkftrW1pXt6er76wQMdREqpqwDO1ywnkdR1Pd3X1+ceRHWNuiogpbxCRCO1Mrp7nohSQohPdZGLQb4CUsrLRHTBJ+kjAGkhxIcg8JotyGazndFoNOLeap473ct44jhO2jTN90HhNQUsy3JX+pKmaYs1JOYLhUJqYGDgXSPwmgJKqSwAk5kPRCKRtxUknmmalurv73/TKLyqQPFFs1hK7DjOnpaWluWSBBEtMLO74F6vB15VQCl1EcC/Z5MbGIlEtjNza/GlkzIM49V64VUFpJRPiWi3F1AoFDbGYrF4Mpl8EQa8ooC3/EXQvOM4E5qmjQsh3KdWaGPNOVBefiKatG17zDTNx6ERPYkqCTwHMCqEcO/6po9VAm75w+xvPfarBJRS7hN6Rz0/BonRdf1jtYl5BThI4iCxuq53VZL4bwIAtgohlrzSlRbhviAzqydW1/XPyWRyoVKs73VcD2A9MX8AVWwjMF0q1kMAAAAASUVORK5CYII=);background-size:100% 100%;
width: .9375rem;
height: .9375rem;
}
.body{
padding: 2rem 1rem;
}
.store-info{
display: flex;
align-items: center;
}
.name{
margin-left: .5rem;
}
.main-amt{
height: 3rem;
padding: 1.2rem 0 0 0;
}
.amt-content {
display: flex;
background: #fff;
padding: .5rem 1rem;
border-radius: 4px;
height: 2.5rem;
font-size: 1.125rem;
}
.input-label {
flex: 1;
line-height: 2.5rem;
}
.input-box {
line-height: 2.5rem;
font-size: 1.5625rem;
color: #777;
}
.gb {
display: inline-block;
width: 2px;
height: 1.875rem;
margin-top: -6px;
background: #df6051;
vertical-align: middle;
animation: gb 1.3s infinite;
}
.money-input {
font-weight: bold;
color: #df6051;
}
@keyframes gb {
from {
opacity: 1;
} to {
opacity: 0;
}
}
.remark-info{
display: flex;
align-items: center;
font-size: 13px;
color: #9e9e9e;
}
.set-remark{
margin-left: 5px;
}
.main-title{
display: flex;
justify-content: space-between;
}
.shade{
display: none;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0,0,0,.1);
z-index: 1002;
overflow: auto;
}
.dialog{
z-index: 8888;
height: 13rem;
width: 100%;
position: absolute;
display: none;
}
.dialog-content{
background: #fff;
height: 11rem;
border-radius: 10px;
padding: 10px 20px;
margin: 0 auto;
width: 60%;
}
.btns{
padding: 0 0 0 5%;
}
.btn-cancel{
width: 45%;
height: 1.8rem;
border-radius: 20px;
border: none;
}
.btn-submit{
width: 45%;
height: 1.8rem;
border-radius: 20px;
border: none;
background-color: #df6051;
color: #fff;
}
.remark-text{
border: 1px solid #e4e0e0;
height: 6rem;
width: 100%;
}
.remark-body{
margin-top: 15px;
}
.loading{
z-index: 10000;
position: absolute;
width: 100%;
display: none;
margin: 40px 0;
}
.loading-body{
width: 30%;
text-align: center;
margin: 0 auto;
padding: .4rem 0;
background-color: #fff;
border-radius: 4px;
}
.loading-icon{
background-image: url(data:image/gif;base64,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);background-size:100% 100%;
height: 30px;
width: 30px;
margin: 10px auto;
}
.dialog-confirm{
height:5rem;
}
.dialog-body{
text-align: center;
padding: 10px 0;
font-size: 17px;
}
.confirm-btn-div{
height: 1.5rem;
margin-top: 10px;
}
.confirm-btn{
height: 100%;
border-radius: 20px;
border: none;
}
</style>
</head>
<body>
<div class="body">
<div class="main-title">
<div class="store-info">
<div class="logo"></div>
<div class="name" th:text="测试门店"></div>
</div>
<div class="remark-info">
<div class="icon"></div>
<div class="set-remark" onclick="showRemarkDialog()">设置备注</div>
</div>
</div>
<div class="main-amt">
<div class="amt-content" onclick="showInput()">
<div class="input-label">金额</div>
<div class="input-box"><span class="money-input" name="comsumeMoney" id="comsumeMoney"></span> <span class="gb"></span></div>
</div>
</div>
</div>
<div class="payinfo" id="payinfo">
<div class="shouyin" onclick="showInput()">
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
</div>
<table cellspacing="0" cellpadding="0" id="table1">
<tr>
<td class="paynum" onclick="inputAmt(1)">1</td>
<td class="paynum" onclick="inputAmt(2)">2</td>
<td class="paynum" onclick="inputAmt(3)">3</td>
<td id="pay-return" onclick="inputAmt('del')"><div class="keybord-return"></div></td>
</tr>
<tr>
<td class="paynum" onclick="inputAmt(4)">4</td>
<td class="paynum" onclick="inputAmt(5)">5</td>
<td class="paynum" onclick="inputAmt(6)">6</td>
<td rowspan="3" class="pay" id="pay">支付</td>
</tr>
<tr>
<td class="paynum" onclick="inputAmt(7)">7</td>
<td class="paynum" onclick="inputAmt(8)">8</td>
<td class="paynum" onclick="inputAmt(9)">9</td>
</tr>
<tr>
<td id="pay-stop" onclick="hideInput()"><div class="keybord-stop"></div></td>
<td id="pay-zero" onclick="inputAmt(0)">0</td>
<td id="pay-float" onclick="inputAmt('.')">.</td>
</tr>
</table>
</div>
<div id='shade' class="shade"></div>
<div class="dialog" id="dialogConfirm">
<div class="dialog-content dialog-confirm">
<div class="remark-body">
<div class="dialog-body">确认支付吗?</div>
</div>
<div class="btns confirm-btn-div">
<button class="btn-cancel confirm-btn" onclick="confirmDialog('none','cancel')">取消</button>
<button class="btn-submit confirm-btn" onclick="confirmDialog('none','submit')">确定</button>
</div>
</div>
</div>
<div class="dialog" id="dialog">
<div class="dialog-content">
<div class="label">设置备注</div>
<div class="remark-body">
<textarea id="remark" class="remark-text"></textarea>
</div>
<div class="btns">
<button class="btn-cancel" onclick="hideRemarkDialog('cancel')">取消</button>
<button class="btn-submit" onclick="hideRemarkDialog('submit')">确定</button>
</div>
</div>
</div>
<div class="loading" id="loading">
<div class="loading-body">
<div class="loading-icon">
</div>
<div class="loading-msg">
支付中...
</div>
</div>
</div>
</body>
<script>
function inputAmt(o){
var dom = document.getElementById('comsumeMoney');
var txt = dom.innerText;
if(!txt){
if(o === 'del' || o === '.'){
return;
}
}
if(o === '.' && txt.indexOf(".") > 0){
return;
}
if(o === 'del'){
txt = txt.slice(0,-1);
dom.innerText = txt
return;
}
if(txt.indexOf(".") > 0 ){
var v = txt.split(".")[1];
if(v && v.length > 1){
return;
}
}else{
if(txt.indexOf("0") == 0 && o !== '.'){
return;
}
}
txt = txt === "" ? o : txt + "" + o;
let max = 99999;
if(parseFloat(txt) > max){
return;
}
dom.innerText = txt;
}
function hideInput(){
var dom = document.getElementById('payinfo');
dom.style.height = '20px'
}
function showInput(){
var dom = document.getElementById('payinfo');
dom.style.height = '13rem'
}
function showRemarkDialog(){
var shape = document.getElementById('shade');
var dialog = document.getElementById('dialog');
shape.style.display = 'block';
dialog.style.display = 'block';
}
function hideRemarkDialog(t){
var shape = document.getElementById('shade');
var dialog = document.getElementById('dialog');
shape.style.display = 'none';
dialog.style.display = 'none';
if(t === 'cancel'){
document.getElementById('remark').value = "";
}
}
function confirmDialog(type,op){
var shape = document.getElementById('shade');
var dialogConfirm = document.getElementById('dialogConfirm');
shape.style.display = type;
dialogConfirm.style.display = type;
if(op && op == "submit"){
tradePayTest();
}
if(op && op == "cancel"){
tradePayCancelTest();
}
}
document.getElementById("pay").onclick = ()=>{
let comsumeMoney = document.getElementById('comsumeMoney').innerText;
if(comsumeMoney == undefined || comsumeMoney == '' || comsumeMoney == null){
return;
}
confirmDialog("block");
}
function showLoading(type){
var shape = document.getElementById('shade');
var loading = document.getElementById('loading');
shape.style.display = type;
loading.style.display = type;
}
function tradePayTest(){
confirmDialog("none");
showLoading('block');
let comsumeMoney = document.getElementById('comsumeMoney').innerText;
let params = "comsumeMoney="+comsumeMoney;
var url = "/wap/merchant/tradePayTest";
var xhr = new XMLHttpRequest();//创建请求对象
xhr.open("POST", url, true);//链接服务器
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {//请求已完成,且响应已就绪
showLoading('none');
if (xhr.status === 200) {//请求成功
var resultStr = xhr.responseText//获取结果
var resultObj = JSON.parse(resultStr);//解析数据
if (resultObj.code == 200) {
alert(resultObj.data);
setTimeout(function (){
window.location = '/wap/merchant/jumpUrlTest';
},2000)
} else {
alert(resultObj.message);
}
}
else {
alert("错误码 : " + xhr.status);
}
}
}
xhr.send(params);//发送请求
}
function tradePayCancelTest() {
let comsumeMoney = document.getElementById('comsumeMoney').innerText;
var url = "/wap/merchant/cancelPayTest/"+comsumeMoney;
var xhr = new XMLHttpRequest();//创建请求对象
xhr.open("GET", url, true);//链接服务器
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {//请求已完成,且响应已就绪
if (xhr.status === 200) {//请求成功
var resultStr = xhr.responseText//获取结果
var resultObj = JSON.parse(resultStr);//解析数据
if (resultObj.code == 200) {
alert(resultObj.data);
} else {
alert(resultObj.message);
}
}
else {
alert("错误码 : " + xhr.status);
}
}
}
xhr.send();//发送请求
}
</script>
<script type="text/javascript">
(function (doc, win) {
var docEl = doc.documentElement,
resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
recalc = function () {
var clientWidth = docEl.clientWidth;
if (!clientWidth) return;
docEl.style.fontSize = 20 * (clientWidth / 320) + 'px';//其中“20”根据你设置的html的font-size属性值做适当的变化
};
if (!doc.addEventListener) return;
win.addEventListener(resizeEvt, recalc, false);
doc.addEventListener('DOMContentLoaded', recalc, false);
})(document, window);
</script>
</html>

View File

@@ -0,0 +1,254 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<title>新增代理</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="">
<meta name="HandheldFriendly" content="true">
<meta name="format-detection" content="telephone=no">
<link rel="stylesheet" href="/wap/resources/css/weui.css">
<link rel="stylesheet" href="/wap/resources/css/weuix.css">
<style>
body{
background-color: #f7f7f7;
}
.main{
color: #333;
padding: 0 10px 20px 10px;
background-color: #fff;
margin: 0 10px;
border-radius:5px;
}
.kaptcha{
width: 80px;
height: 32px;
}
/*.weui-cells_form{*/
/* height: 1.5rem;*/
/* line-height: normal;*/
/*}*/
.weui-toast weui_loading_toast weui-toast--visible{
padding: 10px 0;
}
.weui-icon_toast{
margin: 20px 0 0;
}
.weui-icon_toast.weui-loading{
margin: 15px 0 0 0;
}
.weui-cells_form_btn{
width: 80%;
margin: 0.8rem auto 0 auto;
}
.weui-btn_plain-primary{
box-sizing: border-box;
border: 1px solid #FF586A;
color: #FF586A;
}
</style>
</head>
<body>
<input type="hidden" id="token" name="token" th:value="${token}">
<input type="hidden" id="uid" name="uid" th:value="${uid}">
<div class="main">
<div class="weui-cells weui-cells_form bdbe" style="margin-top:10px;">
<div class="weui-cell weui-cell_warn">
<div class="weui-cell__hd"><span class="icon icon-90 f24"></span></div>
<div class="weui-cell__bd">
<input class="weui-input tleft pl10" id="phone" type="number" pattern="[0-9]*" value="weui input error" th:autocomplete="off" placeholder="注册手机号">
</div>
</div>
</div>
<div class="weui-cells weui-cells_form bdbe">
<div class="weui-cell weui-cell_warn">
<div class="weui-cell__hd"><span class="icon icon-71 f24"></span></div>
<div class="weui-cell__bd">
<input class="weui-input tleft pl10" id="validateCode" type="text" maxlength="4" value="" placeholder="图形验证码">
</div>
<div class="weui-cell__bd tright">
<img src="/wap/kaptcha/get" onclick="refreshKaptcha(this)" th:autocomplete="off" class="kaptcha dlblock white f12" />
</div>
</div>
</div>
<div class="weui-cells weui-cells_form bdbe">
<div class="weui-cell weui-cell_warn">
<div class="weui-cell__hd"><span class="icon icon-71 f24"></span></div>
<div class="weui-cell__bd">
<input class="weui-input tleft pl10" id="phoneverify" type="number" th:autocomplete="off" pattern="[0-9]*" value="weui input error" placeholder="验证码">
</div>
<div class="weui-cell__bd tright">
<a href="javascript:void(0);" onclick="verification()" id="obtain" th:autocomplete="off" class="weui-btn_primary radius5 pt10 pb10 pl10 pr10 dlblock white f12">获取验证码</a>
</div>
</div>
</div>
<div class="weui-cells weui-cells_form bdbe">
<div class="weui-cell weui-cell_warn">
<div class="weui-cell__hd"><span class="icon icon-31 f24"></span></div>
<div class="weui-cell__bd">
<input class="weui-input tleft pl10" type="password" id="password" th:autocomplete="off" maxlength="20" placeholder="6~20位登录密码">
</div>
</div>
</div>
<div class="weui-cells weui-cells_form bdbe">
<div class="weui-cell weui-cell_warn">
<div class="weui-cell__hd"><span class="icon icon-31 f24"></span></div>
<div class="weui-cell__bd pl10">
<input class="weui-input tleft" type="password" id="againPassword" th:autocomplete="off" maxlength="20" placeholder="确认登录密码"/>
</div>
</div>
</div>
<div class="weui-cells weui-cells_form">
<div class="weui-cell weui-cell_warn">
<div class="weui-cell__hd"><span class="icon icon-97 f24"></span></div>
<div class="weui-cell__bd pl10">
<input class="weui-input tleft" type="text" id="userNo" maxlength="50" th:autocomplete="off" onkeyup="value=value.replace(/[\u4e00-\u9fa5]/ig,'')" placeholder="用户编号(可选,例如:A1)"/>
</div>
</div>
</div>
<div class="weui-cells_form_btn">
<a href="javascript:;" class="weui-btn weui-btn_plain-primary" onclick="submitSave()">提交</a>
</div>
</div>
<script type="text/javascript" src="/wap/resources/js/jquery.min.js"></script>
<script type="text/javascript" src="/wap/resources/js/zepto.min.js"></script>
<script type="text/javascript" src="/wap/resources/js/zepto.weui.js"></script>
<script type="text/javascript" src="/wap/resources/js/common/h5.js"></script>
<script>
function verification() {
var phoneReg = /(^1[3|4|5|6|7|8|9]\d{9}$)|(^09\d{8}$)/;
var phone=$.trim($("#phone").val());
if (!phoneReg.test(phone)) {
$.alert("请输入正确的手机号","系统提示");
return;
}
var validateCode = $.trim($("#validateCode").val());
if(!validateCode){
$.alert("请输入图形验证码","系统提示");
return;
}
var href = 'javascript:void(0); onclick=verification()';
var _this = $("#obtain");
_this.removeAttr("href");
$.showLoading("获取中...");
$.ajax({
url:'/wap/vip/getPhoneCode',
data:{
"phone":phone,
"validateCode" : validateCode
},
dataType:"json",
type:"post",
success:function(data){
//成功
$.hideLoading();
if(data.code=='1'){
$.toast("短信验证码已发送至您的手机,请查收","text");
var sec = 60;
var timer = window.setInterval(function() {
sec--;
if (sec > 0) {
_this.text(sec + "秒重新发送!");
} else {
// 去掉定时器
window.clearInterval(timer);
_this.text("获取验证码");
_this.attr("href","javascript:void(0); onclick=verification()");
}
}, 1000);
}else if(data.code=='0'){
$.alert("获取验证码失败,请稍后再试","系统提示");
_this.text("获取验证码");
_this.attr("href",href);
}else if(data.code=='2'){
//系统错误
$.alert("系统繁忙!","系统提示");
_this.text("获取验证码");
_this.attr("href",href);
}else if(data.code=='3'){
$.alert("手机号已被注册!","系统提示");
_this.text("获取验证码");
_this.attr("href",href);
}else{
$.alert(data.msg,"系统提示");
_this.text("获取验证码");
_this.attr("href",href);
}
}
})
}
function refreshKaptcha(obj){
let url = $(obj).attr("src");
let time = new Date().getTime();
if(url.indexOf("?") > 0){
url = url.split("?")[0]
}
$(obj).attr("src",url+"?t="+ time);
}
function submitSave(){
let phone = $("#phone").val();
// let validateCode = $("#validateCode").val();
let phoneverify = $("#phoneverify").val();
let password = $("#password").val();
let againPassword = $("#againPassword").val();
let userNo = $("#userNo").val();
let uid = $("#uid").val();
if (!phone) {
$.alert("注册手机号不能为空!","系统提示");
return;
}
if (!phoneverify) {
$.alert("验证码不能为空!","系统提示");
return;
}
if (!password || !againPassword) {
$.alert("登录密码不能为空","系统提示");
return;
}
if (password.length < 6 || password.length > 20) {
$.alert("密码长度6到20位","系统提示");
return;
}
if(password != againPassword){
$.alert("两次的密码必须相同!","系统提示");
return;
}
$.showLoading("提交中...")
$.ajax({
url:'/wap/user/agent/save',
data:{
"phone":phone,
"phoneverify":phoneverify,
"password":password,
"userNo":userNo,
"userId":uid,
},
dataType:"json",
type:"post",
success:function(res){
$.hideLoading();
if(res.code == '200'){
window.location.href = "/wap/merchant/registerSuccess";
}else{
$.alert(res.message,"系统提示");
}
},
error:function(res){
$.hideLoading();
$.alert("系统繁忙,请稍后再试","系统提示");
},
})
}
</script>
</body>
</html>

View File

@@ -0,0 +1,137 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<title>直属代理列表</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="">
<meta name="HandheldFriendly" content="true">
<meta name="format-detection" content="telephone=no">
<link rel="stylesheet" href="/wap/resources/css/weui/weui.min.css">
<link rel="stylesheet" href="/wap/resources/css/weui/jquery-weui.min.css">
<!-- <script type="text/javascript" src="/wap/resources/js/common/h5.js"></script>-->
<style>
body{
background-color: #f7f7f7;
}
.container{
background-color: #f7f7f7;
width: 100%;
height:100%;
position: absolute;
padding:0px;
overflow: hidden;
color: #000;
}
.records-list{
height:100%;overflow:auto; z-index: 1;
background-color: #f7f7f7;
}
.weui-form-preview{
margin: 10px 0 0 0;
}
.br{
border-bottom: 1px solid #dcdbdbb8;
width: 100%;
height: 1px;
display: block;
margin: 0 auto;
}
</style>
</head>
<body>
<input type="hidden" id="token" th:value="${token}">
<div class="container">
<div class="list-main-mian infinite weui-pull-to-refresh records-list" id="listwrap">
<!--下拉刷新-->
<div class="weui-pull-to-refresh__layer" style="padding: 5px;">
<div class="weui-pull-to-refresh__arrow"></div>
<div class="weui-pull-to-refresh__preloader"></div>
<div class="down">下拉刷新</div>
<div class="up">释放刷新</div>
<div class="refresh">正在刷新</div>
</div>
<div class="weui-form-preview" id="Tolist">
<!--内容展示区域-->
</div>
<div class="weui-loadmore" style="padding-bottom:30px;height:20px">
<i class="weui-loading"></i>
<span class="weui-loadmore__tips">正在加载</span>
</div>
</div>
<!-- <a href="javascript:;" class="weui_btn weui_btn_primary">按钮</a>-->
</div>
<script type="text/javascript" src="/wap/resources/js/jquery.min.js"></script>
<script src="/wap/resources/js/weui/jquery-weui.min.js"></script>
<script>
var pages = 1;
var sizes = 10;
var loading = false; //状态标记
$(function () {
loadlist();
})
//=========================下拉刷新
$("#listwrap").pullToRefresh().on("pull-to-refresh", function () {
setTimeout(function () {
pages = 1;
$("#Tolist").html("");
loadlist();
if (loading) loading = false;
$("#listwrap").pullToRefreshDone(); // 重置下拉刷新
}, 1500); //模拟延迟
});
//============================滚动加载
$("#listwrap").infinite().on("infinite", function () {
if (loading) return;
loading = true;
pages++; //页数
$('.weui-loadmore').show();
setTimeout(function () {
loadlist();
loading = false;
}, 2500); //模拟延迟
});
// =======加载数据loadlist();
function loadlist() {
var html = "";
$.ajax({
type: "POST",
url: "/wap/user/agent/page",
data: { 'page': pages, 'size': sizes,'token':$("#token").val()},
dataType: "json",
error: function (request) {
$(".weui-loadmore").hide();
html += "<div class=\"weui-cells__title\" >已无更多数据</div>";
$("#Tolist").append(html);
},
success: function (data) {
if(data.code == 200){
if (data.data.records.length > 0) {
for (var i = 0; i < data.data.records.length; i++) {
html += ' <div class="weui-form-preview__bd"> ';
html += ' <div class="weui-form-preview__item"> ';
html += ' <label class="weui-form-preview__label">' + data.data.records[i].userName + '</label> ';
html += ' <div class="weui-form-preview__value">编号:' + (data.data.records[i].userNo == null ? "-" : data.data.records[i].userNo) + '</div> ';
html += ' </div> ';
html += ' </div> <span class="br"></span>';
}
$("#Tolist").append(html);
}
else {
html += "<div class=\"weui-cells__title\" >已无更多数据</div>";
$("#Tolist").append(html);
loading = true;
}
}else{
$.toast(data.message,"text");
}
$(".weui-loadmore").hide();
}
});
}
</script>
</body>
</html>