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