From c33693558937a02ebba8aca82943d9290086bdcb Mon Sep 17 00:00:00 2001 From: "YZ\\249929363" <249929363@qq.com> Date: Fri, 8 Aug 2025 16:19:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/Script/Revive.ts | 2 +- assets/Script/module/Pay/Utils.ts | 93 ++++++++++++++++++------------- assets/Script/monthlyCard.ts | 1 + assets/shop/script/shop.ts | 2 +- 4 files changed, 57 insertions(+), 41 deletions(-) diff --git a/assets/Script/Revive.ts b/assets/Script/Revive.ts index 028931c..0908685 100644 --- a/assets/Script/Revive.ts +++ b/assets/Script/Revive.ts @@ -110,7 +110,7 @@ export default class Revive extends cc.Component { else if (data.code == 2) { this.closeLoad(); console.log("轮训超时"); - MiniGameSdk.API.showToast("订单已关闭"); + MiniGameSdk.API.showToast("请检查网络,如充值成功,请重新登录领取"); const dataFail = { outTradeNo: iosOutTradeNo, pay_amount: iosAmount, diff --git a/assets/Script/module/Pay/Utils.ts b/assets/Script/module/Pay/Utils.ts index 7f0ac64..985496b 100644 --- a/assets/Script/module/Pay/Utils.ts +++ b/assets/Script/module/Pay/Utils.ts @@ -203,49 +203,64 @@ export default class Utils { } }); } + // static getIosPayInfo(order, callBack) { + // // 延迟时间数组,按照 1 秒 3 次、2 秒 5 次、5 秒 6 次、15 秒 5 次的规则生成 + // const iosOutTradeNo = order; + // 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 { + // callBack(res); + // } + // }); + // } 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(10000) - ]; - 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]); - } - }); - }; - + // 延迟 0.5 秒执行后续逻辑 setTimeout(() => { - poll(); + // 最大重试次数 + const maxRetries = 3; + let retryCount = 0; + // 标志位,用于记录 callBack 是否已经被调用 + let isCallBackCalled = false; + + const makeRequest = () => { + if (retryCount > maxRetries) { + if (!isCallBackCalled) { + MiniGameSdk.API.showToast("网络异常,如充值成功,重进游戏可领取奖励"); + callBack({ code: 2, data: null, message: '轮询超时,达到最大重试次数' }); + isCallBackCalled = true; + } + return; + } + + // 设置超时定时器 + const timeoutId = setTimeout(() => { + retryCount++; + console.log(`请求超时,第 ${retryCount} 次重新申请接口`); + makeRequest(); + }, 3000); + + const iosOutTradeNo = order; + console.log("请求uid:" + Utils.uid); + console.log("outTradeNo:" + iosOutTradeNo); + Utils.POST("wx/iosgetPayInfo", { outTradeNo: iosOutTradeNo }, res => { + console.log("查询字符结果IOS"); + console.log(res); + // 清除超时定时器 + clearTimeout(timeoutId); + if (!isCallBackCalled) { + callBack(res); + isCallBackCalled = true; + } + }); + }; + makeRequest(); }, 500); - } - - - //#endregion //#region 微信云 diff --git a/assets/Script/monthlyCard.ts b/assets/Script/monthlyCard.ts index 2a52100..b816f60 100644 --- a/assets/Script/monthlyCard.ts +++ b/assets/Script/monthlyCard.ts @@ -119,6 +119,7 @@ export default class NewClass extends cc.Component { else if (data.code == 2) { this.closeLoad(); console.log("轮训超时"); + MiniGameSdk.API.showToast("请检查网络,如充值成功,请重新登录领取"); // MiniGameSdk.API.showToast("订单已关闭"); const dataFail = { outTradeNo: iosOutTradeNo, diff --git a/assets/shop/script/shop.ts b/assets/shop/script/shop.ts index bc0d873..95c15c2 100644 --- a/assets/shop/script/shop.ts +++ b/assets/shop/script/shop.ts @@ -285,7 +285,7 @@ export default class NewClass extends cc.Component { else if (data.code == 2) { this.closeLoad(); console.log("轮训超时"); - MiniGameSdk.API.showToast("订单已关闭"); + MiniGameSdk.API.showToast("请检查网络,如充值成功,请重新登录领取"); const dataFail = { outTradeNo: iosOutTradeNo, pay_amount: iosAmount,