pay/paypage/js/pay.js
2025-11-28 10:08:12 +08:00

229 lines
6.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//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();
var remark = document.querySelector("#remark-content").innerText;
submitAble = false;
loading.show();
new Post({
url : 'ajax.php',
dataType : 'json',
data : {"money":amount,"payer":payer,"uid":uid,"paytype":paytype,"direct":direct,"remark":remark,"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: jsonPayStr.appInfo
}, 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);
var txAmount = $("#txAmount").val();
if (!!txAmount && txAmount > 0) {
submitFun()
}