2020.02新版

This commit is contained in:
Blokura
2020-02-21 16:20:55 +08:00
parent 45e2415d71
commit a2f29a310b
755 changed files with 95144 additions and 0 deletions

122
paypage/js/common.js Normal file
View File

@@ -0,0 +1,122 @@
function getId(value){
return document.getElementById(value);
}
//ajax post
function Post(option){
var url = option.url || "";
var data = (function(){
var text = '';
if(option.data && option.data.constructor == Object){
var arr = [];
for(var key in option.data){
arr.push(key+'='+option.data[key]);
}
text = arr.join('&');
}
return text;
})();
var toJson = option.dataType == 'text' ? false : true;
var success = option.success || function(){};
var error = option.error || function(){};
var timeout = option.timeout || 30000;
var isTimeout = false;
var http = new XMLHttpRequest();
var timer = setTimeout(function(){
isTimeout = true;
http.abort();
error();
},timeout);
http.open("POST",url,true);
http.setRequestHeader("Content-type","application/x-www-form-urlencoded");
http.onreadystatechange = function(){
if(http.readyState != 4 || isTimeout){return;}
clearTimeout(timer);
if(http.status == 200){
var response = toJson ? JSON.parse(http.responseText) : http.responseText;
success(response);
}else{
error();
}
};
http.send(data);
}
//loading
function Loading(){
var obj = document.createElement('div');
var box = document.createElement('div');
var img = document.createElement('div');
var txt = document.createElement('p');
obj.className = 'circle-box none';
box.className = 'circle_animate';
img.className = 'circle';
box.appendChild(img);
box.appendChild(txt);
obj.appendChild(box);
if(script){
script.parentNode.insertBefore(obj,script);
}else{
document.body.appendChild(obj);
}
this.show = function(value){
txt.innerHTML = value || '加载中...';
obj.classList.remove('none');
};
this.hide = function(){
obj.classList.add('none');
txt.innerHTML = '';
};
}
//tips
function Tips(){
var obj = document.createElement('div');
var box = document.createElement('div');
var con = document.createElement('div');
var txt = document.createElement('div');
var p = document.createElement('p');
var btnBox = document.createElement('p');
var btn = document.createElement('span');
obj.className = 'pop_wrapper none';
box.className = 'pop_outer';
con.className = 'pop_cont';
txt.className = 'pop_tip';
p.className = 'border b_top';
btnBox.className = 'pop_wbtn';
btn.className='pop_btn'
btn.innerHTML = '我知道了';
p.appendChild(btn);
con.appendChild(txt);
con.appendChild(p);
box.appendChild(con);
obj.appendChild(box);
if(script){
script.parentNode.insertBefore(obj,script);
}else{
document.body.appendChild(obj);
}
function hideFun(){
obj.classList.add('none');
}
this.show = function(value,callback){
var fun = callback || hideFun;
txt.innerHTML = value || ' ';
p.onclick = callback || hideFun;
obj.classList.remove('none');
};
this.hide = hideFun;
}
document.body.addEventListener('touchstart',function(){},false);
var script = document.body.getElementsByTagName('script')[0];
var loading = new Loading();

7
paypage/js/hammer.js Normal file

File diff suppressed because one or more lines are too long

223
paypage/js/pay.js Normal file
View File

