import { MiniGameSdk } from "../../Sdk/MiniGameSdk"; export default class Utils { static uid: string = ""; static session_key = ""; static appid: string = ""; static openid: string = ""; static outTradeNo: string = ""; static httpip: string = `https://laf.nika4games.com/`; //#region 安卓支付 /**获取用户信息*/ static getUserInfo(callBack) { wx.login({ success(res) { //console.log("微信login成功"); //console.log(res.code); if (res.code) { // 延迟时间数组,可按需调整 const delays = [1000, 2000, 3000, 4000, 5000]; let attempt = 0; // 轮询次数 const poll = () => { if (attempt >= delays.length) { //console.log('登录请求轮询超时'); callBack({ code: 0, data: { openid: "登录失败" }, message: '轮询超时' }); return; } Utils.POST("login", { code: res.code }, ret => { //console.log("请求结果:", ret); if (ret.code === 1) { // 假设返回 code 为 1 表示成功 Utils.openid = ret.data.openid; Utils.session_key = ret.data.session_key; Utils.uid = ret.data._id; callBack(ret); } else { attempt++; setTimeout(poll, delays[attempt - 1]); } }); }; poll(); } else { //console.log('登录失败!' + res.errMsg) callBack({ code: 0, data: { openid: "登录失败" }, message: res.errMsg }); } } }) } /**道具直购接口*/ static buyProp(id, count, price, systemType, productId, callBack) { //console.log("请求uid:" + Utils.uid, "请求id:" + id, "请求数量:" + count, "请求价格:" + price); Utils.POST("wx/orderPaySig", { uid: Utils.uid, itemid: id, itemCount: count, itemPrice: price }, res => { if (res.code == 1) { Utils.outTradeNo = res.data.outTradeNo; const data = { price: price, payment_name: productId, payment_num: 1, type: systemType, } cc.fx.GameTool.shushu_Track("init_order", data); //console.log("创建的最新订单的订单号:", Utils.outTradeNo); // let timeoutId: number; // const timeoutDuration = 30000; // 30 秒超时时间 // // 设置超时定时器 // timeoutId = setTimeout(() => { // console.error('支付请求超时'); // callBack("请求支付超时"); // }, timeoutDuration); //@ts-ignore wx.requestMidasPaymentGameItem({ signData: res.data.signData, paySig: res.data.paySig, signature: res.data.signature, success(res, errCode) { // clearTimeout(timeoutId); // 清除超时定时器 //console.log('成功', res, errCode); callBack(res); }, fail({ errMsg, errCode }) { // clearTimeout(timeoutId); // 清除超时定时器 //console.log('失败'); //console.log(errMsg, errCode) let data = { errMsg: errMsg, errCode: errCode, err: "请求支付失败", } callBack(data); } }) } }); } static getPayInfo(callBack) { // 延迟时间数组,按照 1 秒 3 次、2 秒 5 次、5 秒 6 次、15 秒 5 次的规则生成 const delays = [ ...Array(3).fill(1000), ...Array(5).fill(2000), ...Array(6).fill(5000), ...Array(5).fill(15000) ]; let attempt = 0; // 轮询次数 const poll = () => { if (attempt >= delays.length) { MiniGameSdk.API.showToast("网络异常,如付款成功,重进游戏可领取奖励"); callBack({ code: 0, data: { pay_state: -1 }, message: '轮询超时' }); return; } //console.log("请求uid:", Utils.uid); //console.log("outTradeNo:", Utils.outTradeNo); Utils.POST("wx/getPayInfo", { uid: Utils.uid, outTradeNo: Utils.outTradeNo }, res => { //console.log("查询字符结果:", res); if (res.code === 1 && (res.data.pay_state === 1 || res.data.pay_state === 2)) { callBack(res); } else { attempt++; setTimeout(poll, delays[attempt - 1]); } }); }; poll(); } static setPayInfo(callBack, order) { const delays = [1000, 3000, 6000, 9000, 12000];// 延迟时间数组 let attempt = 0; // 重试次数 const sendRequest = () => { if (attempt > delays.length) { // 达到最大重试次数,调用回调并返回错误信息 callBack({ code: 0, message: '请求失败,已达到最大重试次数' }); return; } let orderTemp = Utils.outTradeNo; if (order) orderTemp = order; //console.log("告知服务器发货的订单号:", orderTemp); Utils.POST("wx/getOrderReward", { outTradeNo: orderTemp }, res => { //console.log("告知服务器发货:", res); if (res.code === 1) { //console.log("告知服务器发货成功:", res); // 请求成功,调用回调并返回结果 callBack(res); } else { // 请求失败,增加重试次数并设置下一次请求的延迟 //console.log("告知服务器发货失败:", res); attempt++; if (attempt <= delays.length) { setTimeout(sendRequest, delays[attempt - 1]); } else { callBack({ code: 0, message: '请求失败,已达到最大重试次数' }); } } }); }; sendRequest(); } //#region ios支付 /**跳转客服*/ static GoKEFu(iosPayInfo, callBack) { cc.fx.GameConfig.GM_INFO.iosOutTradeNo = null; cc.fx.GameConfig.GM_INFO.iosOutTradeNo = `wcx_` + Math.round(Math.random() * 10 ** 13) + Date.now(); const data = { tpye: "ios", outTradeNo: cc.fx.GameConfig.GM_INFO.iosOutTradeNo, propName: iosPayInfo.payment_name, count: iosPayInfo.payment_count, price: iosPayInfo.price,//价格单位是分 } const shushu_data = { outTradeNo: cc.fx.GameConfig.GM_INFO.iosOutTradeNo, price: iosPayInfo.price, payment_name: iosPayInfo.payment_name, payment_num: iosPayInfo.payment_count, type: "ios", } //console.log("ios创建订单信息:", data); cc.fx.GameTool.shushu_Track("init_order", shushu_data); //@ts-ignore wx.openCustomerServiceConversation({ sessionFrom: JSON.stringify(data), // 会话来源(可选) showMessageCard: false, // 是否展示消息卡片 success() { callBack("success"); //console.log('客服会话已successr'); }, fail() { //console.log('客服会话已over'); callBack("fail"); } }); } static getIosPayInfo(order, callBack) { // 延迟时间数组,按照 1 秒 3 次、2 秒 5 次、5 秒 6 次、15 秒 5 次的规则生成 const delays = [ ...Array(3).fill(1000), ...Array(5).fill(2000), ...Array(6).fill(5000), ...Array(5).fill(15000) ]; let attempt = 0; // 轮询次数 const iosOutTradeNo = order; const poll = () => { if (attempt >= delays.length) { MiniGameSdk.API.showToast("网络异常,如充值成功,重进游戏可领取奖励"); callBack({ code: 2, data: null, message: '轮询超时' }); return; } //console.log("请求uid:" + Utils.uid); //console.log("outTradeNo:" + iosOutTradeNo); Utils.POST("wx/iosgetPayInfo", { outTradeNo: iosOutTradeNo }, res => { //console.log("查询字符结果IOS"); //console.log(res); if (res.code === 1) { callBack(res); } else if (res.code === 0) { callBack(res); } else { attempt++; setTimeout(poll, delays[attempt - 1]); } }); }; setTimeout(() => { poll(); }, 500); } //#endregion //#region 微信云 // static initServer(){ // if(cc.sys.platform!=cc.sys.WECHAT_GAME)return; // //@ts-ignore // wx.cloud.init({ // env: 'cloudbase-1gl7iex89268f11e' // }) // } // static getUserCode(){ // //@ts-ignore // wx.login({ // success (res) { // //console.log("登录成功"); // //console.log(res); // if (res.code) { // //@ts-ignore // wx.cloud.callFunction({ // // 云函数名称 // name: 'login', // // 传给云函数的参数 // data: { // code:res.code, // }, // success: function(ret) { // //console.log("请求成功"); // //console.log("请求结果:"); // //console.log(ret); // Utils.openid=ret.data.openid; // Utils.session_key=ret.data.session_key; // Utils.uid=ret.data._id; // }, // fail:function(res){ // //console.log("请求失败"); // //console.log(res); // } // }) // } else { // //console.log('登录失败!' + res.errMsg) // } // } // }) // } // static PayOder(){ // if(cc.sys.platform!=cc.sys.WECHAT_GAME)return; // //@ts-ignore // wx.cloud.callFunction({ // // 云函数名称 // name: 'userPayOrder', // // 传给云函数的参数 // data: { // itemid:"10011", // itemCount:1, // itemPrice:100 // }, // success: function(res) { // //console.log("请求成功"); // //console.log(res) // if(res.result.code==1){ // Utils.outTradeNo=res.result.data.outTradeNo; // //console.log("订单号:"+Utils.outTradeNo); // //@ts-ignore // wx.requestMidasPaymentGameItem({ // signData:res.result.data.signData, // paySig: res.result.data.paySig, // signature: res.result.data.signature, // success(res, errCode) { // //console.log('成功', res, errCode); // }, // fail({errMsg,errCode}) { // console.error('失败'); // console.error(errMsg, errCode) // } // }) // } // }, // fail:function(res){ // //console.log("请求失败"); // //console.log(res); // } // }) // } // static getPayInfo1(callBack){ // if(cc.sys.platform!=cc.sys.WECHAT_GAME)return; // //@ts-ignore // wx.cloud.callFunction({ // // 云函数名称 // name: 'userGetPayState', // // 传给云函数的参数 // data: { // outTradeNo:Utils.outTradeNo // }, // success: function(res) { // //console.log("请求成功"); // //console.log(res) // callBack("成功"); // }, // fail:function(res){ // //console.log("请求失败"); // //console.log(res); // callBack("失败"); // } // }) // } // static toke(){ // if(cc.sys.platform!=cc.sys.WECHAT_GAME)return; // //@ts-ignore // wx.cloud.callFunction({ // // 云函数名称 // name: 'uerToken', // // 传给云函数的参数 // data: { // }, // success: function(res) { // //console.log("请求成功"); // //console.log(res) // }, // fail:function(res){ // //console.log("请求失败"); // //console.log(res); // } // }) // } //#endregion //#region POST请求 /** * POST请求 * * @static * @param {*} url * @param {object} [param={}] * @param {*} callback * @memberof HttpUtil */ public static POST(url, param: object | any, callback) { var xhr = cc.loader.getXMLHttpRequest(); xhr.timeout = 5000;//超时时间 let dataStr = ''; Object.keys(param).forEach(key => { dataStr += key + '=' + encodeURIComponent(param[key]) + '&'; }) if (dataStr !== '') { dataStr = dataStr.substr(0, dataStr.lastIndexOf('&')); } url = this.httpip + url; //console.log("请求地址:" + url); xhr.open("POST", url, true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function () { if (xhr.readyState === 4) { let response: any = xhr.responseText; if (xhr.status >= 200 && xhr.status < 300) { let httpStatus = xhr.statusText; // callback(true, JSON.parse(response)); try { response = JSON.parse(response); } catch { response = { data: "数据有误", code: 0 }; } callback(response); } else { callback({ data: "网络请求失败,请检查网络连接", code: 0 }); } } }; xhr.send(dataStr); } static http_sendRequest(path, data, handler, extraUrl = null) { let xhr = cc.loader.getXMLHttpRequest(); xhr.timeout = 5000;//超时时间 if (data == null) { data = {}; } if (extraUrl == null) { //@ts-ignore if (Utils.isDebug) { extraUrl = "http://localhost:9003"; } else { extraUrl = this.httpip; } } //解析请求路由以及格式化请求参数 let sendtext = "?"; for (let k in data) { if (sendtext != "?") { sendtext += "&"; } sendtext += (k + '=' + data[k]); } //组装完整的URL let requestURL = extraUrl + "/" + path + encodeURI(sendtext); // //console.log("发送请求:"); // //console.log(requestURL); //发送请求 Get形式发送请求 xhr.open("GET", requestURL, true); if (cc.sys.isNative) {//如果是手机就设置请求头 xhr.setRequestHeader("Accept-Encoding", "gzip,deflate"); } //计时判断是否超时 let hasRetried = false; let timer = setTimeout(function () { //xhr.hasRetried=true; hasRetried = true; xhr.abort(); //console.log("http timeOut......"); retryFun(); }, 5000); //重新发送请求 let retryFun = function () { Utils.http_sendRequest(path, data, handler, extraUrl); } //监听反馈 xhr.onreadystatechange = function () { clearTimeout(timer); if (xhr.readyState === 4 && (xhr.status >= 200 && xhr.status < 300)) { let ret = null; let respText = xhr.responseText; try { ret = JSON.parse(respText); } catch (e) { //console.log("http error:" + e); ret = { code: 1, msg: e } } if (handler) { handler(ret); } handler = null; } else if (xhr.readyState === 4) { // if(xhr.hasRetried){ // return; // } if (hasRetried) { return; } //console.log('other readystate ==' + xhr.readyState + ', status:' + xhr.status); if (xhr.readyState == 4 && xhr.status == 0) { handler({ err: 1, msg: "网络连接失败,请稍后再试" }); return; } setTimeout(function () { retryFun(); }, 5000); } else { //console.log('other readystate:' + xhr.readyState + ', status:' + xhr.status); } } try { xhr.send(); } catch (e) { retryFun(); } return xhr; } //#region laf云函数 游戏内数据用 //获取用户数据,包含头像昵称注册时间 static getUserData(callBack) { if (typeof wx !== 'undefined' && wx !== null) { let uid = cc.fx.StorageMessage.getStorage("uid"); //旧的读取数据设置数据方法,以强联网为主 if (uid != undefined && uid != "" && uid != null) { cc.fx.GameConfig.GM_INFO.uid = uid; } let data = { uid: cc.fx.GameConfig.GM_INFO.uid, action: 'read', } Utils.POST("userData", data, res => { //console.log("获得userData数据:", res); if (res.code === 1) { //console.log("服务器:获取用户数据成功", res); if (callBack) callBack(res); } else { //console.log("服务器:获取用户数据失败", res); if (callBack) callBack(res); } }); } } //上传用户信息 static setUserData(data, callBack) { if (typeof wx !== 'undefined' && wx !== null) { let uid = cc.fx.StorageMessage.getStorage("uid"); //旧的读取数据设置数据方法,以强联网为主 if (uid != undefined && uid != "" && uid != null) { cc.fx.GameConfig.GM_INFO.uid = uid; } let setData = { uid: cc.fx.GameConfig.GM_INFO.uid, action: 'save', userData: data } Utils.POST("userData", setData, res => { //console.log("获得userData数据:", res); if (res.code === 1) { //console.log("服务器:获取用户数据成功", res); if (callBack) callBack(res); } else { //console.log("服务器:获取用户数据失败", res); if (callBack) callBack(res); } }); } } //获得金币信息 static getUserCoin(callBack) { if (typeof wx !== 'undefined' && wx !== null) { let uid = cc.fx.StorageMessage.getStorage("uid"); //旧的读取数据设置数据方法,以强联网为主 if (uid != undefined && uid != "" && uid != null) { cc.fx.GameConfig.GM_INFO.uid = uid; } let setData = { uid: cc.fx.GameConfig.GM_INFO.uid, action: 'read', } Utils.POST("userCoin", setData, res => { //console.log("获得userCoin数据:", res); if (res.code === 1) { //console.log("服务器:获得金币成功", res); if (callBack) callBack(res); } else { //console.log("服务器:获得金币失败", res); if (callBack) callBack(res); } }); } } //上传金币信息 static setUserCoin(callBack) { if (typeof wx !== 'undefined' && wx !== null) { let uid = cc.fx.StorageMessage.getStorage("uid"); //旧的读取数据设置数据方法,以强联网为主 if (uid != undefined && uid != "" && uid != null) { cc.fx.GameConfig.GM_INFO.uid = uid; } let setData = { uid: cc.fx.GameConfig.GM_INFO.uid, action: 'save', coinAmount: Math.floor(cc.fx.GameConfig.GM_INFO.coin) } //console.log("服务器:上传金币", Math.floor(cc.fx.GameConfig.GM_INFO.coin)); Utils.POST("userCoin", setData, res => { //console.log("获得userCoin数据:", res); if (res.code === 1) { //console.log("服务器:上传金币成功", res); if (callBack) callBack(res); } else { //console.log("服务器:上传金币失败", res); if (callBack) callBack(res); } }); } } //获得关卡等级信息 static getUserLevel(callBack) { if (typeof wx !== 'undefined' && wx !== null) { let uid = cc.fx.StorageMessage.getStorage("uid"); //旧的读取数据设置数据方法,以强联网为主 if (uid != undefined && uid != "" && uid != null) { cc.fx.GameConfig.GM_INFO.uid = uid; } let setData = { uid: cc.fx.GameConfig.GM_INFO.uid, action: 'read', } Utils.POST("userLevel", setData, res => { //console.log("获得userLevel数据:", res); if (res.code === 1) { //console.log("服务器:获得等级成功", res); if (callBack) callBack(res); } else { //console.log("服务器:获得等级失败", res); if (callBack) callBack(res); } }); } } //上传关卡等级信息 static setUserLevel(callBack) { if (typeof wx !== 'undefined' && wx !== null) { let uid = cc.fx.StorageMessage.getStorage("uid"); //旧的读取数据设置数据方法,以强联网为主 if (uid != undefined && uid != "" && uid != null) { cc.fx.GameConfig.GM_INFO.uid = uid; } let setData = { uid: cc.fx.GameConfig.GM_INFO.uid, action: 'save', levelAmount: parseInt(cc.fx.GameConfig.GM_INFO.level) } Utils.POST("userLevel", setData, res => { //console.log("获得userLevel数据:", res); if (res.code === 1) { //console.log("服务器:上传等级成功", res); if (callBack) callBack(res); } else { //console.log("服务器:上传等级失败", res); if (callBack) callBack(res); } }); } } //获得用户道具信息 static getUserProp(callBack) { if (typeof wx !== 'undefined' && wx !== null) { let uid = cc.fx.StorageMessage.getStorage("uid"); //旧的读取数据设置数据方法,以强联网为主 if (uid != undefined && uid != "" && uid != null) { cc.fx.GameConfig.GM_INFO.uid = uid; } let setData = { uid: cc.fx.GameConfig.GM_INFO.uid, action: 'read', } Utils.POST("userProp", setData, res => { //console.log("获得userProp数据:", res); if (res.code === 1) { //console.log("服务器:获得道具成功", res); if (callBack) callBack(res); } else { //console.log("服务器:获得道具失败", res); if (callBack) callBack(res); } }); } } //上传道具信息 static setUserProp(propid, amount, callBack) { if (typeof wx !== 'undefined' && wx !== null) { let uid = cc.fx.StorageMessage.getStorage("uid"); //旧的读取数据设置数据方法,以强联网为主 if (uid != undefined && uid != "" && uid != null) { cc.fx.GameConfig.GM_INFO.uid = uid; } let setData = null; if (propid == 0) { setData = { uid: cc.fx.GameConfig.GM_INFO.uid, action: 'save', propType: propid, propData: JSON.stringify(amount), } } else { setData = { uid: cc.fx.GameConfig.GM_INFO.uid, action: 'save', propType: propid, propData: amount, } } //console.log("上传道具类型", propid, "上传道具数量:", amount); Utils.POST("userProp", setData, res => { //console.log("获得userProp数据:", res); if (res.code === 1) { //console.log("服务器:上传道具成功", res); if (callBack) callBack(res); } else { //console.log("服务器:上传道具失败", res); if (callBack) callBack(res); } }); } } //获得关卡等级信息 static getUserHealth(callBack) { if (typeof wx !== 'undefined' && wx !== null) { let uid = cc.fx.StorageMessage.getStorage("uid"); //旧的读取数据设置数据方法,以强联网为主 if (uid != undefined && uid != "" && uid != null) { cc.fx.GameConfig.GM_INFO.uid = uid; } let setData = { uid: cc.fx.GameConfig.GM_INFO.uid, action: 'read', } Utils.POST("userHealth", setData, res => { //console.log("获得userHealth数据:", res); if (res.code === 1) { //console.log("服务器:获得体力成功", res); if (callBack) callBack(res); } else { //console.log("服务器:获得体力失败", res); if (callBack) callBack(res); } }); } } //上传关卡等级信息 static setUserHealth(timestamp, callBack) { if (typeof wx !== 'undefined' && wx !== null) { let uid = cc.fx.StorageMessage.getStorage("uid"); //旧的读取数据设置数据方法,以强联网为主 if (uid != undefined && uid != "" && uid != null) { cc.fx.GameConfig.GM_INFO.uid = uid; } let setData = { uid: cc.fx.GameConfig.GM_INFO.uid, action: 'save', healthAmount: cc.fx.GameConfig.GM_INFO.hp, timestamp: timestamp } Utils.POST("userHealth", setData, res => { //console.log("获得userHealth数据:", res); if (res.code === 1) { //console.log("服务器:上传体力成功", res); if (callBack) callBack(res); } else { //console.log("服务器:上传体力失败", res); if (callBack) callBack(res); } }); } } //获得关卡等级信息 static getUserPowerTime(callBack) { if (typeof wx !== 'undefined' && wx !== null) { let uid = cc.fx.StorageMessage.getStorage("uid"); //旧的读取数据设置数据方法,以强联网为主 if (uid != undefined && uid != "" && uid != null) { cc.fx.GameConfig.GM_INFO.uid = uid; } let setData = { uid: cc.fx.GameConfig.GM_INFO.uid, action: 'read', } Utils.POST("userPower", setData, res => { //console.log("获得userPower数据:", res); if (res.code === 1) { //console.log("服务器:获得无限体力成功", res); if (callBack) callBack(res); } else { //console.log("服务器:获得无限体力失败", res); if (callBack) callBack(res); } }); } } //上传关卡等级信息 static setUserPowerTime(userPowerTime, callBack) { if (typeof wx !== 'undefined' && wx !== null) { let uid = cc.fx.StorageMessage.getStorage("uid"); //旧的读取数据设置数据方法,以强联网为主 if (uid != undefined && uid != "" && uid != null) { cc.fx.GameConfig.GM_INFO.uid = uid; } let setData = { uid: cc.fx.GameConfig.GM_INFO.uid, action: 'save', userPowerTime: userPowerTime } Utils.POST("userPower", setData, res => { //console.log("获得userPower数据:", res); if (res.code === 1) { //console.log("服务器:上传无限体力成功", res); if (callBack) callBack(res); } else { //console.log("服务器:上传无限体力失败", res); if (callBack) callBack(res); } }); } } //获得monthlyCard信息 少用 static monthGetReward(callBack) { if (typeof wx !== 'undefined' && wx !== null) { let uid = cc.fx.StorageMessage.getStorage("uid"); //旧的读取数据设置数据方法,以强联网为主 if (uid != undefined && uid != "" && uid != null) { cc.fx.GameConfig.GM_INFO.uid = uid; } let setData = { uid: cc.fx.GameConfig.GM_INFO.uid, } Utils.POST("monthGetReward", setData, res => { // //console.log("获得monthGetReward数据:", res); if (res.code === 1) { // //console.log("服务器:领取获得monthGetReward成功'✅ ", res); if (callBack) callBack(res); } else { // //console.log("服务器:获得monthGetReward失败'❌ ", res); if (callBack) callBack(res); } }); } } static getMonthlyCard(callBack) { if (typeof wx !== 'undefined' && wx !== null) { let uid = cc.fx.StorageMessage.getStorage("uid"); // //console.log("获取monthlyCard信息:", uid, monthCardTime); //旧的读取数据设置数据方法,以强联网为主 if (uid != undefined && uid != "" && uid != null) { cc.fx.GameConfig.GM_INFO.uid = uid; } let setData = { uid: cc.fx.GameConfig.GM_INFO.uid, action: 'read', } Utils.POST("monthlyCard", setData, res => { // //console.log("获得monthlyCard数据:", res); if (res.code === 1) { // //console.log("服务器:获取monthlyCard成功'✅ ", res); if (callBack) callBack(res); } else { // //console.log("服务器:获取monthlyCard失败'❌ ", res); if (callBack) callBack(res); } }); } } //上传monthlyCard信息 static setMonthlyCard(monthCardTime, callBack) { if (typeof wx !== 'undefined' && wx !== null) { let uid = cc.fx.StorageMessage.getStorage("uid"); // //console.log("上传monthlyCard信息:", uid, monthCardTime); //旧的读取数据设置数据方法,以强联网为主 if (uid != undefined && uid != "" && uid != null) { cc.fx.GameConfig.GM_INFO.uid = uid; } let setData = { uid: cc.fx.GameConfig.GM_INFO.uid, action: 'save', monthCardTime: monthCardTime, } Utils.POST("monthlyCard", setData, res => { // //console.log("获得monthlyCard数据:", res); if (res.code === 1) { // //console.log("服务器:上传monthlyCard成功'✅ ", res); if (callBack) callBack(res); } else { // //console.log("服务器:上传monthlyCard失败'❌ ", res); if (callBack) callBack(res); } }); } } //canRebonGift信息 static canRebonGift(callBack) { if (typeof wx !== 'undefined' && wx !== null) { let uid = cc.fx.StorageMessage.getStorage("uid"); //旧的读取数据设置数据方法,以强联网为主 if (uid != undefined && uid != "" && uid != null) { cc.fx.GameConfig.GM_INFO.uid = uid; } let setData = { uid: cc.fx.GameConfig.GM_INFO.uid, } Utils.POST("canRebonGift", setData, res => { if (res.code === 1) { //console.log("服务器:canRebonGift'✅ ", res); if (callBack) callBack(res); } else { if (callBack) callBack(res); } }); } } //购买 //上传monthlyCard信息 static rebornGift(rebornGift, callBack) { if (typeof wx !== 'undefined' && wx !== null) { let uid = cc.fx.StorageMessage.getStorage("uid"); // //console.log("上传monthlyCard信息:", uid, monthCardTime); //旧的读取数据设置数据方法,以强联网为主 if (uid != undefined && uid != "" && uid != null) { cc.fx.GameConfig.GM_INFO.uid = uid; } let setData = { uid: cc.fx.GameConfig.GM_INFO.uid, action: 'save', rebornGift: rebornGift, } Utils.POST("rebornGift", setData, res => { // //console.log("获得rebornGift数据:", res); if (res.code === 1) { //console.log("服务器:上传rebornGift成功'✅ ", res); if (callBack) callBack(res); } else { // //console.log("服务器:上传rebornGift失败'❌ ", res); if (callBack) callBack(res); } }); } } //设置分享成功信息,帮别人成功 static shareLevel(otherLevel, uid, callBack) { let otheruid = uid || ""; let level = otherLevel || 0; let data = { uid: otheruid, otherUid: cc.fx.GameConfig.GM_INFO.uid, shareLv: level, }; // 延迟时间数组,按照 1 秒 3 次、2 秒 5 次、5 秒 6 次、15 秒 5 次的规则生成 const delays = [ ...Array(3).fill(1000), ...Array(5).fill(2000), ...Array(6).fill(5000), ...Array(5).fill(15000) ]; let attempt = 0; // 轮询次数 const poll = () => { if (attempt >= delays.length) { MiniGameSdk.API.showToast("网络异常,分享数据提交失败"); callBack({ code: 0, data: null, message: '轮询超时' }); return; } Utils.POST("shareLvSuccess", data, res => { //console.log("获得shareLvSuccess数据:", res); if (res.code === 1) { //console.log("服务器:分享帮助通过关卡数据成功", res); callBack(res); } else { attempt++; setTimeout(poll, delays[attempt - 1]); } }); }; poll(); } //获取分享信息 static getShareLevel(callBack) { let data = { uid: cc.fx.GameConfig.GM_INFO.uid }; if (typeof wx !== 'undefined' && wx !== null) { Utils.POST("getShareLv", data, res => { //console.log("获得shareLvSuccess数据:", res); if (res.code === 1) { //console.log("服务器:分享帮助通过关卡数据成功", res); if (callBack) callBack(res); } else { if (callBack) callBack(res); } }); } } }