2020.02新版
This commit is contained in:
122
paypage/js/common.js
Normal file
122
paypage/js/common.js
Normal 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
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
223
paypage/js/pay.js
Normal 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);
|
||||
Reference in New Issue
Block a user