/* @songcxa @2018-12-14 @小票动态扫码移动支付 */ var webAppParams = null; var $btnObj = null; var $btnLoad = null; //var $btnLoad = document.getElementById("loading"); window.onload = function () { //var root = document.getElementById("root"); $btnObj = document.getElementById("btnPayOK"); $btnLoad = document.getElementById("loading"); $linkPayDetail = getObjectByID("linkPayDetail"); $linkPayDetail.onclick = webAppClass.linkPayDetailClick; var webRoot = window.location.href; //当前客户端浏览器模式[微信、支付宝、其他] webAppClass.clientBrowser(); //绑定事件 var ali = document.getElementById("rowAliPay"); var wx = document.getElementById("rowWxPay"); ali.onclick = webAppClass.aliClick; wx.onclick = webAppClass.wxClick; $btnObj.onclick = webAppClass.okClick; document.getElementById("payTip").innerHTML = ""; //参数 var tmpURLparams = getQueryString(window.location); if (tmpURLparams != null) { //设置UI参数 //webAppClass.setUI(webAppParams); webAppClass.init(tmpURLparams); } else { alertMsg("没有接收到url参数信息"); } } /**/ var webAppClass = { //appid={0}&lotId={1}&payConfigId={2}&receiptNo= init: function (params) { var urlParams = params; var newParams = urlParams || {}; $btnObj.style.display = "none"; $btnLoad.style.display = "block"; newParams.terminalSource = "7";//1:任你听 3:微信公共号 4:云平台 7:H5 //var tmpParams = Object.assign(params, window.webAppH5.comParams, window.webAppH5.appOut); newParams.parkingId = params.lotId; newParams.carNumber = params.receiptNo; var tmpParams = Object.assign(newParams, window.webAppH5.comParams, window.webAppH5.dynCode); this.initRequest(webAppRoot + window.webAppH5.comServer, tmpParams, "init"); }, initRequest: function (url, params, init) { var btnObj = $btnObj; postRequest(url, params, function (res) { btnObj.style.display = "block"; $btnLoad.style.display = "none"; if (res.code == 0) {//进场 //alertMsg("出场成功"); if (res.data) { var tmpObj = res.data; //判断是否需要支付 if (tmpObj.needPay) { //var queryParams = parseParams(tmpObj); //window.location.href = "../pay.html?" + queryParams; webAppParams = tmpObj; webAppClass.setUI(tmpObj); } else { var tipStr = "无需缴费,欢迎下次光临"; alertMsg(tipStr); } } else { alertMsg("没有找到订单"); } } else {//其他情况如【该卡号场内已存在】 console.log(res.message); alertMsg(res.message); if ((init) != "init") { alertMsg(res.message); } } }, function (err) { console.log("网络服务超时..." + url); alertMsg("网络服务超时"); btnObj.style.display = "block"; $btnLoad.style.display = "none"; }); }, //OK okClick: function (ev) { document.getElementById("payTip").innerHTML = ""; if (webAppParams == null) { alertMsg("暂无订单信息");return; } //先校验停车费用后缴费提交 webAppClass.checkParkCost(); }, //校验该订单当前支付时的费用(排除扫描订单后不支付时长) checkParkCost: function () { $btnObj.style.display = "none"; $btnLoad.style.display = "block"; if (typeof (webAppParams.queryOrderInfo) == "undefined") {//没有queryOrderInfo返回第一页 window.history.back(-1); } var tmpParams = JSON.parse(webAppParams.queryOrderInfo); var url = webAppRoot + window.webAppH5.comServer; postRequest(url, tmpParams, function (res) { //btnObj.style.display = "block"; //$btnLoad.style.display = "none"; //$btnObj.style.display = "block"; if (res.code == 0) {//进场 var tmpObj = res.data; if (tmpObj) { webAppClass.setUI(tmpObj); webAppParams = tmpObj;//重新赋值 webAppClass.okPay(tmpObj);//唤醒支付 } else { alertMsg("没有找到相应订单"); } } else {//其他情况如【该卡号场内已存在】 $btnLoad.style.display = "none"; $btnObj.style.display = "block"; console.log(res.message); alertMsg(res.message); } }, function (err) { console.log("网络服务超时..." + url); alertMsg("网络服务超时"); $btnLoad.style.display = "none"; $btnObj.style.display = "block"; //$btnLoad.style.display = "none"; }); }, //确定支付 okPay: function (params) { var orderID = params.orderId;//订单号 //var moneyID = document.getElementById("sumMoney").innerHTML = webAppParams.orderId;//订单号 var root = webAppRoot; //默认支付宝 if (document.getElementById("aliPay").checked) { console.log("aliPay"); //订单号 var obj = {}; //this.payAjax(url, { orderId: "11111", price: 0.01 }); var aliPay = webAppH5.aliPayServer; var aliParams = webAppH5.comParams; aliParams.orderId = orderID; aliParams.payType = 1;// 1:支付宝 2:微信 3:银联 10:H5 4微信公众号 aliParams.terminalSource = 7;//请求端来源 1: 任你停 2:pda 3:微信公共号 7:H5扫码 10页面支付 aliParams.paySrcType = 101;//101停车支付 webAppClass.payAliAjax(root + aliPay, aliParams); } else {//微信 var url = " https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx20161110163838f231619da20804912345&package=1037687096"; //window.location.href = url; var wxPay = webAppH5.wxPayServer; var wxParams = webAppH5.comParams; wxParams.orderId = orderID; wxParams.payType = 4;// 1:支付宝 2:微信 3:银联 10:H5 4微信公众号 wxParams.terminalSource = 7;//请求端来源 1: 任你停 2:pda 3:微信公共号 7:H5扫码 10页面支付 webAppClass.payAjax(root + wxPay, wxParams); console.log("wxPay"); } }, //Ali aliClick: function (ev) { console.log("AliClick"); document.getElementById("aliPay").checked = true; ev.preventDefault(); }, //Wx wxClick: function (ev) { console.log("wxClick"); document.getElementById("wxPay").checked = true; ev.preventDefault(); }, //浏览器 clientBrowser: function () { if (/MicroMessenger/.test(window.navigator.userAgent)) { console.log("微信客户端"); this.switchShow("wxPay"); } else if (/AlipayClient/.test(window.navigator.userAgent)) { console.log("支付宝客户端"); this.switchShow("aliPay"); } else { console.log("其他浏览器"); this.switchShow("other"); } }, //根据浏览器显示内容[aliPay、wxPay、other] switchShow: function (type) { var aliObj = document.getElementById("rowAliPay"); var wxObj = document.getElementById("rowWxPay"); var lineObj = document.getElementById("splitLine"); switch (type) { case "aliPay": lineObj.style.display = "none"; wxObj.style.display = "none"; document.getElementById("aliPay").checked = true; break; case "wxPay": lineObj.style.display = "none"; aliObj.style.display = "none"; document.getElementById("wxPay").checked = true; break; default://其他浏览器 break; } }, //异步请求-微信 payAjax: function (url, params) { var btnOBj = $btnObj; postRequest(url, params, function (res) { btnOBj.style.display = "block"; $btnLoad.style.display = "none"; //debugger; if (res.code == 0) {//进场 if (res.data) { var tmpObj = res.data; if (typeof (tmpObj.mwebUrl) != "undefined") { window.location.href = tmpObj.mwebUrl + "&redirect_url=" + webAppPayResult; } else { alertMsg("没有返回支付地址mwebUrl"); } console.log(JSON.stringify(tmpObj)); } else { alertMsg("没有找到返回值"); } } else {//其他情况如【该卡号场内已存在】 console.log(res.message); alertMsg(res.message); } }, function (err) { console.log("网络地址出错..."); alertMsg("网络地址出错..."); btnOBj.style.display = "block"; }); }, //异步请求-支付宝 payAliAjax: function (url, params) { var btnOBj = $btnObj; postRequest(url, params, function (res) { btnOBj.style.display = "block"; $btnLoad.style.display = "none"; if (res.code == 0) {//进场 document.write(res.data);//打开支付表单 } else {//其他情况如【该卡号场内已存在】 console.log(res.message); alertMsg(res.message); } }, function (err) { console.log("网络地址出错...");alertMsg("网络地址出错..."); $btnLoad.style.display = "none"; btnOBj.style.display = "block"; }); }, //设置UI setUI: function (params) { var $carNum = getObjectByID("carNum"),//车牌号 $orderNum = getObjectByID("orderNum"),//订单号 $sumMoney = getObjectByID("sumMoney"),//实际应付金额 $outtime = getObjectByID("outtime"),//实际出场时间 $payTip = getObjectByID("payTip"),//支付提示 $parkName = getObjectByID("parkName"),//车场名称 $inparktime = getObjectByID("inparktime"),//进场时间 $staytime = getObjectByID("staytime"),//停车时长 $due = getObjectByID("due"),//停车总费用 $paid = getObjectByID("paid"),//已支付金额 $discountDesc = getObjectByID("discountDesc"),//8折优惠折扣费用 $discountFee = getObjectByID("discountFee");//优惠金额 if (params != null && params!="") { var price = keepTwoDecimalFull((params.orderFee / 100));//(params.orderFee / 100); $carNum.innerHTML = params.plateno;//手机号 $orderNum.innerHTML = params.orderId;//订单号 $sumMoney.innerHTML = price;///params.orderFee//缴费金额 $outtime.innerHTML = params.outtime;//实际出场时间 //.appOrderTimeout $payTip.innerHTML = "注意: " + params.appOrderTimeout;//请在支付完成10分钟内出场,如超时未出场,会继续计费。 $parkName.innerHTML = params.parkName; $inparktime.innerHTML = params.inparktime; $staytime.innerHTML = formatSeconds(params.staytime); $due.innerHTML = keepTwoDecimalFull((params.due / 100));//停车总费用 $paid.innerHTML = params.paid; $discountFee.innerHTML = keepTwoDecimalFull((params.discountFee / 100));//优惠金额 $discountDesc.innerHTML = params.discountDesc; } else { console.log("没有接受到参数"); } }, //查看详情 linkPayDetailClick: function (ev) { var $payDetail = getObjectByID("payDetail"); var $linkPayDetail = getObjectByID("linkPayDetail"); if ($linkPayDetail.innerHTML == "详情+") { $linkPayDetail.innerHTML = "详情-"; $payDetail.style.height = "195px"; } else { $linkPayDetail.innerHTML = "详情+"; $payDetail.style.height = "55px"; } } }