From ba900b6440609ac2d0cf61400d1c573743111068 Mon Sep 17 00:00:00 2001 From: Wik-T <812952667@qq.com> Date: Mon, 10 Apr 2023 10:16:49 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=AF=B9=E6=8E=A5=E6=94=AF=E4=BB=98=E5=AE=9D?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E3=80=81=E5=AF=B9=E6=8E=A5=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E6=94=AF=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.vue | 18 +++- index.html | 29 +++--- pages/index/index.vue | 192 ++++++++++++++++++++++++++++---------- pages/welcome/welcome.vue | 51 ++++++---- 4 files changed, 201 insertions(+), 89 deletions(-) diff --git a/App.vue b/App.vue index 70c1283..af62562 100644 --- a/App.vue +++ b/App.vue @@ -13,19 +13,27 @@ appId: 'wxa075e8509802f826', code: '', //code获取openid snNo: '', // 设备sn号 + platformType: '', //区分平台 //正式 - url: 'https://hsg.dctpay.com/user', - graurl:'https://pay.dctpay.com/crest', + url: 'https://hsg.dctpay.com/user', + graurl: 'https://pay.dctpay.com/crest', imgUrl: 'https://pay.dctpay.com/filesystem/', imageWxImg: 'https://hsgcs.dctpay.com/filesystem/wxApplets/', //测试 - // url: 'https://hsgcs.dctpay.com/user', + // url: 'https://hsgcs.dctpay.com/user', // graurl:'https://gratia-pay.dctpay.com/crest', // imgUrl: 'https://hsgcs.dctpay.com/filesystem/', // imageWxImg: 'https://hsgcs.dctpay.com/filesystem/wxApplets/', }, onLaunch: function() { - console.log('App Launch'); + var userAgent = navigator.userAgent.toLowerCase(); + if (userAgent.match(/Alipay/i) == "alipay") { + this.platformType = 'ALIPAY'; + } else if (userAgent.match(/MicroMessenger/i) == "micromessenger") { + this.platformType = 'WECHAT'; + } else { + this.platformType = 'UQRCODEPAY'; + } }, onShow: function() { console.log('App Show') @@ -64,4 +72,4 @@ + \ No newline at end of file diff --git a/index.html b/index.html index b61f63e..0377716 100644 --- a/index.html +++ b/index.html @@ -1,14 +1,15 @@ - - - - - - - - - - -
- - - + + + + + + + + + + +
+ + + \ No newline at end of file diff --git a/pages/index/index.vue b/pages/index/index.vue index 92ee7ef..722a0ed 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -656,8 +656,8 @@ icon: 'none' }) this.payPrice = 0; - this.plateNumberList = []; - this.plateNumberList1 = []; + this.plateNumberList = []; + this.plateNumberList1 = []; this.storediscountType = ''; //门店优惠类型 this.storediscountCondition = ''; //门店优惠条件 this.storediscountPrice = ''; //门店优惠价格 @@ -671,7 +671,7 @@ // if (userAgent.match(/Alipay/i) == "alipay") { // this.createJSAPIOrder('ALIPAY'); // } else if (userAgent.match(/MicroMessenger/i) == "micromessenger") { - this.createJSAPIOrder('WECHAT'); + this.createJSAPIOrder(); // } }, // 创建订单 @@ -684,7 +684,7 @@ let datas = { "qrCodeSN": app.globalData.snNo, "payUserId": app.globalData.openId, - "payMode": item, + "payMode": app.globalData.platformType, "totalAmount": this.inputPrice, "storeDiscountId": this.storeDiscountId, "userDiscountId": this.memDiscountId, @@ -709,15 +709,24 @@ } jsapiPay(datas).then(res => { if (res.return_code == '000000') { - if (res.return_data.payParam) { - this.payRequest(res.return_data.payParam); - } else { - uni.showToast({ - title: '单比金额最多10000000元', - icon: 'none', - duration: 2000 - }) + if (res.return_data.payParam && app.globalData.platformType == 'WECHAT') { + this.wechatpayRequest(res.return_data); + return; + } + if (res.return_data.payParam && app.globalData.platformType == 'ALIPAY') { + this.alipayRequest(res.return_data.acc_resp_fields.paepay_id); + return; + } + if (res.return_data.payParam && app.globalData.platformType == 'UQRCODEPAY') { + // this.unionPayRequest(res.return_data); + window.location.href = res.return_data.acc_resp_fields.redirect_url; + return; } + uni.showToast({ + title: res.return_msg, + icon: 'none', + duration: 2000 + }) } else { uni.showToast({ title: res.return_msg, @@ -833,52 +842,133 @@ }, //微信支付 - payRequest: function(self) { + wechatpayRequest: function(self) { uni.showLoading({ title: '支付中...' }) - jweixin.config({ - debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 - appId: self.appId, // 必填,公众号的唯一标识 - timestamp: self.timeStamp, // 必填,生成签名的时间戳 - nonceStr: self.nonceStr, // 必填,生成签名的随机串 - signature: self.sign, // 必填,签名,见附录1 - jsApiList: ['chooseWXPay'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 - }); - uni.hideLoading(); - jweixin.ready(function() { - jweixin.checkJsApi({ - jsApiList: ['chooseWXPay'], // 需要检测的JS接口列表,所有JS接口列表见附录2, - success: function(res) {}, - fail: function(res) {} + if (self.platformType == 1) { + jweixin.config({ + debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 + appId: self.acc_resp_fields.app_id, // 必填,公众号的唯一标识 + timestamp: self.acc_resp_fields.time_stamp, // 必填,生成签名的时间戳 + nonceStr: self.acc_resp_fields.nonce_str, // 必填,生成签名的随机串 + signature: self.acc_resp_fields.pay_sign, // 必填,签名,见附录1 + jsApiList: ['chooseWXPay'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); - jweixin.chooseWXPay({ - appId: self.appId, - timestamp: self - .timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符 - nonceStr: self.nonceStr, // 支付签名随机串,不长于 32 位 - package: self.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***) - signType: self.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5' - paySign: self.sign, // 支付签名 - success: function(res) { - // 支付成功后的回调函数 - uni.showToast({ - title: '支付成功' - }) - }, - cancel: function(r) {}, - fail: function(res) {} + uni.hideLoading(); + jweixin.ready(function() { + jweixin.checkJsApi({ + jsApiList: ['chooseWXPay'], // 需要检测的JS接口列表,所有JS接口列表见附录2, + success: function(res) {}, + fail: function(res) {} + }); + jweixin.chooseWXPay({ + appId: self.acc_resp_fields.app_id, + timestamp: self.acc_resp_fields + .time_stamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符 + nonceStr: self.acc_resp_fields.nonce_str, // 支付签名随机串,不长于 32 位 + package: self.acc_resp_fields + .package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***) + signType: self.acc_resp_fields.sign_type, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5' + paySign: self.acc_resp_fields.pay_sign, // 支付签名 + success: function(res) { + // 支付成功后的回调函数 + uni.showToast({ + title: '支付成功' + }) + }, + cancel: function(r) {}, + fail: function(res) {} + }); }); - }); - - jweixin.error(function(res) { - uni.showToast({ - icon: 'none', - title: '支付失败了', - duration: 4000 + jweixin.error(function(res) { + uni.showToast({ + icon: 'none', + title: '支付失败了', + duration: 4000 + }); + }); + } else { + jweixin.config({ + debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 + appId: self.appId, // 必填,公众号的唯一标识 + timestamp: self.timeStamp, // 必填,生成签名的时间戳 + nonceStr: self.nonceStr, // 必填,生成签名的随机串 + signature: self.sign, // 必填,签名,见附录1 + jsApiList: ['chooseWXPay'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 + }); + uni.hideLoading(); + jweixin.ready(function() { + jweixin.checkJsApi({ + jsApiList: ['chooseWXPay'], // 需要检测的JS接口列表,所有JS接口列表见附录2, + success: function(res) {}, + fail: function(res) {} + }); + jweixin.chooseWXPay({ + appId: self.appId, + timestamp: self + .timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符 + nonceStr: self.nonceStr, // 支付签名随机串,不长于 32 位 + package: self.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***) + signType: self.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5' + paySign: self.sign, // 支付签名 + success: function(res) { + // 支付成功后的回调函数 + uni.showToast({ + title: '支付成功' + }) + }, + cancel: function(r) {}, + fail: function(res) {} + }); + }); + jweixin.error(function(res) { + uni.showToast({ + icon: 'none', + title: '支付失败了', + duration: 2000 + }); }); + } + }, + //支付宝支付 + alipayRequest(item) { + //订单对象,从服务器获取 // 注意 如果是 支付宝支付provider固定值就是alipay + uni.requestPayment({ //拿到订单信息后 调用 uniapp的支付接口 唤起支付 + provider: 'alipay', //微信就是 wxpay + orderInfo: item, //支付宝订单数据 从后端拿到的数据 + success: function(res) { + this.show1 = false + uni.showToast({ + title: "支付成功", + icon: 'success', + duration: 2000 + // success: () => { + // setTimeout(() => { + // uni.switchTab({ + // url: '/pages/index/index' + // }) + // }, 500) + // } + }) + }, + fail: function(err) { + uni.showToast({ + title: "支付失败请稍后再试", + icon: 'none', + duration: 2000 + // success: () => { + // setTimeout(() => { + // uni.switchTab({ + // url: '/pages/my/my' + // }) + // }, 500) + // } + }) + } }); }, + } } @@ -1086,4 +1176,4 @@ } } - + \ No newline at end of file diff --git a/pages/welcome/welcome.vue b/pages/welcome/welcome.vue index 623a42c..1f32ba7 100644 --- a/pages/welcome/welcome.vue +++ b/pages/welcome/welcome.vue @@ -18,29 +18,42 @@ onLoad(options) { var arr1 = window.location.href; var arr2 = arr1.split('='); - if (arr2[1].length == 12) { + if (app.globalData.platformType == 'WECHAT') { + if (arr2[1].length == 12) { + var arr3 = arr2[1].split('#/'); + app.globalData.snNo = arr3[0]; + uni.setStorage({ + key: "snNumber", + data: arr3[0] + }) + this.jumpWeb(); + } else { + let that = this; + var arr4 = arr2[2].split('&'); + app.globalData.code = arr4[0]; + uni.getStorage({ + key: 'snNumber', + success(e) { + app.globalData.snNo = e.data; + // that.getQrCodeDetail(); + } + }) + } + if (app.globalData.code) { + this.getH5AccessToken(); + } + } else { var arr3 = arr2[1].split('#/'); app.globalData.snNo = arr3[0]; uni.setStorage({ key: "snNumber", data: arr3[0] }) - this.jumpWeb(); - } else { - let that = this; - var arr4 = arr2[2].split('&'); - app.globalData.code = arr4[0]; - uni.getStorage({ - key: 'snNumber', - success(e) { - app.globalData.snNo = e.data; - // that.getQrCodeDetail(); - } + uni.reLaunch({ + url: '../index/index' }) } - if (app.globalData.code) { - this.getH5AccessToken(); - } + }, methods: { @@ -55,9 +68,9 @@ uni.setStorage({ key: "openId", data: res.return_data.openid - }) - uni.reLaunch({ - url:'../index/index' + }) + uni.reLaunch({ + url: '../index/index' }) } else { this.jumpWeb(); @@ -75,4 +88,4 @@ + \ No newline at end of file