Commit 49f85de6e92de9f94796f0fda899368974f68f8e
1 parent
4087b794
黄石微信公众号 -- 临停支付
Showing
10 changed files
with
527 additions
and
283 deletions
dist.zip
No preview for this file type
src/api/binDing/binDing.js
0 → 100644
| 1 | +import request from '@/utils/request' | |
| 2 | + | |
| 3 | +export function sendverificode(params) { // 获取验证码 | |
| 4 | + return request({ | |
| 5 | + url: 'user/sendverificode', | |
| 6 | + method: 'post', | |
| 7 | + data: params | |
| 8 | + }) | |
| 9 | +} | |
| 10 | + | |
| 11 | + | |
| 12 | +export function bindCustByOpenId(params) { // 绑定用户 | |
| 13 | + return request({ | |
| 14 | + url: 'wxPublicUser/bindCustByOpenId', | |
| 15 | + method: 'post', | |
| 16 | + data: params | |
| 17 | + }) | |
| 18 | +} | |
| 19 | + | |
| 20 | + | |
| 21 | +export function queryUserInfo(params) { // 获取用户信息 | |
| 22 | + return request({ | |
| 23 | + url: 'user/queryUserInfo', | |
| 24 | + method: 'post', | |
| 25 | + data: params | |
| 26 | + }) | |
| 27 | +} | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | ... | ... | 
src/api/orderPay/orderPay.js
| ... | ... | @@ -17,6 +17,7 @@ export function getOpenId(params) { // 获取OpenId | 
| 17 | 17 | }) | 
| 18 | 18 | } | 
| 19 | 19 | |
| 20 | + | |
| 20 | 21 | export function vxPayQuery(params) { // 微信 | 
| 21 | 22 | return request({ | 
| 22 | 23 | url: 'weixinpay/publicUnifiedOrder', | 
| ... | ... | @@ -25,18 +26,22 @@ export function vxPayQuery(params) { // 微信 | 
| 25 | 26 | }) | 
| 26 | 27 | } | 
| 27 | 28 | |
| 29 | +// 新接口银联 | |
| 28 | 30 | |
| 29 | -export function bankH5Pay(params) { // 农行 | |
| 31 | +export function doPay(params) { // 微信 | |
| 30 | 32 | return request({ | 
| 31 | - url: 'abcBankPay/bankPayForH5', | |
| 33 | + url: 'unionpay/doPay', | |
| 32 | 34 | method: 'post', | 
| 33 | 35 | data: params | 
| 34 | 36 | }) | 
| 35 | 37 | } | 
| 36 | 38 | |
| 37 | -export function queryParkingRecordPageByCarNumbers(params) { // 支付完成后查询记录 | |
| 39 | + | |
| 40 | +// 创建订单 | |
| 41 | + | |
| 42 | +export function doOrderCreate(params) { // 创建订单 | |
| 38 | 43 | return request({ | 
| 39 | - url: 'queryParkOrder/queryParkingRecordPageByCarNumbers', | |
| 44 | + url: 'unionpay/doOrderCreate', | |
| 40 | 45 | method: 'post', | 
| 41 | 46 | data: params | 
| 42 | 47 | }) | 
| ... | ... | @@ -45,8 +50,3 @@ export function queryParkingRecordPageByCarNumbers(params) { // 支付完成后 | 
| 45 | 50 | |
| 46 | 51 | |
| 47 | 52 | |
| 48 | - | |
| 49 | - | |
| 50 | - | |
| 51 | - | |
| 52 | - | ... | ... | 
src/api/selfNav/selfNav.js
0 → 100644
| 1 | +import request from '@/utils/request' | |
| 2 | + | |
| 3 | +export function getOpenIdByCode(params) { // 获取opendid | |
| 4 | + return request({ | |
| 5 | + url: 'weixinPublicPay/getOpenIdByCode', | |
| 6 | + method: 'post', | |
| 7 | + data: params | |
| 8 | + }) | |
| 9 | +} | |
| 10 | + | |
| 11 | + | |
| 12 | +export function getTokenByOpenId(params) { // 获取token和手机号 | |
| 13 | + return request({ | |
| 14 | + url: 'wxPublicUser/getTokenByOpenId', | |
| 15 | + method: 'post', | |
| 16 | + data: params | |
| 17 | + }) | |
| 18 | +} | |
| 19 | + | |
| 20 | + | |
| 21 | +export function queryUserInfo(params) { // 获取用户信息 | |
| 22 | + return request({ | |
| 23 | + url: 'user/queryUserInfo', | |
| 24 | + method: 'post', | |
| 25 | + data: params | |
| 26 | + }) | |
| 27 | +} | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | ... | ... | 
src/main.js
| ... | ... | @@ -6,19 +6,21 @@ import router from './router' | 
| 6 | 6 | |
| 7 | 7 | import './assets/css/reset.css' // 引入公共样式 | 
| 8 | 8 | |
| 9 | -import h5Popup from 'vue-h5-popup' // 引入弹窗 | |
| 10 | -Vue.use(h5Popup) | |
| 9 | +// import h5Popup from 'vue-h5-popup' // 引入弹窗 | |
| 10 | +// Vue.use(h5Popup) | |
| 11 | 11 | |
| 12 | 12 | |
| 13 | -// import MintUI from 'mint-ui' | |
| 14 | -// import 'mint-ui/lib/style.css' | |
| 15 | -// Vue.use(MintUI) // 引入MintUI | |
| 16 | 13 | |
| 17 | 14 | |
| 15 | +import Mint from 'mint-ui'; | |
| 18 | 16 | import 'mint-ui/lib/style.css' | 
| 17 | +Vue.use(Mint); | |
| 18 | + | |
| 19 | 19 | import { MessageBox } from 'mint-ui' | 
| 20 | -// Vue.use(MessageBox) | |
| 20 | +import { Toast } from 'mint-ui'; | |
| 21 | + | |
| 21 | 22 | Vue.prototype.$msgbox = MessageBox | 
| 23 | +Vue.prototype.$toast = Toast | |
| 22 | 24 | |
| 23 | 25 | //全局设置的基本样式 | 
| 24 | 26 | import './assets/css/base.scss' | 
| ... | ... | @@ -33,13 +35,11 @@ Vue.prototype.$moment = moment | 
| 33 | 35 | import utils from './utils/utils' // 工具类 | 
| 34 | 36 | Vue.prototype.$utils = utils | 
| 35 | 37 | |
| 36 | -import Mint from 'mint-ui'; | |
| 37 | -import 'mint-ui/lib/style.css' | |
| 38 | -Vue.use(Mint); | |
| 39 | 38 | |
| 40 | 39 | |
| 41 | -import 'swiper/dist/css/swiper.min.css' // 轮播 | |
| 42 | -import 'swiper/dist/js/swiper.min' | |
| 40 | + | |
| 41 | +// import 'swiper/dist/css/swiper.min.css' // 轮播 | |
| 42 | +// import 'swiper/dist/js/swiper.min' | |
| 43 | 43 | |
| 44 | 44 | import vueFilter from './utils/filters' // 公共filter | 
| 45 | 45 | for (let key in vueFilter){ | ... | ... | 
src/router/index.js
| ... | ... | @@ -2,7 +2,7 @@ import Vue from 'vue' | 
| 2 | 2 | import Router from 'vue-router' | 
| 3 | 3 | import plateNumber from '@/views/parkPay/plateNumber' | 
| 4 | 4 | // import parkRecord from '@/views/parkPay/parkRecord' | 
| 5 | -// import selfNav from '@/views/mySelf/selfNav' | |
| 5 | +import selfNav from '@/views/mySelf/selfNav' | |
| 6 | 6 | |
| 7 | 7 | Vue.use(Router) | 
| 8 | 8 | |
| ... | ... | @@ -37,12 +37,12 @@ export default new Router({ | 
| 37 | 37 | component: () => import("@/views/parkPay/orderPay.vue") | 
| 38 | 38 | }, | 
| 39 | 39 | |
| 40 | - // //---------------- 个人页面导航 | |
| 41 | - // { | |
| 42 | - // path: '/selfNav', | |
| 43 | - // name: 'selfNav', | |
| 44 | - // component: () => import("@/views/mySelf/selfNav.vue") | |
| 45 | - // }, | |
| 40 | + //---------------- 个人页面导航 | |
| 41 | + { | |
| 42 | + path: '/selfNav', | |
| 43 | + name: 'selfNav', | |
| 44 | + component: () => import("@/views/mySelf/selfNav.vue") | |
| 45 | + }, | |
| 46 | 46 | // | 
| 47 | 47 | // // ------------------------建议反馈 | 
| 48 | 48 | // { | 
| ... | ... | @@ -60,11 +60,11 @@ export default new Router({ | 
| 60 | 60 | // | 
| 61 | 61 | // | 
| 62 | 62 | // // ------------------------停车记录 | 
| 63 | - // { | |
| 64 | - // path: '/binDing', | |
| 65 | - // name: 'binDing', | |
| 66 | - // component: () => import("@/views/binding/binDing.vue") | |
| 67 | - // }, | |
| 63 | + { | |
| 64 | + path: '/binDing', | |
| 65 | + name: 'binDing', | |
| 66 | + component: () => import("@/views/binding/binDing.vue") | |
| 67 | + }, | |
| 68 | 68 | // | 
| 69 | 69 | // | 
| 70 | 70 | // // ------------------------购买会员卡提示 | ... | ... | 
src/utils/utils.js
| 1 | 1 | import md5 from './md5.min.js'; | 
| 2 | + | |
| 2 | 3 | export default { | 
| 3 | 4 | myCommonSalt: function (val) { // 获取盐值 | 
| 4 | 5 | let len = parseInt(val); | 
| ... | ... | @@ -12,36 +13,45 @@ export default { | 
| 12 | 13 | return pwd; | 
| 13 | 14 | }, | 
| 14 | 15 | |
| 15 | - formatDate: function(secs, type=0){ //type是可选参数,因为json中时间的格式是year-month-date,不能识别XX年XX月XX日 | |
| 16 | + formatDate: function (secs, type = 0) { //type是可选参数,因为json中时间的格式是year-month-date,不能识别XX年XX月XX日 | |
| 16 | 17 | var t = new Date(secs) | 
| 17 | 18 | var year = t.getFullYear() | 
| 18 | 19 | var month = t.getMonth() + 1 | 
| 19 | - if(month < 10){ month = '0' + month } | |
| 20 | + if (month < 10) { | |
| 21 | + month = '0' + month | |
| 22 | + } | |
| 20 | 23 | var date = t.getDate() | 
| 21 | - if(date < 10){ date = '0' + date } | |
| 24 | + if (date < 10) { | |
| 25 | + date = '0' + date | |
| 26 | + } | |
| 22 | 27 | var hour = t.getHours() | 
| 23 | - if(hour < 10){ hour = '0' + hour } | |
| 28 | + if (hour < 10) { | |
| 29 | + hour = '0' + hour | |
| 30 | + } | |
| 24 | 31 | var minute = t.getMinutes() | 
| 25 | - if(minute < 10){ minute = '0' + minute } | |
| 32 | + if (minute < 10) { | |
| 33 | + minute = '0' + minute | |
| 34 | + } | |
| 26 | 35 | var second = t.getSeconds() | 
| 27 | - if(second < 10){ second = '0' + second } | |
| 28 | - if(type==0){ | |
| 36 | + if (second < 10) { | |
| 37 | + second = '0' + second | |
| 38 | + } | |
| 39 | + if (type == 0) { | |
| 29 | 40 | return year + '年' + month + '月' + date + '日' | 
| 30 | - }else{ | |
| 31 | - return year + '-'+month+'-'+date | |
| 32 | - }}, | |
| 41 | + } else { | |
| 42 | + return year + '-' + month + '-' + date | |
| 43 | + } | |
| 44 | + }, | |
| 33 | 45 | |
| 34 | 46 | timestampToTime: function (timestamp) { | 
| 35 | 47 | var d = new Date(timestamp);//时间戳为10位需*1000,时间戳为13位的话不需乘1000 | 
| 36 | - var youWant=d.getFullYear() + '-' + this.completedString(d.getMonth() + 1) + '-' + this.completedString(d.getDate()) ; | |
| 37 | - return youWant | |
| 48 | + var youWant = d.getFullYear() + '-' + this.completedString(d.getMonth() + 1) + '-' + this.completedString(d.getDate()); | |
| 49 | + return youWant | |
| 38 | 50 | }, | 
| 39 | - completedString:function(s) { | |
| 51 | + completedString: function (s) { | |
| 40 | 52 | return s < 10 ? '0' + s : s | 
| 41 | 53 | }, | 
| 42 | 54 | |
| 43 | - | |
| 44 | - | |
| 45 | 55 | dateFormat: function (msd) { // 时间转换 | 
| 46 | 56 | var time = msd | 
| 47 | 57 | |
| ... | ... | @@ -78,21 +88,43 @@ export default { | 
| 78 | 88 | parseInt((parseFloat(time / 3600.0) - parseInt(time / 3600.0)) * 60)) * 60) + "秒"; | 
| 79 | 89 | |
| 80 | 90 | } | 
| 81 | - | |
| 82 | 91 | else { | 
| 83 | - | |
| 84 | 92 | time = parseInt(time) + "秒"; | 
| 85 | - | |
| 86 | 93 | } | 
| 87 | - | |
| 88 | 94 | } | 
| 89 | 95 | |
| 90 | 96 | return time; | 
| 91 | 97 | }, | 
| 92 | 98 | |
| 93 | - signObject: function (jsonObj){ //签名字段 | |
| 99 | + GetOpenid: function () { // 获取openid | |
| 100 | + let openid = sessionStorage.getItem('wx_openId'); | |
| 101 | + if (!openid || openid == '') { | |
| 102 | + openid = null; | |
| 103 | + } | |
| 104 | + return openid; | |
| 105 | + }, | |
| 106 | + | |
| 107 | + SetOpenid: function (openid) { // 存储openid | |
| 108 | + sessionStorage.setItem('wx_openId', openid); | |
| 109 | + }, | |
| 110 | + | |
| 111 | + SetToken: function (token) { // 存储 token | |
| 112 | + sessionStorage.setItem('wx_Token', token); | |
| 113 | + }, | |
| 114 | + GetToken: function () { | |
| 115 | + let token = sessionStorage.getItem('wx_Token'); | |
| 116 | + //测试环境 | |
| 117 | + if (!token || token == '') { | |
| 118 | + token = null; | |
| 119 | + } | |
| 120 | + return token; | |
| 121 | + }, | |
| 122 | + SetPhone: function (phone) { // 存储 手机号 | |
| 123 | + sessionStorage.setItem('WXPhone', phone); | |
| 124 | + }, | |
| 125 | + signObject: function (jsonObj) { //签名字段 | |
| 94 | 126 | let sort = [] | 
| 95 | - for(let k in jsonObj){ | |
| 127 | + for (let k in jsonObj) { | |
| 96 | 128 | sort.push({ | 
| 97 | 129 | keyname: k, | 
| 98 | 130 | value: jsonObj[k] | 
| ... | ... | @@ -111,10 +143,10 @@ export default { | 
| 111 | 143 | } else if (/BankabciPhone/.test(window.navigator.userAgent)) { | 
| 112 | 144 | console.log("农行客户端"); | 
| 113 | 145 | return '立即' | 
| 114 | - }else if (/BankabcAndroid/.test(window.navigator.userAgent)) { | |
| 146 | + } else if (/BankabcAndroid/.test(window.navigator.userAgent)) { | |
| 115 | 147 | console.log("农行客户端"); | 
| 116 | 148 | return '立即' | 
| 117 | - }else { | |
| 149 | + } else { | |
| 118 | 150 | console.log("其他浏览器"); | 
| 119 | 151 | return '支付宝' | 
| 120 | 152 | } | 
| ... | ... | @@ -131,10 +163,10 @@ export default { | 
| 131 | 163 | } else if (/BankabciPhone/.test(window.navigator.userAgent)) { | 
| 132 | 164 | console.log("农行客户端"); | 
| 133 | 165 | return '34' | 
| 134 | - }else if (/BankabcAndroid/.test(window.navigator.userAgent)) { | |
| 166 | + } else if (/BankabcAndroid/.test(window.navigator.userAgent)) { | |
| 135 | 167 | console.log("农行客户端"); | 
| 136 | 168 | return '34' | 
| 137 | - }else { | |
| 169 | + } else { | |
| 138 | 170 | console.log("其他浏览器"); | 
| 139 | 171 | return '1' | 
| 140 | 172 | } | 
| ... | ... | @@ -145,7 +177,7 @@ export default { | 
| 145 | 177 | // ud8yq5tv0inxupc05xfeau39jywlqoj2 新的id | 
| 146 | 178 | // ny1u72b6k374sg379z0kqjgfxe2ycnpw 新的签名 | 
| 147 | 179 | |
| 148 | - myVarAppid:'0eca8f5373ca4866aec2f8e9d9367104',// 公共请求Appid | |
| 180 | + myVarAppid: '0eca8f5373ca4866aec2f8e9d9367104',// 公共请求Appid | |
| 149 | 181 | |
| 150 | 182 | myDeviceInfo: 'BC0703A4-AFB0-4B51-9089-9B7487C0CC6E', // 公共请求设备信息 | 
| 151 | 183 | |
| ... | ... | @@ -170,15 +202,15 @@ export default { | 
| 170 | 202 | } | 
| 171 | 203 | objb.sort(compare); | 
| 172 | 204 | var strmd5 = '14318527b13840c2a4af63fef52c2d6e'; | 
| 173 | - for(var i=0;i<objb.length;i++){ | |
| 174 | - if(objb[i].value != null&&objb[i].value != ''){ | |
| 175 | - strmd5 += objb[i].keyname+objb[i].value; | |
| 205 | + for (var i = 0; i < objb.length; i++) { | |
| 206 | + if (objb[i].value != null && objb[i].value != '') { | |
| 207 | + strmd5 += objb[i].keyname + objb[i].value; | |
| 176 | 208 | } | 
| 177 | 209 | } | 
| 178 | 210 | strmd5 += '14318527b13840c2a4af63fef52c2d6e'; | 
| 179 | 211 | // console.log('strmd5-------->'+strmd5); | 
| 180 | 212 | strmd5 = md5(strmd5); | 
| 181 | - strmd5=strmd5.toUpperCase(); | |
| 213 | + strmd5 = strmd5.toUpperCase(); | |
| 182 | 214 | return strmd5; | 
| 183 | 215 | }, | 
| 184 | 216 | ... | ... | 
src/views/binding/binDing.vue
| 1 | 1 | <template> | 
| 2 | 2 | <div> | 
| 3 | 3 | |
| 4 | - <mt-field label="手机号" placeholder="请输入正确的手机号" type="tel" v-model="phone" :attr="{ maxlength: 13 }"></mt-field> | |
| 4 | + <mt-field label="手机号" placeholder="请输入正确的手机号" type="tel" v-model.trim="phone" :attr="{ maxlength: 11 }"></mt-field> | |
| 5 | 5 | |
| 6 | - <mt-field label="验证码" v-model="codeText"> | |
| 7 | - <div class="getCode" @click="getCode">{{timeNum}}</div> | |
| 6 | + <mt-field label="验证码" v-model.trim="codeText" :attr="{ maxlength: 6 }"> | |
| 7 | + <div class="getCode" @click="getCodeHandle">{{timeNum}}</div> | |
| 8 | 8 | </mt-field> | 
| 9 | 9 | |
| 10 | 10 | <div style="margin-top: 34px" class="leftRightPadding"> | 
| 11 | - <mt-button type="danger" size="large">绑定</mt-button> | |
| 11 | + <mt-button type="danger" size="large" @click="bingUser">绑定</mt-button> | |
| 12 | 12 | </div> | 
| 13 | 13 | </div> | 
| 14 | 14 | </template> | 
| 15 | 15 | |
| 16 | 16 | <script> | 
| 17 | +import { sendverificode, bindCustByOpenId } from '@/api/binDing/binDing' | |
| 18 | + | |
| 17 | 19 | export default { | 
| 18 | 20 | name: 'binDing', | 
| 19 | 21 | data() { | 
| ... | ... | @@ -22,23 +24,119 @@ export default { | 
| 22 | 24 | phone: '', | 
| 23 | 25 | timeText: '获取验证码', | 
| 24 | 26 | timeNum: 60, | 
| 27 | + clickFlag: true, // 获取验证码按钮是否可以点击 | |
| 25 | 28 | } | 
| 26 | 29 | }, | 
| 27 | - created(){ | |
| 30 | + created() { | |
| 28 | 31 | this.timeNum = this.timeText | 
| 29 | 32 | }, | 
| 30 | 33 | methods: { | 
| 31 | - getCode: function () { | |
| 32 | - var _this = this | |
| 33 | - // this.timeText = this.timeNum+'S' | |
| 34 | - let Num = 5 | |
| 35 | - var timer = setInterval(function () { | |
| 36 | - _this.timeNum = Num-- +'s' | |
| 37 | - if(Num== -1){ | |
| 38 | - _this.timeNum = '获取验证码' | |
| 39 | - clearInterval(timer) | |
| 34 | + getCodeHandle: function () { // 获取验证码事件 | |
| 35 | + if (!(/^1[3456789]\d{9}$/.test(this.phone))) { // 先判断手机号是否输入正确 | |
| 36 | + this.$msgbox('提示', '请输入正确手机号') | |
| 37 | + } else { | |
| 38 | + if (this.clickFlag) { | |
| 39 | + let _this = this | |
| 40 | + this.clickFlag = false | |
| 41 | + | |
| 42 | + _this.getCode() | |
| 43 | + // this.timeText = this.timeNum+'S' | |
| 44 | + let Num = 5 | |
| 45 | + var timer = setInterval(function () { | |
| 46 | + _this.timeNum = Num-- + 's' | |
| 47 | + if (Num == -1) { | |
| 48 | + _this.clickFlag = true | |
| 49 | + _this.timeNum = _this.timeText | |
| 50 | + Num = 5 | |
| 51 | + clearInterval(timer) | |
| 52 | + } | |
| 53 | + }, 1000) | |
| 40 | 54 | } | 
| 41 | - }, 1000) | |
| 55 | + } | |
| 56 | + }, | |
| 57 | + getCode: function () { // 获取验证码接口 | |
| 58 | + let salt = this.$utils.myCommonSalt(32); | |
| 59 | + let jsondata = { | |
| 60 | + app_id: this.$utils.myVarAppid, | |
| 61 | + deviceInfo: this.$utils.myDeviceInfo, | |
| 62 | + salt: salt, | |
| 63 | + sign_type: "md5", | |
| 64 | + phone: this.phone | |
| 65 | + } | |
| 66 | + jsondata.sign = this.$utils.signObject(jsondata) | |
| 67 | + sendverificode(jsondata).then(response => { | |
| 68 | + this.$toast({ | |
| 69 | + message: '获取验证码成功', | |
| 70 | + iconClass: 'icon icon-success', | |
| 71 | + duration: 1500 | |
| 72 | + }) | |
| 73 | + }) | |
| 74 | + }, | |
| 75 | + | |
| 76 | + bingUser: function () { // 用户绑定 | |
| 77 | + let openid = this.$utils.GetOpenid(); | |
| 78 | + | |
| 79 | + if (!(/^1[3456789]\d{9}$/.test(this.phone))) { // 先判断手机号是否输入正确 | |
| 80 | + this.$toast({ | |
| 81 | + message: '请输入正常手机号', | |
| 82 | + duration: 1500 | |
| 83 | + }); | |
| 84 | + return | |
| 85 | + } | |
| 86 | + if (this.codeText.length < 6) { | |
| 87 | + this.$toast({ | |
| 88 | + message: '请输入正常验证码', | |
| 89 | + duration: 1500 | |
| 90 | + }); | |
| 91 | + return | |
| 92 | + } | |
| 93 | + | |
| 94 | + let jsondata = { | |
| 95 | + phoneNum: this.phone, | |
| 96 | + verifyCode: this.codeText, | |
| 97 | + openid: openid | |
| 98 | + } | |
| 99 | + | |
| 100 | + bindCustByOpenId(jsondata).then(data => { | |
| 101 | + if (data.code == 0 || data.code == '0') { | |
| 102 | + // $.alert('亲,您已绑定成功!', '成功', function () { | |
| 103 | + // var datas = data.data; | |
| 104 | + // var urll = document.referrer; | |
| 105 | + // jsajax.gett(openid, function (n) { | |
| 106 | + // window.location.href = document.referrer; | |
| 107 | + // }); | |
| 108 | + // }); | |
| 109 | + | |
| 110 | + this.$messagebox.alert('亲,您已绑定成功!').then(action => { | |
| 111 | + this.$router.push({ | |
| 112 | + path:'selfNav' | |
| 113 | + }) | |
| 114 | + }); | |
| 115 | + | |
| 116 | + } else { | |
| 117 | + if (data.code == 1017 || data.code == '1017') { | |
| 118 | + // $.alert('已经绑定过', function () { | |
| 119 | + // var urll = document.referrer; | |
| 120 | + // jsajax.gett(openid, function (n) { | |
| 121 | + // window.location.href = document.referrer; | |
| 122 | + // }); | |
| 123 | + // }); | |
| 124 | + | |
| 125 | + | |
| 126 | + this.$messagebox.alert('亲,您已经绑定过!').then(action => { | |
| 127 | + | |
| 128 | + }); | |
| 129 | + | |
| 130 | + } else { | |
| 131 | + // $.alert('亲,请重新绑定!', '失败', function () { | |
| 132 | + // return false; | |
| 133 | + // }); | |
| 134 | + this.$toast('亲,绑定失败,请重新绑定!') | |
| 135 | + } | |
| 136 | + | |
| 137 | + } | |
| 138 | + }) | |
| 139 | + | |
| 42 | 140 | } | 
| 43 | 141 | } | 
| 44 | 142 | } | ... | ... | 
src/views/mySelf/selfNav.vue
| ... | ... | @@ -4,31 +4,141 @@ | 
| 4 | 4 | <div class="person-ifo"> | 
| 5 | 5 | <div class="person-pic"></div> | 
| 6 | 6 | <ul class="person-con"> | 
| 7 | - <li>15911111111</li> | |
| 8 | - <li>账户余额: <span>¥100.00</span></li> | |
| 9 | - <li>我的卡券:<span>20张</span></li> | |
| 7 | + <li>{{ phoneNum }}</li> | |
| 8 | + <li>账户余额: <span>¥ {{ acctBalance }}</span></li> | |
| 9 | + <li>我的卡券:<span>{{couponNum}} 张</span></li> | |
| 10 | 10 | </ul> | 
| 11 | 11 | </div> | 
| 12 | 12 | </div> | 
| 13 | 13 | |
| 14 | - <mt-cell title="会员卡" is-link :to="{ name: 'Toast' }"></mt-cell> | |
| 14 | + <mt-cell title="会员卡" is-link :to="{ name: 'Toast' }"></mt-cell> | |
| 15 | 15 | |
| 16 | - <mt-cell title="车辆管理" is-link :to="{ name: 'Toast' }"></mt-cell> | |
| 16 | + <mt-cell title="车辆管理" is-link :to="{ name: 'Toast' }"></mt-cell> | |
| 17 | 17 | |
| 18 | - <mt-cell title="停车记录" is-link :to="{ name: 'parkNotes' }"></mt-cell> | |
| 18 | + <mt-cell title="停车记录" is-link :to="{ name: 'parkNotes' }"></mt-cell> | |
| 19 | 19 | |
| 20 | - <mt-cell title="建议反馈" is-link :to="{ name: 'suggestionBack' }"></mt-cell> | |
| 20 | + <mt-cell title="建议反馈" is-link :to="{ name: 'suggestionBack' }"></mt-cell> | |
| 21 | 21 | |
| 22 | 22 | <div class="leftRightPadding" style="margin-top: 34px"> | 
| 23 | - <mt-button type="danger" size="large">退出账户</mt-button> | |
| 23 | + <mt-button type="danger" size="large" @click="toBinDing">退出账户</mt-button> | |
| 24 | 24 | </div> | 
| 25 | 25 | |
| 26 | 26 | </div> | 
| 27 | 27 | </template> | 
| 28 | 28 | |
| 29 | 29 | <script> | 
| 30 | +import { getOpenIdByCode, getTokenByOpenId, queryUserInfo } from '@/api/selfNav/selfNav' | |
| 31 | + | |
| 30 | 32 | export default { | 
| 31 | - name: 'selfNav' | |
| 33 | + name: 'selfNav', | |
| 34 | + data(){ | |
| 35 | + return { | |
| 36 | + couponNum:'3', // 卡券数量 | |
| 37 | + acctBalance: '420.00', // 账户余额 | |
| 38 | + phoneNum:'',// 用户手机号 | |
| 39 | + } | |
| 40 | + }, | |
| 41 | + created() { | |
| 42 | + if (this.$utils.clientBrowser() == "微信") { | |
| 43 | + var appID = this.$utils.myVxAppId; | |
| 44 | + var code = this.getUrlParam('code'); | |
| 45 | + var local = window.location.href; | |
| 46 | + if (code == null || code === '') { | |
| 47 | + window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='+appID+'&redirect_uri='+encodeURIComponent(local)+'&response_type=code&scope=snsapi_userinfo&state=1,0#wechat_redirect' | |
| 48 | + } else { | |
| 49 | + return code; | |
| 50 | + } | |
| 51 | + } | |
| 52 | + }, | |
| 53 | + mounted() { | |
| 54 | + if(this.$utils.GetOpenid()){ | |
| 55 | + this.getTokenByOpenId(this.$utils.GetOpenid()) | |
| 56 | + }else{ | |
| 57 | + this.getOpenId() | |
| 58 | + } | |
| 59 | + | |
| 60 | + }, | |
| 61 | + methods: { | |
| 62 | + getUrlParam(name) { | |
| 63 | + var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)'); | |
| 64 | + var r = window.location.search.substr(1).match(reg) | |
| 65 | + if (r != null) return unescape(r[2]) | |
| 66 | + return null | |
| 67 | + }, | |
| 68 | + getOpenId: function () { // 第一步获取openid | |
| 69 | + let getCode = location.href | |
| 70 | + console.log(getCode) | |
| 71 | + let dataCode = getCode.split('?')[1] | |
| 72 | + let wxCode = dataCode.split('&')[0].split('=')[1] | |
| 73 | + let jsondata = { | |
| 74 | + appId: this.$utils.myVxAppId, | |
| 75 | + code: wxCode | |
| 76 | + }; | |
| 77 | + getOpenIdByCode(jsondata).then(data => { | |
| 78 | + console.log(data) | |
| 79 | + // SetOpenid | |
| 80 | + if(data.code=='0'){ | |
| 81 | + let openid = data.data; | |
| 82 | + this.$utils.SetOpenid(openid); | |
| 83 | + // mUrl.setApporWX('wx'); | |
| 84 | + console.log("用户 openid "+openid); | |
| 85 | + this.getTokenByOpenId(openid) | |
| 86 | + } | |
| 87 | + }) | |
| 88 | + }, | |
| 89 | + getTokenByOpenId: function (openid) { // 获取token和手机号 | |
| 90 | + let jsondata = { | |
| 91 | + openid: openid, | |
| 92 | + deviceInfo: this.$utils.myDeviceInfo | |
| 93 | + } | |
| 94 | + getTokenByOpenId(jsondata).then(data => { | |
| 95 | + console.log('执行获取token的接口 '+JSON.stringify(data)); | |
| 96 | + if(data.code==0){ | |
| 97 | + console.log("用户 token "+data.data.token); | |
| 98 | + this.$utils.SetToken(data.data.token) | |
| 99 | + this.$utils.SetPhone(data.data.phoneNum) | |
| 100 | + this.phoneNum = data.data.phoneNum | |
| 101 | + // 用户已经绑定手机号,获取用户信息 | |
| 102 | + this.getInfoSelf() | |
| 103 | + }else{ | |
| 104 | + // 用户未绑定手机号 | |
| 105 | + this.$router.push({ | |
| 106 | + path: 'binDing' | |
| 107 | + }) | |
| 108 | + } | |
| 109 | + }) | |
| 110 | + }, | |
| 111 | + | |
| 112 | + getInfoSelf: function () { // 获取用户信息 | |
| 113 | + let salt = this.$utils.myCommonSalt(32); | |
| 114 | + var jsondata = { | |
| 115 | + app_id: this.$utils.myVarAppid, | |
| 116 | + deviceInfo: this.$utils.myDeviceInfo, | |
| 117 | + salt: salt, | |
| 118 | + sign_type: "md5", | |
| 119 | + token: this.$utils.GetToken(), | |
| 120 | + } | |
| 121 | + jsondata.sign = this.$utils.signObject(jsondata) | |
| 122 | + | |
| 123 | + queryUserInfo(jsondata).then(data => { | |
| 124 | + console.log(data) | |
| 125 | + if(data.code == '0'){ | |
| 126 | + let datas = data.data | |
| 127 | + this.couponNum = datas.couponNum;//卡券数量 | |
| 128 | + this.acctBalance = (datas.acctBalance/100).toFixed(2);//账户余额 单位:分 | |
| 129 | + | |
| 130 | + } | |
| 131 | + }) | |
| 132 | + | |
| 133 | + }, | |
| 134 | + | |
| 135 | + toBinDing: function () { // 退出账户 去绑定页面 | |
| 136 | + this.$router.push({ | |
| 137 | + path:'binDing' | |
| 138 | + }) | |
| 139 | + } | |
| 140 | + | |
| 141 | + } | |
| 32 | 142 | } | 
| 33 | 143 | </script> | 
| 34 | 144 | |
| ... | ... | @@ -44,21 +154,22 @@ export default { | 
| 44 | 154 | padding-top: 45px; | 
| 45 | 155 | display: flex; | 
| 46 | 156 | color: #ffbfbf; | 
| 47 | - .person-pic{ | |
| 157 | + .person-pic { | |
| 48 | 158 | width: 64px; | 
| 49 | 159 | height: 64px; | 
| 50 | 160 | margin-right: 15px; | 
| 51 | 161 | background: url("../../assets/images/mySelf/photoBG.png") no-repeat; | 
| 52 | 162 | } | 
| 53 | 163 | } | 
| 54 | - .person-con{ | |
| 55 | - span{ | |
| 164 | + | |
| 165 | + .person-con { | |
| 166 | + span { | |
| 56 | 167 | font-size: 16px; | 
| 57 | 168 | font-weight: bold; | 
| 58 | 169 | } | 
| 59 | 170 | } | 
| 60 | 171 | |
| 61 | - .mint-cell{ | |
| 172 | + .mint-cell { | |
| 62 | 173 | border-bottom: 1px solid #EFEDED; | 
| 63 | 174 | } | 
| 64 | 175 | </style> | ... | ... | 
src/views/parkPay/orderPay.vue
| ... | ... | @@ -25,7 +25,7 @@ | 
| 25 | 25 | <div class="toPay" @click="toPay">{{clientBrowser}}支付</div> | 
| 26 | 26 | </div> | 
| 27 | 27 | |
| 28 | - <div v-if="appOrderTimeout.length>0"> | |
| 28 | + <div v-if="appOrderTimeout"> | |
| 29 | 29 | <p class="tip"> | 
| 30 | 30 | 温馨提示: | 
| 31 | 31 | </p> | 
| ... | ... | @@ -40,31 +40,26 @@ | 
| 40 | 40 | </template> | 
| 41 | 41 | |
| 42 | 42 | <script> | 
| 43 | -// import CryptoJS from '../utils/AES.js' | |
| 44 | -// let Base64 = require('js-base64').Base64 | |
| 45 | - | |
| 46 | -import {aliPay, getOpenId, vxPayQuery, bankH5Pay, queryParkingRecordPageByCarNumbers} from '@/api/orderPay/orderPay' | |
| 43 | +import {aliPay, getOpenId, vxPayQuery, doPay, doOrderCreate} from '@/api/orderPay/orderPay' | |
| 47 | 44 | |
| 48 | 45 | export default { | 
| 49 | 46 | name: 'orderPay', | 
| 50 | 47 | data() { | 
| 51 | 48 | return { | 
| 52 | 49 | carWrapBG: 0, | 
| 53 | - carNumber: '', | |
| 50 | + carNumber: '京A12312', | |
| 54 | 51 | arrearageActFee: 0, | 
| 55 | 52 | arrearageDiscFee: 0, | 
| 56 | 53 | arrearageActFee: 0, | 
| 57 | - parkingData: [], // 在停数据 | |
| 58 | - historyList: [], // 历史欠费数据 | |
| 59 | 54 | clientBrowser: '', // 客户端 | 
| 60 | 55 | paySrcType: '', //支付的类型 101 是本次 103是历史欠费 | 
| 61 | 56 | orderId: '', //支付的订单 | 
| 62 | 57 | webAppCode: '', // 微信code | 
| 63 | 58 | appOrderTimeout: '', // 超时描述 | 
| 59 | + isAndroid: '', // 终端类型 | |
| 64 | 60 | } | 
| 65 | 61 | }, | 
| 66 | 62 | created() { | 
| 67 | - | |
| 68 | 63 | this.carWrapBG = this.$route.query.carColor //车牌颜色 | 
| 69 | 64 | this.carNumber = this.$route.query.carNumber | 
| 70 | 65 | this.arrearageTotalFee = this.$route.query.arrearageTotalFee // 应收 | 
| ... | ... | @@ -72,16 +67,16 @@ export default { | 
| 72 | 67 | this.arrearageActFee = this.$route.query.arrearageActFee // 实收 | 
| 73 | 68 | this.clientBrowser = this.$utils.clientBrowser() //支付方式 | 
| 74 | 69 | this.paySrcType = this.$route.query.paySrcType // 实收 | 
| 75 | - this.orderId = this.$route.query.ordeID | |
| 70 | + this.orderId = this.$route.query.ordeID // 订单号 | |
| 76 | 71 | console.log(this.orderId) | 
| 77 | - this.appOrderTimeout = this.$route.query.appOrderTimeout | |
| 72 | + this.appOrderTimeout = this.$route.query.appOrderTimeout //提示 | |
| 73 | + | |
| 74 | + let userAgent = navigator.userAgent; | |
| 75 | + this.isAndroid = userAgent.indexOf('Android') > -1 || userAgent.indexOf('Adr') > -1; //android终端 | |
| 76 | + | |
| 78 | 77 | if (this.clientBrowser == "微信") { | 
| 79 | 78 | this.webAppCode = this.getCode(); | 
| 80 | 79 | } | 
| 81 | - | |
| 82 | - }, | |
| 83 | - mounted() { | |
| 84 | - | |
| 85 | 80 | }, | 
| 86 | 81 | methods: { | 
| 87 | 82 | getCode() { | 
| ... | ... | @@ -94,95 +89,130 @@ export default { | 
| 94 | 89 | return code; | 
| 95 | 90 | } | 
| 96 | 91 | }, | 
| 92 | + doOrderCreate(orderID) { // 欠费创建订单号 | |
| 93 | + var jsondata = { | |
| 94 | + orderBigType: 100, | |
| 95 | + payOrderType: this.paySrcType, | |
| 96 | + parkOrderIds: orderID, | |
| 97 | + terminalSource: 7, | |
| 98 | + operName: '', | |
| 99 | + operCode: '', | |
| 100 | + }; | |
| 101 | + // jsondata = JSON.stringify(jsondata); | |
| 102 | + doOrderCreate(jsondata).then(res => { | |
| 103 | + console.log(res) | |
| 104 | + this.orderId = res.data.rltOrderId | |
| 105 | + console.log(this.orderId) | |
| 106 | + this.dopay(this.orderId) | |
| 107 | + }) | |
| 108 | + | |
| 109 | + }, | |
| 97 | 110 | getUrlParam(name) { | 
| 98 | 111 | var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)'); | 
| 99 | 112 | var r = window.location.search.substr(1).match(reg) | 
| 100 | 113 | if (r != null) return unescape(r[2]) | 
| 101 | 114 | return null | 
| 102 | 115 | }, | 
| 116 | + dopay(orderID) { | |
| 117 | + let me = this | |
| 118 | + | |
| 119 | + if (this.clientBrowser == '微信') { // 微信支付 | |
| 120 | + var vm = this | |
| 121 | + //第一步获取openid | |
| 122 | + var codeParams = { | |
| 123 | + code: this.webAppCode, | |
| 124 | + appId: this.$utils.myVxAppId | |
| 125 | + }; | |
| 126 | + getOpenId(codeParams).then(resu => { | |
| 127 | + if (resu.code == 0) { | |
| 128 | + // me.vxPay(res.data, this.orderId) | |
| 129 | + | |
| 130 | + var jsondata = { | |
| 131 | + orderBigType: 100, | |
| 132 | + payOrderType: this.paySrcType, | |
| 133 | + rltOrderId: orderID, | |
| 134 | + payType: 2, // 1 是支付宝 2是微信 | |
| 135 | + terminalSource: 7, | |
| 136 | + orderActFee: this.arrearageActFee, | |
| 137 | + orderTotalFee: this.arrearageTotalFee, | |
| 138 | + orderDicountFee: this.arrearageDiscFee, | |
| 139 | + payUserId: resu.data, | |
| 140 | + terminalOS: this.isAndroid ? 'AND' : 'IOS', | |
| 141 | + couponType: 1, //优惠类型 | |
| 142 | + couponCode: this.arrearageDiscFee, | |
| 143 | + }; | |
| 144 | + | |
| 145 | + doPay(jsondata).then(res => { | |
| 146 | + console.log(res) | |
| 147 | + if (res.code == 0) { // | |
| 148 | + //alertMsg("出场成功"); | |
| 149 | + if (res.data) { | |
| 150 | + var data = JSON.parse(res.data.jsPayRequest); | |
| 151 | + console.log(JSON.stringify(data)); | |
| 152 | + if (typeof WeixinJSBridge === 'undefined') { // 微信浏览器内置对象。参考微信官方文档 | |
| 153 | + if (document.addEventListener) { | |
| 154 | + document.addEventListener('WeixinJSBridgeReady', vm.onBridgeReady(data), false) | |
| 155 | + } else if (document.attachEvent) { | |
| 156 | + document.attachEvent('WeixinJSBridgeReady', vm.onBridgeReady(data)) | |
| 157 | + document.attachEvent('onWeixinJSBridgeReady', vm.onBridgeReady(data)) | |
| 158 | + } | |
| 159 | + } else { | |
| 160 | + console.log('准备调用微信支付') | |
| 161 | + vm.onBridgeReady(data) | |
| 162 | + } | |
| 163 | + } else { | |
| 164 | + alert("没有找到返回值"); | |
| 165 | + } | |
| 166 | + } else { | |
| 167 | + alert('支付错误') | |
| 168 | + console.log(res.message); | |
| 169 | + alert(res.message); | |
| 170 | + } | |
| 171 | + | |
| 172 | + }) | |
| 173 | + | |
| 174 | + } else if (res.code == 40163) { //code been used, hints[重复code问题] | |
| 175 | + alert('获取opendid错误--------') | |
| 176 | + alert(res.message) | |
| 177 | + console.log(res.message); | |
| 178 | + } else { | |
| 179 | + alert('获取opendid错误') | |
| 180 | + alert(res.message) | |
| 181 | + } | |
| 182 | + }) | |
| 183 | + | |
| 184 | + } | |
| 185 | + }, | |
| 103 | 186 | toPay() { | 
| 104 | 187 | let me = this | 
| 105 | 188 | let _order = [] | 
| 106 | - | |
| 189 | + // this.orderId = JSON.parse(this.orderId) | |
| 107 | 190 | console.log(this.orderId) | 
| 108 | 191 | if (this.paySrcType == 103) { | 
| 109 | 192 | this.orderId = JSON.parse(this.orderId) | 
| 110 | - this.orderId.forEach(item => { | |
| 111 | - _order.push({ | |
| 112 | - orderId: item | |
| 113 | - }) | |
| 114 | - }) | |
| 115 | - this.orderId = [] | |
| 116 | - this.orderId = _order | |
| 117 | - } | |
| 193 | + this.doOrderCreate(this.orderId) | |
| 194 | + } else { | |
| 195 | + console.log(this.orderId) | |
| 196 | + console.log(typeof this.orderId) | |
| 118 | 197 | |
| 119 | - if (this.clientBrowser == '微信') { // 微信支付 | |
| 120 | - let _openId = sessionStorage.getItem('openIdData') | |
| 121 | - if (_openId) { | |
| 122 | - me.vxPay(_openId, this.orderId) | |
| 123 | - } else { | |
| 124 | - //第一步获取openid | |
| 125 | - var codeParams = { | |
| 126 | - code: this.webAppCode, | |
| 127 | - appId: this.$utils.myVxAppId | |
| 128 | - }; | |
| 129 | - getOpenId(codeParams).then(res => { | |
| 130 | - if (res.code == 0) { | |
| 131 | - me.vxPay(res.data, this.orderId) | |
| 132 | - sessionStorage.setItem('openIdData', res.data) | |
| 133 | - } else if (res.code == 40163) { //code been used, hints[重复code问题] | |
| 134 | - this.$msgbox('提示', '请重新扫码重复code问题') | |
| 135 | - console.log(res.message); | |
| 136 | - } else { | |
| 137 | - this.$msgbox('提示', '请重新扫码') | |
| 138 | - } | |
| 139 | - }) | |
| 140 | - } | |
| 198 | + this.dopay(this.orderId) | |
| 141 | 199 | } | 
| 200 | + | |
| 142 | 201 | }, | 
| 143 | - vxPay(openIdData, orderIdData) { | |
| 144 | - let vm = this | |
| 145 | - var wxParams = {}; | |
| 146 | - wxParams.orderId = orderIdData; | |
| 147 | - wxParams.backType = 2, | |
| 148 | - wxParams.orgId = this.$utils.myOrgId, | |
| 149 | - wxParams.payType = 4;// 1:支付宝 2:微信 3:银联 10:H5 4微信公众号 | |
| 150 | - wxParams.terminalSource = 7;//请求端来源 1: 任你停 2:pda 3:微信公共号 7:H5扫码 10页面支付 | |
| 151 | - wxParams.carNumber = this.carNumber; | |
| 152 | - wxParams.paySrcType = this.paySrcType;//101停车支付 | |
| 153 | - wxParams.recordArreaInfos = JSON.stringify(orderIdData); | |
| 154 | - wxParams.openId = openIdData; | |
| 155 | - wxParams.appId = this.$utils.myVxAppId; | |
| 156 | - vxPayQuery(wxParams).then(res => { | |
| 157 | - if (res.code == 0) { // | |
| 158 | - if (res.data) { | |
| 159 | - var data = res.data; | |
| 160 | - console.log(JSON.stringify(data)); | |
| 161 | - if (typeof WeixinJSBridge === 'undefined') { // 微信浏览器内置对象。参考微信官方文档 | |
| 162 | - if (document.addEventListener) { | |
| 163 | - document.addEventListener('WeixinJSBridgeReady', vm.onBridgeReady(data), false) | |
| 164 | - } else if (document.attachEvent) { | |
| 165 | - document.attachEvent('WeixinJSBridgeReady', vm.onBridgeReady(data)) | |
| 166 | - document.attachEvent('onWeixinJSBridgeReady', vm.onBridgeReady(data)) | |
| 167 | - } | |
| 168 | - } else { | |
| 169 | - console.log('准备调用微信支付') | |
| 170 | - vm.onBridgeReady(data) | |
| 171 | - } | |
| 172 | - } else { | |
| 173 | - this.$msgbox('提示', '没有找到返回值') | |
| 174 | - } | |
| 175 | - } else { | |
| 176 | - console.log(res.message); | |
| 177 | - this.$msgbox('提示', res.message) | |
| 178 | - } | |
| 179 | - }) | |
| 180 | - }, | |
| 202 | + | |
| 181 | 203 | onBridgeReady(params) { | 
| 182 | - let me = this | |
| 183 | 204 | console.log('调用微信支付WeixinJSBridge') | 
| 184 | 205 | WeixinJSBridge.invoke( | 
| 185 | - 'getBrandWCPayRequest', params, | |
| 206 | + 'getBrandWCPayRequest', { | |
| 207 | + "appId": params.appId, //公众号名称,由商户传入 | |
| 208 | + "timeStamp": params.timeStamp, //时间戳,自1970年以来的秒数 | |
| 209 | + "nonceStr": params.nonceStr, //随机串 | |
| 210 | + "package": params.package, | |
| 211 | + "signType": params.signType, //微信签名方式: | |
| 212 | + "paySign": params.paySign //微信签名 | |
| 213 | + }, | |
| 214 | + | |
| 215 | + // 'getBrandWCPayRequest', params, | |
| 186 | 216 | // | 
| 187 | 217 | // 'getBrandWCPayRequest', { // 下面参数内容都是后台返回的 | 
| 188 | 218 | // 'appId': data.appId, // 公众号名称,由商户传入 | 
| ... | ... | @@ -196,120 +226,15 @@ export default { | 
| 196 | 226 | // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。 | 
| 197 | 227 | if (res.err_msg === 'get_brand_wcpay_request:ok') { | 
| 198 | 228 | console.log('成功') | 
| 199 | - var salt = me.$utils.myCommonSalt(32); | |
| 200 | - let wxparams = { | |
| 201 | - pageNum: 1, | |
| 202 | - pageSize: 10000, | |
| 203 | - parkState: 10, | |
| 204 | - terminalSource: 7, | |
| 205 | - carNumber: me.carNumber, | |
| 206 | - app_id: me.$utils.myVarAppid, | |
| 207 | - deviceInfo: me.$utils.myDeviceInfo, | |
| 208 | - salt: salt, | |
| 209 | - sign_type: "md5", | |
| 210 | - token: '', | |
| 211 | - } | |
| 212 | - wxparams.sign = me.$utils.signObject(wxparams) | |
| 213 | - queryParkingRecordPageByCarNumbers(wxparams).then(response => { | |
| 214 | - console.log(response) | |
| 215 | - me.parkList = response.data.dataList | |
| 216 | - | |
| 217 | - // alert(JSON.stringify(me.parkList)) | |
| 218 | - // alert(me.parkList.length) | |
| 219 | - if (me.parkList.length == 0) { | |
| 220 | - me.$router.push({ | |
| 221 | - path: 'parkRecord', | |
| 222 | - query: { | |
| 223 | - carNumber: me.carNumber, | |
| 224 | - carNumberColor: me.carWrapBG, | |
| 225 | - parkFlag: 0 // 0表示在停 1表示历史 | |
| 226 | - } | |
| 227 | - }) | |
| 228 | - | |
| 229 | - } else { | |
| 230 | - me.parkingData = me.parkList.filter(item => { | |
| 231 | - return item.parkState == '10' | |
| 232 | - }) | |
| 233 | - console.log(me.parkingData) | |
| 234 | - me.historyList = me.parkList.filter(item => { | |
| 235 | - return item.parkState == '20' | |
| 236 | - }) | |
| 237 | - console.log(me.historyList) | |
| 238 | - | |
| 239 | - if (me.historyList.length > 0) { | |
| 240 | - MessageBox.confirm('', { | |
| 241 | - message: '您当前有历史欠费 是否立即补缴?', | |
| 242 | - title: '温馨提示', | |
| 243 | - confirmButtonText: '去补缴', | |
| 244 | - cancelButtonText: '取消' | |
| 245 | - }).then(action => { | |
| 246 | - if (action == 'confirm') { //确认的回调 | |
| 247 | - console.log('确定'); | |
| 248 | - me.$router.push({ | |
| 249 | - path: 'parkRecord', | |
| 250 | - query: { | |
| 251 | - carNumber: me.carNumber, | |
| 252 | - carNumberColor: me.carWrapBG, | |
| 253 | - parkFlag: 1 // 0表示在停 1表示历史 | |
| 254 | - } | |
| 255 | - }) | |
| 256 | - } | |
| 257 | - }).catch(err => { | |
| 258 | - if (err == 'cancel') { //取消的回调 | |
| 259 | - console.log('取消'); | |
| 260 | - } | |
| 261 | - }); | |
| 262 | - } else { | |
| 263 | - | |
| 264 | - if (me.paySrcType == 101) { //缴费了本次 | |
| 265 | - me.$router.push({ | |
| 266 | - path: 'parkRecord', | |
| 267 | - query: { | |
| 268 | - carNumber: me.carNumber, | |
| 269 | - carNumberColor: me.carWrapBG, | |
| 270 | - parkFlag: 0 // 0表示在停 1表示历史 | |
| 271 | - } | |
| 272 | - }) | |
| 273 | - } else { | |
| 274 | - MessageBox.confirm('', { | |
| 275 | - message: '您当前有在停订单 是否立即支付?', | |
| 276 | - title: '温馨提示', | |
| 277 | - confirmButtonText: '去支付', | |
| 278 | - cancelButtonText: '取消' | |
| 279 | - }).then(action => { | |
| 280 | - if (action == 'confirm') { //确认的回调 | |
| 281 | - console.log('确定'); | |
| 282 | - me.$router.push({ | |
| 283 | - path: 'parkRecord', | |
| 284 | - query: { | |
| 285 | - carNumber: me.carNumber, | |
| 286 | - carNumberColor: me.carWrapBG, | |
| 287 | - parkFlag: 0 // 0表示在停 1表示历史 | |
| 288 | - } | |
| 289 | - }) | |
| 290 | - } | |
| 291 | - }).catch(err => { | |
| 292 | - if (err == 'cancel') { //取消的回调 | |
| 293 | - console.log('取消'); | |
| 294 | - } | |
| 295 | - }); | |
| 296 | - } | |
| 297 | - | |
| 298 | - } | |
| 299 | - } | |
| 300 | - | |
| 301 | - }) | |
| 302 | - | |
| 303 | 229 | } else { | 
| 304 | 230 | console.log('失败') | 
| 305 | - this.$msgbox('提示', '支付失败') | |
| 306 | - me.$router.go(-2); | |
| 231 | + alert('支付失败') | |
| 307 | 232 | } | 
| 308 | 233 | } | 
| 309 | 234 | ) | 
| 310 | 235 | }, | 
| 311 | 236 | }, | 
| 312 | - filters: {} | |
| 237 | + | |
| 313 | 238 | } | 
| 314 | 239 | </script> | 
| 315 | 240 | ... | ... |