From afc9e30844b316d27571dae74dca7e0e8fbc7d2f Mon Sep 17 00:00:00 2001 From: liuqimichale <123456lq> Date: Fri, 29 May 2020 10:18:54 +0800 Subject: [PATCH] 银联支付 --- home.html | 6 +++--- js/common.js | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++---------- js/config.js | 8 ++++++-- js/pay.js | 168 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------------- js/url.js | 4 ++-- 5 files changed, 155 insertions(+), 91 deletions(-) diff --git a/home.html b/home.html index df439ae..62e5130 100644 --- a/home.html +++ b/home.html @@ -82,10 +82,10 @@ - - + + - + diff --git a/js/common.js b/js/common.js index d9db3e2..e588a44 100644 --- a/js/common.js +++ b/js/common.js @@ -73,7 +73,7 @@ function convertData(data) { // "id": "456" // }, // beforeSend: function () { -// //some js code +// //some js code // }, // success: function (msg) { // console.log(msg) @@ -91,7 +91,7 @@ function postRequest(url,params,successCallback, errorCallback) { dataType: "json", data: JSON.stringify(params), beforeSend: function () { - //some js code + //some js code }, success: function (msg) { successCallback(msg); @@ -111,7 +111,7 @@ function postRequest(url,params,successCallback, errorCallback) { /*获取URL?参数*/ function getQueryString(location) { - //var url = location.search; //获取url中"?"符后的字串 + //var url = location.search; //获取url中"?"符后的字串 var url = location.search; var theRequest = new Object(); if (url.indexOf("?") != -1) { @@ -163,19 +163,19 @@ function keepTwoDecimalFull(num) { return s_x; } -/** - * param 将要转为URL参数字符串的对象 - * key URL参数字符串的前缀 - * encode true/false 是否进行URL编码,默认为true - * - * return URL参数字符串 +/** + * param 将要转为URL参数字符串的对象 + * key URL参数字符串的前缀 + * encode true/false 是否进行URL编码,默认为true + * + * return URL参数字符串 */ var parseParams = function (data) { try { var tempArr = []; for (var i in data) { var key = (i); - var value = encodeURIComponent(data[i]);//decodeURIComponent + var value = encodeURIComponent(data[i]);//decodeURIComponent tempArr.push(key + '=' + value); } var urlParamsStr = tempArr.join('&'); @@ -285,4 +285,44 @@ function funcUrlDel(name) { return loca.href; } } +var userAgent = navigator.userAgent; +var isAndroid = userAgent.indexOf('Android') > -1 || userAgent.indexOf('Adr') > -1; //android终端 + +function utilParams(val,orderID,openId) { + var _orderTotalFee = Number($('#due').text())*100 //总金额 + var fee = $('#discountFee').text() + var _fee = fee.substring(0, fee.length - 1); + var _orderDicountFee = Number(_fee)*100 //优惠了多少钱 + var _orderActFee = _orderTotalFee - _orderDicountFee //实收多少钱 + var jsondata; + if(_orderDicountFee > 0){ + jsondata = { + orderBigType:100, + payOrderType:101, + rltOrderId:orderID, + payType:val, + terminalSource:7, + orderActFee:_orderActFee, + orderTotalFee:_orderTotalFee, + orderDicountFee:_orderDicountFee, + payUserId:openId, + terminalOS:isAndroid?'AND':'IOS', + couponType:1, //优惠类型 + couponCode:$('#discountBox').val(), + }; + }else{ + jsondata = { + orderBigType:100, + payOrderType:101, + rltOrderId:orderID, + payType:val, + terminalSource:7, + orderActFee:_orderActFee, + orderTotalFee:_orderTotalFee, + payUserId:openId, + terminalOS:isAndroid?'AND':'IOS', + }; + } + return jsondata +} diff --git a/js/config.js b/js/config.js index 3420ecd..6af912e 100644 --- a/js/config.js +++ b/js/config.js @@ -7,9 +7,9 @@ window.webAppH5 = {}; /*服务器地址*/ -var webAppRoot = "http://pay.service.huangshiparking.com"; +// var webAppRoot = "http://pay.service.huangshiparking.com"; //test 测试环境 -// var webAppRoot = "http://39.98.54.240:8090"; +var webAppRoot = "http://39.98.54.240:8090"; //微信支付结果回调地址 var webAppPayResult = "http://wxgzh.huangshiparking.com/HSwechat/PDA-Payment/wxpayResult.html"; @@ -50,6 +50,10 @@ webAppH5.useCouponQueryFee = "/keyTopQrCodeInOutPark/useCouponQueryFee"; webAppH5.zeroPayServer = "/appAccountPay/zeroPay"; +// 新接口银联 +webAppH5.doPay = "/unionpay/doPay"; + + diff --git a/js/pay.js b/js/pay.js index 504d1af..b15f0b9 100644 --- a/js/pay.js +++ b/js/pay.js @@ -1,8 +1,4 @@ -/* -@songcxa -@2018-12-14 -@移动支付 -*/ + var webAppParams = null; var $btnObj = null; var $btnLoad = null; @@ -298,21 +294,24 @@ var webAppClass = { console.log("aliPay"); //订单号 var obj = {}; + + var aliPay = webAppH5.doPay; + //this.payAjax(url, { orderId: "11111", price: 0.01 }); - var aliPay = webAppH5.aliPayServer; - var aliParams = webAppH5.comParams; - aliParams.orderId = orderID; - aliParams.carNumber = getQueryString(window.location).carnum; - aliParams.payType = 1;// 1:支付宝 2:微信 3:银联 10:H5 4微信公众号 - aliParams.terminalSource = 7;//请求端来源 1: 任你停 2:pda 3:微信公共号 7:H5扫码 10页面支付 - aliParams.paySrcType = getQueryString(window.location)._paySrcType;//101停车支付 - - aliParams.recordArreaInfos = JSON.stringify([{ - "orderId": webAppParams.orderId, - "orderNotPayFee": _mon * 100, - "parkId": getQueryString(window.location).parkCode - }]); - webAppClass.payAliAjax(root + aliPay, aliParams); + // var aliPay = webAppH5.aliPayServer; + // var aliParams = webAppH5.comParams; + // aliParams.orderId = orderID; + // aliParams.carNumber = getQueryString(window.location).carnum; + // aliParams.payType = 1;// 1:支付宝 2:微信 3:银联 10:H5 4微信公众号 + // aliParams.terminalSource = 7;//请求端来源 1: 任你停 2:pda 3:微信公共号 7:H5扫码 10页面支付 + // aliParams.paySrcType = getQueryString(window.location)._paySrcType;//101停车支付 + // + // aliParams.recordArreaInfos = JSON.stringify([{ + // "orderId": webAppParams.orderId, + // "orderNotPayFee": _mon * 100, + // "parkId": getQueryString(window.location).parkCode + // }]); + webAppClass.payAliAjax(root + aliPay, utilParams(1,orderID,'')); break; default://第三方浏览器other //默认支付宝 @@ -321,21 +320,22 @@ var webAppClass = { //订单号 var obj = {}; //this.payAjax(url, { orderId: "11111", price: 0.01 }); - var aliPay = webAppH5.aliPayServer; - var aliParams = webAppH5.comParams; - aliParams.orderId = orderID; - aliParams.carNumber = getQueryString(window.location).carnum; - aliParams.payType = 1;// 1:支付宝 2:微信 3:银联 10:H5 4微信公众号 - aliParams.terminalSource = 7;//请求端来源 1: 任你停 2:pda 3:微信公共号 7:H5扫码 10页面支付 - aliParams.paySrcType = getQueryString(window.location)._paySrcType;//101停车支付 - - aliParams.recordArreaInfos = JSON.stringify([{ - "orderId": webAppParams.orderId, - "orderNotPayFee": _mon * 100, - "parkId": getQueryString(window.location).parkCode - }]); - - webAppClass.payAliAjax(root + aliPay, aliParams); + var aliPay = webAppH5.doPay; + // var aliParams = webAppH5.comParams; + // aliParams.orderId = orderID; + // aliParams.carNumber = getQueryString(window.location).carnum; + // aliParams.payType = 1;// 1:支付宝 2:微信 3:银联 10:H5 4微信公众号 + // aliParams.terminalSource = 7;//请求端来源 1: 任你停 2:pda 3:微信公共号 7:H5扫码 10页面支付 + // aliParams.paySrcType = getQueryString(window.location)._paySrcType;//101停车支付 + // + // aliParams.recordArreaInfos = JSON.stringify([{ + // "orderId": webAppParams.orderId, + // "orderNotPayFee": _mon * 100, + // "parkId": getQueryString(window.location).parkCode + // }]); + + //webAppClass.payAliAjax(root + aliPay, aliParams); + webAppClass.payAliAjax(root + aliPay, utilParams(1,orderID,'')); } else {//微信页面支付 var url = " https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx20161110163838f231619da20804912345&package=1037687096"; //window.location.href = url; @@ -502,36 +502,45 @@ var webAppClass = { //} }, getPayParams: function (openId, orderID) { - var wxPay = window.webAppH5.wxPayServer; - var wxParams = window.webAppH5.comParams; - var _mon = document.getElementById("sumMoney").innerHTML - 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); - - - //新增start + // var wxPay = window.webAppH5.wxPayServer; + // var wxParams = window.webAppH5.comParams; + // var _mon = document.getElementById("sumMoney").innerHTML + // 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); + // + // + // //新增start + // + // + // wxParams.carNumber = getQueryString(window.location).carnum; + // + // wxParams.paySrcType = getQueryString(window.location)._paySrcType;//101停车支付 + // + // wxParams.recordArreaInfos = JSON.stringify([{ + // "orderId": webAppParams.orderId, + // "orderNotPayFee": _mon * 100, + // "parkId": getQueryString(window.location).parkCode + // }]); + // + // //新增end + // + // + // wxParams.openId = openId; + // wxParams.appId = appWxID; + // var payParamsUrl = webAppRoot + window.webAppH5.wxPayServer; + + + + var jsondata = utilParams(2,orderID,openId); + + + + var payParamsUrl = webAppRoot + window.webAppH5.doPay; - - wxParams.carNumber = getQueryString(window.location).carnum; - - wxParams.paySrcType = getQueryString(window.location)._paySrcType;//101停车支付 - - wxParams.recordArreaInfos = JSON.stringify([{ - "orderId": webAppParams.orderId, - "orderNotPayFee": _mon * 100, - "parkId": getQueryString(window.location).parkCode - }]); - - //新增end - - - wxParams.openId = openId; - wxParams.appId = appWxID; - var payParamsUrl = webAppRoot + window.webAppH5.wxPayServer; //alert(payParamsUrl);alert(orderID); - postRequest(payParamsUrl, wxParams, function (res) { + postRequest(payParamsUrl, jsondata, function (res) { $btnObj.style.display = "block"; $btnLoad.style.display = "none"; //debugger; @@ -539,7 +548,7 @@ var webAppClass = { //alertMsg("出场成功"); if (res.data) { var tmpObj = res.data; - webAppClass.weixinJSBridge(res.data); + webAppClass.weixinJSBridge(tmpObj); console.log(JSON.stringify(tmpObj)); //alert(JSON.stringify(tmpObj)); } else { @@ -560,18 +569,26 @@ var webAppClass = { }, //调用微信内置WeixinJSBridge对象发起支付 - weixinJSBridge: function (params) { + weixinJSBridge: function (data) { + var datas = JSON.parse(data.jsPayRequest); + //datas = JSON.parse(datas); + var timeStamp = datas.timeStamp; + var appId = datas.appId; + var nonceStr = datas.nonceStr; + var package = datas.package; + var paySign = datas.paySign; + var type = datas.signType; + function onBridgeReady() { WeixinJSBridge.invoke( - 'getBrandWCPayRequest', params, - //'getBrandWCPayRequest', { - // "appId": appWxID, //公众号名称,由商户传入 - // "timeStamp": "1395712654", //时间戳,自1970年以来的秒数 - // "nonceStr": "e61463f8efa94090b1f366cccfbbb444", //随机串 - // "package": "prepay_id=u802345jgfjsdfgsdg888", - // "signType": "MD5", //微信签名方式: - // "paySign": "70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信签名 - //}, + 'getBrandWCPayRequest', { + "appId":appId, //公众号名称,由商户传入 + "timeStamp":timeStamp, //时间戳,自1970年以来的秒数 + "nonceStr":nonceStr, //随机串 + "package":package, + "signType":type, //微信签名方式: + "paySign":paySign //微信签名 + }, function (res) { //alert(res.err_msg); if (res.err_msg == "get_brand_wcpay_request:ok") { @@ -612,12 +629,14 @@ var webAppClass = { //异步请求-支付宝 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);//打开支付表单 + window.location.href = res.data.h5PayRequest + //document.write(res.data.h5PayRequest);//打开支付表单 } else {//其他情况如【该卡号场内已存在】 console.log(res.message); alertMsg(res.message); @@ -664,6 +683,7 @@ var webAppClass = { $due.innerHTML = keepTwoDecimalFull((params.due / 100));//停车总费用 $paid.innerHTML = keepTwoDecimalFull(params.paid / 100); $discountFee.innerHTML = params.discountFee;//优惠金额 + // $discountDesc.innerHTML = params.discountDesc; } else { console.log("没有接受到参数"); diff --git a/js/url.js b/js/url.js index 4ca7c2e..11c77c2 100644 --- a/js/url.js +++ b/js/url.js @@ -89,9 +89,9 @@ mUrl.getJx = function(){ // var cepath = 'http://39.98.54.240:8090'; -var cepath = 'http://pay.service.huangshiparking.com'; +// var cepath = 'http://pay.service.huangshiparking.com'; // http://pay.service.renniting.cn -// var cepath = 'http://39.98.54.240:8090' +var cepath = 'http://39.98.54.240:8090' // http://app.api.dyszt.com:8090 // var cepath = 'http://app.api.dyszt.com:8090'; // https://pay.service.rnting.com//'http://47.96.41.38:8090'; -- libgit2 0.21.4