Commit afc9e30844b316d27571dae74dca7e0e8fbc7d2f
1 parent
5101e102
银联支付
Showing
5 changed files
with
155 additions
and
91 deletions
home.html
| ... | ... | @@ -82,10 +82,10 @@ |
| 82 | 82 | |
| 83 | 83 | |
| 84 | 84 | <script src="js/jquery-3.2.1.min.js"></script> |
| 85 | -<script src="js/config.js?v=0.1"></script> | |
| 86 | -<script src="js/common.js?v=1.11"></script> | |
| 85 | +<script src="js/config.js?c=1.1"></script> | |
| 86 | +<script src="js/common.js?b=2.11"></script> | |
| 87 | 87 | <!--<script src="js/jweixin-1.0.0.js?v=0.1"></script>--> |
| 88 | -<script src="js/pay.js?v=1.5120"></script> | |
| 88 | +<script src="js/pay.js?i=2.20"></script> | |
| 89 | 89 | </body> |
| 90 | 90 | |
| 91 | 91 | </html> | ... | ... |
js/common.js
| ... | ... | @@ -73,7 +73,7 @@ function convertData(data) { |
| 73 | 73 | // "id": "456" |
| 74 | 74 | // }, |
| 75 | 75 | // beforeSend: function () { |
| 76 | -// //some js code | |
| 76 | +// //some js code | |
| 77 | 77 | // }, |
| 78 | 78 | // success: function (msg) { |
| 79 | 79 | // console.log(msg) |
| ... | ... | @@ -91,7 +91,7 @@ function postRequest(url,params,successCallback, errorCallback) { |
| 91 | 91 | dataType: "json", |
| 92 | 92 | data: JSON.stringify(params), |
| 93 | 93 | beforeSend: function () { |
| 94 | - //some js code | |
| 94 | + //some js code | |
| 95 | 95 | }, |
| 96 | 96 | success: function (msg) { |
| 97 | 97 | successCallback(msg); |
| ... | ... | @@ -111,7 +111,7 @@ function postRequest(url,params,successCallback, errorCallback) { |
| 111 | 111 | |
| 112 | 112 | /*获取URL?参数*/ |
| 113 | 113 | function getQueryString(location) { |
| 114 | - //var url = location.search; //获取url中"?"符后的字串 | |
| 114 | + //var url = location.search; //获取url中"?"符后的字串 | |
| 115 | 115 | var url = location.search; |
| 116 | 116 | var theRequest = new Object(); |
| 117 | 117 | if (url.indexOf("?") != -1) { |
| ... | ... | @@ -163,19 +163,19 @@ function keepTwoDecimalFull(num) { |
| 163 | 163 | return s_x; |
| 164 | 164 | } |
| 165 | 165 | |
| 166 | -/** | |
| 167 | - * param 将要转为URL参数字符串的对象 | |
| 168 | - * key URL参数字符串的前缀 | |
| 169 | - * encode true/false 是否进行URL编码,默认为true | |
| 170 | - * | |
| 171 | - * return URL参数字符串 | |
| 166 | +/** | |
| 167 | + * param 将要转为URL参数字符串的对象 | |
| 168 | + * key URL参数字符串的前缀 | |
| 169 | + * encode true/false 是否进行URL编码,默认为true | |
| 170 | + * | |
| 171 | + * return URL参数字符串 | |
| 172 | 172 | */ |
| 173 | 173 | var parseParams = function (data) { |
| 174 | 174 | try { |
| 175 | 175 | var tempArr = []; |
| 176 | 176 | for (var i in data) { |
| 177 | 177 | var key = (i); |
| 178 | - var value = encodeURIComponent(data[i]);//decodeURIComponent | |
| 178 | + var value = encodeURIComponent(data[i]);//decodeURIComponent | |
| 179 | 179 | tempArr.push(key + '=' + value); |
| 180 | 180 | } |
| 181 | 181 | var urlParamsStr = tempArr.join('&'); |
| ... | ... | @@ -285,4 +285,44 @@ function funcUrlDel(name) { |
| 285 | 285 | return loca.href; |
| 286 | 286 | } |
| 287 | 287 | } |
| 288 | +var userAgent = navigator.userAgent; | |
| 289 | +var isAndroid = userAgent.indexOf('Android') > -1 || userAgent.indexOf('Adr') > -1; //android终端 | |
| 290 | + | |
| 291 | +function utilParams(val,orderID,openId) { | |
| 292 | + var _orderTotalFee = Number($('#due').text())*100 //总金额 | |
| 293 | + var fee = $('#discountFee').text() | |
| 294 | + var _fee = fee.substring(0, fee.length - 1); | |
| 295 | + var _orderDicountFee = Number(_fee)*100 //优惠了多少钱 | |
| 296 | + var _orderActFee = _orderTotalFee - _orderDicountFee //实收多少钱 | |
| 297 | + var jsondata; | |
| 298 | + if(_orderDicountFee > 0){ | |
| 299 | + jsondata = { | |
| 300 | + orderBigType:100, | |
| 301 | + payOrderType:101, | |
| 302 | + rltOrderId:orderID, | |
| 303 | + payType:val, | |
| 304 | + terminalSource:7, | |
| 305 | + orderActFee:_orderActFee, | |
| 306 | + orderTotalFee:_orderTotalFee, | |
| 307 | + orderDicountFee:_orderDicountFee, | |
| 308 | + payUserId:openId, | |
| 309 | + terminalOS:isAndroid?'AND':'IOS', | |
| 310 | + couponType:1, //优惠类型 | |
| 311 | + couponCode:$('#discountBox').val(), | |
| 312 | + }; | |
| 313 | + }else{ | |
| 314 | + jsondata = { | |
| 315 | + orderBigType:100, | |
| 316 | + payOrderType:101, | |
| 317 | + rltOrderId:orderID, | |
| 318 | + payType:val, | |
| 319 | + terminalSource:7, | |
| 320 | + orderActFee:_orderActFee, | |
| 321 | + orderTotalFee:_orderTotalFee, | |
| 322 | + payUserId:openId, | |
| 323 | + terminalOS:isAndroid?'AND':'IOS', | |
| 324 | + }; | |
| 325 | + } | |
| 326 | + return jsondata | |
| 327 | +} | |
| 288 | 328 | ... | ... |
js/config.js
| ... | ... | @@ -7,9 +7,9 @@ window.webAppH5 = {}; |
| 7 | 7 | |
| 8 | 8 | |
| 9 | 9 | /*服务器地址*/ |
| 10 | -var webAppRoot = "http://pay.service.huangshiparking.com"; | |
| 10 | +// var webAppRoot = "http://pay.service.huangshiparking.com"; | |
| 11 | 11 | //test 测试环境 |
| 12 | -// var webAppRoot = "http://39.98.54.240:8090"; | |
| 12 | +var webAppRoot = "http://39.98.54.240:8090"; | |
| 13 | 13 | //微信支付结果回调地址 |
| 14 | 14 | var webAppPayResult = "http://wxgzh.huangshiparking.com/HSwechat/PDA-Payment/wxpayResult.html"; |
| 15 | 15 | |
| ... | ... | @@ -50,6 +50,10 @@ webAppH5.useCouponQueryFee = "/keyTopQrCodeInOutPark/useCouponQueryFee"; |
| 50 | 50 | webAppH5.zeroPayServer = "/appAccountPay/zeroPay"; |
| 51 | 51 | |
| 52 | 52 | |
| 53 | +// 新接口银联 | |
| 54 | +webAppH5.doPay = "/unionpay/doPay"; | |
| 55 | + | |
| 56 | + | |
| 53 | 57 | |
| 54 | 58 | |
| 55 | 59 | ... | ... |
js/pay.js
| 1 | -/* | |
| 2 | -@songcxa | |
| 3 | -@2018-12-14 | |
| 4 | -@移动支付 | |
| 5 | -*/ | |
| 1 | + | |
| 6 | 2 | var webAppParams = null; |
| 7 | 3 | var $btnObj = null; |
| 8 | 4 | var $btnLoad = null; |
| ... | ... | @@ -298,21 +294,24 @@ var webAppClass = { |
| 298 | 294 | console.log("aliPay"); |
| 299 | 295 | //订单号 |
| 300 | 296 | var obj = {}; |
| 297 | + | |
| 298 | + var aliPay = webAppH5.doPay; | |
| 299 | + | |
| 301 | 300 | //this.payAjax(url, { orderId: "11111", price: 0.01 }); |
| 302 | - var aliPay = webAppH5.aliPayServer; | |
| 303 | - var aliParams = webAppH5.comParams; | |
| 304 | - aliParams.orderId = orderID; | |
| 305 | - aliParams.carNumber = getQueryString(window.location).carnum; | |
| 306 | - aliParams.payType = 1;// 1:支付宝 2:微信 3:银联 10:H5 4微信公众号 | |
| 307 | - aliParams.terminalSource = 7;//请求端来源 1: 任你停 2:pda 3:微信公共号 7:H5扫码 10页面支付 | |
| 308 | - aliParams.paySrcType = getQueryString(window.location)._paySrcType;//101停车支付 | |
| 309 | - | |
| 310 | - aliParams.recordArreaInfos = JSON.stringify([{ | |
| 311 | - "orderId": webAppParams.orderId, | |
| 312 | - "orderNotPayFee": _mon * 100, | |
| 313 | - "parkId": getQueryString(window.location).parkCode | |
| 314 | - }]); | |
| 315 | - webAppClass.payAliAjax(root + aliPay, aliParams); | |
| 301 | + // var aliPay = webAppH5.aliPayServer; | |
| 302 | + // var aliParams = webAppH5.comParams; | |
| 303 | + // aliParams.orderId = orderID; | |
| 304 | + // aliParams.carNumber = getQueryString(window.location).carnum; | |
| 305 | + // aliParams.payType = 1;// 1:支付宝 2:微信 3:银联 10:H5 4微信公众号 | |
| 306 | + // aliParams.terminalSource = 7;//请求端来源 1: 任你停 2:pda 3:微信公共号 7:H5扫码 10页面支付 | |
| 307 | + // aliParams.paySrcType = getQueryString(window.location)._paySrcType;//101停车支付 | |
| 308 | + // | |
| 309 | + // aliParams.recordArreaInfos = JSON.stringify([{ | |
| 310 | + // "orderId": webAppParams.orderId, | |
| 311 | + // "orderNotPayFee": _mon * 100, | |
| 312 | + // "parkId": getQueryString(window.location).parkCode | |
| 313 | + // }]); | |
| 314 | + webAppClass.payAliAjax(root + aliPay, utilParams(1,orderID,'')); | |
| 316 | 315 | break; |
| 317 | 316 | default://第三方浏览器other |
| 318 | 317 | //默认支付宝 |
| ... | ... | @@ -321,21 +320,22 @@ var webAppClass = { |
| 321 | 320 | //订单号 |
| 322 | 321 | var obj = {}; |
| 323 | 322 | //this.payAjax(url, { orderId: "11111", price: 0.01 }); |
| 324 | - var aliPay = webAppH5.aliPayServer; | |
| 325 | - var aliParams = webAppH5.comParams; | |
| 326 | - aliParams.orderId = orderID; | |
| 327 | - aliParams.carNumber = getQueryString(window.location).carnum; | |
| 328 | - aliParams.payType = 1;// 1:支付宝 2:微信 3:银联 10:H5 4微信公众号 | |
| 329 | - aliParams.terminalSource = 7;//请求端来源 1: 任你停 2:pda 3:微信公共号 7:H5扫码 10页面支付 | |
| 330 | - aliParams.paySrcType = getQueryString(window.location)._paySrcType;//101停车支付 | |
| 331 | - | |
| 332 | - aliParams.recordArreaInfos = JSON.stringify([{ | |
| 333 | - "orderId": webAppParams.orderId, | |
| 334 | - "orderNotPayFee": _mon * 100, | |
| 335 | - "parkId": getQueryString(window.location).parkCode | |
| 336 | - }]); | |
| 337 | - | |
| 338 | - webAppClass.payAliAjax(root + aliPay, aliParams); | |
| 323 | + var aliPay = webAppH5.doPay; | |
| 324 | + // var aliParams = webAppH5.comParams; | |
| 325 | + // aliParams.orderId = orderID; | |
| 326 | + // aliParams.carNumber = getQueryString(window.location).carnum; | |
| 327 | + // aliParams.payType = 1;// 1:支付宝 2:微信 3:银联 10:H5 4微信公众号 | |
| 328 | + // aliParams.terminalSource = 7;//请求端来源 1: 任你停 2:pda 3:微信公共号 7:H5扫码 10页面支付 | |
| 329 | + // aliParams.paySrcType = getQueryString(window.location)._paySrcType;//101停车支付 | |
| 330 | + // | |
| 331 | + // aliParams.recordArreaInfos = JSON.stringify([{ | |
| 332 | + // "orderId": webAppParams.orderId, | |
| 333 | + // "orderNotPayFee": _mon * 100, | |
| 334 | + // "parkId": getQueryString(window.location).parkCode | |
| 335 | + // }]); | |
| 336 | + | |
| 337 | + //webAppClass.payAliAjax(root + aliPay, aliParams); | |
| 338 | + webAppClass.payAliAjax(root + aliPay, utilParams(1,orderID,'')); | |
| 339 | 339 | } else {//微信页面支付 |
| 340 | 340 | var url = " https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx20161110163838f231619da20804912345&package=1037687096"; |
| 341 | 341 | //window.location.href = url; |
| ... | ... | @@ -502,36 +502,45 @@ var webAppClass = { |
| 502 | 502 | //} |
| 503 | 503 | }, |
| 504 | 504 | getPayParams: function (openId, orderID) { |
| 505 | - var wxPay = window.webAppH5.wxPayServer; | |
| 506 | - var wxParams = window.webAppH5.comParams; | |
| 507 | - var _mon = document.getElementById("sumMoney").innerHTML | |
| 508 | - wxParams.orderId = orderID; | |
| 509 | - wxParams.payType = 4;// 1:支付宝 2:微信 3:银联 10:H5 4微信公众号 | |
| 510 | - wxParams.terminalSource = 7;//请求端来源 1: 任你停 2:pda 3:微信公共号 7:H5扫码 10页面支付 | |
| 511 | - //webAppClass.payAjax(root + wxPay, wxParams); | |
| 512 | - | |
| 513 | - | |
| 514 | - //新增start | |
| 505 | + // var wxPay = window.webAppH5.wxPayServer; | |
| 506 | + // var wxParams = window.webAppH5.comParams; | |
| 507 | + // var _mon = document.getElementById("sumMoney").innerHTML | |
| 508 | + // wxParams.orderId = orderID; | |
| 509 | + // wxParams.payType = 4;// 1:支付宝 2:微信 3:银联 10:H5 4微信公众号 | |
| 510 | + // wxParams.terminalSource = 7;//请求端来源 1: 任你停 2:pda 3:微信公共号 7:H5扫码 10页面支付 | |
| 511 | + // //webAppClass.payAjax(root + wxPay, wxParams); | |
| 512 | + // | |
| 513 | + // | |
| 514 | + // //新增start | |
| 515 | + // | |
| 516 | + // | |
| 517 | + // wxParams.carNumber = getQueryString(window.location).carnum; | |
| 518 | + // | |
| 519 | + // wxParams.paySrcType = getQueryString(window.location)._paySrcType;//101停车支付 | |
| 520 | + // | |
| 521 | + // wxParams.recordArreaInfos = JSON.stringify([{ | |
| 522 | + // "orderId": webAppParams.orderId, | |
| 523 | + // "orderNotPayFee": _mon * 100, | |
| 524 | + // "parkId": getQueryString(window.location).parkCode | |
| 525 | + // }]); | |
| 526 | + // | |
| 527 | + // //新增end | |
| 528 | + // | |
| 529 | + // | |
| 530 | + // wxParams.openId = openId; | |
| 531 | + // wxParams.appId = appWxID; | |
| 532 | + // var payParamsUrl = webAppRoot + window.webAppH5.wxPayServer; | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + var jsondata = utilParams(2,orderID,openId); | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + var payParamsUrl = webAppRoot + window.webAppH5.doPay; | |
| 515 | 541 | |
| 516 | - | |
| 517 | - wxParams.carNumber = getQueryString(window.location).carnum; | |
| 518 | - | |
| 519 | - wxParams.paySrcType = getQueryString(window.location)._paySrcType;//101停车支付 | |
| 520 | - | |
| 521 | - wxParams.recordArreaInfos = JSON.stringify([{ | |
| 522 | - "orderId": webAppParams.orderId, | |
| 523 | - "orderNotPayFee": _mon * 100, | |
| 524 | - "parkId": getQueryString(window.location).parkCode | |
| 525 | - }]); | |
| 526 | - | |
| 527 | - //新增end | |
| 528 | - | |
| 529 | - | |
| 530 | - wxParams.openId = openId; | |
| 531 | - wxParams.appId = appWxID; | |
| 532 | - var payParamsUrl = webAppRoot + window.webAppH5.wxPayServer; | |
| 533 | 542 | //alert(payParamsUrl);alert(orderID); |
| 534 | - postRequest(payParamsUrl, wxParams, function (res) { | |
| 543 | + postRequest(payParamsUrl, jsondata, function (res) { | |
| 535 | 544 | $btnObj.style.display = "block"; |
| 536 | 545 | $btnLoad.style.display = "none"; |
| 537 | 546 | //debugger; |
| ... | ... | @@ -539,7 +548,7 @@ var webAppClass = { |
| 539 | 548 | //alertMsg("出场成功"); |
| 540 | 549 | if (res.data) { |
| 541 | 550 | var tmpObj = res.data; |
| 542 | - webAppClass.weixinJSBridge(res.data); | |
| 551 | + webAppClass.weixinJSBridge(tmpObj); | |
| 543 | 552 | console.log(JSON.stringify(tmpObj)); |
| 544 | 553 | //alert(JSON.stringify(tmpObj)); |
| 545 | 554 | } else { |
| ... | ... | @@ -560,18 +569,26 @@ var webAppClass = { |
| 560 | 569 | }, |
| 561 | 570 | |
| 562 | 571 | //调用微信内置WeixinJSBridge对象发起支付 |
| 563 | - weixinJSBridge: function (params) { | |
| 572 | + weixinJSBridge: function (data) { | |
| 573 | + var datas = JSON.parse(data.jsPayRequest); | |
| 574 | + //datas = JSON.parse(datas); | |
| 575 | + var timeStamp = datas.timeStamp; | |
| 576 | + var appId = datas.appId; | |
| 577 | + var nonceStr = datas.nonceStr; | |
| 578 | + var package = datas.package; | |
| 579 | + var paySign = datas.paySign; | |
| 580 | + var type = datas.signType; | |
| 581 | + | |
| 564 | 582 | function onBridgeReady() { |
| 565 | 583 | WeixinJSBridge.invoke( |
| 566 | - 'getBrandWCPayRequest', params, | |
| 567 | - //'getBrandWCPayRequest', { | |
| 568 | - // "appId": appWxID, //公众号名称,由商户传入 | |
| 569 | - // "timeStamp": "1395712654", //时间戳,自1970年以来的秒数 | |
| 570 | - // "nonceStr": "e61463f8efa94090b1f366cccfbbb444", //随机串 | |
| 571 | - // "package": "prepay_id=u802345jgfjsdfgsdg888", | |
| 572 | - // "signType": "MD5", //微信签名方式: | |
| 573 | - // "paySign": "70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信签名 | |
| 574 | - //}, | |
| 584 | + 'getBrandWCPayRequest', { | |
| 585 | + "appId":appId, //公众号名称,由商户传入 | |
| 586 | + "timeStamp":timeStamp, //时间戳,自1970年以来的秒数 | |
| 587 | + "nonceStr":nonceStr, //随机串 | |
| 588 | + "package":package, | |
| 589 | + "signType":type, //微信签名方式: | |
| 590 | + "paySign":paySign //微信签名 | |
| 591 | + }, | |
| 575 | 592 | function (res) { |
| 576 | 593 | //alert(res.err_msg); |
| 577 | 594 | if (res.err_msg == "get_brand_wcpay_request:ok") { |
| ... | ... | @@ -612,12 +629,14 @@ var webAppClass = { |
| 612 | 629 | |
| 613 | 630 | //异步请求-支付宝 |
| 614 | 631 | payAliAjax: function (url, params) { |
| 632 | + | |
| 615 | 633 | var btnOBj = $btnObj; |
| 616 | 634 | postRequest(url, params, function (res) { |
| 617 | 635 | btnOBj.style.display = "block"; |
| 618 | 636 | $btnLoad.style.display = "none"; |
| 619 | 637 | if (res.code == 0) {//进场 |
| 620 | - document.write(res.data);//打开支付表单 | |
| 638 | + window.location.href = res.data.h5PayRequest | |
| 639 | + //document.write(res.data.h5PayRequest);//打开支付表单 | |
| 621 | 640 | } else {//其他情况如【该卡号场内已存在】 |
| 622 | 641 | console.log(res.message); |
| 623 | 642 | alertMsg(res.message); |
| ... | ... | @@ -664,6 +683,7 @@ var webAppClass = { |
| 664 | 683 | $due.innerHTML = keepTwoDecimalFull((params.due / 100));//停车总费用 |
| 665 | 684 | $paid.innerHTML = keepTwoDecimalFull(params.paid / 100); |
| 666 | 685 | $discountFee.innerHTML = params.discountFee;//优惠金额 |
| 686 | + | |
| 667 | 687 | // $discountDesc.innerHTML = params.discountDesc; |
| 668 | 688 | } else { |
| 669 | 689 | console.log("没有接受到参数"); | ... | ... |
js/url.js
| ... | ... | @@ -89,9 +89,9 @@ mUrl.getJx = function(){ |
| 89 | 89 | |
| 90 | 90 | // var cepath = 'http://39.98.54.240:8090'; |
| 91 | 91 | |
| 92 | -var cepath = 'http://pay.service.huangshiparking.com'; | |
| 92 | +// var cepath = 'http://pay.service.huangshiparking.com'; | |
| 93 | 93 | // http://pay.service.renniting.cn |
| 94 | -// var cepath = 'http://39.98.54.240:8090' | |
| 94 | +var cepath = 'http://39.98.54.240:8090' | |
| 95 | 95 | // http://app.api.dyszt.com:8090 |
| 96 | 96 | // var cepath = 'http://app.api.dyszt.com:8090'; |
| 97 | 97 | // https://pay.service.rnting.com//'http://47.96.41.38:8090'; | ... | ... |