@@ -0,0 +1,223 @@
//insert
function keypress(e){
e.preventDefault();
var target = e.target;
var value = target.getAttribute('data-value');
var dot = valueCur.match(/\.\d{2,}$/);
if(!value || (value !== 'delete' && dot)){
return;
}
switch(value){
case '0' :
valueCur = valueCur === '0' ? valueCur : valueCur + value;
break;
case 'dot' :
valueCur = valueCur === '' ? valueCur : valueCur.indexOf('.') > -1 ? valueCur : valueCur + '.';
break;
case 'delete' :
valueCur = valueCur.slice(0,valueCur.length-1);
break;
default :
valueCur = valueCur === '0' ? value : valueCur + value;
}
if(!!valueCur && value !== 'delete' && value !== 'dot') {
var re = /^\d{1,9}(\.\d{0,2})?$/;
var limitLen = re.test(valueCur);
if (!limitLen) {
valueCur = valueCur.slice(0,valueCur.length-1);
return;
}
}
format();
}
//format
function format(){
var arr = valueCur.split('.');
var right = arr.length === 2 ? '.'+arr[1] : '';
var num = arr[0];
var left = '';
while(num.length > 3){
left = ',' + num.slice(-3) + left;
num = num.slice(0,num.length - 3);
}
left = num + left;
valueFormat = left+right;
valueFinal = valueCur === '' ? 0 : parseFloat(valueCur);
check();
}
//check
function check(){
amount.innerHTML = valueFormat;
if(valueFormat.length > 0){
clearBtn.classList.remove('none');
}else{
clearBtn.classList.add('none');
}
if(valueFinal === 0 || valueCur.match(/\.$/)){
payBtn.classList.add('disable');
}else{
payBtn.classList.remove('disable');
}
}
//clear
function clearFun(){
valueCur = '';
valueFormat = '';
valueFinal = 0;
amount.innerHTML = '';
clearBtn.classList.add('none');
payBtn.classList.add('disable');
}
//submit
function submitFun(){
if(!submitAble || payBtn.classList.contains('disable')){
return;
}
var txAmount = $("#txAmount").val();
if (!!txAmount && txAmount > 0) {
valueFinal = txAmount;
}
if(valueFinal == 0){
tips.show('请输入金额!');
return;
}
var amount = valueFinal;
var uid = $("#uid").val();
var paytype = $("#paytype").val();
var token = $("#token").val();
var direct = $("#direct").val();
var payer = $("#payer").val();
submitAble = false;
loading.show();
new Post({
url : 'ajax.php',
dataType : 'json',
data : {"money":amount,"payer":payer,"uid":uid,"paytype":paytype,"direct":direct,
"token":token},
error : function(){
loading.hide();
submitAble = true;
//update by yuwm 2018.03.14
tips.show('<span style="color:#959595;margin-top:5px">网络异常,请重新发起支付</span>');
},
success : function(data){
loading.hide();
if(data.code=="0"){//success
$("#trade_no").val(data.trade_no);
if (data.direct==1) {
if (paytype == 'wxpay') {
WxpayJsPay(data.paydata);
} else if (paytype == 'alipay') {
AlipayJsPay(data.paydata);
} else if (paytype == 'qqpay') {
QQJsPay(data.paydata);
}
}else{
window.location.href= data.url;
}
}else{
tips.show(data.msg);
}
submitAble = true;
}
});
}
//region WX JS
function WxpayJsPay(payStr){
var jsonPayStr = eval("("+payStr+")");
WeixinJSBridge.invoke(
'getBrandWCPayRequest',
jsonPayStr,
function(res){
// 使用以上方式判断前端返回,微信团队郑重提示res.err_msg将在用户支付成功后返回 ok但并不保证它绝对可靠。
if(res.err_msg == "get_brand_wcpay_request:ok" ) {
// 支付成功则关闭窗口
// tips.show("支付成功");
//WeixinJSBridge.call('closeWindow');
window.location.href="./success.php?trade_no="+$("#trade_no").val();
} else if(res.err_msg == "get_brand_wcpay_request:cancel") {
// tips.show("支付过程中用户取消");
} else if(res.err_msg == "get_brand_wcpay_request:fail") {
tips.show("支付失败");
}else{
tips.show("支付失败");
}
}
);
}
//endregion
//region ALI JS
function AlipayJsPay(payStr) {
var trade_no = $("#trade_no").val();
Alipayready(function(){
AlipayJSBridge.call("tradePay",{
tradeNO: payStr
}, function(result){
var msg = "";
if(result.resultCode == "9000"){
//AlipayJSBridge.call('closeWebview');
window.location.href="./success.php?trade_no="+$("#trade_no").val();
}else if(result.resultCode == "8000"){
msg = "正在处理中";
}else if(result.resultCode == "4000"){
msg = "订单支付失败";
}else if(result.resultCode == "6002"){
msg = "网络连接出错";
}
if (msg!="") {
tips.show(msg);
}
});
});
}
function Alipayready(callback) {
// 如果jsbridge已经注入则直接调用
if (window.AlipayJSBridge) {
callback && callback();
} else {
// 如果没有注入则监听注入的事件
document.addEventListener('AlipayJSBridgeReady', callback, false);
}
}
//endregion
//region QQ JS
function QQJsPay(payStr){
var trade_no = $("#trade_no").val();
var jsonPayStr = eval("("+payStr+")");
mqq.tenpay.pay({
tokenId: jsonPayStr.tokenId,
appInfo: "appid#"+jsonPayStr.appid+"|bargainor_id#"+jsonPayStr.bargainor_id+"|channel#wallet"
}, function(result, resultCode){
if(resultCode == 0){ //支付成功
//mqq.ui.popBack();
window.location.href="./success.php?trade_no="+$("#trade_no").val();
}else{
tips.show("支付失败");
}
});
}
//endregion
var keyboard = getId('keyboard');
var clearBtn = getId('clearBtn');
var payBtn = getId('payBtn');
var valueCur = '';
var valueFormat = '';
var submitAble = true;
var valueFinal = 0;
new Hammer(keyboard).on('tap',keypress);
new Hammer(payBtn).on('tap',submitFun);
new Hammer(clearBtn).on('tap',clearFun);