490 lines
22 KiB
TypeScript
490 lines
22 KiB
TypeScript
// 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 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 {
|
||
|
||
@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() {
|
||
if (cc.sys.platform === cc.sys.WECHAT_GAME) {
|
||
console.log("从后台进入前台订单号:", cc.fx.GameConfig.GM_INFO.iosOutTradeNo);
|
||
if (cc.fx.GameConfig.GM_INFO.iosOutTradeNo != null && cc.fx.GameConfig.GM_INFO.iosOutTradeNo != "") {
|
||
console.log("有苹果订单号,开始轮训");
|
||
const iosOutTradeNo = cc.fx.GameConfig.GM_INFO.iosOutTradeNo;
|
||
cc.fx.GameConfig.GM_INFO.iosOutTradeNo = "";
|
||
this.openLoad();
|
||
this.btn_Touch = true;
|
||
Utils.getIosPayInfo(iosOutTradeNo,
|
||
(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: iosOutTradeNo,
|
||
pay_amount: iosAmount,
|
||
payment_name: iosID,
|
||
payment_num: this.iosCount,
|
||
type: "ios",
|
||
}
|
||
cc.fx.GameTool.shushu_Track("payment", dataSuccess);
|
||
let name = "购买金币道具:" + iosID;
|
||
MiniGameSdk.API.yinli_Pay(iosAmount, iosOutTradeNo, name)
|
||
Utils.setPayInfo(
|
||
(res) => {
|
||
this.closeLoad();
|
||
//console.log("设置轮训结果:", res);
|
||
if (res.code === 1) {
|
||
console.log("_________正式发货");
|
||
MiniGameSdk.API.showToast("充值成功");
|
||
|
||
if (iosID == "month_Card") {
|
||
this.buyMonthCard(iosID);
|
||
}
|
||
//console.log("充值成功获得金币");
|
||
}
|
||
else {
|
||
MiniGameSdk.API.showToast("网络异常,充值奖励将在登录后再次发放");
|
||
const dataFail4 = {
|
||
outTradeNo: iosOutTradeNo,
|
||
pay_amount: iosAmount,
|
||
payment_name: iosID,
|
||
payment_num: this.iosCount,
|
||
type: "ios",
|
||
fail_reason: "成功付款,但是发货时请求服务器失败,充值成功未发货",
|
||
}
|
||
cc.fx.GameTool.shushu_Track("payment_fail", dataFail4);
|
||
}
|
||
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();
|
||
}
|
||
}, iosOutTradeNo)
|
||
}
|
||
else if (data.code == 0) {
|
||
console.log("用户自己取消充值");
|
||
MiniGameSdk.API.showToast("充值失败");
|
||
this.closeLoad();
|
||
this.btn_Touch = true;
|
||
const dataFail = {
|
||
outTradeNo: iosOutTradeNo,
|
||
pay_amount: iosAmount,
|
||
payment_name: iosID,
|
||
payment_num: this.iosCount,
|
||
type: "ios",
|
||
fail_reason: "用户取消充值",
|
||
}
|
||
cc.fx.GameTool.shushu_Track("payment_fail", dataFail);
|
||
}
|
||
else if (data.code == 2) {
|
||
this.closeLoad();
|
||
console.log("轮训超时");
|
||
// MiniGameSdk.API.showToast("订单已关闭");
|
||
const dataFail = {
|
||
outTradeNo: iosOutTradeNo,
|
||
pay_amount: iosAmount,
|
||
payment_name: iosID,
|
||
payment_num: this.iosCount,
|
||
type: "ios",
|
||
fail_reason: "用户充值后,轮训结果超时",
|
||
}
|
||
cc.fx.GameTool.shushu_Track("payment_fail", dataFail);
|
||
}
|
||
|
||
this.btn_Touch = true;
|
||
cc.fx.GameConfig.GM_INFO.iosOutTradeNo = null;
|
||
})
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
start() {
|
||
Utils.getMonthlyCard((data) => {
|
||
if (data.msg == "不在有效期") {
|
||
this.monthCardBtn.active = true;
|
||
this.monthCardBtn2.active = false;
|
||
} else {
|
||
this.monthCardBtn.active = false;
|
||
this.monthCardBtn2.active = true;
|
||
NumberToImage.numberToImageNodes(cc.fx.GameConfig.GM_INFO.monthTime, 35, 20, "month_", this.monthCardTime, true);
|
||
}
|
||
})
|
||
|
||
}
|
||
init() {
|
||
if (cc.sys.platform === cc.sys.WECHAT_GAME) {
|
||
this.onShowListener = null;
|
||
// 定义监听函数
|
||
this.onShowListener = () => {
|
||
this.onShow();
|
||
};
|
||
//@ts-ignore
|
||
wx.onShow(this.onShowListener);
|
||
}
|
||
this.btn_Touch = true;
|
||
if (cc.fx.GameConfig.GM_INFO.hp_Max == 7) {
|
||
this.monthCardBtn.active = false;
|
||
this.monthCardBtn2.active = true;
|
||
NumberToImage.numberToImageNodes(cc.fx.GameConfig.GM_INFO.monthTime, 35, 20, "month_", this.monthCardTime, true);
|
||
} else {
|
||
this.monthCardBtn.active = true;
|
||
this.monthCardBtn2.active = false;
|
||
}
|
||
}
|
||
|
||
//购买月卡
|
||
buyMonthCard(id) {
|
||
Utils.setMonthlyCard(0, (data) => {
|
||
console.log("购买月卡'✅ ", data.code);
|
||
if (data.code == 1) {
|
||
// let rewardData = [
|
||
// { type: "coin", count: 6000 },
|
||
// ]
|
||
cc.fx.GameTool.shopBuy(id, false);
|
||
cc.fx.GameConfig.GM_INFO.hp_Max = 7;
|
||
cc.fx.GameConfig.GM_INFO.hp = 7;
|
||
this.home = 1;
|
||
// cc.fx.GameTool.changeCoin(6000);
|
||
const jiazaiNode = cc.find("Canvas"); // 假设 JiaZai 挂在 Canvas 节点
|
||
const jiazaiComp = jiazaiNode.getComponent(JiaZai);
|
||
jiazaiComp.getMonthlyCardValidityDays().then(days => {
|
||
cc.fx.GameConfig.GM_INFO.monthTime = days;
|
||
NumberToImage.numberToImageNodes(days, 35, 20, "month_", this.monthCardTime, true);
|
||
});
|
||
if (jiazaiComp) {
|
||
setTimeout(() => {
|
||
jiazaiComp.setHealthInfo(false);
|
||
jiazaiComp.startTimeCutDown();
|
||
jiazaiComp.updateCoin();
|
||
|
||
}, 300);
|
||
} else {
|
||
console.log("无法获取JiaZai组件");
|
||
}
|
||
|
||
this.monthCardBtn.active = false;
|
||
this.monthCardBtn2.active = true;
|
||
this.monthCardTime.active = true;
|
||
cc.fx.GameConfig.GM_INFO.doubleCoin = 2;
|
||
// if (this.juwai == true) {
|
||
// if (jiazaiComp) {
|
||
// setTimeout(() => {
|
||
// jiazaiComp.openRewardWindow(rewardData, 1);
|
||
// }, 300);
|
||
// }
|
||
// console.log("月卡奖励juwai");
|
||
// } else {
|
||
// // 尝试获取SceneManager组件
|
||
// const jiazaiComp1 = jiazaiNode.getComponent(SceneManager);
|
||
// if (jiazaiComp1) {
|
||
// setTimeout(() => {
|
||
// jiazaiComp1.updateCoin();
|
||
// // 确保openRewardWindow方法存在
|
||
// if (typeof jiazaiComp1.openRewardWindow === 'function') {
|
||
// jiazaiComp1.openRewardWindow(rewardData);
|
||
// } else {
|
||
// console.error("SceneManager组件中没有openRewardWindow方法");
|
||
// // 尝试使用JiaZai组件的openRewardWindow方法作为备选
|
||
// const jiazaiComp2 = jiazaiNode.getComponent(JiaZai);
|
||
// if (jiazaiComp2 && typeof jiazaiComp2.openRewardWindow === 'function') {
|
||
// jiazaiComp2.openRewardWindow(rewardData);
|
||
// }
|
||
// }
|
||
// }, 300);
|
||
// console.log("月卡奖励junei");
|
||
// } else {
|
||
// console.log("无法获取SceneManager组件,尝试获取JiaZai组件");
|
||
// // 尝试获取JiaZai组件作为备选
|
||
// const jiazaiComp2 = jiazaiNode.getComponent(JiaZai);
|
||
// if (jiazaiComp2) {
|
||
// setTimeout(() => {
|
||
// jiazaiComp2.updateCoin();
|
||
// jiazaiComp2.openRewardWindow(rewardData);
|
||
// }, 300);
|
||
// } else {
|
||
// console.error("无法获取JiaZai组件和SceneManager组件");
|
||
// }
|
||
// }
|
||
// }
|
||
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();
|
||
}
|
||
}
|
||
|
||
}
|
||
})
|
||
// update (dt) {}
|
||
}
|
||
closeMonthCard() {
|
||
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 && this.onShowListener) {
|
||
//@ts-ignore
|
||
wx.offShow(this.onShowListener);
|
||
}
|
||
//jiazai
|
||
const jiazaiNode = cc.find("Canvas"); // 假设 JiaZai 挂在 Canvas 节点
|
||
const jiazaiComp = jiazaiNode.getComponent(JiaZai);
|
||
|
||
if (jiazaiComp && this.home == 1 && cc.fx.GameConfig.GM_INFO.hp == 7) {
|
||
this.home = 0;
|
||
jiazaiComp.rewarded();
|
||
console.log("123iiiii222")
|
||
}
|
||
this.node.active = false;
|
||
}
|
||
|
||
buyProduct(event, customData) {
|
||
if (!this.btn_Touch) {
|
||
return;
|
||
}
|
||
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);
|
||
}
|
||
|
||
// Utils.GoKEFu();
|
||
if (systemType == "ios") {
|
||
// MiniGameSdk.API.showToast("IOS系统暂不支持支付");
|
||
// this.btn_Touch = true;
|
||
this.openLoad();
|
||
this.btn_Touch = true;
|
||
let iosPayInfo = {
|
||
price: price,
|
||
payment_name: productId,
|
||
payment_count: 1,
|
||
}
|
||
this.iosPrice = price;
|
||
this.iosProductId = productId;
|
||
this.iosCount = 1;
|
||
Utils.GoKEFu(iosPayInfo, (res) => {
|
||
this.closeLoad();
|
||
});
|
||
}
|
||
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) {
|
||
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;
|
||
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);
|
||
}
|
||
//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.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.parent.getComponent("JiaZai"))
|
||
this.node.parent.getComponent("JiaZai").updateCoin();
|
||
else if (this.node.parent.getComponent("SceneManager")) {
|
||
this.node.parent.getComponent("SceneManager").updateCoin();
|
||
}
|
||
}
|
||
})
|
||
}
|
||
});
|
||
}
|
||
}
|
||
openLoad() {
|
||
this.node.getChildByName("Loading").active = true;
|
||
this.node.getChildByName("Loading").getChildByName("load").stopAllActions();
|
||
this.node.getChildByName("Loading").getChildByName("load").runAction(cc.rotateTo(2, 1080).repeatForever());
|
||
}
|
||
|
||
closeLoad() {
|
||
this.node.getChildByName("Loading").active = false;
|
||
}
|
||
|
||
onDestroy() {
|
||
|
||
}
|
||
}
|