Files
MatchMaster/assets/Script/monthlyCard.ts
T

542 lines
23 KiB
TypeScript

import { popupContent } from "./PopupContent";
import PopupAnimator, { ActivityPopupAnimationType as PopupType } from "./ActivityPopupAnimator";
// Learn TypeScript:
// - https://docs.cocos.com/creator/2.4/manual/en/scripting/typescript.html
// Learn Attribute:
// - https://docs.cocos.com/creator/2.4/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
// - https://docs.cocos.com/creator/2.4/manual/en/scripting/life-cycle-callbacks.html
import JiaZai from "./JiaZai";
import LoadingCatAnimation from "./LoadingCatAnimation";
import Utils from "./module/Pay/Utils";
import NumberToImage from "./NumberToImage";
import SceneManager from "./SceneManager";
import { MiniGameSdk } from "./Sdk/MiniGameSdk";
const { ccclass, property } = cc._decorator;
@ccclass
export default class NewClass extends cc.Component {
onDisable() {
this.unschedule(this.playPopupEntrance);
PopupAnimator.cancel(popupContent(this.node, ["ditu", "Loading", "ConfirmBox"]));
}
onEnable() {
this.unschedule(this.playPopupEntrance);
PopupAnimator.prepareOpen(popupContent(this.node, ["ditu","Loading","ConfirmBox"]));
this.scheduleOnce(this.playPopupEntrance, 0);
}
private playPopupEntrance() {
if (cc.isValid(this.node, true) && this.node.activeInHierarchy) PopupAnimator.openPrepared(popupContent(this.node, ["ditu","Loading","ConfirmBox"]));
}
@property(cc.Node)
monthCardTime: cc.Node = null;
//月卡按钮切换
@property(cc.Node)
monthCardBtn: cc.Node = null;
//月卡按钮
@property(cc.Node)
monthCardBtn2: cc.Node = null;
public juwai = false;
btn_Touch: boolean = false;
// LIFE-CYCLE CALLBACKS:
private onShowListener: () => void;
private iosPrice: number = 0;
private iosProductId: string = "";
private iosCount: number = 1;
public home: number = 0;
onLoad() {
this.btn_Touch = true;
// 检测微信小游戏切到后台
this.home = 0;
}
onShow() {
console.log("后台进入前台,monthlcard");
if (cc.sys.platform === cc.sys.WECHAT_GAME || cc.sys.platform === cc.sys.BYTEDANCE_GAME) {
console.log("从后台进入前台订单号:", cc.fx.GameConfig.GM_INFO.iosMonthOrder);
if (cc.fx.GameConfig.GM_INFO.iosMonthOrder != null && cc.fx.GameConfig.GM_INFO.iosMonthOrder != "") {
console.log("有苹果订单号,开始轮训");
const iosMonthOrder = cc.fx.GameConfig.GM_INFO.iosMonthOrder;
this.openLoad();
this.btn_Touch = true;
Utils.getIosPayInfo(iosMonthOrder,
(data) => {
console.log("月卡获得轮训结果:", data);
const iosID = data.data?.payment_name || this.iosProductId;
let iosAmount = data.data?.goodsPrice || this.iosPrice;
iosAmount = parseInt(iosAmount);
if (data.code == 1) {
console.log("购买成功");
// const dataSuccess = {
// outTradeNo: iosMonthOrder,
// pay_amount: iosAmount,
// payment_name: iosID,
// payment_num: this.iosCount,
// type: "ios",
// }
// cc.fx.GameTool.shushu_Track("payment", dataSuccess);
let name = "购买金币道具:" + iosID;
console.log("引力付费透传", iosAmount, iosMonthOrder, name);
MiniGameSdk.API.yinli_Pay(iosAmount, iosMonthOrder, name)
console.log("_________正式发货");
MiniGameSdk.API.showToast("充值成功");
if (iosID == "month_Card") {
this.buyMonthCard(iosID, iosMonthOrder);
}
if (this.node && this.node.parent) {
if (this.node.parent.getComponent("JiaZai"))
this.node.parent.getComponent("JiaZai").updateCoin();
else if (this.node.parent.getComponent("SceneManager")) {
this.node.parent.getComponent("SceneManager").updateCoin();
}
}
//console.log("充值成功获得金币");
}
else if (data.code == 0) {
console.log("用户自己取消充值");
MiniGameSdk.API.showToast("充值失败");
this.closeLoad();
this.btn_Touch = true;
const dataFail = {
outTradeNo: iosMonthOrder,
pay_amount: iosAmount,
payment_name: iosID,
payment_num: this.iosCount,
type: "ios",
fail_reason: "用户取消充值",
}
if (iosID != undefined && iosID != "" && iosID != null) {
cc.fx.GameTool.shushu_Track("payment_fail", dataFail);
}
cc.fx.GameConfig.GM_INFO.iosMonthOrder = null;
}
else if (data.code == 2) {
this.closeLoad();
this.btn_Touch = true;
console.log("轮训超时");
MiniGameSdk.API.showToast("请检查网络链接后, 再次领取奖励", 4);
// MiniGameSdk.API.showToast("订单已关闭");
const dataFail = {
outTradeNo: iosMonthOrder,
pay_amount: iosAmount,
payment_name: iosID,
payment_num: this.iosCount,
type: "ios",
fail_reason: "用户充值后,轮训结果超时",
}
cc.fx.GameTool.shushu_Track("payment_fail", dataFail);
this.openConfirmBox();
}
})
}
}
}
start() {
let isExpired = cc.fx.GameTool.checkExpiration();
this.refreshCardState(isExpired);
if (isExpired) {
NumberToImage.numberToImageNodes(cc.fx.GameConfig.GM_INFO.monthTime, 35, 20, "month_", this.monthCardTime, true);
}
}
private refreshCardState(hasActiveCard: boolean) {
this.monthCardBtn.active = !hasActiveCard;
this.monthCardBtn2.active = hasActiveCard;
this.node.getChildByName("kaitong").active = !hasActiveCard;
this.node.getChildByName("xufei").active = hasActiveCard;
this.node.getChildByName("shengxiao").active = hasActiveCard;
}
init() {
this.onEnable();
// 与首页弹窗动画的最终尺寸一致,局内入口也不能保留预制体的 1 倍缩放。
this.node.scale = 0.7;
let isExpired = cc.fx.GameTool.checkExpiration();
if (cc.sys.platform === cc.sys.WECHAT_GAME || cc.sys.platform === cc.sys.BYTEDANCE_GAME) {
// 定义监听函数
this.onShowListener = () => {
console.log("微信小游戏切到前台,monthCard");
this.onShow();
};
//@ts-ignore
wx.onShow(this.onShowListener);
}
this.btn_Touch = true;
this.refreshCardState(isExpired);
if (isExpired) {
NumberToImage.numberToImageNodes(cc.fx.GameConfig.GM_INFO.monthTime, 35, 20, "cost_", this.monthCardTime, true);
}
}
//购买月卡
buyMonthCard(id, outTradeNo?: string) {
Utils.setMonthlyCard(0, (data) => {
console.log("购买月卡", data.code);
if (data.code == 1) {
this.setReward(id);
// let rewardData = [
// { type: "coin", count: 6000 },
// ]
}
}, outTradeNo)
// update (dt) {}
}
setReward(id) {
cc.fx.GameConfig.GM_INFO.iosMonthOrder = null;
this.closeLoad();
this.btn_Touch = true;
cc.fx.GameTool.shopBuy(id, false);
cc.fx.GameConfig.GM_INFO.hp_Max = 7;
cc.fx.GameConfig.GM_INFO.hp = 7;
cc.fx.GameConfig.GM_INFO.doubleCoin = 2;
this.home = 1;
cc.fx.GameTool.getMonthlyCardValidityDays().then(days => {
cc.fx.GameConfig.GM_INFO.monthTime = days.days;
//本地储存当前服务器时间
let dateStr = new Date(days.time);
cc.fx.StorageMessage.setStorage("mCardDate", dateStr);
NumberToImage.numberToImageNodes(days.days, 35, 20, "month_", this.monthCardTime, true);
this.refreshCardState(cc.fx.GameTool.checkExpiration());
const shop = cc.find("Canvas/shop");
const shopComp = shop && shop.getComponent("shop");
if (shopComp) shopComp.updateIcon();
});
// cc.fx.GameTool.changeCoin(6000);
const jiazaiNode = cc.find("Canvas"); // 假设 JiaZai 挂在 Canvas 节点
const jiazaiComp = jiazaiNode.getComponent(JiaZai);
if (jiazaiComp) {
console.log("获取到JiaZai组件", jiazaiComp);
setTimeout(() => {
jiazaiComp.setHealthInfo(false);
jiazaiComp.startTimeCutDown();
jiazaiComp.updateCoin();
}, 300);
} else {
const scene = jiazaiNode.getComponent("SceneManager");
if (scene) scene.updateCoin();
}
this.refreshCardState(true);
this.monthCardTime.active = true;
cc.fx.GameTool.setUserHealth(0, (data) => {
cc.fx.GameTool.getHealth(null);
})
let shop = cc.find("Canvas/shop");
if (shop) {
let shopComp = shop.getComponent("shop");
if (shopComp) {
shopComp.openShop();
shopComp.refreshJungleRewardDisplay();
}
}
}
closeMonthCard() {
this.unschedule(this.playPopupEntrance);
const content = popupContent(this.node, ["ditu","Loading","ConfirmBox"]);
if (!content || (Array.isArray(content) && !content.length)) { this.finishPopupCloseMonthCard(); return; }
PopupAnimator.close(content, PopupType.Bounce, () => this.finishPopupCloseMonthCard());
}
finishPopupCloseMonthCard() {
cc.fx.AudioManager._instance.playEffect("anniu_little", null);
// this.init();
//获取商城界面更新图标方法
let shop = cc.find("Canvas/shop");
if (shop) {
let shopComp = shop.getComponent("shop");
if (shopComp) {
shopComp.openShop();
}
}
// 移除 wx.onShow 监听器
if ((cc.sys.platform === cc.sys.WECHAT_GAME || cc.sys.platform === cc.sys.BYTEDANCE_GAME) && this.onShowListener) {
console.log("月卡关闭监听");
//@ts-ignore
wx.offShow(this.onShowListener);
}
//jiazai
const jiazaiNode = cc.find("Canvas"); // 假设 JiaZai 挂在 Canvas 节点
const jiazaiComp = jiazaiNode.getComponent(JiaZai);
let isExpired = cc.fx.GameTool.checkExpiration();
if (jiazaiComp && this.home == 1 && isExpired) {
this.home = 0;
jiazaiComp.rewarded();
console.log("123iiiii222")
}
if (jiazaiComp) {
console.log("22222222")
jiazaiComp.onGames();
}
if (this.node) {
this.node.active = false;
}
}
againGet() {
cc.fx.AudioManager._instance.playEffect("anniu_little", null);
this.closeConfirmBox();
this.onShow();
}
buyProduct(event, customData) {
if (!this.btn_Touch) {
return;
}
cc.fx.AudioManager._instance.playEffect("anniu_little", null);
this.btn_Touch = false;
const productId = customData;
let id = "10011";
let price = 100;
let count = 1;
id = productId;
switch (productId) {
case "month_Card":
price = 3000;
break;
}
console.log("获得商品id:", id, count, price);
// 判断设备系统
let systemType = "Android";
try {
//@ts-ignore
const systemInfo = wx.getSystemInfoSync();
if (systemInfo.platform === 'ios') {
systemType = "ios";
}
} catch (e) {
console.error('获取系统信息失败', e);
}
if (systemType == "ios" && !cc.fx.GameConfig.GM_INFO.iosCanPay) {
// MiniGameSdk.API.showToast("IOS系统暂不支持支付");
// this.btn_Touch = true;
this.openLoad();
this.btn_Touch = true;
this.iosOldPay(price, productId);
}
else {
// MiniGameSdk.API.showToast("充值成功");
// cc.fx.GameTool.shopBuy(productId, false);
// setTimeout(() => {
// if (productId == "unlimited_health_bundle_1" ||
// productId == "unlimited_health_bundle_2" ||
// productId == "unlimited_health_bundle_3"
// ) {
// console.log("触发————————updatePower");
// this.updatePower();
// }
// }, 500);
this.openLoad();
this.btn_Touch = true;
//console.log("7.14_____________________", "调用充值接口");
Utils.buyProp(id, count, price, systemType, productId, (res) => {
//console.log("获得充值结果", res);
if (res == null) {
MiniGameSdk.API.showToast("充值失败");
this.btn_Touch = true;
const dataFail = {
outTradeNo: Utils.outTradeNo,
pay_amount: price,
payment_name: productId,
payment_num: 1,
type: systemType,
fail_reason: "网络异常,没有拉起支付",
}
cc.fx.GameTool.shushu_Track("payment_fail", dataFail);
this.closeLoad();
return;
}
else if (res.err) {
console.log("错误原因:", res.errMsg);
if (res.errCode == 16) {
// console.log("走ios旧支付");
this.iosOldPay(price, productId);
return;
}
MiniGameSdk.API.showToast("充值失败");
//console.log(res);
this.btn_Touch = true;
let name = "支付拉起失败";
if (res.errCode == -2) {
name = "用户取消充值";
}
const dataFail = {
outTradeNo: Utils.outTradeNo,
pay_amount: price,
payment_name: productId,
payment_num: 1,
type: systemType,
fail_reason: name,
}
cc.fx.GameTool.shushu_Track("payment_fail", dataFail);
this.closeLoad();
return;
}
else {
Utils.getPayInfo((data) => {
//console.log("7.14_______________充值成功,准备轮训");
//console.log("获得轮训结果:", data);
this.closeLoad();
if (data.data.pay_state == 1) {
this.btn_Touch = true;
MiniGameSdk.API.showToast("取消充值");
const dataFail2 = {
outTradeNo: Utils.outTradeNo,
pay_amount: price,
payment_name: productId,
payment_num: 1,
type: systemType,
fail_reason: "用户取消支付",
}
cc.fx.GameTool.shushu_Track("payment_fail", dataFail2);
}
else if (data.data.pay_state == 2) {
this.btn_Touch = true;
// const dataSuccess = {
// outTradeNo: Utils.outTradeNo,
// pay_amount: price,
// payment_name: productId,
// payment_num: 1,
// type: systemType,
// }
// cc.fx.GameTool.shushu_Track("payment", dataSuccess);
let name = "购买金币道具:" + productId;
console.log("引力付费透传", price, Utils.outTradeNo, name);
MiniGameSdk.API.yinli_Pay(price, Utils.outTradeNo, name)
console.log("7.14_______________充值成功,轮训成功,准备发货");
Utils.setPayInfo(
(res) => {
console.log("设置轮训结果:", res);
if (res.code === 1) {
console.log("7.14_________正式发货");
MiniGameSdk.API.showToast("充值成功");
if (productId == "month_Card") {
this.buyMonthCard(productId, Utils.outTradeNo);
}
//console.log("充值成功获得金币");
}
else {
MiniGameSdk.API.showToast("网络异常,充值奖励将在登录后再次发放");
const dataFail4 = {
outTradeNo: Utils.outTradeNo,
pay_amount: price,
payment_name: productId,
payment_num: 1,
type: systemType,
fail_reason: "成功付款,但是发货时请求服务器失败,充值成功未发货",
}
cc.fx.GameTool.shushu_Track("payment_fail", dataFail4);
}
if (this.node && this.node.parent) {
if (this.node.parent.getComponent("JiaZai"))
this.node.parent.getComponent("JiaZai").updateCoin();
else if (this.node.parent.getComponent("SceneManager")) {
this.node.parent.getComponent("SceneManager").updateCoin();
}
}
}, Utils.outTradeNo)
}
else {
const dataFail3 = {
outTradeNo: Utils.outTradeNo,
pay_amount: price,
payment_name: productId,
payment_num: 1,
type: systemType,
fail_reason: "拉起支付后,付款时网络异常付款失败",
}
cc.fx.GameTool.shushu_Track("payment_fail", dataFail3);
this.btn_Touch = true;
if (this.node && this.node.parent) {
if (this.node.parent.getComponent("JiaZai"))
this.node.parent.getComponent("JiaZai").updateCoin();
else if (this.node.parent.getComponent("SceneManager")) {
this.node.parent.getComponent("SceneManager").updateCoin();
}
}
}
})
}
});
}
}
openLoad() {
LoadingCatAnimation.play(this.node.getChildByName("Loading"));
}
openConfirmBox() {
if (!cc.isValid(this, true)) return;
this.closeLoad();
this.node.getChildByName("ConfirmBox").active = true;
PopupAnimator.open(popupContent(this.node.getChildByName("ConfirmBox"), ["New Sprite(Splash)"]));
}
closeConfirmBox() {
if (!cc.isValid(this, true)) return;
if (!this.node.getChildByName("ConfirmBox") || !this.node.getChildByName("ConfirmBox").active) return;
const content = popupContent(this.node.getChildByName("ConfirmBox"), ["New Sprite(Splash)"]);
if (!content || (Array.isArray(content) && !content.length)) { this.finishPopupCloseConfirmBox(); return; }
PopupAnimator.close(content, PopupType.Bounce, () => this.finishPopupCloseConfirmBox());
}
finishPopupCloseConfirmBox() {
this.node.getChildByName("ConfirmBox").active = false;
}
closeLoad() {
LoadingCatAnimation.stop(this.node.getChildByName("Loading"));
}
onDestroy() {
}
iosOldPay(price, productId) {
// 旧版本ios支付
let iosPayInfo = {
price: price,
payment_name: productId,
payment_count: 1,
}
this.iosPrice = price;
this.iosProductId = productId;
this.iosCount = 1;
console.log("准备跳客服回话:", iosPayInfo);
console.log(this.iosProductId);
Utils.GoKEFu(iosPayInfo, (res) => {
if (res == "success") {
console.log("客服回话成功");
}
else {
console.log("客服回话失败");
this.closeLoad();
}
});
}
}