import store from '../store/index.js' import qs from 'qs' // const gatewayUrl = "http://192.168.1.105:8082/"; const gatewayUrl = "https://kptyun.cn/"; var requestTask = null function checkStatus(response) { // console.log(response) if (response.data.code == "1000000009" || response.data.code == "1000000010") { store.commit('logout') //#ifndef H5 uni.showModal({ title: '提示', content: '登录失效,请重新登录', cancelText: "暂不登录", confirmText: "去登录", success(res) { if (res.confirm) { uni.navigateTo({ url: '/pages/login/login', }) } else if (res.cancel) { console.log('用户点击取消') } } }) //#endif //#ifdef H5 //alert("aaaa") // window.location.reload() if (util.isWeiXin()) { let baseUrl = "https://open.weixin.qq.com/connect/oauth2/authorize#wechat_redirect"; let redirectUri = util.appendParams(baseUrl, { 'appid': 'wx63ae87efa44fc305', 'redirect_uri': encodeURIComponent(window.location.href), 'response_type': 'code', 'scope': 'snsapi_userinfo', 'state': 'hello-world', }); window.location.replace(redirectUri); // const url = // 'https://pailiying.com/livephoto/livephoto/getwxcode.html?appid=wx63ae87efa44fc305&scope=snsapi_userinfo&state=hello-world&redirect_uri=' + // encodeURI(window.location.href) // window.location.replace(url); } //#endif } // loading // 如果http状态码正常,则直接返回数据 if (response && (response.statusCode === 200)) { return response.data; } else { // uni.showToast({ // icon: "none", // mask: true, // title: "网络异常,请稍后再试" // }) } } function checkCode(res) { // 如果code异常(这里已经包括网络错误,服务器错误,后端抛出的错误),可以弹出一个错误提示,告诉用户 // uni.showToast({ // icon: "none", // mask: true, // title: "网络异常,请稍后再试" // }) } let util = { gatewayUrl: gatewayUrl, postForm(url, data, header) { let _url = ''; if (url.indexOf('http://') != -1) { _url = url } else { _url = gatewayUrl + url } const headers = header || {}; return new Promise((resolve, reject) => { uni.request({ method: 'post', url: _url, data: qs.stringify(data), header: { ...headers, 'X-Requested-With': 'XMLHttpRequest', 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', "token": uni.getStorageSync("userInfo") ? uni.getStorageSync("userInfo").token : "" }, success: (res => { resolve(checkStatus(res)) }), fail: (res => { reject(checkCode(res)) }) }) }) }, postJson(url, data, header) { let _url = ''; if(requestTask && url=='/pailiying-user/v1/user/getPhotoLiveImgList'){ requestTask.abort() requestTask = null } if (url.indexOf('http://') != -1) { _url = url } else { _url = gatewayUrl + url } const headers = header || {}; // console.log(uni.getStorageSync("userInfo")) return new Promise((resolve, reject) => { requestTask = uni.request({ method: 'post', url: _url, data, // post 请求时带的参数 header: Object.assign({ 'X-Requested-With': 'XMLHttpRequest', 'content-type': 'application/json; charset=UTF-8', "token": uni.getStorageSync("userInfo") ? uni.getStorageSync("userInfo") .token : "" }, headers), success: (res => { requestTask = null resolve(checkStatus(res)) }), fail: (res => { requestTask = null reject(checkCode(res)) }) }) }) }, get(url, data, header) { let _url = ''; if (url.indexOf('/api/') != -1) { _url = url } else { _url = gatewayUrl + url } const headers = header || {}; return new Promise((resolve, reject) => { uni.request({ method: 'get', url: _url, data, // get 请求时带的参数 header: Object.assign({ 'X-Requested-With': 'XMLHttpRequest', 'Accept': 'application/json, text/plain, */*', 'content-type': ' ', "token": uni.getStorageSync("userInfo") ? uni.getStorageSync( "userInfo").token : "" }, headers), success: (res => { resolve(checkStatus(res)) }), fail: (res => { reject(checkCode(res)) }) }) }) }, combineFromParamForNull: (param, needFormStyle) => { //组合参数 const params = {}; for (var i in param) { if (param[i] != null && param[i] != 'null') { params[i] = param[i] } } return params }, getLocalTime(time) { //将时间错转化成2010-10-20 10:00:00 const now = new Date(time) const year = now.getFullYear(); var month = now.getMonth() + 1; if (month < 10) month = "0" + month; var date = now.getDate(); if (date < 10) date = "0" + date; var hour = now.getHours(); if (hour < 10) hour = "0" + hour; var minute = now.getMinutes(); if (minute < 10) minute = "0" + minute; var second = now.getSeconds(); if (second < 10) second = "0" + second; return year + "-" + month + "-" + date + " " + hour + ":" + minute + ":" + second; }, getLocalTime2(time) { //将时间错转化成2010-10-20 const now = new Date(time) const year = now.getFullYear(); var month = now.getMonth() + 1; if (month < 10) month = "0" + month; var date = now.getDate(); if (date < 10) date = "0" + date; return year + "-" + month + "-" + date }, getLocalTime3(time) { //将时间错转化成 10:00:00 const now = new Date(time) const year = now.getFullYear(); var month = now.getMonth() + 1; if (month < 10) month = "0" + month; var date = now.getDate(); if (date < 10) date = "0" + date; var hour = now.getHours(); if (hour < 10) hour = "0" + hour; var minute = now.getMinutes(); if (minute < 10) minute = "0" + minute; var second = now.getSeconds(); if (second < 10) second = "0" + second; return hour + ":" + minute + ":" + second; }, getLocalTime4(time) { //将时间错转化成 10:00 const now = new Date(time) const year = now.getFullYear(); var month = now.getMonth() + 1; if (month < 10) month = "0" + month; var date = now.getDate(); if (date < 10) date = "0" + date; var hour = now.getHours(); if (hour < 10) hour = "0" + hour; var minute = now.getMinutes(); if (minute < 10) minute = "0" + minute; var second = now.getSeconds(); if (second < 10) second = "0" + second; return minute + ":" + second; }, isWeiXin() { let ua = window.navigator.userAgent.toLowerCase(); if (ua.match(/MicroMessenger/i) == 'micromessenger') { return true; } else { return false; } }, isAlipay() { let userAgent = navigator.userAgent.toLowerCase(); if (userAgent.match(/Alipay/i) == "alipay") { return true; } else { return false; } }, gethtml(value) { if (value) { let a = value.replace(//ig, '
') .replace(/',uni.getStorageSync("h5_address")) // const url = 'https://pailiying.com/livephoto/getwxcode.html?appid=wx63ae87efa44fc305&scope=snsapi_userinfo&state=hello-world&redirect_uri=' + encodeURI(window.location.href) const url = uni.getStorageSync("h5_address") + '/getwxcode.html?appid=wx63ae87efa44fc305&scope=snsapi_userinfo&state=hello-world&redirect_uri=' + encodeURI(window.location.href) window.location.replace(url); } // #endif } }, payorder(aa, callback) { let that = this let msg = aa // #ifdef H5 if (that.isWeiXin()) { that.postJson(msg.url, that.combineFromParamForNull(msg.parms)).then(function(res) { uni.hideLoading() if (res.status == 1) { uni.showLoading({ title: '正在支付', mask: true }) if (typeof WeixinJSBridge == "undefined") { if (document.addEventListener) { document.addEventListener('WeixinJSBridgeReady', that.onBridgeReady(res.data, callback), false); } else if (document.attachEvent) { document.attachEvent('WeixinJSBridgeReady', that.onBridgeReady(res.data, callback)); document.attachEvent('onWeixinJSBridgeReady', that.onBridgeReady(res.data, callback)); } } else { that.onBridgeReady(res.data, callback); } } else { uni.showModal({ title: '', content: "付款失败", showCancel: false, }) } }, function(fail) { uni.hideLoading() uni.showToast({ title: "付款失败", icon: "none" }) } ) } else if (utils.isAlipay()) { parms.payType = 2 utils.postJson(url, utils.combineFromParamForNull(parms), {}).then(function(res) { uni.hideLoading() if (res.status == '0') { if (typeof(res.data) === 'string') { that.tradeNO = JSON.parse(res.data).tradeNO; } else { that.tradeNO = res.data.tradeNo; } if (res.data.code_url) { // uni.navigateTo({ // url: "../webview/webview?urls=" + res.data.code_url // }) } else { uni.showLoading({ title: '正在跳转支付宝支付', mask: true }) if (window.AlipayJSBridge) { that.onAliBridgeReady && that.onAliBridgeReady(); } else { // 如果没有注入则监听注入的事件 document.addEventListener('AlipayJSBridgeReady', that.onAliBridgeReady, false); } } } else { that.$api.msg(res.msg); uni.showModal({ title: '', content: "付款失败", showCancel: false, }) } }, function(fail) { uni.hideLoading() that.$api.msg(fail); } ) } else { alert("请在支付宝或者微信中扫码") } // #endif //#ifdef MP-WEIXIN that.postJson(msg.url, that.combineFromParamForNull(msg.parms), msg.heard ).then(function(res) { uni.hideLoading() if (res.code == '0000') { uni.showLoading({ title: '正在跳转微信支付', mask: true }) const payParam = { appId: res.data.appId, nonceStr: res.data.nonceStr, package: res.data.package, timeStamp: res.data.timeStamp + "", signType: res.data.signType, paySign: res.data.paySign, } uni.requestPayment({ provider: 'wxpay', //#ifdef MP-WEIXIN ...payParam, //#endif //#ifdef APP-PLUS orderInfo: payParam, //#endif success: function(resq) { callback() }, fail: function(fails) { uni.hideLoading() uni.showToast({ title: "付款失败", icon: "none" }) console.log("支付过程失败", fails); // that.$api.msg(JSON.stringify(fails)) }, complete: function(res) { uni.hideLoading() console.log("支付过程结束") } }); } else { uni.showModal({ title: '', content: "付款失败", showCancel: false, }) } }, function(fail) { uni.hideLoading() that.$api.msg(fail); } ) //#endif }, onAliBridgeReady() { //唤起支付宝支付 const me = this; AlipayJSBridge.call("tradePay", { tradeNO: me.tradeNO }, function(res) { if (res.resultCode == 9000) { uni.redirectTo({ url: "/pages/shopSuccess/shopSuccess" }) } else { uni.showModal({ title: '', content: "付款失败", showCancel: false, }) } }); }, appendParams(url, params) { if (params) { var baseWithSearch = url.split('#')[0]; var hash = url.split('#')[1]; for (var key in params) { var attrValue = params[key]; if (attrValue !== undefined) { var newParam = key + "=" + attrValue; if (baseWithSearch.indexOf('?') > 0) { var oldParamReg = new RegExp('^' + key + '=[-%.!~*\'\(\)\\w]*', 'g'); if (oldParamReg.test(baseWithSearch)) { baseWithSearch = baseWithSearch.replace(oldParamReg, newParam); } else { baseWithSearch += "&" + newParam; } } else { baseWithSearch += "?" + newParam; } } } if (hash) { url = baseWithSearch + '#' + hash; } else { url = baseWithSearch; } } return url; }, onBridgeReady(datas, callback) { //唤起微信支付 const me = this; WeixinJSBridge.invoke( 'getBrandWCPayRequest', { "appId": datas.appId, "nonceStr": datas.nonceStr, "package": datas.package, "paySign": datas.paySign, "signType": datas.signType, "timeStamp": datas.timeStamp }, function(res) { alert(JSON.stringify(res)) uni.hideLoading(); if (res.err_msg == "get_brand_wcpay_request:ok") { // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回 ok,但并不保证它绝对可靠。 callback() } else if (res.err_msg == "get_brand_wcpay_request:cancel") { uni.showModal({ title: '', content: "付款失败", showCancel: false, }) } else if (res.err_msg == "get_brand_wcpay_request:fail") { uni.showModal({ title: '', content: "付款失败", showCancel: false, }) } else { uni.showModal({ title: '', content: "付款失败", showCancel: false, }) } } ) }, //校验手机号 checkphone(n) { var myreg = /^(((14[0-9]{1})|(16[0-9]{1})|(17[0-9]{1})|(13[0-9]{1})|(19[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/; if (n && myreg.test(n)) { return true } else { return false } }, //正整数校验 checkNumber(n) { var myreg = /(^[1-9]\d*$)/; if (n && myreg.test(n)) { return true } else { return false } }, // 校验金额 checkMoney(n) { var myreg = /(^[1-9]{1}[0-9]*$)|(^[0-9]*\.[0-9]{1,2}$)/; if (n && myreg.test(n)) { return true } else { return false } }, // 不为空校验 checkstr(n) { var myreg = /\S/; if (n && myreg.test(n)) { return true } else { return false } }, checkPwd(n) { //校验密码6-16位至少有一个数字字母 var myreg = /^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?![,\!@$.#%\'\+\*\-:;^_`]+$)[,\!@$.#%\'\+\*\-:;^_`0-9A-Za-z]{6,16}$/; if (n && myreg.test(n)) { return true } else { return false } }, Base64() { // 私钥 let _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; // 加密 this.encode = function (input) { var output = ""; var chr1, chr2, chr3, enc1, enc2, enc3, enc4; var i = 0; input = _utf8_encode(input); while (i < input.length) { chr1 = input.charCodeAt(i++); chr2 = input.charCodeAt(i++); chr3 = input.charCodeAt(i++); enc1 = chr1 >> 2; enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; if (isNaN(chr2)) { enc3 = enc4 = 64; } else if (isNaN(chr3)) { enc4 = 64; } output = output + _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4); } return output; } // 解密 this.decode = (input)=> { var output = ""; var chr1, chr2, chr3; var enc1, enc2, enc3, enc4; var i = 0; if (input==undefined||input==null){ }else { input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); while (i < input.length) { enc1 = _keyStr.indexOf(input.charAt(i++)); enc2 = _keyStr.indexOf(input.charAt(i++)); enc3 = _keyStr.indexOf(input.charAt(i++)); enc4 = _keyStr.indexOf(input.charAt(i++)); chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4; output = output + String.fromCharCode(chr1); if (enc3 != 64) { output = output + String.fromCharCode(chr2); } if (enc4 != 64) { output = output + String.fromCharCode(chr3); } } output = _utf8_decode(output); return output; } } // private method for UTF-8 encoding let _utf8_encode = (string)=> { string = string.replace(/\r\n/g,"\n"); var utftext = ""; for (var n = 0; n < string.length; n++) { var c = string.charCodeAt(n); if (c < 128) { utftext += String.fromCharCode(c); } else if((c > 127) && (c < 2048)) { utftext += String.fromCharCode((c >> 6) | 192); utftext += String.fromCharCode((c & 63) | 128); } else { utftext += String.fromCharCode((c >> 12) | 224); utftext += String.fromCharCode(((c >> 6) & 63) | 128); utftext += String.fromCharCode((c & 63) | 128); } } return utftext; } // private method for UTF-8 decoding let _utf8_decode = (utftext)=> { var string = ""; var i = 0; var c = c1 = c2 = 0; var c1 = 0; var c2 = 0; var c3 = 0; while ( i < utftext.length ) { c = utftext.charCodeAt(i); if (c < 128) { string += String.fromCharCode(c); i++; } else if((c > 191) && (c < 224)) { c2 = utftext.charCodeAt(i+1); string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); i += 2; } else { c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2); string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); i += 3; } } return string; } }, promisify: api => { return (options, ...params) => { return new Promise((resolve, reject) => { const extras = { success: resolve, fail: reject } api({ ...options, ...extras }, ...params) }) } } }; export default util;