Commit 12e5925fadbbcddf789ef4fc6875ccaaaf959e23

Authored by 宋庆平
1 parent f76f173b

支付宝版本sdk

sdk/Analytics.ts
1   -import TAMgr from "../../framework/ta/TAMgr";
2   -import { SDKLogLevel } from "../../framework/wxsdk/service/LogService";
3   -import WXSDK from "../../framework/wxsdk/WXSDK";
4   -
  1 +import { LogLevel } from "../wxsdk/service/LogService";
  2 +import WXSDK from "../wxsdk/WXSDK";
5 3  
6 4  
7 5 export class Analytics {
8 6 private static _instance: Analytics;
9   - private systemType: number;
  7 + private systemType: number
10 8 static get I(): Analytics {
11 9 return this._instance || (this._instance = new Analytics);
12 10 }
... ... @@ -22,14 +20,8 @@ export class Analytics {
22 20  
23 21 // 游戏打点
24 22 dot(dot_type: string, data: any = {}) {
25   - if (typeof wx == 'undefined'&&typeof my == 'undefined') {
26   - console.log("dot", dot_type, data);
27   - return
28   - }
29   - // 数数
30   - if (['receive_reward', 'button','merge_item','addToTempStore','talk','fund','mail','milktea','mail','activity_welcome','activity_raffle','activity_bp','piggy','invite','apple_tree','energy_cost','gem_cost','gold_cost','dress_cost','gem_output','gold_output','energy_output','exp_output','dress_output'].indexOf(dot_type) == -1) {// 排除部分key
31   - TAMgr.Ins.dot(dot_type, data);
32   - }
  23 + if (typeof my == 'undefined') return
  24 + // wx.aldSendEvent(dot_type, data); //阿拉丁打点,没需求注释即可
33 25 return WXSDK.stat.dot(dot_type, data);
34 26 }
35 27  
... ... @@ -52,7 +44,9 @@ export class Analytics {
52 44 * @param stagename 关卡名称,格式:"xx模式-第x关"
53 45 * @param pattern 模式名称,格式:"xx模式"
54 46 */
55   - levelStart(stageid, stagename, pattern) {
  47 + levelStart(stageid, stagename?, pattern?) {
  48 + if (!stagename) stagename = `第${stageid}关`
  49 + if (!pattern) pattern = '普通模式'
56 50 return WXSDK.stat.levelStart(stageid, stagename, pattern)
57 51 }
58 52 /**
... ... @@ -67,6 +61,8 @@ export class Analytics {
67 61 * @param params_desc 道具描述
68 62 */
69 63 levelRunning(stageid, stagename, pattern, event, params_id, params_name, params_count, params_desc?) {
  64 + if (!stagename) stagename = `第${stageid}关`
  65 + if (!pattern) pattern = '普通模式'
70 66 return WXSDK.stat.levelRunning(stageid, stagename, pattern, event, params_id, params_name, params_count, params_desc)
71 67 }
72 68 /**
... ... @@ -78,8 +74,10 @@ export class Analytics {
78 74 * @param times 时间
79 75 * @param perc 失败时的完成进度 (浮点数)
80 76 */
81   - async levelEnd(stageid, stagename, pattern, event, times, perc?) {
82   - return WXSDK.stat.levelEnd(stageid, stagename, pattern, event, times, perc)
  77 + async levelEnd(stageid, stagename, pattern, event, times, perc?, valence = 0) {
  78 + if (!stagename) stagename = `第${stageid}关`
  79 + if (!pattern) pattern = '普通模式'
  80 + return WXSDK.stat.levelEnd(stageid, stagename, pattern, event, times, perc,valence)
83 81 }
84 82  
85 83  
... ... @@ -90,7 +88,7 @@ export class Analytics {
90 88 * @param level 日志等级
91 89 * @returns
92 90 */
93   - clientLog(content, level = SDKLogLevel.debug) {
  91 + clientLog(content, level = LogLevel.debug) {
94 92 return WXSDK.stat.clientLog(content, level)
95 93 }
96 94 /**
... ... @@ -103,18 +101,14 @@ export class Analytics {
103 101 consume(id: number, typ: number, nums: number, gsne: string) {
104 102 return WXSDK.stat.consume(id, typ, nums, gsne)
105 103 }
106   - /**
107   - * loading上报
108   - * @param typ 1开始加载、2加载进行中、3加载结束
109   - * @param stageid 加载id
110   - * @param stagename 加载内容
111   - * @param event complete:成功 fail:失败
112   - * @param times 加载消耗时间 单位毫秒
113   - * @param perc 完成度
114   - */
115   - loading(typ: string, stageid: string, stagename: string, event: string, times: string, perc?: number) {
116   - return WXSDK.stat.loading(typ, stageid, stagename, event, times, perc)
117   - }
118 104  
119 105  
120   -}
121 106 \ No newline at end of file
  107 +}
  108 +export enum EventKey {
  109 + toggleScene = 'toggleScene',
  110 + recoverGame = 'recoverGame',
  111 + replayGame = 'replayGame',
  112 + settingClose = 'settingClose',
  113 + updateLvUI = 'updateLvUI',
  114 +
  115 +}
... ...
sdk/GameServicePlus.ts
... ... @@ -1,377 +0,0 @@
1   -import DataService from "../../framework/wxsdk/service/DataService";
2   -import GameService from "../../framework/wxsdk/service/GameService";
3   -import WxPay from "../../framework/wxsdk/wx/WxPay";
4   -import SDKApiPlus from "./SDKApiPlus";
5   -
6   -
7   -
8   -export default class GameServicePlus extends GameService {
9   - memberSave(content: string, params: any = {}) {
10   - return SDKApiPlus.memberSave({ uid: DataService.I.UserId, token: DataService.I.Token, content, ...params });
11   - }
12   -
13   - memberGet() {
14   - return SDKApiPlus.memberGet({ uid: DataService.I.UserId, token: DataService.I.Token });
15   - }
16   - memberSesetAup() {
17   - return SDKApiPlus.memberSesetAup({ uid: DataService.I.UserId, token: DataService.I.Token });
18   - }
19   -
20   - memberClear() {
21   - return SDKApiPlus.memberClear({ uid: DataService.I.UserId, token: DataService.I.Token });
22   - }
23   -
24   - getGameNotice() {
25   - return SDKApiPlus.notice();
26   - }
27   -
28   - mail() {
29   - return SDKApiPlus.mail({ uid: DataService.I.UserId, token: DataService.I.Token });
30   - }
31   -
32   - /**
33   - * 改变邮件状态
34   - * @param id id为0或不传id时为 一键领取、一键删除
35   - * @param status 1已读 2领取 3删除。如同时修改多个状态格式:1,2
36   - * @returns
37   - */
38   - updateMailStatus(id: number, status: string) {
39   - return SDKApiPlus.mailStatus({ id, status, uid: DataService.I.UserId, token: DataService.I.Token });
40   - }
41   -
42   - getQRcode() {
43   - return SDKApiPlus.QRcode();
44   - }
45   -
46   - convertCDkey(cdkey: string) {
47   - return SDKApiPlus.cdkey({ uid: DataService.I.UserId, token: DataService.I.Token, cdkey: cdkey });
48   - }
49   -
50   - clearData() {
51   - return SDKApiPlus.clearData({ uid: DataService.I.UserId, token: DataService.I.Token });
52   - }
53   -
54   - goodsList() {
55   - return SDKApiPlus.goodsList({ uid: DataService.I.UserId, token: DataService.I.Token });
56   - }
57   -
58   - createOrder(goodid: string) {
59   - return SDKApiPlus.createOrder({ uid: DataService.I.UserId, token: DataService.I.Token, goodid });
60   - }
61   -
62   - queryOrder(no: string) {
63   - return SDKApiPlus.queryOrder({ uid: DataService.I.UserId, token: DataService.I.Token, no });
64   - }
65   -
66   - confirmOrder(no: string) {
67   - return SDKApiPlus.confirmOrder({ uid: DataService.I.UserId, token: DataService.I.Token, no });
68   - }
69   -
70   - /**
71   - * 支付
72   - * @param params
73   - * @param opts
74   - * @returns
75   - */
76   - pay(params: { payid: string, goodid: string, money: number; orderid: string }, opts: any = {}) {
77   - return WxPay.I.pay(params, opts);
78   - }
79   - /**
80   - * 订单查询
81   - */
82   - orderQuery(source) {
83   - return SDKApiPlus.orderQuery({
84   - ...this.buildParams(),
85   - source
86   - });
87   - }
88   - /**
89   - * 订单查询
90   - */
91   - preorder(goodid: string, orderid: string) {
92   - return SDKApiPlus.preorder({
93   - ...this.buildParams2(),
94   - token: DataService.I.Token,
95   - goodid, orderid
96   - });
97   - }
98   -
99   - /**
100   - * 获取玩家历史存档
101   - * @param uid
102   - * @param token
103   - */
104   - getUserHistory(uid: string, token: string) {
105   - return SDKApiPlus.getUserHistory({ uid: uid, token: token });
106   - }
107   -
108   - /**
109   - * 获取玩家历史存档
110   - * @param data //需要包含uid,token
111   - */
112   - saveUserHistory(data: any) {
113   - return SDKApiPlus.saveUserHistory(data);
114   - }
115   -
116   - /**
117   - * 重置GM标识
118   - */
119   - setAup(typ: number = 0) {
120   - return SDKApiPlus.setAup({ uid: DataService.I.UserId, token: DataService.I.Token, typ });
121   - }
122   -
123   - /**
124   - * 获取分享图片
125   - * @param items 2,1,0|3,1,1|3,1,1|3,1,1|3,1,1格式:2,1,0(类型,id,领取状态)领取状态:1已领取0未领取
126   - * @param zoom 图片缩放比例
127   - * @returns
128   - */
129   - getShareImage(items: string, zoom: number = 1) {
130   - return SDKApiPlus.getShareImg({ uid: DataService.I.UserId, token: DataService.I.Token, items, zoom });
131   - }
132   -
133   - /**
134   - * 获取我的今日分享
135   - * @param refresh 是否刷新
136   - */
137   - getShare(refresh?: number) {
138   - let req = { uid: DataService.I.UserId, token: DataService.I.Token };
139   - if (refresh) {
140   - req['refresh'] = refresh;
141   - }
142   - return SDKApiPlus.getShare(req);
143   - }
144   -
145   - /**
146   - * 获取好友分享详情
147   - * @param id 分享id
148   - * @param date 分享日期 格式:20220524
149   - */
150   - getShareInfo(id: number, date: string) {
151   - return SDKApiPlus.getShareInfo({ uid: DataService.I.UserId, token: DataService.I.Token, id, date });
152   - }
153   -
154   - /**
155   - * 领取好友分享
156   - * @param id 分享id
157   - * @param date 分享日期 格式:20220524
158   - * @param itemid 分享选项ID
159   - */
160   - getShareReward(id: number, date: string, itemid: number) {
161   - return SDKApiPlus.receiveShare({ uid: DataService.I.UserId, token: DataService.I.Token, id, date, itemid });
162   - }
163   -
164   - /**
165   - * 领取额外进度奖励
166   - * @param id 分享id
167   - * @param date 分享日期 格式:20220524
168   - */
169   - getProgressReward(id: number, date: string) {
170   - return SDKApiPlus.getProgressReward({ uid: DataService.I.UserId, token: DataService.I.Token, id, date });
171   - }
172   -
173   - saveStory(key: string, data: string) {
174   - // return SDKApiPlus.saveStory({
175   - // id: UserManager.I.curStory.id,
176   - // lv: UserManager.I.curStory.lv,
177   - // fbid: UserManager.I.curStory.fbid,
178   - // fbindex: UserManager.I.curStory.fbindex,
179   - // data,
180   - // uid: DataService.I.UserId,
181   - // token: DataService.I.Token,
182   - // });
183   - }
184   -
185   - /**
186   - * 我的邀请详情
187   - * @returns
188   - */
189   - getInviteInfo() {
190   - return SDKApiPlus.getInviteInfo({ uid: DataService.I.UserId, token: DataService.I.Token });
191   - }
192   -
193   - /**
194   - * 领取邀请奖励
195   - * @param id 挡位id
196   - */
197   - receiveInvite(id: number) {
198   - return SDKApiPlus.receiveInvite({ uid: DataService.I.UserId, token: DataService.I.Token, id });
199   - }
200   -
201   - /**
202   - * 心跳
203   - */
204   - beatheart() {
205   - return SDKApiPlus.heartbeat({ uid: DataService.I.UserId, token: DataService.I.Token });
206   - }
207   - /**
208   - * 周卡/月卡列表
209   - */
210   - recCardList() {
211   - return SDKApiPlus.recCardList({ uid: DataService.I.UserId, token: DataService.I.Token });
212   - }
213   -
214   - /**
215   - * 领取周卡/月卡奖励
216   - * @param typ 第几天 week周 month月
217   - */
218   - recCardReward(typ: string) {
219   - return SDKApiPlus.recCardReward({ uid: DataService.I.UserId, token: DataService.I.Token, typ });
220   - }
221   -
222   - /**
223   - * 领取基金列表
224   - */
225   - recGrowthList() {
226   - return SDKApiPlus.recGrowthList({ uid: DataService.I.UserId, token: DataService.I.Token });
227   - }
228   -
229   - /**
230   - * 领取基金列表
231   - * @param goodid 购买的基金商品ID
232   - * @param level 等级
233   - */
234   - recGrowthReward(goodid: string, level: number) {
235   - return SDKApiPlus.recGrowthReward({ uid: DataService.I.UserId, token: DataService.I.Token, goodid, level });
236   - }
237   -
238   - /**
239   - * 获取无尽礼包数据
240   - */
241   - recEndlessList(groupId: string) {
242   - return SDKApiPlus.recEndlessList({ uid: DataService.I.UserId, token: DataService.I.Token, group_id: groupId });
243   - }
244   -
245   - /**
246   - * 领取无尽礼包
247   - */
248   - recEndlessReward(groupId: string, id: string, date: string) {
249   - return SDKApiPlus.recEndlessReward({ uid: DataService.I.UserId, token: DataService.I.Token, group_id: groupId, id, date });
250   - }
251   -
252   - /**
253   - * 获取新手礼包数据
254   - */
255   - getNewbieGiftData() {
256   - return SDKApiPlus.getNewbieGiftData({ uid: DataService.I.UserId, token: DataService.I.Token });
257   - }
258   -
259   - /**
260   - * 领取新手礼包
261   - * @param days 第几天
262   - */
263   - recNewbieGift(days: string) {
264   - return SDKApiPlus.recNewbieGift({ uid: DataService.I.UserId, token: DataService.I.Token, days });
265   - }
266   -
267   -
268   - /**
269   - * 订阅消息
270   - * @param tmplId 订阅ID
271   - * @param message 订阅内容
272   - * @param sendtime 订阅发送时间s二选一参数
273   - * @param times 订阅延迟时间s二选一参数
274   - * @param status 1取消以前相同模板信息,默认为0不取消
275   - */
276   - async sendSubScribe(tmplId: string, message: string, sendtime: number, times: number = 0, status: number = 1) {
277   - let uid = +DataService.I.UserId;
278   - let token = DataService.I.Token + '';
279   - let openid = DataService.I.OpenId + '';
280   -
281   - let data = {
282   - uid,
283   - token,
284   - openid,
285   - status,
286   - message: encodeURIComponent(message),
287   - temid: tmplId
288   - };
289   - if (times) {
290   - data["times"] = times;
291   - } else {
292   - data["sendtime"] = Math.floor(sendtime);
293   - }
294   - let back = await SDKApiPlus.sendsubscribe(data)
295   - return back;
296   - }
297   -
298   -
299   - /**
300   - * 取消订阅消息
301   - * @param tmplId 订阅ID
302   - */
303   - async cancelSubscribe(tmplId: string) {
304   - let uid = +DataService.I.UserId;
305   - let token = DataService.I.Token + '';
306   - let openid = DataService.I.OpenId + '';
307   -
308   - let data = {
309   - uid,
310   - token,
311   - openid,
312   - temid: tmplId
313   - };
314   - let back = await SDKApiPlus.cancelSubscribe(data)
315   - return back;
316   - }
317   - /**
318   - * 自定义活动
319   - * @param id 活动ID(后台的ID)
320   - */
321   - activityCustom(id?: string) {
322   - return SDKApiPlus.activityCustom({ id });
323   - }
324   -
325   - /**
326   - * 添加排行榜
327   - * @param typ 游戏端自定义排行标识
328   - * @param fraction 分数 如果上报的分数小于以前上报的分数,则不会更新
329   - * @param rankData 扩展字段
330   - * @returns
331   - */
332   - rankAddV2(typ: string, fraction: number, rankData?: string) {
333   - return SDKApiPlus.rankAddV2({ typ, fraction, rankData, uid: DataService.I.UserId, token: DataService.I.Token });
334   - }
335   - /**
336   - * 排行榜列表
337   - * @param percent percent等于1 的时候会返回排行榜总人数和自己的当前排名
338   - */
339   - rankListV2(typ: string, percent: number = 0) {
340   - return SDKApiPlus.rankListV2({ typ, percent, uid: DataService.I.UserId, token: DataService.I.Token });
341   - }
342   - /**
343   - * 活动排行榜配置
344   - * @param name 游戏端自定义排行标识
345   - */
346   - activityRankConfig(name: string) {
347   - return SDKApiPlus.activityRankConfig({ name, uid: DataService.I.UserId, token: DataService.I.Token });
348   - }
349   - /**
350   - * 活动排行榜添加分数
351   - * @param name 游戏端自定义排行标识
352   - * @param score 分数
353   - * @param extend 扩展
354   - */
355   - activityRankAdd(name: string, score: number, extend: string) {
356   - return SDKApiPlus.activityRankAdd({ name, score, extend, uid: DataService.I.UserId, token: DataService.I.Token });
357   - }
358   - /**
359   - * 活动排行榜
360   - * @param name 游戏端自定义排行标识
361   - */
362   - activityRankList(name: string) {
363   - return SDKApiPlus.activityRankList({ name, uid: DataService.I.UserId, token: DataService.I.Token });
364   - }
365   - /**
366   - * 活动排行榜奖励
367   - * @param name 游戏端自定义排行标识
368   - */
369   - activityRankReward(name: string) {
370   - return SDKApiPlus.activityRankReward({ name, uid: DataService.I.UserId, token: DataService.I.Token });
371   - }
372   -
373   - static instance: GameServicePlus;
374   - static get I(): GameServicePlus {
375   - return this.instance || (this.instance = new GameServicePlus());
376   - }
377   -}
378 0 \ No newline at end of file
sdk/Ge.ts
... ... @@ -1,50 +0,0 @@
1   -import { sys } from "cc";
2   -import { GAMEDATA } from "../../framework/wxsdk/base/SDKConst";
3   -import { SDKToolsPlus } from "./SDKToolsPlus";
4   -
5   -
6   -
7   -export class Ge {
8   - private static _instance: GravityAnalyticsAPI;
9   - static get I(): GravityAnalyticsAPI {
10   - return this._instance;
11   - }
12   - constructor() {
13   - }
14   -
15   - public static init() {
16   - // console.log("ge初始化")
17   - const config = {
18   - accessToken: "ihcpiWLHTqDs5oZEGsnyxCrFXBaSeoju", // 项目通行证,在:网站后台-->管理中心-->应用列表中找到Access Token列 复制(首次使用可能需要先新增应用)
19   - clientId: SDKToolsPlus.openId, // 用户唯一标识,如微信小程序的openid
20   - autoTrack: {
21   - appLaunch: true, // 自动采集 $MPLaunch
22   - appShow: true, // 自动采集 $MPShow
23   - appHide: true, // 自动采集 $MPHide
24   - },
25   - name: "ge", // 全局变量名称
26   - // debugMode: "debug", // 是否开启测试模式,开启测试模式后,可以在 网站后台--管理中心--元数据--事件流中查看实时数据上报结果。(测试时使用,上线之后一定要关掉,改成none或者删除)
27   - };
28   - let ge = new GravityAnalyticsAPI(config);
29   - ge.init();
30   - let isFirst = sys.localStorage.getItem('tt_register');
31   - if (!isFirst) {
32   - // 首次注册
33   - let arr = GAMEDATA.version.split(".");
34   - let version = +(arr[0] + arr[1] + arr[2]);
35   - ge.register({
36   - name: SDKToolsPlus.uid,
37   - version,
38   - wx_openid: SDKToolsPlus.openId,
39   - wx_unionid: "",
40   - }).then((success) => {
41   - // console.log("注册成功", success);
42   - sys.localStorage.setItem('tt_register', "1")
43   - }).catch((fail) => {
44   - // console.error("注册失败", fail)
45   - })
46   - }
47   - this._instance = ge;
48   - }
49   -
50   -}
51 0 \ No newline at end of file
sdk/SDKApiPlus.ts
... ... @@ -1,144 +0,0 @@
1   -import { SDKApi } from "../../framework/wxsdk/http/SDKApi";
2   -import DataService from "../../framework/wxsdk/service/DataService";
3   -import SDKHttpPlus from "./SDKHttpPlus";
4   -
5   -export default class SDKApiPlus extends SDKApi {
6   - //公告
7   - public static notice = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.notice, ...args);
8   - //订阅
9   - public static sendsubscribe = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.sendsubscribe, ...args);
10   - //取消订阅
11   - public static cancelSubscribe = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.cancelSubscribe, ...args);
12   - //邮件
13   - public static mail = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.mail, ...args);
14   - //邮件状态修改
15   - public static mailStatus = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.mailStatus, ...args);
16   - //群二维码
17   - public static QRcode = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.QRcode, ...args);
18   - //兑换码
19   - public static cdkey = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.cdkey, ...args);
20   - //删除存档
21   - public static clearData = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.clearData, ...args);
22   - //商品列表
23   - public static goodsList = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.goodsList, ...args);
24   - //生成订单
25   - public static createOrder = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.createOrder, ...args);
26   - //查询订单
27   - public static queryOrder = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.queryOrder, ...args);
28   - //确认订单
29   - public static confirmOrder = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.confirmOrder, ...args);
30   - //重置GM标识
31   - public static setAup = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.setAup, ...args);
32   - //获取分享图片
33   - public static getShareImg = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.getShareImg, ...args);
34   - //获取今日分享
35   - public static getShare = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.getShare, ...args);
36   - //获取分享信息
37   - public static getShareInfo = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.getShreInfo, ...args);
38   - //领取好友分享
39   - public static receiveShare = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.receiveShare, ...args);
40   - //领取分享额外奖励
41   - public static getProgressReward = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.getProgressReward, ...args);
42   - //保存副本
43   - public static saveStory = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.saveStory, ...args);
44   - //我的邀请详情
45   - public static getInviteInfo = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.getInviteInfo, ...args);
46   - //领取邀请奖励
47   - public static receiveInvite = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.receiveInvite, ...args);
48   -
49   - // 保存用户数据
50   - public static memberSave = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.memberSave, ...args);
51   - // 获取用户数据
52   - public static memberGet = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.memberGet, ...args);
53   - // 重置修改标识
54   - public static memberSesetAup = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.memberSesetAup, ...args);
55   - // 清除用户数据
56   - public static memberClear = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.memberClear, ...args);
57   - //心跳
58   - public static heartbeat = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.memberXT, ...args);
59   - //自定义活动
60   - public static activityCustom = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.activityCustom, ...args);
61   - public static rankAddV2 = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.rankAddV2, ...args);
62   - public static rankListV2 = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.rankListV2, ...args);
63   -
64   - //周卡/月卡列表
65   - public static recCardList = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.recCardList, ...args);
66   - //领取周卡/月卡奖励
67   - public static recCardReward = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.recCardReward, ...args);
68   - //领取基金列表
69   - public static recGrowthList = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.recGrowthList, ...args);
70   - //领取基金奖励
71   - public static recGrowthReward = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.recGrowthReward, ...args);
72   - //获取无尽礼包数据
73   - public static recEndlessList = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.recEndlessList, ...args);
74   - //领取无尽礼包
75   - public static recEndlessReward = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.recEndlessReward, ...args);
76   - //获取新手礼包数据
77   - public static getNewbieGiftData = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.getNewbieGiftData, ...args);
78   - //领取新手礼包
79   - public static recNewbieGift = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.recNewbieGift, ...args);
80   -
81   - // 活动排行榜相关
82   - public static activityRankConfig = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.activityRankConfig, ...args);
83   - public static activityRankAdd = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.activityRankAdd, ...args);
84   - public static activityRankList = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.activityRankList, ...args);
85   - public static activityRankReward = (...args) => SDKHttpPlus.httpPost(DataService.I.GameApi, HostKeysPlus.activityRankReward, ...args);
86   -
87   - //后台
88   - public static getUserHistory = (...args) => SDKHttpPlus.backPost(DataService.I.GMApi, HostKeysPlus.getUserHistory, ...args);
89   - public static saveUserHistory = (...args) => SDKHttpPlus.backPost(DataService.I.GMApi, HostKeysPlus.saveUserHistory, ...args);
90   -}
91   -
92   -
93   -export const HostKeysPlus = {
94   - sendsubscribe: 'api/subscribe/event', //订阅
95   - cancelSubscribe: 'api/subscribe/event/cancel', //取消订阅
96   - notice: 'mods/notice/list', //公告
97   - mail: 'mods/mail/list', //邮件
98   - mailStatus: '/mods/mail/status/u', //修改邮件状态
99   - QRcode: 'game/merge/system', //群二维码
100   - cdkey: 'game/merge/cdkey', //兑换CDkey
101   - clearData: 'game/merge/clear', //删除存档
102   - goodsList: 'game/merge/goodslist', //商品列表
103   - createOrder: 'game/merge/order/create', //生成订单
104   - queryOrder: 'game/merge/order/query', //查询订单
105   - confirmOrder: 'game/merge/order/give', //确认订单
106   - setAup: 'game/merge/aup', //重置GM标识
107   - getShareImg: 'game/merge/share/getimg', //分享图片
108   - getShare: 'game/merge/share/get', //获取今日分享(自己的)
109   - getShreInfo: 'game/merge/share/info', //获取分享详情(别人的)
110   - receiveShare: 'game/merge/share/receive', //领取分享奖励
111   - getProgressReward: 'game/merge/share/reward/progress', //获取分享奖励
112   - saveStory: 'game/merge/cp/save', //保存副本
113   - getInviteInfo: 'api/member/invite/info', //获取邀请信息
114   - receiveInvite: 'api/member/invite/receive', //领取邀请奖励
115   -
116   - memberSave: 'yueliangdao/member/save', //存用户数据
117   - memberGet: 'yueliangdao/member/get', //取用户数据
118   - memberSesetAup: 'yueliangdao/member/reset/aup', //重置修改标识
119   - memberClear: '3ad7e4ab92ae2249/member/clear', //清除用户数据 4.11改
120   - memberXT: 'yueliangdao/member/xt', //心跳
121   - activityCustom: 'mods/activity/custom', //自定义活动
122   - rankListV2: 'mods/rank/permanent/list', //排行榜2023-4-24
123   - rankAddV2: 'mods/rank/permanent/add', //更新排行榜2023-4-24
124   -
125   -
126   - recCardList: '3ad7e4ab92ae2249/member/ship/info', //周卡/月卡列表
127   - recCardReward: '3ad7e4ab92ae2249/member/ship/draw', //领取周卡/月卡奖励
128   - recGrowthList: 'game/merge/growth/list', //领取基金列表
129   - recGrowthReward: 'game/merge/growth/rec', //领取基金奖励
130   - recEndlessList: '3ad7e4ab92ae2249/egift/show', //获取无尽礼包数据
131   - recEndlessReward: '3ad7e4ab92ae2249/egift/draw', //领取无尽礼包
132   - getNewbieGiftData: '3ad7e4ab92ae2249/novice/list', //获取新手礼包数据
133   - recNewbieGift: '3ad7e4ab92ae2249/novice/draw', //领取新手礼包
134   -
135   - activityRankConfig: 'yueliangdao/activities/rank/config', //活动排行榜配置
136   - activityRankAdd: 'yueliangdao/activities/rank/add', //活动排行榜添加分数
137   - activityRankList: 'yueliangdao/activities/rank/top', //活动排行榜
138   - activityRankReward: 'yueliangdao/activities/rank/draw', //活动排行榜奖励
139   -
140   -
141   - //后台
142   - getUserHistory: 'index/merge/history.html', //获取用户历史存档
143   - saveUserHistory: 'index/merge/setdata.html', //覆盖用户数据
144   -}
sdk/SDKHttpPlus.ts
... ... @@ -1,139 +0,0 @@
1   -import { DEBUG } from "cc/env";
2   -import { GAMEDATA, sdkEnv } from "../../framework/wxsdk/base/SDKConst";
3   -import SDKHttp from "../../framework/wxsdk/http/SDKHttp";
4   -import { WxHelper } from "./WxHelper";
5   -import LogService from "../../framework/wxsdk/service/LogService";
6   -import DataService from "../../framework/wxsdk/service/DataService";
7   -
8   -sdkEnv.isDebug = DEBUG;
9   -export default class SDKHttpPlus extends SDKHttp {
10   -
11   - public static async backRequest(url: string, method: string, data?: any, dataType: "json" | "string" = "json") {
12   - return new Promise<IResult<any>>((resolve, reject) => {
13   - data = {
14   - ...data,
15   - gameid: GAMEDATA.game_id,
16   - }
17   -
18   - if (data && typeof data === "object") {
19   - data = JSON.stringify(data);
20   - }
21   - data = data || "";
22   - if (method == "GET" && data != "") {
23   - data = JSON.parse(data);
24   - let str = ''
25   - for (let key in data) {
26   - str = str + `${key}` + '=' + `${data[key]}&`
27   - }
28   - url += "?" + str;
29   - data = "";
30   - }
31   - // let info = "[url:" + url + ", data:" + data + "]";
32   - // console.error("info", info)
33   - let xhr = new XMLHttpRequest();
34   - xhr.onreadystatechange = function () {
35   - if (xhr.readyState == 4) {
36   - if (xhr.status >= 200 && xhr.status < 400) {
37   - let responseText: any = xhr.responseText;
38   - // cc.log("responseText", responseText)
39   - try {
40   - responseText = JSON.parse(responseText);
41   - // cc.log("responseText22", responseText)
42   - if (url.indexOf('.json') > -1) {
43   - resolve({ code: 0, data: responseText, msg: responseText.msg });
44   - } else {
45   - resolve({ code: +responseText.code, data: responseText.data, msg: responseText.msg });
46   - }
47   - return
48   - } catch (ex) {
49   - // console.error("httpRequest[parseError]:responseText=" + xhr.responseText);
50   - resolve({ msg: "JSON parse error:" + ex.message, code: -1 });
51   - return;
52   - }
53   - } else {
54   - console.error(xhr.status, '网络请求失败!');
55   - resolve({ code: -2 });
56   - }
57   - }
58   - };
59   -
60   - xhr.ontimeout = function (info): void {
61   - console.error("info1", info)
62   - resolve({ msg: `请求超时!`, code: -3 });
63   - }
64   - xhr.onerror = function (info): void {
65   - console.error("info2", info)
66   - resolve({ msg: `请求失败!`, code: -4 });
67   - }
68   - xhr.onabort = function (info): void {
69   - console.error("info3", info)
70   - resolve({ msg: `请求关闭!`, code: -5 });
71   - }
72   -
73   - xhr.timeout = 30000;
74   - xhr.open(method, url, true);
75   -
76   - if (method == "POST") {
77   - xhr.setRequestHeader("Content-Type", "application/json;charset=utf-8")//application/x-www-form-urlencoded
78   - // if (cc.sys.os === 'Android') {
79   - // cc.error("http__uid", AppSdkData.I.uid);
80   - // xhr.setRequestHeader('Uuid', `${AppSdkData.I.uid}`);
81   - // } else {
82   - // xhr.setRequestHeader('Uuid', `909`);
83   - // }
84   -
85   - }
86   - console.log("data", data)
87   - xhr.send(data);
88   - });
89   - }
90   -
91   - public static async backGet(baseUrl: string, url: string, data?: any, dataType: "json" | "string" = "json") {
92   - if (this.withMock(url)) {
93   - return this.mockData(url);
94   - }
95   -
96   - url = baseUrl + url;
97   - return this.backRequest(url, "GET", data, dataType);
98   - }
99   -
100   - public static backPost(baseUrl: string, url: string, data?: any, dataType: "json" | "string" = "json") {
101   - if (this.withMock(url)) {
102   - return this.mockData(url);
103   - }
104   -
105   - url = baseUrl + url;
106   - return this.backRequest(url, "POST", data, dataType);
107   - }
108   -}
109   -
110   -SDKHttp.onErrorResponse = async function (data: any) {
111   - console.log("onErrorResponse", data)
112   - if (data.code > 0) {
113   - LogService.I.dot("errCode", { form: data.code + "_" + DataService.I?.Data?.userId })
114   - } else {
115   - LogService.I.dot("errCode", { form: data.code })
116   - }
117   - if (data.code == 1008) {
118   - let ret = await WxHelper.showModal({
119   - title: '登录验证失败,请重新登录',
120   - content: data.msg,
121   - showCancel: false,
122   - confirmText: '重启'
123   - })
124   - if (ret) {
125   - WxHelper.restartMiniProgram();
126   - }
127   - }
128   - if (data.code == 1011000) {
129   - let ret = await WxHelper.showModal({
130   - title: '数据被修改',
131   - content: data.msg,
132   - showCancel: false,
133   - confirmText: '重启'
134   - })
135   - if (ret) {
136   - WxHelper.restartMiniProgram();
137   - }
138   - }
139   -};
140 0 \ No newline at end of file
sdk/SDKTools.ts
1   -import { GAMEDATA } from "../../framework/wxsdk/base/SDKConst";
2   -import DateUtils from "../../framework/wxsdk/utils/DateUtils";
3   -import WXSDK from "../../framework/wxsdk/WXSDK";
4   -
  1 +import AlipayApi from "../wxsdk/alipay/AlipayApi";
  2 +import { GAMEDATA } from "../wxsdk/base/SDKConst";
  3 +import DateUtils from "../wxsdk/utils/DateUtils";
  4 +import WXSDK from "../wxsdk/WXSDK";
5 5  
6 6 /*
7 7 * SDK工具类库;
8 8 */
9 9 export class SDKTools {
10 10 static get isWx() {
11   - return typeof wx !== 'undefined';
12   - }
13   - static get isZfb() {
14 11 return typeof my !== 'undefined';
15 12 }
16 13 static get isSupported() {
... ... @@ -83,8 +80,10 @@ export class SDKTools {
83 80 * isOff:是否关闭默认显示banner
84 81 * }
85 82 */
86   - static createBanner(adUnitId: string = GAMEDATA.bannerId, opts?: { type?: number; bannerWidth?: number, offsetY?: number; adIntervals?: number, isOff?: boolean ,isCreate?:boolean}) {
  83 + static createBanner(adUnitId: string = GAMEDATA.bannerId, opts?: { type?: number; bannerWidth?: number, offsetY?: number; adIntervals?: number, isOff?: boolean }) {
87 84 if (!this.isWx) return
  85 + // if (SDKUtils.compareVersion(my.env.clientVersion, '10.3.66') < 0) return;
  86 + // console.log('banner')
88 87 return WXSDK.ad.createBanner(adUnitId, opts);
89 88 }
90 89 /**
... ... @@ -114,6 +113,7 @@ export class SDKTools {
114 113 * 插屏
115 114 */
116 115 static createInterstitialAd(adUnitId: string = GAMEDATA.interstitialAdId) {
  116 + // console.log('~~~~~~~~~~chaping')
117 117 if (!this.isWx) return Promise.resolve({ code: 1, msg: "暂无广告" })
118 118 return WXSDK.ad.createInterstitialAd(adUnitId);
119 119 }
... ... @@ -167,9 +167,12 @@ export class SDKTools {
167 167 /**
168 168 * 订阅
169 169 * @param template_ids 模板id eg['aaaaaaa','bbbbbbb']
170   - * @param success 成功回调
171   - * @param fail 失败回调
  170 + * @param ids 对应后台的id eg:['1','2']
172 171 */
  172 + // static subScribe(template_ids: Array<string>, ids: Array<string>) {
  173 + // if (!this.isWx) return
  174 + // return WXSDK.game.subScribe(template_ids, ids)
  175 + // }
173 176 static subScribe(template_ids: Array<string>, success: Function, fail: Function) {
174 177 if (!window['wx']) return;
175 178 return WXSDK.game.subScribe(template_ids, success, fail);
... ... @@ -247,16 +250,7 @@ export class SDKTools {
247 250  
248 251  
249 252  
250   - /**
251   - * 互动数据解密
252   - * @param iv
253   - * @param encryptedData
254   - * @returns
255   - */
256   - static wxencrypted(iv, encryptedData): Promise<IResult<any>> {
257   - if (!this.isWx) return Promise.resolve({ code: -1 })
258   - return WXSDK.game.wxencrypted(iv, encryptedData);
259   - }
  253 +
260 254 /**
261 255 * 互导数据
262 256 * 1抽屉广告2猜你喜欢3格子广告4试玩
... ... @@ -301,7 +295,7 @@ export class SDKTools {
301 295 * @returns
302 296 */
303 297 static pay(params: { payid: string, goodid: string, money: number; orderid: string }, opts: any = {}) {
304   - return WXSDK.game.pay(params, opts);
  298 + return WXSDK.game.pay(params, opts)
305 299 }
306 300 /**
307 301 * 检测支付是否成功
... ... @@ -342,26 +336,21 @@ export class SDKTools {
342 336 return WXSDK.game.behavior()
343 337 }
344 338  
345   - /**
346   - *
347   - * scene 场景枚举值(1 资料;2 评论;3 论坛;4 社交日志)(必填)
348   - content 需检测的文本内容,文本字数的上限为2500字(必填)
349   - nickname 用户昵称(非必填)
350   - title 文本标题(非必填)
351   - signature 个性签名,该参数仅在资料类场景有效(scene=1)(非必填)
352   - */
353   - static checkmsg(scene: number, content: string, nickname?: string, title?: string, signature?: string) {
354   - return WXSDK.game.checkmsg(scene, content, nickname, title, signature)
355   - }
  339 + //阿里增量任务
  340 + static incrementGameaction(action_code, success: Function, fail: Function) {
  341 + if (this.uid) {
  342 + AlipayApi.I.incrementGameaction(action_code).then((res) => {
  343 + success();
  344 + }).catch((res) => {
  345 + fail && fail();
  346 + });
  347 + } else {
  348 + //登录状态过期,重进登录
  349 + fail();
  350 + }
356 351  
357   - /**
358   - * 修改用户头像昵称
359   - */
360   - static updateNickname(nickname: string, headurl: string) {
361   - return WXSDK.game.updateNickname(nickname, headurl)
362 352 }
363 353  
364   -
365 354 }
366 355  
367 356 /**
... ...
sdk/SDKToolsPlus.ts
... ... @@ -1,420 +0,0 @@
1   -import { sys } from "cc";
2   -import { EventCenter } from "../../framework/core/utils/EventCenter";
3   -import { EnvCode } from "../../framework/wxsdk/base/SDKEnum";
4   -import DataService from "../../framework/wxsdk/service/DataService";
5   -import { GameEvent } from "../../game/const/GameEvent";
6   -import GameServicePlus from "./GameServicePlus";
7   -import { SDKTools } from "./SDKTools";
8   -
9   -export class ServerError {
10   - private static _errors = {
11   - "0": { msg: "成功", desc: "接口调用成功" },
12   - "1000": { msg: "操作失败", desc: "检查Hermes后台配置是否正确" },
13   - "1001": { msg: "未知错误", desc: "联系开发人员排查错误" },
14   - "1002": { msg: "参数错误", desc: "请参照接口文档对比参数和参数类型是否正确" },
15   - "1003": { msg: "签名错误", desc: "检查appkey跟后台是否对应" },
16   - "1004": { msg: "数据不存在", desc: "查询的数据不存在等" },
17   - "1005": { msg: "解析参数失败,请检查参数合法性", desc: "参数中是否有危险字符,比如SQL注入等" },
18   - "4500": { msg: "商品不存在", desc: "检查Hermes后台配置是否正确" },
19   - "4501": { msg: "订单未支付", desc: "" },
20   - "4502": { msg: "不能重复发放", desc: "" },
21   - "4503": { msg: "兑换码不存在", desc: " " },
22   - "4504": { msg: "兑换码不在有效期内", desc: " " },
23   - "4505": { msg: "兑换码已失效", desc: " " },
24   - "4506": { msg: "iv error", desc: "防止用户本地修改数据" },
25   - "4507": { msg: "数据被修改", desc: "用户数据被GM工具修改,需重新登录重置" },
26   - "4508": { msg: "此商品已达到最大购买限制", desc: "限购" },
27   - "4509": { msg: "没有上传文件", desc: "检查文件name属性是否正确" },
28   - "4510": { msg: "文件超出最大限制", desc: "最大1M" },
29   - "4511": { msg: "请先授权获取微信头像信息", desc: "登录接口获取" },
30   - "4513": { msg: "没有达到刷新条件", desc: "生成过一次且没有领取 才可刷新" },
31   - "4514": { msg: "刷新次数超限", desc: "刷新次数达到 配置最大项" },
32   - "4515": { msg: "分享失效", desc: "跨天失效等" },
33   - "4516": { msg: "分享不存在", desc: "分享ID不存在等" },
34   - "4517": { msg: "已被领取", desc: "被其他人领取" },
35   - "4518": { msg: "今日领取次数超限", desc: "今天领取的次数达到配置最大项" },
36   - "4519": { msg: "已领过其他选项", desc: "只能领取一个" },
37   - "4520": { msg: "没有达到领取条件", desc: "领取进度是否完成" },
38   - "4522": { msg: "只能领取自己的奖励", desc: "" },
39   - "1009": { msg: "您的账号已因数据异常而被封禁,如需申诉可以向微信客服反馈。", desc: "" },
40   - "3004": { msg: "活动已经结束", desc: "" },
41   - }
42   -
43   - private static _unknownError = { msg: "未知错误", desc: "联系开发人员排查错误" };
44   - static getError(code: string): { msg: string, desc: string } {
45   - return this._errors[code] || this._unknownError;
46   - }
47   -
48   - static this(key: string): string {
49   - return (this._errors[key] || this._unknownError).msg;
50   - }
51   -}
52   -
53   -/*
54   -* SDK工具类库;
55   -*/
56   -export class SDKToolsPlus extends SDKTools {
57   - static get isTT() {
58   - return sys.platform == sys.Platform.BYTEDANCE_MINI_GAME;
59   - }
60   -
61   - //提交订单
62   - static doPreorder(data, goodid: string, price: number, orderid: string) {
63   - if (!data.code && data.data) {
64   - let { config, paytype } = data.data;
65   - // goodid = goodid + "";
66   - // console.log("支付方式"+paytype);
67   - switch (paytype) {
68   - case "1"://H5 客服消息支付,游戏内调用发片消息接口 sendMessagePath:path
69   - var { img, title, path } = config;
70   - wx.openCustomerServiceConversation({
71   - showMessageCard: true, //是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示,用户点击后可以快速发送小程序消息
72   - sendMessageTitle: title ? title : '我要充值!',//会话内消息卡片标题
73   - sendMessagePath: path,//会话内消息卡片路径//channel=${SDKTools.ChannelId}&item=10&uid=${SDKTools.UserId}
74   - sendMessageImg: img ? img : 'https://wxsdk-cdn.miso-lab.com/moon-island/share/fx_chongzhi.jpg',//会话内消息卡片图片路径
75   - success: (ret) => {
76   - //记录状态
77   - //onshow检测状态,判断是否充值成功
78   - console.log("支付成功:", ret);
79   - EventCenter.I.emit(GameEvent.PAY_POLLING, true);
80   - },
81   - fail: (ret) => {
82   - console.log("fail", ret);
83   - EventCenter.I.emit(GameEvent.PAY_FAIL, orderid, goodid);
84   - }
85   - })
86   - break;
87   - case "2":
88   -
89   -
90   - break;
91   - case "3"://米大师支付,游戏支付成功需要调用米大师订单上报接口
92   - var { payid } = config;
93   - SDKTools.pay({ payid, goodid, money: price, orderid: orderid }).then(res => {
94   - if (!res.code) {
95   - console.log("支付成功", res);
96   - EventCenter.I.emit(GameEvent.PAY_CONFIRM, orderid, goodid);
97   - } else {
98   - console.log("支付失败", res);
99   - EventCenter.I.emit(GameEvent.PAY_FAIL, orderid, goodid);
100   - }
101   - }).catch(err => {
102   - console.log("支付失败2:", err);
103   - EventCenter.I.emit(GameEvent.PAY_FAIL, orderid, goodid);
104   - })
105   - break;
106   - case "4"://跳转小程序支付,游戏直接跳转返回的小程序路径
107   - var { appid, page } = config;
108   - wx.navigateToMiniProgram({
109   - appId: appid,
110   - path: page,
111   - envVersion: DataService.I.EnvEnum === EnvCode.Prod ? 'release' : "trial",//opts.envVersion || 'release',
112   - success(res: any) {
113   - console.log("成功:", res)
114   - // resolve(res);
115   - EventCenter.I.emit(GameEvent.PAY_POLLING, true);
116   - },
117   - fail(err: any) {
118   - console.log("失败", err)
119   - EventCenter.I.emit(GameEvent.PAY_FAIL, orderid, goodid);
120   - // reject(err);
121   - }
122   - });
123   - break;
124   - case "5"://扫码小程序支付,imgurl为二维码地址,提示用户扫码即可
125   - EventCenter.I.emit(GameEvent.PAY_POLLING, true);
126   - var { imgurl } = config;
127   - wx.previewImage({
128   - current: imgurl, // 当前显示图片的http链接
129   - urls: [imgurl] // 需要预览的图片http链接列表
130   - })
131   -
132   - break;
133   - case "6"://二维码支付,windows下需要调用扫码支付接口
134   - EventCenter.I.emit(GameEvent.PAY_POLLING, true);
135   - var { qrcode } = config;
136   - wx.previewImage({
137   - current: qrcode, // 当前显示图片的http链接
138   - urls: [qrcode] // 需要预览的图片http链接列表
139   - })
140   -
141   - break;
142   - case "7"://抖音支付
143   - var { payid } = config;
144   - SDKTools.pay({ payid, goodid, money: price, orderid: orderid }).then(res => {
145   - if (!res.code) {
146   - console.log("支付成功", res);
147   - EventCenter.I.emit(GameEvent.PAY_CONFIRM, orderid, goodid);
148   - } else {
149   - console.log("支付失败", res);
150   - EventCenter.I.emit(GameEvent.PAY_FAIL, orderid, goodid);
151   - }
152   - }).catch(err => {
153   - console.log("支付失败", err);
154   - EventCenter.I.emit(GameEvent.PAY_FAIL, orderid, goodid);
155   - })
156   - break;
157   - case "10"://支付宝支付
158   - var { payid } = config;
159   - SDKTools.pay({ payid, goodid, money: price, orderid: orderid }).then(res => {
160   - if (!res.code) {
161   - console.log("111tttttt"+Date.now());
162   - EventCenter.I.emit(GameEvent.PAY_POLLING_NOW, true);
163   - } else {
164   - console.log("支付失败", JSON.stringify(res));
165   - EventCenter.I.emit(GameEvent.PAY_FAIL, orderid, goodid);
166   - }
167   - }).catch(err => {
168   - console.log("支付失败", JSON.stringify(err));
169   - EventCenter.I.emit(GameEvent.PAY_FAIL, orderid, goodid);
170   - })
171   - break;
172   - default:
173   - // utils.tips("出错!")
174   - break;
175   - }
176   - } else {
177   - // utils.tips("出错!")
178   - }
179   - }
180   -
181   - /**
182   - * 获取群二维码
183   - */
184   - static QRcode() {
185   - return GameServicePlus.I.getQRcode();
186   - }
187   -
188   - /**
189   - * 兑换CDK
190   - */
191   - static convertCDkey(cdkey: string) {
192   - return GameServicePlus.I.convertCDkey(cdkey);
193   - }
194   -
195   - /**
196   - * 商品列表
197   - */
198   - static goodsList() {
199   - return GameServicePlus.I.goodsList();
200   - }
201   -
202   - /**
203   - * 生成订单
204   - */
205   - static createOrder(goodid: string) {
206   - return GameServicePlus.I.createOrder(goodid);
207   - }
208   -
209   - /**
210   - * 查询订单
211   - */
212   - static queryOrder(no: string) {
213   - return GameServicePlus.I.queryOrder(no);
214   - }
215   -
216   - /**
217   - * 确认订单
218   - */
219   - static confirmOrder(no: string) {
220   - return GameServicePlus.I.confirmOrder(no);
221   - }
222   -
223   - /**
224   - * 获取玩家历史存档
225   - */
226   - static getUserHistory(uid: string, token: string) {
227   - return GameServicePlus.I.getUserHistory(uid, token);
228   - }
229   -
230   - /**
231   - * 获取玩家历史存档
232   - * @param data //需要包含uid,token
233   - */
234   - static saveUserHistory(data: any) {
235   - return GameServicePlus.I.saveUserHistory(data);
236   - }
237   -
238   - /**
239   - * 重置GM标识
240   - */
241   - static setAup(typ: number = 0) {
242   - return GameServicePlus.I.setAup(typ);
243   - }
244   -
245   - /**
246   - * 获取分享图片
247   - * @param items 2,1,0|3,1,1|3,1,1|3,1,1|3,1,1格式:2,1,0(类型,id,领取状态)领取状态:1已领取0未领取
248   - * @param zoom 图片缩放比例
249   - * @returns
250   - */
251   - static getShareImage(items: string, zoom = 1) {
252   - return GameServicePlus.I.getShareImage(items, zoom);
253   - }
254   -
255   - /**
256   - * 获取今日分享
257   - * @param refresh 是否刷新
258   - */
259   - static getShare(refresh?: number) {
260   - return GameServicePlus.I.getShare(refresh);
261   - }
262   -
263   - /**
264   - * 获取分享详情
265   - * @param id 分享id
266   - * @param date 分享日期 格式:20220524
267   - */
268   - static getShareInfo(id: number, date: string) {
269   - if (typeof id === "string") {
270   - id = parseInt(id);
271   - }
272   - return GameServicePlus.I.getShareInfo(id, date);
273   - }
274   -
275   - /**
276   - * 领取好友分享
277   - * @param id 分享id
278   - * @param date 分享日期 格式:20220524
279   - * @param itemid 分享选项ID
280   - */
281   - static getShareReward(id: number, date: string, itemid: number) {
282   - if (typeof id === "string") {
283   - id = parseInt(id);
284   - }
285   - return GameServicePlus.I.getShareReward(id, date, itemid);
286   - }
287   -
288   - /**
289   - * 领取额外进度奖励
290   - * @param id 分享id
291   - * @param date 分享日期 格式:20220524
292   - */
293   - static getProgressReward(id: number, date: string) {
294   - if (typeof id === "string") {
295   - id = parseInt(id);
296   - }
297   - return GameServicePlus.I.getProgressReward(id, date);
298   - }
299   -
300   - static getInviteInfo() {
301   - return GameServicePlus.I.getInviteInfo();
302   - }
303   -
304   - static receiveInvite(id: number) {
305   - return GameServicePlus.I.receiveInvite(id);
306   - }
307   -
308   - static heartbeat() {
309   - return GameServicePlus.I.beatheart();
310   - }
311   -
312   - /**
313   - * 领取列表
314   - * @param status 类型1周卡2月卡
315   - */
316   - static recCardList() {
317   - return GameServicePlus.I.recCardList();
318   - }
319   -
320   - /**
321   - * 领取列表
322   - * @param typ 第几天 week周 month月
323   - */
324   - static recCardReward(typ: string) {
325   - return GameServicePlus.I.recCardReward(typ);
326   - }
327   -
328   - /**
329   - * 领取基金列表
330   - */
331   - static recGrowthList() {
332   - return GameServicePlus.I.recGrowthList();
333   - }
334   -
335   - /**
336   - * 领取基金列表
337   - * @param goodid 购买的基金商品ID
338   - * @param level 等级
339   - */
340   - static recGrowthReward(goodid: string, level: number) {
341   - return GameServicePlus.I.recGrowthReward(goodid, level);
342   - }
343   -
344   - /**
345   - * 获取无尽礼包数据
346   - */
347   - static recEndlessList(groupId: string) {
348   - return GameServicePlus.I.recEndlessList(groupId);
349   - }
350   -
351   - /**
352   - * 领取无尽礼包
353   - * @param date 当前日期
354   - */
355   - static recEndlessReward(groupId: string, id: string, date: string) {
356   - return GameServicePlus.I.recEndlessReward(groupId, id, date);
357   - }
358   -
359   - /**
360   - * 获取新手礼包数据
361   - */
362   - static getNewbieGiftData() {
363   - return GameServicePlus.I.getNewbieGiftData();
364   - }
365   -
366   - /**
367   - * 领取新手礼包
368   - * @param days 当前天
369   - */
370   - static recNewbieGift(days: string) {
371   - return GameServicePlus.I.recNewbieGift(days);
372   - }
373   -
374   -
375   - /**
376   - * 订阅消息
377   - * @param tmplId 订阅ID
378   - * @param message 订阅内容
379   - * @param sendtime 订阅发送时间s二选一参数
380   - * @param times 订阅延迟时间s二选一参数
381   - * @param status 1取消以前相同模板信息,默认为0不取消
382   - */
383   - static async sendSubScribe(tmplId: string, message: string, sendtime: number, times: number = 0, status = 1) {
384   - return GameServicePlus.I.sendSubScribe(tmplId, message, sendtime, times, status);
385   - }
386   -
387   - /**
388   - * 取消订阅消息
389   - * @param tmplId 订阅ID
390   - */
391   - static async cancelSubscribe(tmplId: string) {
392   - return GameServicePlus.I.cancelSubscribe(tmplId);
393   - }
394   - /**
395   - * 自定义活动
396   - * @param id 活动ID(后台的ID)
397   - */
398   - static activityCustom(id?: string) {
399   - return GameServicePlus.I.activityCustom(id);
400   - }
401   - /**
402   - * 添加排行榜
403   - * @param typ 游戏端自定义排行标识
404   - * @param fraction 分数 如果上报的分数小于以前上报的分数,则不会更新
405   - * @param rankData 扩展字段
406   - * @returns
407   - */
408   - static rankAddV2(typ: string, fraction: number, rankData?: string) {
409   - return GameServicePlus.I.rankAddV2(typ, fraction, rankData);
410   - }
411   - /**
412   - * 排行榜列表
413   - * @param typ 游戏端自定义排行标识
414   - * @param percent percent等于1 的时候会返回排行榜总人数和自己的当前排名
415   - */
416   - static rankListV2(typ: string, percent: number = 0) {
417   - return GameServicePlus.I.rankListV2(typ, percent);
418   - }
419   -
420   -}
421 0 \ No newline at end of file
sdk/WxHelper.ts
1 1  
2 2 // import UserManager from "../manager/UserManager";
3 3  
4   -import { Node, UITransform, game, view } from "cc";
5   -import { ALIPAY } from "cc/env";
  4 +import DataService from "../wxsdk/service/DataService";
  5 +import AlipayApi from "../wxsdk/alipay/AlipayApi";
  6 +import { SDKTools } from "./SDKTools";
6 7  
7 8 /** WXapi */
8 9 export class WxHelper {
... ... @@ -12,19 +13,19 @@ export class WxHelper {
12 13  
13 14 /** 微信用户信息 */
14 15 public static userInfo: WxUserInfo;
15   - static get isWx() {
16   - return typeof wx !== 'undefined';
  16 + public static get isOperable() {
  17 + return (cc.sys.platform === cc.sys.WECHAT_GAME || cc.sys.platform === cc.sys.ALIPAY_GAME)
17 18 }
18 19  
19 20 /** 获取设备信息 */
20 21 public static getSystemInfo() {
21   - if (this.isWx) this.SystemInfo = wx.getSystemInfoSync();
  22 + if (typeof my !== 'undefined') this.SystemInfo = my.getSystemInfoSync();
22 23 }
23 24  
24 25 /** 像开放数据域发送信息 */
25 26 public static postMessage(eventType: string, data?: any): void {
26   - if (!this.isWx || !this.checkVerison('1.9.92')) return;
27   - wx.getOpenDataContext().postMessage({
  27 + if (typeof my === 'undefined' || !this.checkVerison('1.9.92')) return;
  28 + my.getOpenDataContext().postMessage({
28 29 eventType: eventType,
29 30 data: data
30 31 });
... ... @@ -32,17 +33,15 @@ export class WxHelper {
32 33 }
33 34  
34 35 /** 更新微信开放数据榜单数据 */
35   - public static updateWxRank(key: string, value: number) {
36   - if (typeof my != 'undefined') {
37   - return;
38   - }
39   - if (!this.isWx || !this.checkVerison('1.9.92')) return;
  36 + public static updateWxRank(score: number) {
  37 +
  38 + if (typeof wx === 'undefined' || !this.checkVerison('1.9.92')) return;
40 39 let data = {
41   - value,
  40 + score: score
42 41 }
43 42 wx.setUserCloudStorage({
44 43 KVDataList: [{
45   - key,
  44 + key: 'score',
46 45 value: JSON.stringify(data)
47 46 }]
48 47 })
... ... @@ -50,10 +49,10 @@ export class WxHelper {
50 49 }
51 50  
52 51 /** 创建用户反馈按钮 */
53   - public static createFeedbackButton(target: Node) {
  52 + public static createFeedbackButton(target: cc.Node) {
54 53  
55 54 let data = this.computWxPosition(target);
56   - return wx.createFeedbackButton({
  55 + return my.createFeedbackButton({
57 56 type: 'text',
58 57 text: ' ',
59 58 style: {
... ... @@ -72,10 +71,10 @@ export class WxHelper {
72 71 /** 获取用户信息按钮 */
73 72 public static userInfoButton: any;
74 73 /** 创建一个获取用户信息按钮 */
75   - public static createUserInfoButton(target: Node) {
  74 + public static createUserInfoButton(target: cc.Node) {
76 75 let data = this.computWxPosition(target);
77 76 // console.log("data", data)
78   - return wx.createUserInfoButton({
  77 + return my.createUserInfoButton({
79 78 type: 'text',
80 79 text: ' ',
81 80 style: {
... ... @@ -96,36 +95,33 @@ export class WxHelper {
96 95 }
97 96  
98 97 /** 计算微信坐标 */
99   - public static computWxPosition(target: Node): { left: number, top: number, width: number, height: number } {
  98 + public static computWxPosition(target: cc.Node): { left: number, top: number, width: number, height: number } {
100 99  
101 100 let data = { left: 0, top: 0, width: 0, height: 0 }
102   - let pos = target.worldPosition;
103   - let width = target.getComponent(UITransform).width;
104   - let height = target.getComponent(UITransform).height;
105   - let ratio = view.getDevicePixelRatio();
106   - let scale = view.getScaleX();
  101 + let rect = target.getBoundingBoxToWorld();
  102 + let ratio = cc.view.getDevicePixelRatio();
  103 + let scale = cc.view.getScaleX();
107 104 let factor = scale / ratio;
108   - // let point = cc.v2(rect.x, rect.y);
  105 + // let point = v2(rect.x, rect.y);
109 106 // point.mulSelf(scale);
110   - data.left = (pos.x - width / 2) * factor;
111   - data.top = wx.getSystemInfoSync().screenHeight - (pos.y + height / 2) * factor;
112   - data.width = width * factor;
113   - data.height = height * factor;
114   -
115   - // let btnSize = cc.size(target.width + 10, target.height + 10);
116   - // let frameSize = cc.view.getFrameSize();
117   - // let winSize = cc.director.getWinSize();
118   - // // cc.log("winSize: ",winSize);
119   - // // cc.log("frameSize: ",frameSize);
  107 + data.left = rect.x * factor;
  108 + data.top = this.SystemInfo.screenHeight - (rect.y + rect.height) * factor;
  109 + data.width = rect.width * factor;
  110 + data.height = rect.height * factor;
  111 +
  112 + // let btnSize = size(target.width + 10, target.height + 10);
  113 + // let frameSize = view.getFrameSize();
  114 + // let winSize = director.getWinSize();
  115 + // // log("winSize: ",winSize);
  116 + // // log("frameSize: ",frameSize);
120 117 // //适配不同机型来创建微信按钮
121 118 // data.left = (winSize.width * 0.5 + target.x - btnSize.width * 0.5) / winSize.width * frameSize.width;
122 119 // data.top = (winSize.height * 0.5 - target.y - btnSize.height * 0.5) / winSize.height * frameSize.height;
123 120 // data.width = btnSize.width / winSize.width * frameSize.width;
124 121 // data.height = btnSize.height / winSize.height * frameSize.height;
125   - // cc.log("button pos: ",cc.v2(left,top));
126   - // cc.log("button size: ",cc.size(width,height));
  122 + // log("button pos: ",v2(left,top));
  123 + // log("button size: ",size(width,height));
127 124  
128   - // cc.log(data)
129 125 return data;
130 126  
131 127 }
... ... @@ -165,30 +161,10 @@ export class WxHelper {
165 161  
166 162 /** 显示一个对话框 */
167 163 public static showModal(data: ShowModalType) {
168   - if (typeof my != 'undefined') {
169   - return new Promise((resolve, reject) => {
170   - wx.confirm({
171   - ...data,
172   - success: (res: { confirm: boolean, cancel: boolean }) => {
173   - if (res.confirm) {
174   - resolve(true);
175   - } else {
176   - resolve(false);
177   - }
178   - },
179   - fail: () => {
180   - reject();
181   - }
182   -
183   - });
184   -
185   - });
186   - }
187   -
188 164 return new Promise((resolve, reject) => {
189 165  
190   - if (typeof wx !== 'undefined') {
191   - wx.showModal({
  166 + if (typeof my !== 'undefined') {
  167 + my.showModal({
192 168 ...data,
193 169 success: (res: { confirm: boolean, cancel: boolean }) => {
194 170 if (res.confirm) {
... ... @@ -203,7 +179,6 @@ export class WxHelper {
203 179  
204 180 });
205 181 } else {
206   - console.log(JSON.stringify(data));
207 182 }
208 183  
209 184 });
... ... @@ -216,41 +191,30 @@ export class WxHelper {
216 191 * @param time 关闭时间
217 192 */
218 193 public static showToast(msg: string, time: number = 1500) {
219   - if (!this.isWx) return;
220   - if (typeof my != 'undefined') {
  194 + if (cc.sys.platform === cc.sys.WECHAT_GAME)
  195 + wx.showToast({
  196 + title: msg,
  197 + icon: 'none',
  198 + duration: time
  199 + })
  200 + else if (cc.sys.platform === cc.sys.ALIPAY_GAME) {
221 201 my.showToast({
222 202 type: 'none',
223 203 content: msg,
224 204 duration: time,
225 205 });
226   - return;
  206 + } else {
  207 + console.log(msg)
227 208 }
228   - wx.showToast({
229   - title: msg,
230   - icon: 'none',
231   - duration: time
232   - })
233 209  
234 210 }
235 211  
236 212 /** 设置系统剪贴板的内容 */
237 213 public static copy(str: string) {
238 214 if (!this.checkVerison('1.1.0')) return Promise.reject('');
239   - if (typeof my != 'undefined') {
240   - return new Promise((resolve, reject) => {
241   - wx.setClipboard({
242   - text: str,
243   - success: (res: any) => {
244   - resolve(res);
245   - },
246   - fail: () => {
247   - resolve('');
248   - }
249   - });
250   - });
251   - }
  215 +
252 216 return new Promise((resolve, reject) => {
253   - wx.setClipboardData({
  217 + my.setClipboardData({
254 218 data: str,
255 219 success: (res: any) => {
256 220 resolve(res);
... ... @@ -264,10 +228,10 @@ export class WxHelper {
264 228  
265 229 /** 手机发生较长时间的振动(400 ms) */
266 230 public static vibrateLong() {
267   - if (!this.checkVerison('1.2.0')) return Promise.reject(null);
  231 + // if (!this.checkVerison('1.2.0')) return Promise.reject(null);
268 232  
269 233 return new Promise((resolve, reject) => {
270   - wx.vibrateLong({
  234 + my.vibrateLong({
271 235 success: () => {
272 236 resolve(1);
273 237 },
... ... @@ -280,10 +244,10 @@ export class WxHelper {
280 244  
281 245 /** 手机发生较短时间的振动(15 ms) */
282 246 public static vibrateShort() {
283   - if (!this.checkVerison('1.2.0')) return Promise.reject(null);
  247 + // if (!this.checkVerison('1.2.0')) return Promise.reject(null);
284 248  
285 249 return new Promise<IResult<any>>((resolve, reject) => {
286   - wx.vibrateShort({
  250 + my.vibrateShort({
287 251 success: () => {
288 252 resolve({ code: 0 });
289 253 },
... ... @@ -299,13 +263,13 @@ export class WxHelper {
299 263 */
300 264 public static checkUpdate(bol: boolean = true) {
301 265 if (!this.checkVerison('1.9.90')) return;
302   - const updateManager = wx.getUpdateManager();
  266 + const updateManager = my.getUpdateManager();
303 267 updateManager.onCheckForUpdate(function (res) {
304 268 console.log('updateManager', res.hasUpdate);
305 269 });
306 270  
307 271 updateManager.onUpdateReady(function () {
308   - wx.showModal({
  272 + my.showModal({
309 273 title: '更新提示',
310 274 content: '新版本已经准备好,请重启应用!',
311 275 showCancel: bol,
... ... @@ -326,7 +290,7 @@ export class WxHelper {
326 290  
327 291 return new Promise<IResult<any>>((resolve, reject) => {
328 292 if (!this.checkVerison('2.0.3')) resolve({ code: 1 });
329   - wx.openCustomerServiceConversation({
  293 + my.openCustomerServiceConversation({
330 294 showMessageCard: true,
331 295 sendMessageTitle: '我要更多好玩!',
332 296 sendMessageImg: 'http://dep.miso-lab.com/tetrischangeskin/bin/share/concat.png',
... ... @@ -346,7 +310,7 @@ export class WxHelper {
346 310  
347 311 return new Promise<IResult<any>>((resolve, reject) => {
348 312 if (!this.checkVerison('2.0.3')) resolve({ code: 1 });
349   - wx.openCustomerServiceConversation({
  313 + my.openCustomerServiceConversation({
350 314 success: () => {
351 315 resolve({ code: 0 });
352 316 },
... ... @@ -360,10 +324,10 @@ export class WxHelper {
360 324  
361 325 /** 回到前台 */
362 326 public static onShow(callback: () => void) {
363   - if (!this.isWx) return;
364   - wx.onShow(callback);
  327 + if (typeof my === 'undefined') return;
  328 + my.onShow(callback);
365 329 // return new Promise<IResult<any>>((resolve, reject) => {
366   - // wx.onShow((res: any) => {
  330 + // my.onShow((res: any) => {
367 331 // resolve({ code: 1 });
368 332 // });
369 333 // });
... ... @@ -373,14 +337,14 @@ export class WxHelper {
373 337 /** 切换到后台 */
374 338 public static onHide(callback: () => void) {
375 339  
376   - if (!this.isWx) return;
377   - wx.onHide(callback);
  340 + if (typeof my === 'undefined') return;
  341 + my.onHide(callback);
378 342  
379 343 }
380 344  
381 345 public static updateShareMenu(value) {
382   - if (!this.isWx) return;
383   - wx.updateShareMenu({
  346 + if (typeof my === 'undefined') return;
  347 + my.updateShareMenu({
384 348 withShareTicket: value
385 349 });
386 350 }
... ... @@ -388,49 +352,18 @@ export class WxHelper {
388 352 /**
389 353 * 检查授权
390 354 */
391   - public static getSetting(scope: string = 'scope.userInfo') {
392   - if (!this.isWx) return Promise.resolve(1);
393   - return new Promise((resolve, reject) => {
394   - wx.getSetting({
395   - success(res) {
396   - if (res.authSetting[scope]) {
397   - resolve(1)
398   - } else {
399   - reject()
400   - }
401   - }
402   - })
403   - })
404   - }
405   - /**
406   - * 打开授权设置
407   - */
408   - public static openSetting(scope: string = 'scope.userInfo') {
409   - if (!this.isWx) return Promise.resolve(1);
410   - return new Promise((resolve, reject) => {
411   - wx.openSetting({
412   - success(res) {
413   - if (res.authSetting[scope]) {
414   - resolve(1)
415   - } else {
416   - reject()
417   - }
418   - }
419   - })
420   - })
421   - }
422   - /**
423   - * 打开授权窗口
424   - */
425 355 public static authorize(scope: string = 'scope.userInfo') {
426   - if (!this.isWx) return;
427   - wx.authorize({
428   - scope: scope,
429   - success(suc) {
430   - console.log("suc", suc)
431   - },
432   - fail(err) {
433   - console.log("err", err)
  356 + if (typeof my === 'undefined') return;
  357 + my.getSetting({
  358 + success(res) {
  359 + if (!res.authSetting[scope]) {
  360 + my.authorize({
  361 + scope: scope,
  362 + success() {
  363 +
  364 + }
  365 + })
  366 + }
434 367 }
435 368 })
436 369 }
... ... @@ -438,42 +371,21 @@ export class WxHelper {
438 371 * 获取用户信息
439 372 */
440 373 public static getUserInfo(callback) {
441   - wx.getUserInfo({
442   - success: function (res) {
443   - // console.log(res)
444   - callback(res)
445   - },
446   - fail: function (err) {
447   - callback(err)
448   - }
449   - })
450   - }
451   - /**
452   - * 获取用户信息 自动弹出
453   - */
454   - public static getUserProfile(callback) {
455   - if (!this.isWx) {
456   - callback({ userInfo: "" })
457   - return
458   - };
459   - wx.getUserProfile({
460   - desc: '补充用户资料',
  374 + my.getUserInfo({
461 375 success: function (res) {
462 376 // console.log(res)
463 377 callback(res)
464 378 },
465 379 fail: function (err) {
466   - console.log("获取用户信息", err);
467 380 callback(err)
468 381 }
469 382 })
470 383 }
471 384 /** 游戏圈 */
472   - public static createGameClubButton(target: Node) {
  385 + public static createGameClubButton(target: cc.Node) {
473 386 let data = this.computWxPosition(target);
474   - //@ts-ignore
475   - return wx.createGameClubButton({
476   - icon: 'white',
  387 + return my.createGameClubButton({
  388 + icon: 'green',
477 389 style: {
478 390 left: data.left,
479 391 top: data.top,
... ... @@ -484,51 +396,65 @@ export class WxHelper {
484 396  
485 397 }
486 398  
487   - /** 抖音创建客服按钮 */
488   - public static createContactButton(target: Node) {
489   -
490   - let data = this.computWxPosition(target);
491   - return wx.createContactButton({
492   - type: "text", // image | text
493   - // image: "../resources/prefab/loading/mask",
494   - text: ' ',
495   - style: {
496   - left: data.left,
497   - top: data.top,
498   - width: data.width,
499   - height: data.height,
500   - // lineHeight: 40,
501   - backgroundColor: "#00000000",
502   - // textAlign: "center",
503   - // fontSize: 16,
504   - // borderRadius: 5,
505   - borderColor: "#00000000",
506   - // borderWidth: 1,
507   - // textColor: "#ffffff",
508   - },
509   - success(res) {
510   - console.log("createContactButton success", res);
511   - },
512   - fail(res) {
513   - console.log("createContactButton fail", res);
514   - },
515   - complete(res) {
516   - console.log("createContactButton complete", res);
  399 + public static setUserWxCloudStorage(data: object) {
  400 + if (cc.sys.platform != cc.sys.WECHAT_GAME || !DataService.I.Authorize) return null;
  401 + wx.setUserCloudStorage({
  402 + KVDataList: [{ key: 'data', value: JSON.stringify(data) }],
  403 + success: res => {
  404 + console.log("分数上传 成功", data);
517 405 },
  406 + fail: res => {
  407 + console.log("分数上传 失败");
  408 + }
518 409 });
  410 +
519 411 }
  412 + public static showRankEnter() {
  413 + return WxHelper.isOperable && AlipayApi.I.canUseRank()
  414 + }
  415 + public static getRank(key: string) {
  416 + if (cc.sys.platform === cc.sys.ALIPAY_GAME) {
  417 + AlipayApi.I.getRankList(key).then(() => {
  418 + console.log('success 关闭banner')
  419 + // BannerManager.I.hideAll();
  420 + }).catch((msg) => {
  421 + console.log('fail', JSON.stringify(msg))
  422 + // WxHelper.showToast(msg.errMsg || msg.errorMessage || '排行榜获取失败')
  423 + });
  424 + }
520 425  
521   - public static restartMiniProgram() {
522   - if (typeof my != 'undefined') {
523   - game.restart();
524   - return;
  426 + }
  427 + public static setRankScore(key: string, score: number, updateType?: number) {
  428 + if (cc.sys.platform === cc.sys.ALIPAY_GAME)
  429 + AlipayApi.I.setRankScoreData(key, score, updateType);
  430 + }
  431 + public static async loginWx(isAuthorize: boolean, failFunction?: Function, count?: number, success?: Function): Promise<any> {
  432 + count = count != undefined ? count : 3;
  433 + let data = await SDKTools.login(isAuthorize);
  434 + // console.error(count, 'loginWx', data)
  435 + if (data.code == 0) {
  436 + success && success();
  437 + return data;
  438 + } else if (count >= 0) {
  439 + count--;
  440 + return await this.loginWx(isAuthorize, failFunction, count);
  441 + } else if (failFunction) {
  442 + console.warn('--wxlogin--fail', data)
  443 + failFunction();
  444 + return null;
525 445 }
526   - if (!this.isWx) {
527   - return
528   - };
529   - if (!wx.restartMiniProgram) {
530   - this.showToast("自动重启失败,请手动重启!", 10000);
  446 + }
  447 +
  448 +
  449 +
  450 +
  451 +
  452 + public static goToGameCenter(success: Function, fail: Function) {
  453 + //每个游戏跳转游戏中心的url 不一样
  454 + let url = "alipays://platformapi/startapp?appId=2021003125685383&url=https%3A%2F%2Frender.alipay.com%2Fp%2Fyuyan%2F180020010001206617%2Findex.html%3FcaprMode%3Dsync&chInfo=gamesetlattice&sms=YES&appClearTop=false";
  455 + if (cc.sys.platform === cc.sys.ALIPAY_GAME) {
  456 + AlipayApi.I.navigateToMiniProgramByScheme(url, success, fail)
531 457 }
532   - wx.restartMiniProgram();
533 458 }
  459 +
534 460 }
535 461 \ No newline at end of file
... ...
sdk/shareTools.ts
1   -import { UIManager } from "../../framework/core/view/UIManager";
2   -import { AudioManager } from "../../framework/mananger/AudioManager";
3   -import TAMgr from "../../framework/ta/TAMgr";
4   -import WXSDK from "../../framework/wxsdk/WXSDK";
5   -import { EventModels, EventPool } from "../const/EventModels";
6   -import { GameConst } from "../const/GameConst";
7   -import { EActivitySubTaskType, EWindowExitCode, WindowType } from "../const/types";
8   -import { mapController } from "../modules/map/MapController";
9   -import { PayShopManager } from "../modules/server/manager/PayShopManager";
10   -import { shopController } from "../modules/shop/ShopController";
11   -import { Utils } from "../utils/Utils";
12   -import MaskView from "../view/common/MaskView";
  1 +import SDKUtils from "../wxsdk/utils/SDKUtils";
  2 +import WXSDK from "../wxsdk/WXSDK";
13 3 import { Analytics } from "./Analytics";
14   -import { Ge } from "./Ge";
15   -import { SDKTools } from "./SDKTools";
16   -import { WxHelper } from "./WxHelper";
17   -
  4 +import SDKShare from "../wxsdk/share/SDKShare";
  5 +import { ShareVideoError } from "../wxsdk/base/SDKConst";
18 6 /*
19 7 * 分享与视频工具类;
20 8 */
... ... @@ -25,126 +13,92 @@ export class ShareTools {
25 13 public static onShowAd: boolean = false;
26 14  
27 15 public static isTest: boolean = false;
28   -
29   - // private static getAdCount() {
30   - // try {
31   - // let adCount = SDKTools.getParamsString("ad_count", '10,10');
32   - // let arr = adCount.split(',').map(Number);
33   - // if (SDKTools.isnew) {
34   - // return +arr[0];
35   - // } else {
36   - // return +arr[1];
37   - // }
38   - // } catch (error) {
39   - // return 10;
40   - // }
41   - // }
42 16 /**
43 17 * 验证分享:可处理成功、失败
44 18 * @param shareKey
45 19 * @param params params.fail 有就不处理,没有自动处理
46 20 * @param opts 目前支持4个key 1,title自定义分享标题 2,img_url自定义分享图片 3,share_type(不走后台配置写死走视频or分享。1分享2视频3无视频则分享)4,closeSimulate是否关闭模拟分享
47 21 */
48   - static async share(shareKey: string, params?: { success?: Function, fail?: Function, context?: any }, opts?: any) {
49   - const type = this.getShareType(shareKey);
50   - // 免广告卡、体验卡
51   - if ((type == 2 && (!opts || opts.share_type != 1)) || (opts && opts.share_type == 2)) {
52   - if (PayShopManager.I.isExperienceOrNoAd()) {
53   - Analytics.I.dot("video_no_ad", { form: shareKey });
54   - params && params.success && params.success();
55   - return;
56   - } else {
57   - // 非免广告卡、体验卡用户 检查是否买过体验卡
58   - if (PayShopManager.I.checkShowExperience()) {
59   - if (shopController.buyExperienceTips != Utils.getDayTime(0)) {
60   - shopController.buyExperienceTips = Utils.getDayTime(0);;
61   - UIManager.instance.showWindow2(WindowType.ExperienceGiftWindow);
62   - params && params.fail && params.fail();
63   - return;
64   - }
65   - }
66   - }
67   - }
68   - // 广告卡
69   - if (((type == 2 && (!opts || opts.share_type != 1)) || (opts && opts.share_type == 2)) && mapController.getPackageItemNum(GameConst.ITEM_ADCARD_ID) > 0) {
70   - const ret = await UIManager.instance.waitWindow2(WindowType.AdCardWindow);
71   - if (ret == EWindowExitCode.Yes) {
72   - Analytics.I.dot("ad_card", { ad_card: shareKey });
73   - params && params.success && params.success();
74   - return;
75   - }
76   - }
77   -
78   - if ((typeof wx == 'undefined'&&typeof my == 'undefined') || this.isTest) {
  22 + static share(shareKey: string, params?: { success?: Function, fail?: Function, context?: any }, opts?: any) {
  23 + if (typeof my === 'undefined' || this.isTest) {
79 24 params && params.success && params.success();
80   - // 分享
81   - const evt = EventPool.get(EventModels.AcitvitySubTaskEvent);
82   - evt.type = EActivitySubTaskType.Share;
83   - evt.centerEmit();
84 25 return
85 26 }
86   -
87   - // // 看广告n次后处理为分享
88   - // let count = this.getAdCount();
89   - // let isClear = false;
90   - // // console.log("改为分享前:", settingsController.videoCount, count);
91   - // if (settingsController.videoCount >= count) {
92   - // if (type != 1 || (opts && opts.share_type == 2)) {// 视频 or // 强制视频
93   - // opts = {
94   - // ...opts,
95   - // share_type: 1,//强制改为分享
96   - // };
97   - // isClear = true;
98   - // // console.log("改为分享了");
99   - // }
100   - // }
101   -
102   - this.onShowAd = true;
103   - AudioManager.I.pauseAll();
104   - if (!opts || !opts.closeSimulate) {
105   - MaskView.Show()
  27 + let time = 1500;
  28 + let self = this;
  29 + if (SDKUtils.compareVersion(my.env.clientVersion, '10.3.70') < 0) {
  30 + Analytics.I.dot('videoFail', { "from": 'versionLow' });
  31 + my.showToast({
  32 + type: 'none',
  33 + content: '当前版本不支持视频广告哦,请您升级支付宝版本',
  34 + duration: time,
  35 + });
  36 + return;
106 37 }
  38 + this.onShowAd = true;
  39 +
107 40 WXSDK.share.share(shareKey.toString(), params, opts).then(async res => {
108 41 this.onShowAd = false;
109   - // if (isClear) {
110   - // settingsController.videoCount = 0;
111   - // }
112   - if (res.type == 2) {
113   - // 视频
114   - // settingsController.videoCount++;
115   - Ge.I.adShowEvent("video", shareKey.toString());
116   - TAMgr.Ins.userAdd({ total_ad_num: 1 });
117   - } else {
118   - // 分享
119   - const evt = EventPool.get(EventModels.AcitvitySubTaskEvent);
120   - evt.type = EActivitySubTaskType.Share;
121   - evt.centerEmit();
122   - TAMgr.Ins.dot('share_source', { from: shareKey });
123   - }
124 42 params && params.success && params.success(res);
125   - AudioManager.I.resumeAll();
126   - MaskView.Hide();
127   - }).catch(async err => {
128   - AudioManager.I.resumeAll();
129   - MaskView.Hide();
130   - this.onShowAd = false;
131   - if (!params || !params.fail) {
132   - if (err && err.msg) {
133   - WxHelper.showToast(err.msg)
134   - }
  43 + }).catch(async videoErr => {
  44 + console.log(JSON.stringify(videoErr));
  45 + let showShare = !(videoErr.code == ShareVideoError.VideoPlaying.code || videoErr.code == ShareVideoError.VideoQuit.code);
  46 + if (showShare && SDKUtils.compareVersion(my.env.clientVersion, '10.1.75') > 0) {
  47 + SDKShare.I.share(shareKey, params, opts).then(success => {
  48 + params && params.success && params.success(success);
  49 + Analytics.I.dot('videoFail', { "from": 'share_success' });
  50 + }).catch(shareErr => {
  51 + console.log(`share fail${JSON.stringify(shareErr)}`)
  52 + Analytics.I.dot('videoFail', { "from": 'share_fail' });
  53 + self.onShowAd = false;
  54 + if (!params || !params.fail) {
  55 + if (cc.sys.platform === cc.sys.WECHAT_GAME) {
  56 + wx.showToast({
  57 + title: shareErr.msg,
  58 + icon: 'none',
  59 + duration: time
  60 + })
  61 + } else if (cc.sys.platform === cc.sys.ALIPAY_GAME) {
  62 + Analytics.I.dot('videoFail', { "from": 'other3_' + shareErr.code });
  63 + my.showToast({
  64 + content: shareErr.msg,
  65 + type: 'none',
  66 + duration: 1500
  67 + })
  68 + }
  69 + } else {
  70 + Analytics.I.dot('videoFail', { "from": 'other4_' + shareErr.code });
  71 + params && params.fail && params.fail(shareErr);
  72 + }
  73 + })
135 74 } else {
136   - params && params.fail && params.fail(err);
  75 + Analytics.I.dot('videoFail', { "from": 'share_versionLow' });
  76 + this.onShowAd = false;
  77 + if (!params || !params.fail) {
  78 + if (cc.sys.platform === cc.sys.WECHAT_GAME) {
  79 + wx.showToast({
  80 + title: videoErr.msg,
  81 + icon: 'none',
  82 + duration: time
  83 + })
  84 + } else if (cc.sys.platform === cc.sys.ALIPAY_GAME) {
  85 + Analytics.I.dot('videoFail', { "from": 'other1_' + videoErr.code });
  86 + my.showToast({
  87 + content: videoErr.msg,
  88 + type: 'none',
  89 + duration: 1500
  90 + })
  91 + }
  92 + } else {
  93 + Analytics.I.dot('videoFail', { "from": 'other2_' + videoErr.code });
  94 + params && params.fail && params.fail(videoErr);
  95 + }
137 96 }
138   - })
139   - }
140 97  
141   - /**
142   - * 必定视频 不走后台配置
143   - * @param shareKey
144   - * @param params
145   - */
146   - static video(shareKey: string, params?: { success?: Function, fail?: Function, context?: any }, opts?: any) {
147   - this.share(shareKey, params, { ...opts, share_type: 2 });
  98 +
  99 +
  100 +
  101 + })//this.buildParams(params)
148 102 }
149 103 /**
150 104 * 纯净分享 不处理回调
... ... @@ -175,11 +129,9 @@ export class ShareTools {
175 129 }
176 130 }
177 131  
178   - /**
179   - * 分享到朋友圈 bate 只支持安卓
180   - */
181   - static onShareTimeline(title: string, imageUrl: string, imagePreviewUrl?: string, query?: string) {
182   - WXSDK.share.onShareTimeline(title, imageUrl, imagePreviewUrl, query);
183   - }
  132 +}
  133 +
  134 +
184 135  
  136 +export enum ShareKey {
185 137 }
... ...
wxsdk/WXSDK.ts
... ... @@ -7,10 +7,9 @@ import LogService from &quot;./service/LogService&quot;;
7 7 import AdService from "./service/AdService";
8 8 import OnlineService from "./service/OnlineService";
9 9 import WxInterstitial from "./wx/WxInterstitial";
10   -import { sys } from "cc";
11 10 export default class WXSDK {
12 11 public static get isWx(): boolean {
13   - return typeof wx != "undefined"
  12 + return typeof (my) != "undefined"
14 13 }
15 14 public static get data(): SdkData {
16 15 return DataService.I.Data;
... ... @@ -37,19 +36,38 @@ export default class WXSDK {
37 36  
38 37  
39 38 public static async init() {
40   - if (this.isWx) {
  39 + // if (this.isWx) {
  40 + // WxInit.I.init();
  41 + // //视频预加载 启动预加载视频会闪屏
  42 + // // setTimeout(() => {
  43 + // // WxInterstitial.initInterstitialAd();//插屏预加载
  44 + // // ShareVideoService.I.preloadVideo();
  45 + // // }, 2000);
  46 + // if (this.isWx) {
  47 + // setTimeout(() => {
  48 + // WxInterstitial.initInterstitialAd();//插屏预加载
  49 + // ShareVideoService.I.preloadVideo();
  50 + // }, 2000);
  51 + // }
  52 + // }
  53 + // DataService.I.updateTodayOnlineTime();
  54 + // await this.game.env();
  55 + // if (this.isWx) {
  56 + // ShareVideoService.I.init();
  57 + // }
  58 + // return Promise.resolve();
  59 + if (cc.sys.platform === cc.sys.ALIPAY_GAME || cc.sys.platform === cc.sys.WECHAT_GAME) {
41 60 WxInit.I.init();
42   - //视频预加载 启动预加载视频会闪屏
43   - if (typeof wx !='undefined') {
  61 + // 视频预加载 启动预加载视频会闪屏
  62 + // if (cc.sys.platform === cc.sys.WECHAT_GAME && typeof qq == 'undefined') {
  63 + if (typeof qq == 'undefined') {
44 64 setTimeout(() => {
45   - // WxInterstitial.initInterstitialAd();//插屏预加载
  65 + WXSDK.ad.initInterstitialAd();//插屏预加载
46 66 ShareVideoService.I.preloadVideo();
47 67 }, 2000);
48 68 }
49   - }
50   - DataService.I.updateTodayOnlineTime();
51   - await this.game.env();
52   - if (this.isWx) {
  69 + DataService.I.updateTodayOnlineTime();
  70 + await this.game.env();
53 71 ShareVideoService.I.init();
54 72 }
55 73 return Promise.resolve();
... ...
wxsdk/alipay/AlipayApi.ts
... ... @@ -9,6 +9,7 @@ import WxSystem from &quot;../wx/WxSystem&quot;;
9 9 import { SDKApi } from "../http/SDKApi";
10 10  
11 11 export default class AlipayApi {
  12 + private _requirementVersion = { rank: '10.5.6' }
12 13 private getVersionError(version: string): { errMsg: string; errCode: number } {
13 14 return { errMsg: `支持最低版本:${version}`, errCode: -1 };
14 15 }
... ... @@ -100,7 +101,7 @@ export default class AlipayApi {
100 101 * 创建激励视频广告组件
101 102 */
102 103 createRewardedVideoAd(adUnitId: string) {
103   - // if (!this.canIUse(Version.I.getVRewardedVideoAd())) return null;
  104 + if (!this.canIUse(Version.I.getVRewardedVideoAd())) return null;
104 105 return my.createRewardedAd({
105 106 adUnitId: adUnitId,
106 107 });
... ... @@ -229,14 +230,15 @@ export default class AlipayApi {
229 230 my.onShareAppMessage = function () {
230 231 return {
231 232 title: data.title,
232   - bgImgUrl:'https://wxsdk-cdn.miso-lab.com/moon-island/share/zfbshare.jpeg',
233 233 // desc: ,
234   - scImgUrl: data.imageUrl,
  234 + imageUrl: data.imageUrl,
235 235 success: function (res) {
236   - console.log(res);
  236 + // console.log(res);
  237 + // callback.success()
237 238 },
238 239 fail: function (e) {
239   - console.log(e);
  240 + // console.log(e);
  241 + // callback.fail()
240 242 },
241 243 complete: function (e) {
242 244  
... ... @@ -246,10 +248,12 @@ export default class AlipayApi {
246 248  
247 249 return my.showSharePanel({
248 250 success: () => {
  251 + // console.log('showSharePanel aa')
249 252 callback.success();
250 253  
251 254 },
252 255 fail: () => {
  256 + // console.log('showSharePanel fail')
253 257 callback.fail();
254 258 },
255 259 complete: (e) => {
... ... @@ -291,13 +295,30 @@ export default class AlipayApi {
291 295 });
292 296 }
293 297  
  298 +
  299 + /**
  300 + * 如果是从别的小程序内跳转过来的,关闭的时候需要回到之前的小程序
  301 + */
  302 + navigateBackMiniProgram() {
  303 + my.navigateBackMiniProgram({
  304 + extraData: {
  305 +
  306 + },
  307 + success: (res) => {
  308 + console.log(res)
  309 + },
  310 + fail: (err) => {
  311 + console.log(err)
  312 + }
  313 + });
  314 + }
  315 +
294 316 navigateToMiniProgram(appId: string, path: string, opts: any = {}) {
295 317 return new Promise((resolve, reject) => {
296   - wx.navigateToMiniProgram({
  318 + my.navigateToMiniProgram({
297 319 appId,
298 320 path,
299 321 extraData: opts.extraData || {},
300   - envVersion: opts.envVersion || 'release',
301 322 success(res: any) {
302 323 resolve(res);
303 324 },
... ... @@ -307,6 +328,64 @@ export default class AlipayApi {
307 328 });
308 329 });
309 330 }
  331 + // 将 scheme 转换为 my.navigateToMiniProgram 的参数 scheme为外部app打开地址 游戏内需要转
  332 + private schemeToParams(scheme) {
  333 + if (!scheme.startsWith('alipays:')) {
  334 + return { message: '! 非 alipays: 开头' };
  335 + }
  336 + var params = {};
  337 + var parseQuery = (str) => {
  338 + return str.replace(/^.*?\?/, '').split('&').map(s => {
  339 + var p = s.includes('=') ? s.indexOf('=') : s.length;
  340 + return [s.slice(0, p), s.slice(p + 1)].map(decodeURIComponent);
  341 + });
  342 + };
  343 + for (var [k, v] of parseQuery(scheme)) {
  344 + if (k == 'appId') {
  345 + if (v.length != 16) {
  346 + return { message: `! 非 16 位 appId '${v}'` };
  347 + }
  348 + } else if (k == 'chInfo') {
  349 + let tempkey = 'startParam';
  350 + let tempValue = params[tempkey] || {};
  351 + tempValue[k] = v;
  352 + params[tempkey] = tempValue;
  353 + continue;
  354 + } else {
  355 + continue;
  356 + }
  357 + // else if (k == 'page') {
  358 + // k = 'path';
  359 + // } else if (k == 'query') {
  360 + // var o = {};
  361 + // for (var [x, y] of parseQuery(v)) {
  362 + // o[x] = y;
  363 + // }
  364 + // v = o;
  365 + // } else if (k == '') {
  366 + // continue;
  367 + // } else {
  368 + // let extraData = 'extraData';
  369 + // let newV = params[extraData] || {};
  370 + // newV[k] = v;
  371 + // v = newV;
  372 + // k = extraData;
  373 + // }
  374 + params[k] = v;
  375 + }
  376 + return { params };
  377 + }
  378 + navigateToMiniProgramByScheme(scheme, success, fail) {
  379 + let { params, message } = this.schemeToParams(scheme);
  380 + console.log('params--', { ...params });
  381 + if (cc.sys.platform != cc.sys.ALIPAY_GAME) return
  382 + if (params) {
  383 + my.navigateToMiniProgram({ ...params, success, fail,});
  384 + } else {
  385 + fail && fail({ error: -1, errorMessage: `无效的小程序 scheme ${scheme}: ${message}` });
  386 + }
  387 + }
  388 +
310 389  
311 390 /**
312 391 * login获取code接口
... ... @@ -388,15 +467,15 @@ export default class AlipayApi {
388 467 */
389 468 requestMidasPayment(params: { mode: string; env: number; offerId: string; currencyType: string; platform: string; buyQuantity: number; zoneId: string }): Promise<any> {
390 469 let { mode, env, offerId, currencyType, platform, buyQuantity, zoneId } = params;
391   - console.warn('====> PCSDK AlipayApi requestMidasPayment 支付参数', {
392   - mode,
393   - env,
394   - offerId,
395   - currencyType,
396   - platform,
397   - buyQuantity,
398   - zoneId
399   - });
  470 + // console.warn('====> PCSDK AlipayApi requestMidasPayment 支付参数', {
  471 + // mode,
  472 + // env,
  473 + // offerId,
  474 + // currencyType,
  475 + // platform,
  476 + // buyQuantity,
  477 + // zoneId
  478 + // });
400 479 return new Promise((resolve, reject) => {
401 480 wx.requestMidasPayment({
402 481 mode,
... ... @@ -459,19 +538,117 @@ export default class AlipayApi {
459 538 action_code,
460 539 action_finish_channel
461 540 };
462   - return SDKApi.incrementGameaction(params).then(() => {
463   - // my.confirm({
464   - // title: '增加量行为',
465   - // content: `${action_code}`,
466   - // confirmButtonText: ``,
467   - // cancelButtonText: '暂不需要',
468   - // success: (result) => {
469   - // },
470   - // });
  541 + return SDKApi.aliMission(params).then(() => {
471 542 resolve(null)
472 543 })
473 544 })
474 545 }
  546 + //段位
  547 + setRankSegmentData(rankKey: string, segment: number, segmentName: string) {
  548 + return new Promise((resolve, reject) => {
  549 + if (cc.sys.platform != cc.sys.ALIPAY_GAME) return reject({ errMsg: `无环境`, errCode: -1 })
  550 + if (!this.canIUse('10.5.6')) return reject(this.getVersionError('10.5.6'));
  551 + my.setImRankData({
  552 + rankId: rankKey,
  553 + dataType: 1, //1 为枚举类型。用于传段位信息。
  554 + value: segmentName, //该用户得了999999分,dataType为0时,需填入正数的字符串
  555 + priority: segment, //段位权重
  556 + updateType: 0, // 0为覆盖更新,1为破纪录更新。
  557 + success(res) {
  558 + console.log(res);
  559 + resolve(res);
  560 + },
  561 + fail(res) {
  562 + console.log('fail->', res);
  563 + reject(res)
  564 + },
  565 + // complete(res) {
  566 + // console.log(res);
  567 + // }
  568 + });
  569 + });
  570 + }
  571 + //排行榜成绩
  572 + setRankScoreData(rankKey: string, score: number, updateType: number = 1) {
  573 +
  574 + return new Promise((resolve, reject) => {
  575 + if (cc.sys.platform != cc.sys.ALIPAY_GAME) return reject({ errMsg: `无环境`, errCode: -1 })
  576 + if (!this.canIUse(this._requirementVersion.rank)) return reject(this.getVersionError(this._requirementVersion.rank));
  577 + my.setImRankData({
  578 + rankId: rankKey,
  579 + dataType: 0, //成绩为数字类型
  580 + value: score.toString(), //该用户得了999999分,dataType为0时,需填入正数的字符串
  581 + priority: 0, //dataType为0时,可不传。
  582 + updateType: updateType, // 0为覆盖更新,1为破纪录更新。
  583 + success(res) {
  584 + console.log('add-> success', res);
  585 + resolve(res);
  586 + },
  587 + fail(res) {
  588 + console.log('add fail->', res);
  589 + reject(res)
  590 + }
  591 + // complete(res) {
  592 + // console.log(res);
  593 + // }
  594 + });
  595 + });
  596 + }
  597 +
  598 + canUseRank() {
  599 + return this.canIUse(this._requirementVersion.rank)
  600 + }
  601 + /**
  602 + *
  603 + * @param rankKey 排行榜唯一ID,唯一标识游戏内的排行榜。
  604 + * @param scorePrefix 排行榜成绩值前缀。
  605 + * @param scoreSuffix 排行榜成绩值后缀。
  606 + */
  607 + getRankList(rankKey: string, scorePrefix?: string, scoreSuffix?: string) {
  608 + return new Promise((resolve, reject) => {
  609 + if (cc.sys.platform != cc.sys.ALIPAY_GAME) return reject({ errMsg: `无环境`, errCode: -1 })
  610 + if (!this.canIUse(this._requirementVersion.rank)) return reject(this.getVersionError(this._requirementVersion.rank));
  611 + my.getImRankList({
  612 + rankId: rankKey,
  613 + // headImg: '', // 排行榜头部
  614 + scorePrefix: scorePrefix, // 成绩值前缀
  615 + scoreSuffix: scoreSuffix, // 成绩值后缀
  616 + success(res) {
  617 + // console.log(res);
  618 + resolve(res);
  619 + },
  620 + fail(res) {
  621 + console.log('getImRankList fail->', JSON.stringify(res));
  622 + reject(res)
  623 + },
  624 + // complete(res) {
  625 + // console.log(res);
  626 + // }
  627 + });
  628 + })
  629 + }
  630 +
  631 + //玩一玩小程序是否已加首咨询
  632 + isAddHomePage(): Promise<boolean> {
  633 + return new Promise((resolve, reject) => {
  634 + if (window['my'] == undefined) return reject(false);
  635 + let uid = DataService.I.UserId;
  636 + let token = DataService.I.Token;
  637 + let openid = DataService.I.OpenId;
  638 + let params = {
  639 + uid,
  640 + token,
  641 + openid,
  642 + };
  643 + SDKApi.isAddHomePage(params).then((data) => {
  644 + console.log('--->设首结果', data)
  645 + //Y:已添加首页,N:未添加首页
  646 + return resolve(data?.data.consult_result == 'Y')
  647 + }).catch(() => {
  648 + return reject(false);
  649 + })
  650 + })
  651 + }
475 652  
476 653  
477 654 private static _instance: AlipayApi;
... ...
wxsdk/alipay/AlipayBanner.ts
1 1  
2   -// import SDKUtils from "../utils/SDKUtils";
3   -// import { BannerError, __LOG__ } from "../base/SDKConst";
4   -// import LogService from "../service/LogService";
5   -// import { DOT_AD_STATUS, DOT_AD_TYPE } from "../base/SDKEnum";
6   -// import WxSystem from "../wx/WxSystem";
7   -// import AlipayApi from "./AlipayApi";
8   -
9   -
10   -// /*
11   -// * banner
12   -// */
13   -// export default class AlipayBanner {
14   -// private static instance: AlipayBanner;
15   -// static get I(): AlipayBanner {
16   -// return this.instance || (this.instance = new AlipayBanner(750, 750));
17   -// }
18   -// private designWidth: number;
19   -// private bannerWidth: number;
20   -// private bannerHeight: number;
21   -// private bannerScale: number;
22   -// private bannerParams: any;
23   -// private _isErrored: boolean;
24   -// private adUnitId: string;
25   -// private bannerAd: any;
26   -// private resolve: any;
27   -// private reject: any;
28   -
29   -// constructor(designWidth: number, bannerWidth: number) {
30   -// designWidth = designWidth || 750;
31   -// bannerWidth = bannerWidth || 750;
32   -
33   -// this.adUnitId = '';
34   -// this._isErrored = false;
35   -// this.designWidth = designWidth;
36   -// this.bannerScale = WxSystem.I.winWidth / this.designWidth;
37   -// this.bannerWidth = Math.max(this.bannerScale * bannerWidth, 300);
38   -// this.bannerHeight = WxSystem.I.winHeight / this.bannerScale;
39   -// }
40   -
41   -// get isErrored() {
42   -// return this._isErrored;
43   -// }
44   -
45   -// private queue: Function[] = [];
46   -// private isEnd: boolean = false;
47   -
48   -// create(adUnitId: string, opts?: { type?: number; bannerWidth?: number, offsetY?: number; adIntervals?: number, isOff?: boolean }) {
49   -// // console.log('wxbanner can not')
50   -// if (SDKUtils.compareVersion(my.env.clientVersion, '10.3.66') < 0) return null;
51   -// // if (!WxApi.I.canIUse(Version.I.getVBannerAd()))
52   -// // console.log('wxbanner can', adUnitId)
53   -
54   -// this.bannerParams = opts || {};
55   -// if (opts && opts.bannerWidth) {
56   -// this.bannerWidth = opts.bannerWidth;
57   -// }
58   -// this.isEnd = true;
59   -// this.bannerParams.type = this.bannerParams.type || 1;
60   -// this.bannerParams.offsetY = -this.bannerParams.offsetY || 0;
61   -// this.bannerParams.adIntervals = this.bannerParams.adIntervals || 120;
62   -// return new Promise((resolve, reject) => {
63   -// this.resolve = resolve;
64   -// this.reject = reject;
65   -// this._isErrored = false;
66   -// this.adUnitId = adUnitId;
67   -
68   -// if (SDKUtils.isEmpty(adUnitId)) {
69   -// AlipayBanner.I.handleQueue();
70   -// return this.reject({ ...BannerError.BannerInvalid, adUnitId: this.adUnitId });
71   -// }
72   -
73   -// // 设置样式(hack:修复qq版本)
74   -// this.bannerParams.type === 2 && (this.bannerWidth = WxSystem.I.winWidth);
75   -// let style = { top: 0, left: (WxSystem.I.winWidth - this.bannerWidth) / 2, width: this.bannerWidth };
76   -// style = {
77   -// ...style,
78   -// top: WxSystem.I.winHeight - 100,
79   -// };
80   -// // 创建并判断是否存在
81   -// // if (this.bannerParams.type === 2)
82   -// // this.bannerAd = wx.createGameBanner({ adUnitId, style: { left: style.left, top: this.bannerHeight } });
83   -// // else
84   -// if (this.bannerAd) {
85   -// if (!opts || (opts && !opts.isOff)) {
86   -// this.show(false);
87   -// }
88   -// return
89   -// }
90   -// this.bannerAd = AlipayApi.I.createBannerAd(adUnitId, style);
91   -// LogService.I.adStat('banner', this.adUnitId, DOT_AD_TYPE.banner, DOT_AD_STATUS.request)
92   -// if (!this.bannerAd) {
93   -// AlipayBanner.I.handleQueue();
94   -// return this.reject({ ...BannerError.BannerNotOpen, adUnitId: this.adUnitId });
95   -// }
96   -// this.bannerAd.onLoad(this.onLoad);
97   -// this.bannerAd.onError(this.onError);
98   -// //支付宝无这个方法!!!
99   -// // this.bannerAd.onResize(this.onResize);
100   -// if (!opts || (opts && !opts.isOff)) {
101   -// this.show(false);
102   -// }
103   -// });
104   -// }
105   -
106   -// /**
107   -// *
108   -// * @param bol
109   -// */
110   -// show(bol: boolean = true): boolean {
111   -// if (AlipayBanner.I.isEnd && bol) {
112   -// AlipayBanner.I.queue.push(AlipayBanner.I.show.bind(AlipayBanner.I))
113   -// return
114   -// }
115   -// AlipayBanner.I.isEnd = true
116   -// if (this.bannerAd) {
117   -// if (this.bannerAd.style.realHeight)
118   -// this.bannerAd.style.top = WxSystem.I.winHeight - this.bannerAd.style.realHeight + this.bannerParams.offsetY;
119   -// if (this.bannerParams.type === 2) {
120   -// if (this.bannerAd.style.width)
121   -// this.bannerAd.style.left = (WxSystem.I.winWidth - this.bannerAd.style.width) / 2;
122   -// else
123   -// this.bannerAd.style.left = (WxSystem.I.winWidth - this.bannerWidth) / 2;
124   -// } else
125   -// this.bannerAd.style.left = (WxSystem.I.winWidth - this.bannerWidth) / 2;
126   -
127   -// LogService.I.adStat('banner', this.adUnitId, DOT_AD_TYPE.banner, DOT_AD_STATUS.show)
128   -// this.bannerAd.show().catch((err: any) => this.handleShowError(err));
129   -// __LOG__ && console.error('wxBanner - show: ' + this.adUnitId, this.bannerAd.style);
130   -// AlipayBanner.I.handleQueue()
131   -// return true;
132   -// }
133   -// AlipayBanner.I.handleQueue()
134   -// return false;
135   -// }
136   -
137   -// hide() {
138   -// let that = AlipayBanner.I;
139   -// if (that.isEnd) {
140   -// that.queue.push(that.hide.bind(that))
141   -// return
142   -// }
143   -// that.isEnd = true
144   -// if (this.bannerAd) {
145   -// this.bannerAd.style.left = -9999;
146   -// this.bannerAd.hide();
147   -// LogService.I.adStat('banner', that.adUnitId, DOT_AD_TYPE.banner, DOT_AD_STATUS.interrupt)
148   -// __LOG__ && console.error('wxBanner - hide: ' + this.adUnitId);
149   -// }
150   -// that.handleQueue()
151   -// }
152   -
153   -// toggle(isshow: boolean) {
154   -// isshow ? this.show() : this.hide();
155   -// }
156   -
157   -// destory() {
158   -// if (this.bannerAd) {
159   -// this.bannerAd.style.left = -9999;
160   -// this.bannerAd.destroy();
161   -// this.bannerAd = null;
162   -// LogService.I.adStat('banner', this.adUnitId, DOT_AD_TYPE.banner, DOT_AD_STATUS.interrupt)
163   -// __LOG__ && console.error('wxBanner - destory: ' + this.adUnitId);
164   -// }
165   -// }
166   -
167   -// private onLoad() {
168   -// let that = AlipayBanner.I;
169   -// let bannerAd = that.bannerAd;
170   -// if (!bannerAd) return;
171   -// // Platform.IsQQ && that.show();
172   -// __LOG__ && console.error('wxBanner - onLoad: ' + that.adUnitId);
173   -// if (bannerAd.style.realHeight)
174   -// bannerAd.style.top = WxSystem.I.winHeight - bannerAd.style.realHeight + that.bannerParams.offsetY;
175   -// that.unbind();
176   -// that.handleQueue();
177   -// that.resolve && that.resolve({
178   -// adUnitId: that.adUnitId,
179   -// scale: that.bannerScale,
180   -// width: bannerAd.style.realWidth / that.bannerScale,
181   -// height: bannerAd.style.realHeight / that.bannerScale
182   -// });
183   -// }
184   -
185   -// private onError(err: any, ...params) {
186   -// __LOG__ && console.error('wxBanner - onError', err, JSON.stringify(err), params);
187   -// let that = AlipayBanner.I;
188   -// !that._isErrored && that.handleError(err, { ...BannerError.BannerFail, adUnitId: that.adUnitId });
189   -// }
190   -
191   -// private onResize() {
192   -// let that = AlipayBanner.I;
193   -// let bannerAd = that.bannerAd;
194   -// if (!bannerAd) return;
195   -// bannerAd.style.top = WxSystem.I.winHeight - bannerAd.style.realHeight + that.bannerParams.offsetY;
196   -// bannerAd.style.left = (WxSystem.I.winWidth - bannerAd.style.realWidth) / 2;
197   -// }
198   -
199   -// private handleShowError(ret: { errCode: number; errMsg: string }) {
200   -// __LOG__ && console.error('wxBanner - handleShowError', ret);
201   -// let that = AlipayBanner.I;
202   -// let { errCode, errMsg } = ret;
203   -// !that.isErrored && that.handleError(ret, { code: errCode, msg: errMsg });
204   -// }
205   -
206   -// private handleError(ret: any, err: any) {
207   -// let that = AlipayBanner.I;
208   -// that.unbind();
209   -// that._isErrored = true;
210   -// that.bannerAd = null;
211   -// that.handleQueue()
212   -// LogService.I.adStat('banner', that.adUnitId, DOT_AD_TYPE.banner, DOT_AD_STATUS.fail)
213   -// that.reject && that.reject({ ...err, adUnitId: that.adUnitId });
214   -// __LOG__ && console.error('wxBanner - onError: ' + that.adUnitId, ret, err);
215   -// }
216   -
217   -// private unbind() {
218   -// if (this.bannerAd) {
219   -// // this.bannerAd.offLoad(this.onLoad);
220   -// // this.bannerAd.offError(this.onError);
221   -// // this.bannerAd.offResize(this.onResize);
222   -// }
223   -// }
224   -
225   -// /**
226   -// * 处队列
227   -// */
228   -// handleQueue() {
229   -// let that = AlipayBanner.I;
230   -// if (that.queue.length > 0) {
231   -// that.isEnd = false;
232   -// let fn = that.queue.shift();
233   -// fn();
234   -// } else {
235   -// that.isEnd = false;
236   -// }
237   -// }
238   -// }
239 2 \ No newline at end of file
  3 +import SDKUtils from "../utils/SDKUtils";
  4 +import { BannerError, __LOG__ } from "../base/SDKConst";
  5 +import LogService from "../service/LogService";
  6 +import { DOT_AD_STATUS, DOT_AD_TYPE } from "../base/SDKEnum";
  7 +import WxSystem from "../wx/WxSystem";
  8 +import AlipayApi from "./AlipayApi";
  9 +
  10 +
  11 +/*
  12 +* banner
  13 +*/
  14 +export default class AlipayBanner {
  15 + private static instance: AlipayBanner;
  16 + static get I(): AlipayBanner {
  17 + return this.instance || (this.instance = new AlipayBanner(750, 750));
  18 + }
  19 + private designWidth: number;
  20 + private bannerWidth: number;
  21 + private bannerHeight: number;
  22 + private bannerScale: number;
  23 + private bannerParams: any;
  24 + private _isErrored: boolean;
  25 + private adUnitId: string;
  26 + private bannerAd: any;
  27 + private resolve: any;
  28 + private reject: any;
  29 + private _currentVisible: boolean = false;
  30 + constructor(designWidth: number, bannerWidth: number) {
  31 + designWidth = designWidth || 750;
  32 + bannerWidth = bannerWidth || 750;
  33 +
  34 + this.adUnitId = '';
  35 + this._isErrored = false;
  36 + this.designWidth = designWidth;
  37 + this.bannerScale = WxSystem.I.winWidth / this.designWidth;
  38 + this.bannerWidth = Math.max(this.bannerScale * bannerWidth, 300);
  39 + this.bannerHeight = WxSystem.I.winHeight / this.bannerScale;
  40 + }
  41 +
  42 + get isErrored() {
  43 + return this._isErrored;
  44 + }
  45 +
  46 + private queue: Function[] = [];
  47 + private isEnd: boolean = false;
  48 +
  49 + create(adUnitId: string, opts?: { type?: number; bannerWidth?: number, offsetY?: number; adIntervals?: number, isOff?: boolean }) {
  50 + // console.log('wxbanner can not')
  51 + if (SDKUtils.compareVersion(my.env.clientVersion, '10.3.66') < 0) return null;
  52 + // if (!WxApi.I.canIUse(Version.I.getVBannerAd()))
  53 + // console.log('wxbanner can', adUnitId)
  54 +
  55 + this.bannerParams = opts || {};
  56 + if (opts && opts.bannerWidth) {
  57 + this.bannerWidth = opts.bannerWidth;
  58 + }
  59 + this.isEnd = true;
  60 + this.bannerParams.type = this.bannerParams.type || 1;
  61 + this.bannerParams.offsetY = -this.bannerParams.offsetY || 0;
  62 + this.bannerParams.adIntervals = this.bannerParams.adIntervals || 120;
  63 + return new Promise((resolve, reject) => {
  64 + this.resolve = resolve;
  65 + this.reject = reject;
  66 + this._isErrored = false;
  67 + this.adUnitId = adUnitId;
  68 +
  69 + if (SDKUtils.isEmpty(adUnitId)) {
  70 + AlipayBanner.I.handleQueue();
  71 + return this.reject({ ...BannerError.BannerInvalid, adUnitId: this.adUnitId });
  72 + }
  73 +
  74 + // 设置样式(hack:修复qq版本)
  75 + this.bannerParams.type === 2 && (this.bannerWidth = WxSystem.I.winWidth);
  76 + let style = { top: 0, left: (WxSystem.I.winWidth - this.bannerWidth) / 2, width: this.bannerWidth };
  77 + style = {
  78 + ...style,
  79 + top: WxSystem.I.winHeight - 100,
  80 + };
  81 + // 创建并判断是否存在
  82 + // if (this.bannerParams.type === 2)
  83 + // this.bannerAd = wx.createGameBanner({ adUnitId, style: { left: style.left, top: this.bannerHeight } });
  84 + // else
  85 + if (this.bannerAd) {
  86 + if (!opts || (opts && !opts.isOff)) {
  87 + this.show(false);
  88 + }
  89 + return
  90 + }
  91 + this.bannerAd = AlipayApi.I.createBannerAd(adUnitId, style);
  92 + console.log('create new BannerAd')
  93 + LogService.I.adStat('banner', this.adUnitId, DOT_AD_TYPE.banner, DOT_AD_STATUS.request)
  94 + if (!this.bannerAd) {
  95 + AlipayBanner.I.handleQueue();
  96 + return this.reject({ ...BannerError.BannerNotOpen, adUnitId: this.adUnitId });
  97 + }
  98 + this.bannerAd.onLoad(this.onLoad);
  99 + this.bannerAd.onError(this.onError);
  100 + //支付宝无这个方法!!!
  101 + // this.bannerAd.onResize(this.onResize);
  102 + if (!opts || (opts && !opts.isOff)) {
  103 + this.show(false);
  104 + }
  105 + });
  106 + }
  107 +
  108 + /**
  109 + *
  110 + * @param bol
  111 + */
  112 + show(bol: boolean = true): boolean {
  113 + if (AlipayBanner.I.isEnd && bol) {
  114 + AlipayBanner.I.queue.push(AlipayBanner.I.show.bind(AlipayBanner.I))
  115 + return
  116 + }
  117 + AlipayBanner.I.isEnd = true
  118 + if (this.bannerAd && !this._currentVisible) {
  119 + if (this.bannerAd.style.realHeight)
  120 + this.bannerAd.style.top = WxSystem.I.winHeight - this.bannerAd.style.realHeight + this.bannerParams.offsetY;
  121 + if (this.bannerParams.type === 2) {
  122 + if (this.bannerAd.style.width)
  123 + this.bannerAd.style.left = (WxSystem.I.winWidth - this.bannerAd.style.width) / 2;
  124 + else
  125 + this.bannerAd.style.left = (WxSystem.I.winWidth - this.bannerWidth) / 2;
  126 + } else
  127 + this.bannerAd.style.left = (WxSystem.I.winWidth - this.bannerWidth) / 2;
  128 +
  129 + LogService.I.adStat('banner', this.adUnitId, DOT_AD_TYPE.banner, DOT_AD_STATUS.show)
  130 + this._currentVisible = true;
  131 + this.bannerAd.show().catch((err: any) => this.handleShowError(err));
  132 + __LOG__ && console.error('wxBanner - show: ' + this.adUnitId, this.bannerAd.style);
  133 + AlipayBanner.I.handleQueue()
  134 + return true;
  135 + }
  136 + AlipayBanner.I.handleQueue()
  137 + return false;
  138 + }
  139 +
  140 + hide() {
  141 +
  142 + let that = AlipayBanner.I;
  143 + if (that.isEnd) {
  144 + that.queue.push(that.hide.bind(that))
  145 + return
  146 + }
  147 + that.isEnd = true
  148 + if (this.bannerAd) {
  149 + this.bannerAd.style.left = -9999;
  150 + this.bannerAd.hide();
  151 + this._currentVisible = false;
  152 + LogService.I.adStat('banner', that.adUnitId, DOT_AD_TYPE.banner, DOT_AD_STATUS.interrupt)
  153 + __LOG__ && console.error('wxBanner - hide: ' + this.adUnitId);
  154 + }
  155 + that.handleQueue()
  156 + }
  157 +
  158 + toggle(isshow: boolean) {
  159 + isshow ? this.show() : this.hide();
  160 + }
  161 +
  162 + destory() {
  163 + if (this.bannerAd) {
  164 + this.bannerAd.style.left = -9999;
  165 + this.bannerAd?.destroy();
  166 + this.bannerAd = null;
  167 + LogService.I.adStat('banner', this.adUnitId, DOT_AD_TYPE.banner, DOT_AD_STATUS.interrupt)
  168 + __LOG__ && console.error('wxBanner - destory: ' + this.adUnitId);
  169 + }
  170 + }
  171 +
  172 + private onLoad() {
  173 + let that = AlipayBanner.I;
  174 + let bannerAd = that.bannerAd;
  175 + if (!bannerAd) return;
  176 + // Platform.IsQQ && that.show();
  177 + __LOG__ && console.error('wxBanner - onLoad: ' + that.adUnitId);
  178 + if (bannerAd.style.realHeight)
  179 + bannerAd.style.top = WxSystem.I.winHeight - bannerAd.style.realHeight + that.bannerParams.offsetY;
  180 + that.unbind();
  181 + that.handleQueue();
  182 + that.resolve && that.resolve({
  183 + adUnitId: that.adUnitId,
  184 + scale: that.bannerScale,
  185 + width: bannerAd.style.realWidth / that.bannerScale,
  186 + height: bannerAd.style.realHeight / that.bannerScale
  187 + });
  188 + }
  189 +
  190 + private onError(err: any, ...params) {
  191 + __LOG__ && console.error('wxBanner - onError', err, JSON.stringify(err), params);
  192 + let that = AlipayBanner.I;
  193 + !that._isErrored && that.handleError(err, { ...BannerError.BannerFail, adUnitId: that.adUnitId });
  194 + }
  195 +
  196 + private onResize() {
  197 + let that = AlipayBanner.I;
  198 + let bannerAd = that.bannerAd;
  199 + if (!bannerAd) return;
  200 + bannerAd.style.top = WxSystem.I.winHeight - bannerAd.style.realHeight + that.bannerParams.offsetY;
  201 + bannerAd.style.left = (WxSystem.I.winWidth - bannerAd.style.realWidth) / 2;
  202 + }
  203 +
  204 + private handleShowError(ret: { errCode: number; errMsg: string }) {
  205 + this._currentVisible = false;
  206 + __LOG__ && console.error('wxBanner - handleShowError', ret);
  207 + let that = AlipayBanner.I;
  208 + let { errCode, errMsg } = ret;
  209 + !that.isErrored && that.handleError(ret, { code: errCode, msg: errMsg });
  210 + }
  211 +
  212 + private handleError(ret: any, err: any) {
  213 + let that = AlipayBanner.I;
  214 + that.unbind();
  215 + that._isErrored = true;
  216 + that.bannerAd?.destroy();
  217 + that.bannerAd = null;
  218 + that.handleQueue()
  219 + LogService.I.adStat('banner', that.adUnitId, DOT_AD_TYPE.banner, DOT_AD_STATUS.fail)
  220 + that.reject && that.reject({ ...err, adUnitId: that.adUnitId });
  221 + __LOG__ && console.error('wxBanner - onError: ' + that.adUnitId, ret, err);
  222 + }
  223 +
  224 + private unbind() {
  225 + if (this.bannerAd) {
  226 + // this.bannerAd.offLoad(this.onLoad);
  227 + // this.bannerAd.offError(this.onError);
  228 + // this.bannerAd.offResize(this.onResize);
  229 + }
  230 + }
  231 +
  232 + /**
  233 + * 处队列
  234 + */
  235 + handleQueue() {
  236 + let that = AlipayBanner.I;
  237 + if (that.queue.length > 0) {
  238 + that.isEnd = false;
  239 + let fn = that.queue.shift();
  240 + fn();
  241 + } else {
  242 + that.isEnd = false;
  243 + }
  244 + }
  245 +}
240 246 \ No newline at end of file
... ...
wxsdk/alipay/AlipayInterstitial.ts
1   -// import { GAMEDATA } from "../base/SDKConst";
2   -// import { DOT_AD_STATUS, DOT_AD_TYPE } from "../base/SDKEnum";
3   -// import LogService from "../service/LogService";
4   -// import AlipayApi from "./AlipayApi";
  1 +import { GAMEDATA } from "../base/SDKConst";
  2 +import { DOT_AD_STATUS, DOT_AD_TYPE } from "../base/SDKEnum";
  3 +import LogService from "../service/LogService";
  4 +import AlipayApi from "./AlipayApi";
5 5  
6   -// export default class AlipayInterstitial {
7   -// /** 插屏广告ID */
8   -// private static interstitialAdId: string = GAMEDATA.interstitialAdId;
9   -// /** 插屏广告实例 */
10   -// public static interstitialAd: any;
11   -// /** 插屏广告是否加载完成 */
12   -// private static interstitialSuccell: boolean = false;
13   -// /** 初始化插屏广告 */
14   -// public static initInterstitialAd(adUnitId: string = GAMEDATA.interstitialAdId) {
15   -// this.interstitialAdId = adUnitId;
16   -// this.createInterstitial();
17   -// }
  6 +export default class AlipayInterstitial {
  7 + /** 插屏广告ID */
  8 + private static interstitialAdId: string = GAMEDATA.interstitialAdId;
  9 + /** 插屏广告实例 */
  10 + public static interstitialAd: any;
  11 + /** 插屏广告是否加载完成 */
  12 + private static interstitialSuccell: boolean = false;
  13 + /** 初始化插屏广告 */
  14 + public static initInterstitialAd(adUnitId: string = GAMEDATA.interstitialAdId) {
  15 + this.interstitialAdId = adUnitId;
  16 + this.createInterstitial();
  17 + }
18 18  
19   -// /** 显示插屏广告 */
20   -// public static showInterstitialAd(adUnitId: string = GAMEDATA.interstitialAdId) {
21   -// return new Promise(async (resolve, reject) => {
22   -// this.interstitialAdId = adUnitId;
23   -// if (!this.interstitialSuccell) {
24   -// this.createInterstitial(true, resolve);
25   -// return;
26   -// }
27   -// this.interstitialAd.show().then(suc => {
28   -// resolve && resolve({ code: 0, msg: "展示成功!" });
29   -// LogService.I.adStat('InterstitialAd', this.interstitialAdId, DOT_AD_TYPE.interstitial, DOT_AD_STATUS.show)
30   -// }).catch((err) => {
31   -// LogService.I.adStat('InterstitialAd', this.interstitialAdId, DOT_AD_TYPE.interstitial, DOT_AD_STATUS.fail)
32   -// resolve && resolve({ code: err.errCode, msg: err.errMsg });
33   -// })
34   -// })
35   -// }
  19 + /** 显示插屏广告 */
  20 + public static showInterstitialAd(adUnitId: string = GAMEDATA.interstitialAdId) {
  21 + return new Promise(async (resolve, reject) => {
  22 + this.interstitialAdId = adUnitId;
  23 + if (!this.interstitialSuccell) {
  24 + this.createInterstitial(true, resolve);
  25 + return;
  26 + }
  27 + this.interstitialAd.show().then(suc => {
  28 + resolve && resolve({ code: 0, msg: "展示成功!" });
  29 + LogService.I.adStat('InterstitialAd', this.interstitialAdId, DOT_AD_TYPE.interstitial, DOT_AD_STATUS.show)
  30 + }).catch((err) => {
  31 + LogService.I.adStat('InterstitialAd', this.interstitialAdId, DOT_AD_TYPE.interstitial, DOT_AD_STATUS.fail)
  32 + resolve && resolve({ code: err.errCode, msg: err.errMsg });
  33 + })
  34 + })
  35 + }
36 36  
37   -// /** 创建插屏广告 */
38   -// private static createInterstitial(isShow: boolean = false, resolve?) {
39   -// LogService.I.adStat('InterstitialAd', this.interstitialAdId, DOT_AD_TYPE.interstitial, DOT_AD_STATUS.request)
40   -// this.interstitialAd = AlipayApi.I.createInterstitialAd(this.interstitialAdId);
41   -// this.interstitialAd.onLoad(async () => {
42   -// AlipayInterstitial.interstitialSuccell = true;
43   -// LogService.I.adStat('InterstitialAd', this.interstitialAdId, DOT_AD_TYPE.interstitial, DOT_AD_STATUS.rt)
44   -// if (isShow) {
45   -// this.interstitialAd.show().then(suc => {
46   -// resolve && resolve({ code: 0, msg: "展示成功!" });
47   -// LogService.I.adStat('InterstitialAd', this.interstitialAdId, DOT_AD_TYPE.interstitial, DOT_AD_STATUS.show)
48   -// }).catch((err) => {
49   -// AlipayInterstitial.interstitialSuccell = false;
50   -// LogService.I.adStat('InterstitialAd', this.interstitialAdId, DOT_AD_TYPE.interstitial, DOT_AD_STATUS.fail)
51   -// resolve && resolve({ code: err.errCode, msg: err.errMsg });
52   -// })
53   -// }
54   -// })
55   -// this.interstitialAd.onError(err => {
56   -// LogService.I.adStat('InterstitialAd', this.interstitialAdId, DOT_AD_TYPE.interstitial, DOT_AD_STATUS.fail)
57   -// AlipayInterstitial.interstitialSuccell = false;
58   -// resolve && resolve({ code: err.errCode, msg: err.errMsg });
59   -// })
  37 + /** 创建插屏广告 */
  38 + private static createInterstitial(isShow: boolean = false, resolve?) {
  39 + LogService.I.adStat('InterstitialAd', this.interstitialAdId, DOT_AD_TYPE.interstitial, DOT_AD_STATUS.request)
  40 + this.interstitialAd = AlipayApi.I.createInterstitialAd(this.interstitialAdId);
  41 + this.interstitialAd.onLoad(async () => {
  42 + AlipayInterstitial.interstitialSuccell = true;
  43 + LogService.I.adStat('InterstitialAd', this.interstitialAdId, DOT_AD_TYPE.interstitial, DOT_AD_STATUS.rt)
  44 + if (isShow) {
  45 + this.interstitialAd.show().then(suc => {
  46 + resolve && resolve({ code: 0, msg: "展示成功!" });
  47 + LogService.I.adStat('InterstitialAd', this.interstitialAdId, DOT_AD_TYPE.interstitial, DOT_AD_STATUS.show)
  48 + }).catch((err) => {
  49 + AlipayInterstitial.interstitialSuccell = false;
  50 + LogService.I.adStat('InterstitialAd', this.interstitialAdId, DOT_AD_TYPE.interstitial, DOT_AD_STATUS.fail)
  51 + resolve && resolve({ code: err.errCode, msg: err.errMsg });
  52 + })
  53 + }
  54 + })
  55 + this.interstitialAd.onError(err => {
  56 + LogService.I.adStat('InterstitialAd', this.interstitialAdId, DOT_AD_TYPE.interstitial, DOT_AD_STATUS.fail)
  57 + AlipayInterstitial.interstitialSuccell = false;
  58 + resolve && resolve({ code: err.errCode, msg: err.errMsg });
  59 + })
60 60  
61   -// this.interstitialAd.onClose(call => {
62   -// this.createInterstitial(false);
63   -// })
64   -// // }).bind(this), 200);
  61 + this.interstitialAd.onClose(call => {
  62 + this.createInterstitial(false);
  63 + })
  64 + // }).bind(this), 200);
65 65  
66 66  
67   -// }
68   -// }
69 67 \ No newline at end of file
  68 + }
  69 +}
70 70 \ No newline at end of file
... ...
wxsdk/alipay/zfbPay.ts
... ... @@ -1,183 +0,0 @@
1   -import { WxHelper } from '../../../game/sdk/WxHelper';
2   -import { GAMEDATA } from '../base/SDKConst';
3   -import { EnvCode } from '../base/SDKEnum';
4   -import { SDKApi } from '../http/SDKApi';
5   -import DataService from '../service/DataService';
6   -import WxSystem from '../wx/WxSystem';
7   -
8   -export default class ZfbPay {
9   - /**
10   - * 发起支付
11   - */
12   - pay(params: { payid: string, goodid: string, money: number; orderid: string }, opts: any = {}): Promise<any> {
13   - return new Promise((resolve, reject) => {
14   - let { Mode, OfferId, ZoneId, CurrencyType, Platform } = GAMEDATA.MidasPay;
15   - // 环境配置,0:米大师正式环境 1:米大师沙箱环境
16   - let env = DataService.I.EnvEnum === EnvCode.Prod ? 0 : 1;
17   - // 平台类型,android or ios,config.js有配置走配置,否则判断系统id
18   - let platform = DataService.I.Platform;
19   - let pms = {
20   - mode: Mode,
21   - env,
22   - platform,
23   - offerId: OfferId,
24   - currencyType: CurrencyType,
25   - buyQuantity: params.money / 10,
26   - zoneId: ZoneId
27   - };
28   - let extend = "";
29   - for (let key in opts) {
30   - extend += (`${key}=${opts[key]}&`)
31   - }
32   - extend = extend.substring(0, extend.length - 1);
33   - extend = encodeURIComponent(extend);
34   -
35   - let payParams = {
36   - ...this.buildParams(),
37   - extend,
38   - orderid: params.orderid,
39   - // payid: params.payid,
40   - goodid: params.goodid,
41   - money: params.money,
42   - platform
43   - };
44   - SDKApi.zfbOrderReport(payParams).then(res => {
45   - console.log("res:" + JSON.stringify(res));
46   - console.log("调用函数成功00");
47   - if (!res.code) {
48   - let { customId, buyQuantity, extraInfo } = res.data;
49   - my.requestGamePayment({
50   - customId,
51   - buyQuantity,
52   - extraInfo,
53   - success(res) {
54   - console.log("调用函数成功");
55   - resolve({ code: 0, msg: '支付成功!' })
56   - },
57   - fail(err) {
58   - console.log("调用函数失败");
59   - if (err && err.error) {
60   - if ("" + err.error == '15215') {
61   - my.alert({
62   - title: '您好,基于国家新闻出版署《关于防止未成年人沉迷网络游戏的通知》的规定,支付宝限制未成年人游戏充值哦',
63   - });
64   - } else if ("" + err.error == '15204') {
65   - my.alert({
66   - title: '非常抱歉,充值功能暂不可用,请稍后再试',
67   - });
68   - }
69   - }
70   - resolve({ code: err.errCode, msg: '支付失败' });
71   - },
72   - complete(res) {
73   - try {
74   - console.log(JSON.stringify(res));
75   - } catch (error) {
76   -
77   - }
78   - console.log(res)
79   - console.log("调用完成");
80   - },
81   - })
82   - } else {
83   - console.log("调用函数成功222");
84   - reject(res);
85   - }
86   - })
87   - });
88   - }
89   -
90   - private async handlePaySuccess(data: { payid: string, goodid: string, money: number; orderid: string, platform: string }, opts: any, resolve: any, reject: any, t = 1000) {
91   - let extend = "";
92   - for (let key in opts) {
93   - extend += (`${key}=${opts[key]}&`)
94   - }
95   - extend = extend.substring(0, extend.length - 1);
96   - extend = encodeURIComponent(extend);
97   - let params = {
98   - ...this.buildParams(),
99   - extend,
100   - midasenv: DataService.I.EnvEnum === EnvCode.Prod ? 0 : 1,
101   - orderid: data.orderid,
102   - payid: data.payid, goodid: data.goodid,
103   - type: 1,
104   - money: data.money,
105   - platform: data.platform
106   - };
107   - var that = this;
108   - SDKApi.zfbOrderReport(params)
109   - .then(res => {
110   - if (!res.code) {
111   - resolve(res);
112   - } else {
113   - t = Math.min(t * 2, 60000)
114   - setTimeout(() => {
115   - that.handlePaySuccess(data, opts, resolve, reject, t)
116   - }, t);
117   - }
118   - })
119   - }
120   -
121   - private handlePayError(data: { payid: string, goodid: string, money: number; orderid: string, platform: string }, opts, err: any, reject: any) {
122   - console.log("支付失败", JSON.stringify(err));
123   - let type = 2;
124   - if (err.errCode + '' == '1') {
125   - type = 3;
126   - }
127   - let extend = "";
128   - for (let key in opts) {
129   - extend += (`${key}=${opts[key]}&`)
130   - }
131   - extend = extend.substring(0, extend.length - 1);
132   - extend = encodeURIComponent(extend);
133   - let params = {
134   - ...this.buildParams(),
135   - extend,
136   - midasenv: DataService.I.EnvEnum === EnvCode.Prod ? 0 : 1,
137   - orderid: data.orderid,
138   - payid: data.payid, goodid: data.goodid,
139   - type,
140   - money: data.money,
141   - platform: data.platform
142   - };
143   - SDKApi.zfbOrderReport(params)
144   - reject(err);
145   - }
146   -
147   - /**
148   - * 构建支付公用参数
149   - */
150   - private buildParams() {
151   - let gameid = GAMEDATA.game_id;
152   - let channel = DataService.I.ChannelId;
153   - let openid = DataService.I.OpenId;
154   - let brand = WxSystem.I.brand;
155   - let model = WxSystem.I.model;
156   - let version = WxSystem.I.version;
157   - let system = WxSystem.I.system;
158   - let sdkversion = WxSystem.I.SDKVersion;
159   - let scene = DataService.I.Scene + '';
160   - let uid = DataService.I.UserId;
161   - let token = DataService.I.Token;
162   - let env = DataService.I.EnvEnum === 1 ? 'pre' : 'prod';
163   - return {
164   - gameid,
165   - openid,
166   - channel,
167   - brand,
168   - model,
169   - version,
170   - system,
171   - sdkversion,
172   - scene,
173   - uid,
174   - token,
175   - env
176   - };
177   - }
178   -
179   - private static _instance: ZfbPay;
180   - static get I(): ZfbPay {
181   - return this._instance || (this._instance = new ZfbPay);
182   - }
183   -}
184 0 \ No newline at end of file
wxsdk/base/SDKBaseData.ts
1 1 export default class SDKBaseData{
2   - public static SimulateShareTime:number = 1000;
  2 + public static SimulateShareTime:number = 3000;
3 3 }
4 4 \ No newline at end of file
... ...
wxsdk/base/SDKConst.ts
1 1 // 游戏配置数据 只需要改动这里的配置信息
  2 +// 2021003184609526
2 3 export const GAMEDATA = {
3   - game_id: '10110',//游戏id
  4 + game_id: '10150',//游戏id
4 5 isDebug: false,
5   - channel_id: '10110',//渠道id 暂时和游戏id一致
  6 + channel_id: '10150',//渠道id 暂时和游戏id一致
6 7 version: '1.0.0', //版本号 中台控制正式还是测试服,尽量保持和小游戏版本一致
7   - appkey: '48ef655c48f53f1e75f2108cf65d394e',//中台appkey
8   - interstitialAdId: 'adunit-4bd19de3c351233e',//插屏ID
9   - bannerId: 'adunit-6145b17777e308a8',//banner
10   - customId: 'adunit-193590de82ede6a4',//原生模板单个
11   - videoAd: 'adunit-59404ef14e6c32ed',//初始化视频广告id
  8 + appkey: '761bdbb773c59e545ac729adec818ddc',//中台appkey
  9 + interstitialAdId: 'ad_tiny_2021004125691158_202311162200070802',//插屏ID
  10 + bannerId: 'ad_tiny_2021004125691158_202311162200070801',//banner
  11 + customId: '',//原生模板单个
  12 + videoAd: 'ad_tiny_2021004125691158_202311162200070775',//初始化视频广告id
12 13 shareMessageToFriend: { // 暂时只支持一个场景值
13 14 scene: 0, //定向分享场景值1-50 配>0的会初始化
14 15 sharekey: 'shareMessageToFriendScene',//定向分享对应后台的分享key
15 16 share_id: 26,//定向分享对应后台的分享key
16 17 },
17   - default_share: { //默认分享数据在拉取不到中台分享数据的时候用
18   - content: '惊喜世界合不停',//分享标题 *找运营提供
19   - icon: 'https://cdn-wxsdk.miso-lab.com/7d/da1ed3fb6073ddd43f156f98c625e3.jpg',//分享图链接 *找运营提供
20   - id: '9999',//默认id 写死9999
21   - key: 'default',//默认分享key 写死default
22   - title: '默认',//无需修改
23   - typ: 1,//分享类型 写死1
24   - videoid: '',//默认的视频广告id 填空就行
  18 + default_share: {
  19 + content: '还记得童年的泡泡龙吗?一起来怀旧吧~ 这个可以不?',
  20 + icon: 'https://cdn-wxsdk.miso-lab.com/f0/5653094b6b7826c8afd813d12735e3.jpg',
  21 + id: '9999',
  22 + key: 'default',
  23 + title: '默认',
  24 + typ: 1,
  25 + videoid: ''
25 26 },
26   - MidasPay: { // 米大师虚拟支付配置 *找运营提供
27   - OfferId: "1450051274", // 在米大师申请的应用id *找运营提供
28   - ZoneId: "1", // 分区ID,默认:1
29   - Mode: "game", // 默认:game
30   - CurrencyType: "CNY", // 默认:CNY
31   - Platform: '' // 申请接入时的平台
32   - }
  27 + subscribeIds: ['yB-vq0DvOhazzDbvS1UzttLMIQ50Z_i0n8st6yEZYkw', '4al8p3UBb3xqn7TYN1J5wYtKrCbFc2MYESAv1vWi-C0'], //, 'cMo71MjAFzGM2MEpRw2p8T5jJaEhXJUfiIjoOB5oO70'],
  28 + versionContent: '1、开启每日幸运转盘活动\r\n2、针对部分玩家出现的卡顿问题进行修复'
33 29 }
34 30  
35 31 // sdk版本
36   -export const SDKVersion = 'v1.0.15';
  32 +export const SDKVersion = 'v1.0.8';
37 33 // 是否打印
38 34 export const __LOG__ = false;
39 35 // 是否mock
... ... @@ -41,6 +37,8 @@ export var sdkEnv = {
41 37 isDebug: false
42 38 };
43 39  
  40 +
  41 +
44 42 //游戏基础信息
45 43 export const VersionHost = 'https://wxsdk-ver.d3games.com/version';
46 44  
... ... @@ -86,7 +84,6 @@ export const HostKeys = {
86 84 client_log: 'logstores/client_log/track', //客户端日志
87 85 consume: 'logstores/consume/track', //资源上报
88 86 daystay: 'logstores/daystay/track', //300s停留上报
89   - loading: 'logstores/loading/track', //loading上报
90 87  
91 88 //登录
92 89 Login: 'api/login', //登录
... ... @@ -102,27 +99,29 @@ export const HostKeys = {
102 99 rankAdd: 'api/rank/add', //排行榜添加分数 517废弃
103 100 rankList: 'api/rank/list', //世界排行榜 517废弃
104 101 totalrankAdd: 'game/totalrank/add', //排行榜添加分数
105   - totalrankList: 'game/totalrank/list', //世界排行榜
  102 + totalrankList: 'game/totalrank/list', //世界排行榜
  103 + sendsubscribe: 'api/subscribe/event', //订阅
106 104 adList: 'api/adplan/list', //广告计划列表
  105 + notice: 'game/notice/info', //公告
107 106 behavior: 'api/douyin/behavior', //抖音投放关键行为
108 107 attribute: 'api/member/attribute/set', //修改用户属性
109   - wxencrypted: 'api/wx/encrypted',
110 108 checkmsg: 'api/wx/checkmsg', //检测文本
111 109 updateNickname: 'api/member/update/nickname',//更改用户昵称头像
  110 + wxencrypted: 'api/wx/encrypted',
112 111  
113 112 //订单
114   - orderReport: 'api/order/v2/mimas/new', //wx订单信息上报
115   - orderQuery: 'api/order/query', //订单信息查询
116   - preorder: 'api/order/v2/preorder', //获取支付方式
117   - bytedanceOrderReport: 'api/order/v2/bytedance', //字节订单信息上报
118   - qqOrderReport: 'api/order/v2/qq', //qq订单信息上报
119   - zfbOrderReport:'api/order/v2/zfb/add', //支付宝小游戏订单上报
  113 + orderReport: 'api/order/v2/mimas/new', //订单信息上报
  114 + orderQuery: 'api/order/query', //订单信息查询
  115 + preorder: 'api/order/v2/preorder', //获取支付方式
120 116 //
121 117 goodslist: 'api/v2/goodslist', //商品列表
122 118  
123 119  
124   - //支付宝
125   - AlipayIncrementGameaction: 'api/ali/action/submit' ,//玩一玩:增量游戏行为完成上报
  120 + aliMission: 'api/ali/action/submit',//阿里玩一玩增量任务
  121 + alipayIntergralBuy: 'api/ali/point/pay',//支付宝会员积分购买
  122 + alipayIntergralAuth: 'api/ali/point/auth',//支付宝会员积分授权
  123 + alipayIntergralQuery: 'api/ali/point/query',//支付宝会员积分查询
  124 + isAddHomePage: 'api/ali/homepage/consult',//玩一玩小程序是否已加首咨询
126 125 };
127 126  
128 127 // 本地存储keys
... ...
wxsdk/base/SDKDefault.d.ts 0 → 100644
... ... @@ -0,0 +1,230 @@
  1 +
  2 +/** 返回参数类型 */
  3 +interface IResult<T> {
  4 + /** 错误码 */
  5 + code?: number;
  6 + /** 错误信息 */
  7 + msg?: string;
  8 + /** 返回数据 */
  9 + data?: T;
  10 + /** 服务器时间 */
  11 + servertime?: number;
  12 +}
  13 +
  14 +/** 微信api 返回用户信息 */
  15 +interface WxUserInfo {
  16 + /** 用户昵称 */
  17 + nickName: string;
  18 + /** 用户头像图片的 URL。URL 最后一个数值代表正方形头像大小
  19 + * (有 0、46、64、96、132 数值可选,0 代表 640x640 的正方形头像,46 表示 46x46 的正方形头像,
  20 + * 剩余数值以此类推。默认132),用户没有头像时该项为空。若用户更换头像,原有头像 URL 将失效。 */
  21 + avatarUrl: string;
  22 + /** 用户性别 gender的合法值(0未知,1男性,2女性) */
  23 + gender: number;
  24 + /** 用户所在国家 */
  25 + country: string;
  26 + /** 用户所在省份 */
  27 + province: string;
  28 + /** 用户所在城市 */
  29 + city: string;
  30 + /** 显示 country,province,city 所用的语言(en英文,zh_CN简体中文,zh_TW繁体中文) */
  31 + language: string;
  32 +}
  33 +
  34 +/** 显示模态对话框参数类型 */
  35 +interface ShowModalType {
  36 + /** 提示的标题 */
  37 + title: string;
  38 + /** 提示的内容 */
  39 + content: string;
  40 + /** 是否显示取消按钮 */
  41 + showCancel?: boolean;
  42 + /** 取消按钮的文字,最多 4 个字符 */
  43 + cancelText?: string;
  44 + /** 取消按钮的文字颜色,必须是 16 进制格式的颜色字符串 */
  45 + cancelColor?: string;
  46 + /** 确认按钮的文字,最多 4 个字符 */
  47 + confirmText?: string;
  48 + /** 确认按钮的文字颜色,必须是 16 进制格式的颜色字符串 */
  49 + confirmColor?: string;
  50 + /** 接口调用成功的回调函数 */
  51 + success?: (res: { confirm: boolean, cancel: boolean }) => void;
  52 + /** 接口调用失败的回调函数 */
  53 + fail?: () => void;
  54 + /** 接口调用结束的回调函数(调用成功、失败都会执行) */
  55 + complete?: () => void;
  56 +}
  57 +/**
  58 + * 排行榜数据
  59 + */
  60 +interface IRankData {
  61 + fraction: number, // 对应type传入的分数、数量或者其他
  62 + headurl: string, //头像
  63 + nickname: string,//昵称
  64 + uid: number//用户id
  65 + rankData: any //扩展参数
  66 +}
  67 +
  68 +interface _NetworkTypeSuccessObject {
  69 + networkType: string; // wifi/2g/3g/4g/unknown(Android 下不常见的网络类型)/none(无网络)
  70 +}
  71 +interface _StyleObject {
  72 + left?: number;
  73 +
  74 + top?: number;
  75 +
  76 + width?: number;
  77 +
  78 + height?: number;
  79 +}
  80 +interface _StyleGameObject {
  81 + left?: number;
  82 + top?: number;
  83 +}
  84 +
  85 +interface _BannerAdObject {
  86 + adUnitId: string;
  87 + adIntervals?: number;
  88 + style: _StyleObject;
  89 +}
  90 +interface _FeedbackButtonObject {
  91 + /**
  92 + * 按钮的类型
  93 + */
  94 + type: string;
  95 +
  96 + /**
  97 + * 按钮上的文本,仅当 type 为 text 时有效
  98 + */
  99 + text?: string;
  100 +
  101 + /**
  102 + * 按钮的背景图片,仅当 type 为 image 时有效
  103 + */
  104 + image?: string;
  105 +
  106 + /**
  107 + * 按钮的样式
  108 + */
  109 + style: _ButtonStyle;
  110 +}
  111 +
  112 +interface _UserInfoButton {
  113 + type: string;
  114 +
  115 + text: string;
  116 +
  117 + image: string;
  118 +
  119 + style: _ButtonStyle;
  120 +
  121 + show: Function;
  122 +
  123 + hide: Function;
  124 +
  125 + destroy: Function;
  126 +
  127 + onTap: (callback: Function) => void;
  128 +
  129 + offTap: (callback: Function) => void;
  130 +}
  131 +
  132 +interface _ShareAppMessageObject {
  133 + /**
  134 + * 是否使用带 shareTicket 的转发详情
  135 + */
  136 + withShareTicket?: boolean;
  137 + /**
  138 + * 发标题,不传则默认使用当前小游戏的昵称。
  139 + */
  140 + title?: string;
  141 +
  142 + /**
  143 + * 转发显示图片的链接,可以是网络图片路径或本地图片文件路径或相对代码包根目录的图片文件路径。显示图片长宽比是 5: 4
  144 + */
  145 + imageUrl?: string;
  146 +
  147 + /**
  148 + * 查询字符串,必须是 key1 = val1 & key2=val2 的格式。从这条转发消息进入后,可通过 wx.getLaunchOptionSync() 或 wx.onShow() 获取启动参数中的 query。
  149 + */
  150 + query?: string;
  151 +
  152 + /**
  153 + * 审核通过的图片 ID,详见 使用审核通过的转发图片
  154 + */
  155 + imageUrlId?: string;
  156 +
  157 + /**
  158 + * 10.10后废弃
  159 + */
  160 + success?: (ret?: any) => void;
  161 +
  162 + /**
  163 + * 接口调用失败的回调函数
  164 + */
  165 + fail?: (err?: any) => void;
  166 +
  167 + /**
  168 + * 接口调用结束的回调函数(调用成功、失败都会执行)
  169 + */
  170 + complete?: () => void;
  171 +
  172 + /**
  173 + * 接口取消的回调
  174 + */
  175 + cancel?: () => void;
  176 +}
  177 +interface _UpdateShareMenuObject {
  178 + /**
  179 + * 是否使用带 shareTicket 的转发
  180 + */
  181 + withShareTicket?: boolean;
  182 +
  183 + /**
  184 + * 接口调用成功的回调函数
  185 + */
  186 + success?: () => void;
  187 +
  188 + /**
  189 + * 接口调用失败的回调函数
  190 + */
  191 + fail?: () => void;
  192 +
  193 + /**
  194 + * 接口调用结束的回调函数(调用成功、失败都会执行)
  195 + */
  196 + complete?: () => void;
  197 +
  198 + /**
  199 + * 接口取消的回调
  200 + */
  201 + cancel?: () => void;
  202 +}
  203 +interface _getShareInfoSuccessObject {
  204 + /**
  205 + * 错误信息
  206 + */
  207 + errMsg: string;
  208 +
  209 + /**
  210 + * 包括敏感数据在内的完整转发信息的加密数据,详细见[加密数据解密算法](./signature.md#加密数据解密算法)
  211 + */
  212 + encryptedData: string;
  213 +
  214 + /**
  215 + * 加密算法的初始向量,详细见[加密数据解密算法](./signature.md#加密数据解密算法)
  216 + */
  217 + iv: string;
  218 +}
  219 +
  220 +
  221 +interface IGameList {
  222 + id: number,//唯一id
  223 + appid: string,//微信appid
  224 + path: string, //携带参数
  225 + icon: string, //游戏icon
  226 + game: string //游戏名称
  227 + adtyp: string,//类型
  228 + animation: string,//骨骼
  229 + highlight: string,//是否高亮
  230 +}
... ...
wxsdk/base/SDKDefault.ts
... ... @@ -1,230 +0,0 @@
1   -
2   -/** 返回参数类型 */
3   -interface IResult<T> {
4   - /** 错误码 */
5   - code?: number;
6   - /** 错误信息 */
7   - msg?: string;
8   - /** 返回数据 */
9   - data?: T;
10   - /** 服务器时间 */
11   - servertime?: number;
12   -}
13   -
14   -/** 微信api 返回用户信息 */
15   -interface WxUserInfo {
16   - /** 用户昵称 */
17   - nickName: string;
18   - /** 用户头像图片的 URL。URL 最后一个数值代表正方形头像大小
19   - * (有 0、46、64、96、132 数值可选,0 代表 640x640 的正方形头像,46 表示 46x46 的正方形头像,
20   - * 剩余数值以此类推。默认132),用户没有头像时该项为空。若用户更换头像,原有头像 URL 将失效。 */
21   - avatarUrl: string;
22   - /** 用户性别 gender的合法值(0未知,1男性,2女性) */
23   - gender: number;
24   - /** 用户所在国家 */
25   - country: string;
26   - /** 用户所在省份 */
27   - province: string;
28   - /** 用户所在城市 */
29   - city: string;
30   - /** 显示 country,province,city 所用的语言(en英文,zh_CN简体中文,zh_TW繁体中文) */
31   - language: string;
32   -}
33   -
34   -/** 显示模态对话框参数类型 */
35   -interface ShowModalType {
36   - /** 提示的标题 */
37   - title: string;
38   - /** 提示的内容 */
39   - content: string;
40   - /** 是否显示取消按钮 */
41   - showCancel?: boolean;
42   - /** 取消按钮的文字,最多 4 个字符 */
43   - cancelText?: string;
44   - /** 取消按钮的文字颜色,必须是 16 进制格式的颜色字符串 */
45   - cancelColor?: string;
46   - /** 确认按钮的文字,最多 4 个字符 */
47   - confirmText?: string;
48   - /** 确认按钮的文字颜色,必须是 16 进制格式的颜色字符串 */
49   - confirmColor?: string;
50   - /** 接口调用成功的回调函数 */
51   - success?: (res: { confirm: boolean, cancel: boolean }) => void;
52   - /** 接口调用失败的回调函数 */
53   - fail?: () => void;
54   - /** 接口调用结束的回调函数(调用成功、失败都会执行) */
55   - complete?: () => void;
56   -}
57   -/**
58   - * 排行榜数据
59   - */
60   -interface IRankData {
61   - fraction: number, // 对应type传入的分数、数量或者其他
62   - headurl: string, //头像
63   - nickname: string,//昵称
64   - uid: number//用户id
65   - rankData: any //扩展参数
66   -}
67   -
68   -interface _NetworkTypeSuccessObject {
69   - networkType: string; // wifi/2g/3g/4g/unknown(Android 下不常见的网络类型)/none(无网络)
70   -}
71   -interface _StyleObject {
72   - left?: number;
73   -
74   - top?: number;
75   -
76   - width?: number;
77   -
78   - height?: number;
79   -}
80   -interface _StyleGameObject {
81   - left?: number;
82   - top?: number;
83   -}
84   -
85   -interface _BannerAdObject {
86   - adUnitId: string;
87   - adIntervals?: number;
88   - style: _StyleObject;
89   -}
90   -interface _FeedbackButtonObject {
91   - /**
92   - * 按钮的类型
93   - */
94   - type: string;
95   -
96   - /**
97   - * 按钮上的文本,仅当 type 为 text 时有效
98   - */
99   - text?: string;
100   -
101   - /**
102   - * 按钮的背景图片,仅当 type 为 image 时有效
103   - */
104   - image?: string;
105   -
106   - /**
107   - * 按钮的样式
108   - */
109   - style: _ButtonStyle;
110   -}
111   -
112   -interface _UserInfoButton {
113   - type: string;
114   -
115   - text: string;
116   -
117   - image: string;
118   -
119   - style: _ButtonStyle;
120   -
121   - show: Function;
122   -
123   - hide: Function;
124   -
125   - destroy: Function;
126   -
127   - onTap: (callback: Function) => void;
128   -
129   - offTap: (callback: Function) => void;
130   -}
131   -
132   -interface _ShareAppMessageObject {
133   - /**
134   - * 是否使用带 shareTicket 的转发详情
135   - */
136   - withShareTicket?: boolean;
137   - /**
138   - * 发标题,不传则默认使用当前小游戏的昵称。
139   - */
140   - title?: string;
141   -
142   - /**
143   - * 转发显示图片的链接,可以是网络图片路径或本地图片文件路径或相对代码包根目录的图片文件路径。显示图片长宽比是 5: 4
144   - */
145   - imageUrl?: string;
146   -
147   - /**
148   - * 查询字符串,必须是 key1 = val1 & key2=val2 的格式。从这条转发消息进入后,可通过 wx.getLaunchOptionSync() 或 wx.onShow() 获取启动参数中的 query。
149   - */
150   - query?: string;
151   -
152   - /**
153   - * 审核通过的图片 ID,详见 使用审核通过的转发图片
154   - */
155   - imageUrlId?: string;
156   -
157   - /**
158   - * 10.10后废弃
159   - */
160   - success?: (ret?: any) => void;
161   -
162   - /**
163   - * 接口调用失败的回调函数
164   - */
165   - fail?: (err?: any) => void;
166   -
167   - /**
168   - * 接口调用结束的回调函数(调用成功、失败都会执行)
169   - */
170   - complete?: () => void;
171   -
172   - /**
173   - * 接口取消的回调
174   - */
175   - cancel?: () => void;
176   -}
177   -interface _UpdateShareMenuObject {
178   - /**
179   - * 是否使用带 shareTicket 的转发
180   - */
181   - withShareTicket?: boolean;
182   -
183   - /**
184   - * 接口调用成功的回调函数
185   - */
186   - success?: () => void;
187   -
188   - /**
189   - * 接口调用失败的回调函数
190   - */
191   - fail?: () => void;
192   -
193   - /**
194   - * 接口调用结束的回调函数(调用成功、失败都会执行)
195   - */
196   - complete?: () => void;
197   -
198   - /**
199   - * 接口取消的回调
200   - */
201   - cancel?: () => void;
202   -}
203   -interface _getShareInfoSuccessObject {
204   - /**
205   - * 错误信息
206   - */
207   - errMsg: string;
208   -
209   - /**
210   - * 包括敏感数据在内的完整转发信息的加密数据,详细见[加密数据解密算法](./signature.md#加密数据解密算法)
211   - */
212   - encryptedData: string;
213   -
214   - /**
215   - * 加密算法的初始向量,详细见[加密数据解密算法](./signature.md#加密数据解密算法)
216   - */
217   - iv: string;
218   -}
219   -
220   -
221   -interface IGameList {
222   - id: number,//唯一id
223   - appid: string,//微信appid
224   - path: string, //携带参数
225   - icon: string, //游戏icon
226   - game: string //游戏名称
227   - adtyp: string,//类型
228   - animation: string,//骨骼
229   - highlight: string,//是否高亮
230   -}
wxsdk/base/wx.d.ts
1 1  
2 2 declare const wx;
3 3 declare const qq;
4   -declare const my;
5 4 \ No newline at end of file
  5 +declare const my;
... ...
wxsdk/douyin/DouyinInterstitial.ts
... ... @@ -1,43 +0,0 @@
1   -import { GAMEDATA } from "../base/SDKConst";
2   -
3   -export default class DouyinInterstitial {
4   - /** 插屏广告ID */
5   - private static interstitialAdId: string = GAMEDATA.interstitialAdId;
6   - /** 插屏广告实例 */
7   - public static interstitialAd: any;
8   - /** 插屏广告是否加载完成 */
9   - private static interstitialSuccell: boolean = false;
10   - /** 初始化插屏广告 */
11   - public static initInterstitialAd(adUnitId: string = GAMEDATA.interstitialAdId) {
12   - // this.interstitialAdId = adUnitId;
13   - // this.createInterstitial();
14   - }
15   -
16   - private static canReTry = false;
17   - /** 显示插屏广告 */
18   - public static showInterstitialAd(adUnitId: string = GAMEDATA.interstitialAdId) {
19   - const interstitiaAd = tt.createInterstitialAd({ adUnitId: this.interstitialAdId });
20   - this.canReTry = true;
21   - let onLoadHandle = ()=> {
22   - console.log("插屏广告onload成功")
23   - interstitiaAd.show().then(() => {
24   - console.log("插屏广告展示成功");
25   - });
26   - }
27   - interstitiaAd.onLoad(onLoadHandle); //创建会自动load
28   -
29   - let onErrorHandle = (err)=>{
30   - // 这里要等待一定时间后,或者等待下次需要展示的时候,参考频控,尝试一次,或者几次,不能一直尝试。
31   - if (this.canReTry) {
32   - this.canReTry = false;
33   - interstitiaAd.load(); //如果需要,这里等待一定时间后,或者等待下次需要展示的时候,再次 load->onLoad-> show。
34   - } else {
35   - tt.showToast({
36   - title: "暂无广告",
37   - icon: "none",
38   - });
39   - }
40   - }
41   - interstitiaAd.onError(onErrorHandle); // 自动load 的失败会走到这里
42   - }
43   -}
44 0 \ No newline at end of file
wxsdk/douyin/DouyinPay.ts
... ... @@ -1,175 +0,0 @@
1   -import { GAMEDATA } from '../base/SDKConst';
2   -import { EnvCode } from '../base/SDKEnum';
3   -import { SDKApi } from '../http/SDKApi';
4   -import DataService from '../service/DataService';
5   -import WxSystem from '../wx/WxSystem';
6   -
7   -export default class DouyinPay {
8   - /**
9   - * 发起支付
10   - */
11   - pay(params: { payid: string, goodid: string, money: number; orderid: string }, opts: any = {}): Promise<any> {
12   - return new Promise((resolve, reject) => {
13   - let { Mode, OfferId, ZoneId, CurrencyType, Platform } = GAMEDATA.MidasPay;
14   - // 环境配置,0:米大师正式环境 1:米大师沙箱环境
15   - let env = DataService.I.EnvEnum === EnvCode.Prod ? 0 : 1;
16   - // 平台类型,android or ios,config.js有配置走配置,否则判断系统id
17   - let platform = DataService.I.Platform;
18   - let pms = {
19   - mode: Mode,
20   - env,
21   - platform,
22   - offerId: OfferId,
23   - currencyType: CurrencyType,
24   - buyQuantity: params.money / 10,
25   - zoneId: ZoneId
26   - };
27   - let extend = "";
28   - for (let key in opts) {
29   - extend += (`${key}=${opts[key]}&`)
30   - }
31   - extend = extend.substring(0, extend.length - 1);
32   - extend = encodeURIComponent(extend);
33   -
34   - let payParams = {
35   - ...this.buildParams(),
36   - extend,
37   - orderid: params.orderid,
38   - // payid: params.payid,
39   - goodid: params.goodid,
40   - money: params.money,
41   - platform
42   - };
43   - console.log("payParams", payParams);
44   - SDKApi.bytedanceOrderReport(payParams).then(res => {
45   - console.log("res", res);
46   - if (!res.code) {
47   - let { mode, env, currencyType, platform, buyQuantity, zoneId, customId, extraInfo } = res.data;
48   - tt.requestGamePayment({
49   - mode, // 支付类型
50   - env, //支付环境
51   - currencyType, // 币种:目前仅为 "CNY"
52   - platform, // 申请接入时的平台:目前仅为"android"
53   - buyQuantity, // 购买数量,必须满足:金币数量*金币单价 = 限定价格等级(详见金币限定等级)
54   - zoneId,
55   - customId,//开发者自定义唯一订单号。如不填,支付结果回调将不包含此字段,将导致游戏开发者无法发放游戏道具, 基础库版本低于1.55.0没有此字段
56   - extraInfo,//extraInfo要转成字符串
57   - success(res) {
58   - // console.log("调用函数成功", res);
59   - resolve({ code: 0, msg: '支付成功!' })
60   - },
61   - fail(err) {
62   - // console.log("调用函数失败", res);
63   - resolve({ code: err.errCode, msg: '支付失败' });
64   - },
65   - complete(res) {
66   - // console.log("调用完成", res);
67   - },
68   - })
69   - // tt.requestGamePayment(pms)
70   - // .then(() => this.handlePaySuccess({ ...params, platform }, opts, resolve, reject))
71   - // .catch(err => this.handlePayError({ ...params, platform }, opts, err, reject));
72   - } else {
73   - reject(res);
74   - }
75   - })
76   - });
77   - }
78   -
79   - private async handlePaySuccess(data: { payid: string, goodid: string, money: number; orderid: string, platform: string }, opts: any, resolve: any, reject: any, t = 1000) {
80   - // let code = await WxApi.I.login();
81   -
82   - let extend = "";
83   - for (let key in opts) {
84   - extend += (`${key}=${opts[key]}&`)
85   - }
86   - extend = extend.substring(0, extend.length - 1);
87   - extend = encodeURIComponent(extend);
88   - let params = {
89   - ...this.buildParams(),
90   - extend,
91   - midasenv: DataService.I.EnvEnum === EnvCode.Prod ? 0 : 1,
92   - orderid: data.orderid,
93   - payid: data.payid, goodid: data.goodid,
94   - type: 1,
95   - money: data.money,
96   - platform: data.platform
97   - };
98   - var that = this;
99   - SDKApi.bytedanceOrderReport(params)
100   - .then(res => {
101   - if (!res.code) {
102   - resolve(res);
103   - } else {
104   - t = Math.min(t * 2, 60000)
105   - // console.error("上报失败,重新上报", t)
106   - setTimeout(() => {
107   - that.handlePaySuccess(data, opts, resolve, reject, t)
108   - }, t);
109   - }
110   - })
111   - }
112   -
113   - private handlePayError(data: { payid: string, goodid: string, money: number; orderid: string, platform: string }, opts, err: any, reject: any) {
114   - console.log("支付失败", JSON.stringify(err));
115   - let type = 2;
116   - if (err.errCode + '' == '1') {
117   - type = 3;
118   - }
119   - let extend = "";
120   - for (let key in opts) {
121   - extend += (`${key}=${opts[key]}&`)
122   - }
123   - extend = extend.substring(0, extend.length - 1);
124   - extend = encodeURIComponent(extend);
125   - let params = {
126   - ...this.buildParams(),
127   - extend,
128   - midasenv: DataService.I.EnvEnum === EnvCode.Prod ? 0 : 1,
129   - orderid: data.orderid,
130   - payid: data.payid, goodid: data.goodid,
131   - type,
132   - money: data.money,
133   - platform: data.platform
134   - };
135   - SDKApi.bytedanceOrderReport(params)
136   - reject(err);
137   - }
138   -
139   - /**
140   - * 构建支付公用参数
141   - */
142   - private buildParams() {
143   - let gameid = GAMEDATA.game_id;
144   - let channel = DataService.I.ChannelId;
145   - let openid = DataService.I.OpenId;
146   - let brand = WxSystem.I.brand;
147   - let model = WxSystem.I.model;
148   - let version = WxSystem.I.version;
149   - let system = WxSystem.I.system;
150   - let sdkversion = WxSystem.I.SDKVersion;
151   - let scene = DataService.I.Scene + '';
152   - let uid = DataService.I.UserId;
153   - let token = DataService.I.Token;
154   - let env = DataService.I.EnvEnum === 1 ? 'pre' : 'prod';
155   - return {
156   - gameid,
157   - openid,
158   - channel,
159   - brand,
160   - model,
161   - version,
162   - system,
163   - sdkversion,
164   - scene,
165   - uid,
166   - token,
167   - env
168   - };
169   - }
170   -
171   - private static _instance: DouyinPay;
172   - static get I(): DouyinPay {
173   - return this._instance || (this._instance = new DouyinPay);
174   - }
175   -}
176 0 \ No newline at end of file
wxsdk/http/SDKApi.ts
... ... @@ -9,10 +9,13 @@ export class SDKApi {
9 9  
10 10 //GameApi
11 11 public static ShareList = (...args) => SDKHttp.httpPost(DataService.I.GameApi, HostKeys.ShareList, ...args);
  12 + public static notice = (...args) => SDKHttp.httpPost(DataService.I.GameApi, HostKeys.notice, ...args);
12 13  
13 14 public static getConfig = (...args) => SDKHttp.httpPost(DataService.I.GameApi, HostKeys.getConfig, ...args);
14 15 //订阅
15 16 public static subscribe = (...args) => SDKHttp.httpPost(DataService.I.GameApi, HostKeys.subscribe, ...args);
  17 + public static sendsubscribe = (...args) => SDKHttp.httpPost(DataService.I.GameApi, HostKeys.sendsubscribe, ...args);
  18 +
16 19 //
17 20 public static saveData = (...args) => SDKHttp.httpPost(DataService.I.GameApi, HostKeys.saveData, ...args);
18 21 public static getData = (...args) => SDKHttp.httpPost(DataService.I.GameApi, HostKeys.getData, ...args);
... ... @@ -30,18 +33,17 @@ export class SDKApi {
30 33 public static behavior = (...args) => SDKHttp.httpPost(DataService.I.GameApi, HostKeys.behavior, ...args);
31 34 //修改用户属性
32 35 public static attribute = (...args) => SDKHttp.httpPost(DataService.I.GameApi, HostKeys.attribute, ...args);
33   - // 解密关系链互动数据
34   - public static wxencrypted = (...args) => SDKHttp.httpPost(DataService.I.GameApi, HostKeys.wxencrypted, ...args);
35 36 // 文本检测
36 37 public static checkmsg = (...args) => SDKHttp.httpPost(DataService.I.GameApi, HostKeys.checkmsg, ...args);
37   - //
38   - public static updateNickname = (...args) => SDKHttp.httpPost(DataService.I.GameApi, HostKeys.updateNickname, ...args);
39 38 //LoginApi
40 39 public static Login = (...args) => SDKHttp.httpPost(DataService.I.LoginApi, HostKeys.Login, ...args);
41 40  
42 41 public static reftoken = (...args) => SDKHttp.httpPost(DataService.I.LoginApi, HostKeys.Reftoken, ...args);
43 42  
44 43 public static weakLogin = (...args) => SDKHttp.httpPost(DataService.I.LoginApi, HostKeys.weakLogin, ...args);
  44 + public static updateNickname = (...args) => SDKHttp.httpPost(DataService.I.GameApi, HostKeys.updateNickname, ...args);
  45 + // 解密关系链互动数据
  46 + public static wxencrypted = (...args) => SDKHttp.httpPost(DataService.I.GameApi, HostKeys.wxencrypted, ...args);
45 47  
46 48  
47 49 //DotApi
... ... @@ -72,28 +74,31 @@ export class SDKApi {
72 74 public static client_log = (...args) => SDKHttp.httpGet(DataService.I.DotApi, HostKeys.client_log, ...args);
73 75  
74 76 public static consume = (...args) => SDKHttp.httpGet(DataService.I.DotApi, HostKeys.consume, ...args);
75   -
  77 +
76 78 public static daystay = (...args) => SDKHttp.httpGet(DataService.I.DotApi, HostKeys.daystay, ...args);
77   -
78   - public static loading = (...args) => SDKHttp.httpGet(DataService.I.DotApi, HostKeys.loading, ...args);
79 79  
80 80  
81 81 // OrderApi
82 82 public static pay = (...args) => SDKHttp.httpPost(DataService.I.OrderApi, HostKeys.orderReport, ...args);
83   - public static bytedanceOrderReport = (...args) => SDKHttp.httpPost(DataService.I.OrderApi, HostKeys.bytedanceOrderReport, ...args);
84   - public static qqOrderReport = (...args) => SDKHttp.httpPost(DataService.I.OrderApi, HostKeys.qqOrderReport, ...args);
85 83 public static orderQuery = (...args) => SDKHttp.httpPost(DataService.I.OrderApi, HostKeys.orderQuery, ...args);
86 84 public static preorder = (...args) => SDKHttp.httpPost(DataService.I.OrderApi, HostKeys.preorder, ...args);
87   - public static zfbOrderReport = (...args) => SDKHttp.httpPost(DataService.I.OrderApi, HostKeys.zfbOrderReport, ...args);
88   -
  85 +
89 86 public static goodslist = (...args) => SDKHttp.httpPost(DataService.I.OrderApi, HostKeys.goodslist, ...args);
90 87  
91 88  
92   - //支付宝
93   - /**
94   - * 玩一玩增量行为
95   - * @param args
96   - * @returns
97   - */
98   - public static incrementGameaction = (...args) => SDKHttp.httpPost(DataService.I.GameApi, HostKeys.AlipayIncrementGameaction, ...args);
  89 +
  90 + //阿里增量任务
  91 + public static aliMission = (...args) => SDKHttp.httpPost(DataService.I.GameApi, HostKeys.aliMission, ...args);
  92 +
  93 + //支付宝会员授权查询
  94 + public static alipayIntergralAuth = (...args) => SDKHttp.httpPost(DataService.I.GameApi, HostKeys.alipayIntergralAuth, ...args);
  95 +
  96 + //支付宝积分查询
  97 + public static alipayIntergralQuery = (...args) => SDKHttp.httpPost(DataService.I.GameApi, HostKeys.alipayIntergralQuery, ...args);
  98 + //支付宝积分购买
  99 + public static alipayIntergralBuy = (...args) => SDKHttp.httpPost(DataService.I.GameApi, HostKeys.alipayIntergralBuy, ...args);
  100 +
  101 +
  102 + //玩一玩小程序是否已加首咨询
  103 + public static isAddHomePage = (...args) => SDKHttp.httpPost(DataService.I.GameApi, HostKeys.isAddHomePage, ...args);
99 104 }
... ...
wxsdk/http/SDKHttp.ts
... ... @@ -21,7 +21,7 @@ export default class SDKHttp {
21 21 if (data && typeof data === "object") {
22 22 data = JSON.stringify(data);
23 23 }
24   - // console.error("sign", url, JSON.stringify(data))
  24 + console.error("sign"+ url+JSON.stringify(data))
25 25 data = data || "";
26 26 if (method == "GET" && data != "") {
27 27 data = JSON.parse(data);
... ... @@ -38,7 +38,7 @@ export default class SDKHttp {
38 38 if (xhr.readyState == 4) {
39 39 if (xhr.status >= 200 && xhr.status < 400) {
40 40 let responseText: any = xhr.responseText;
41   - // cc.log("responseText", responseText)
  41 + cc.log("responseText"+ responseText)
42 42 try {
43 43 responseText = JSON.parse(responseText);
44 44 // cc.log("responseText22", responseText)
... ... @@ -54,31 +54,39 @@ export default class SDKHttp {
54 54 return;
55 55 }
56 56 } else {
57   - console.error(xhr.status, '网络请求失败!');
58   - resolve({ code: -2 });
  57 + // console.error(xhr.status, '网络请求失败!');
  58 + resolve({ code: -5 });
59 59 }
60 60 }
61 61 };
62 62  
63 63 xhr.ontimeout = function (info): void {
64 64 // cc.error("info1", info)
65   - resolve({ msg: `请求超时!`, code: -3 });
  65 + resolve({ msg: `请求超时!`, code: -2 });
66 66 }
67 67 xhr.onerror = function (info): void {
68 68 // cc.error("info2", info)
69   - resolve({ msg: `请求失败!`, code: -4 });
  69 + resolve({ msg: `请求失败!`, code: -3 });
70 70 }
71 71 xhr.onabort = function (info): void {
72 72 // cc.error("info3", info)
73   - resolve({ msg: `请求失败!`, code: -5 });
  73 + resolve({ msg: `请求失败!`, code: -4 });
74 74 }
75 75  
76 76 xhr.open(method, url, true);
77 77  
78 78 if (method == "POST") {
79 79 xhr.setRequestHeader("Content-Type", "application/json;charset=utf-8")//application/x-www-form-urlencoded
  80 + // if (cc.sys.os === 'Android') {
  81 + // cc.error("http__uid", AppSdkData.I.uid);
  82 + // xhr.setRequestHeader('Uuid', `${AppSdkData.I.uid}`);
  83 + // } else {
  84 + // xhr.setRequestHeader('Uuid', `909`);
  85 + // }
  86 +
80 87 }
81   - xhr.timeout = 10000;
  88 + xhr.timeout = 3000;
  89 + // console.log(data)
82 90 xhr.send(data);
83 91 });
84 92 }
... ...
wxsdk/platform/wx/WxStorage.ts.meta
1 1 {
2   - "ver": "4.0.23",
3   - "importer": "typescript",
4   - "imported": true,
  2 + "ver": "1.0.8",
5 3 "uuid": "6013014c-7aa3-4eb4-b818-583d937a9f05",
6   - "files": [],
7   - "subMetas": {},
8   - "userData": {}
9   -}
  4 + "isPlugin": false,
  5 + "loadPluginInWeb": true,
  6 + "loadPluginInNative": true,
  7 + "loadPluginInEditor": false,
  8 + "subMetas": {}
  9 +}
10 10 \ No newline at end of file
... ...
wxsdk/qq/QQPay.ts
... ... @@ -1,165 +0,0 @@
1   -import { GAMEDATA } from '../base/SDKConst';
2   -import { EnvCode } from '../base/SDKEnum';
3   -import { SDKApi } from '../http/SDKApi';
4   -import DataService from '../service/DataService';
5   -import WxSystem from '../wx/WxSystem';
6   -
7   -export default class QQPay {
8   - /**
9   - * 发起支付
10   - */
11   - pay(params: { payid: string, goodid: string, money: number; orderid: string }, opts: any = {}): Promise<any> {
12   - return new Promise((resolve, reject) => {
13   - let { Mode, OfferId, ZoneId, CurrencyType, Platform } = GAMEDATA.MidasPay;
14   - // 环境配置,0:米大师正式环境 1:米大师沙箱环境
15   - let env = DataService.I.EnvEnum === EnvCode.Prod ? 0 : 1;
16   - // 平台类型,android or ios,config.js有配置走配置,否则判断系统id
17   - let platform = DataService.I.Platform;
18   - let pms = {
19   - mode: Mode,
20   - env,
21   - platform,
22   - offerId: OfferId,
23   - currencyType: CurrencyType,
24   - buyQuantity: params.money / 10,
25   - zoneId: ZoneId
26   - };
27   - let extend = "";
28   - for (let key in opts) {
29   - extend += (`${key}=${opts[key]}&`)
30   - }
31   - extend = extend.substring(0, extend.length - 1);
32   - extend = encodeURIComponent(extend);
33   -
34   - let payParams = {
35   - ...this.buildParams(),
36   - extend,
37   - orderid: params.orderid,
38   - // payid: params.payid,
39   - goodid: params.goodid,
40   - money: params.money,
41   - platform
42   - };
43   - console.log("payParams", payParams);
44   - SDKApi.qqOrderReport(payParams).then(res => {
45   - console.log("res", res);
46   - if (!res.code) {
47   - let { prepayId,starCurrency,setEnv } = res.data;
48   - qq.requestMidasPayment({
49   - prepayId,
50   - starCurrency,
51   - setEnv,
52   - success(res) {
53   - // console.log("调用函数成功", res);
54   - resolve({ code: 0, msg: '支付成功!' })
55   - },
56   - fail(err) {
57   - // console.log("调用函数失败", res);
58   - resolve({ code: err.errCode, msg: '支付失败' });
59   - },
60   - complete(res) {
61   - console.log("调用完成", res);
62   - },
63   - })
64   - } else {
65   - reject(res);
66   - }
67   - })
68   - });
69   - }
70   -
71   - private async handlePaySuccess(data: { payid: string, goodid: string, money: number; orderid: string, platform: string }, opts: any, resolve: any, reject: any, t = 1000) {
72   - let extend = "";
73   - for (let key in opts) {
74   - extend += (`${key}=${opts[key]}&`)
75   - }
76   - extend = extend.substring(0, extend.length - 1);
77   - extend = encodeURIComponent(extend);
78   - let params = {
79   - ...this.buildParams(),
80   - extend,
81   - midasenv: DataService.I.EnvEnum === EnvCode.Prod ? 0 : 1,
82   - orderid: data.orderid,
83   - payid: data.payid, goodid: data.goodid,
84   - type: 1,
85   - money: data.money,
86   - platform: data.platform
87   - };
88   - var that = this;
89   - SDKApi.qqOrderReport(params)
90   - .then(res => {
91   - if (!res.code) {
92   - resolve(res);
93   - } else {
94   - t = Math.min(t * 2, 60000)
95   - // console.error("上报失败,重新上报", t)
96   - setTimeout(() => {
97   - that.handlePaySuccess(data, opts, resolve, reject, t)
98   - }, t);
99   - }
100   - })
101   - }
102   -
103   - private handlePayError(data: { payid: string, goodid: string, money: number; orderid: string, platform: string }, opts, err: any, reject: any) {
104   - console.log("支付失败", JSON.stringify(err));
105   - let type = 2;
106   - if (err.errCode + '' == '1') {
107   - type = 3;
108   - }
109   - let extend = "";
110   - for (let key in opts) {
111   - extend += (`${key}=${opts[key]}&`)
112   - }
113   - extend = extend.substring(0, extend.length - 1);
114   - extend = encodeURIComponent(extend);
115   - let params = {
116   - ...this.buildParams(),
117   - extend,
118   - midasenv: DataService.I.EnvEnum === EnvCode.Prod ? 0 : 1,
119   - orderid: data.orderid,
120   - payid: data.payid, goodid: data.goodid,
121   - type,
122   - money: data.money,
123   - platform: data.platform
124   - };
125   - SDKApi.qqOrderReport(params)
126   - reject(err);
127   - }
128   -
129   - /**
130   - * 构建支付公用参数
131   - */
132   - private buildParams() {
133   - let gameid = GAMEDATA.game_id;
134   - let channel = DataService.I.ChannelId;
135   - let openid = DataService.I.OpenId;
136   - let brand = WxSystem.I.brand;
137   - let model = WxSystem.I.model;
138   - let version = WxSystem.I.version;
139   - let system = WxSystem.I.system;
140   - let sdkversion = WxSystem.I.SDKVersion;
141   - let scene = DataService.I.Scene + '';
142   - let uid = DataService.I.UserId;
143   - let token = DataService.I.Token;
144   - let env = DataService.I.EnvEnum === 1 ? 'pre' : 'prod';
145   - return {
146   - gameid,
147   - openid,
148   - channel,
149   - brand,
150   - model,
151   - version,
152   - system,
153   - sdkversion,
154   - scene,
155   - uid,
156   - token,
157   - env
158   - };
159   - }
160   -
161   - private static _instance: QQPay;
162   - static get I(): QQPay {
163   - return this._instance || (this._instance = new QQPay);
164   - }
165   -}
166 0 \ No newline at end of file
wxsdk/service/AdService.ts
... ... @@ -4,8 +4,9 @@ import WxCustom from &quot;../wx/WxCustom&quot;;
4 4 import WxInterstitial from "../wx/WxInterstitial";
5 5 import { GAMEDATA } from "../base/SDKConst";
6 6 import LogService from "./LogService";
7   -import DouyinInterstitial from "../douyin/DouyinInterstitial";
8   -import { sys } from "cc";
  7 +import AlipayInterstitial from "../alipay/AlipayInterstitial";
  8 +import AlipayApi from "../alipay/AlipayApi";
  9 +import AlipayBanner from "../alipay/AlipayBanner";
9 10  
10 11  
11 12  
... ... @@ -17,37 +18,80 @@ export default class AdService {
17 18 * @param adUnitId
18 19 * @param opts
19 20 */
20   - createBanner(adUnitId: string, opts?: { type?: number; bannerWidth?: number, offsetY?: number; adIntervals?: number, isOff?: boolean,isCreate?:boolean }) {
21   - return WxBanner.I.create(adUnitId, opts);
  21 + createBanner(adUnitId: string, opts?: { type?: number; bannerWidth?: number, offsetY?: number; adIntervals?: number, isOff?: boolean }) {
  22 +
  23 + if (cc.sys.platform === cc.sys.BYTEDANCE_GAME) {
  24 + return null
  25 + } else if (cc.sys.platform === cc.sys.ALIPAY_GAME) {
  26 + return AlipayBanner.I.create(adUnitId)
  27 + } else if (cc.sys.platform === cc.sys.WECHAT_GAME) {
  28 + return WxBanner.I.create(adUnitId, opts);
  29 + }
22 30 }
23 31 /**
24 32 * banner 显示 ps:创建默认显示
25 33 */
26 34 showBanner() {
27   - WxBanner.I.show()
  35 + if (cc.sys.platform === cc.sys.BYTEDANCE_GAME) {
  36 +
  37 + } else if (cc.sys.platform === cc.sys.ALIPAY_GAME) {
  38 + AlipayBanner.I.show();
  39 + } else if (cc.sys.platform === cc.sys.WECHAT_GAME) {
  40 + WxBanner.I.show();
  41 + }
  42 +
28 43 }
29 44 /**
30 45 * banner 隐藏
31 46 */
32 47 hideBanner() {
33   - WxBanner.I.hide();
  48 + if (cc.sys.platform === cc.sys.BYTEDANCE_GAME) {
  49 +
  50 + } else if (cc.sys.platform === cc.sys.ALIPAY_GAME) {
  51 + AlipayBanner.I.hide();
  52 + } else if (cc.sys.platform === cc.sys.WECHAT_GAME) {
  53 + WxBanner.I.hide();
  54 + }
34 55 }
35 56 /**
36 57 * banner 销毁
37 58 */
38 59 destoryBanner() {
39   - WxBanner.I.destory();
  60 +
  61 + if (cc.sys.platform === cc.sys.BYTEDANCE_GAME) {
  62 +
  63 + } else if (cc.sys.platform === cc.sys.ALIPAY_GAME) {
  64 + AlipayBanner.I.destory();
  65 + } else if (cc.sys.platform === cc.sys.WECHAT_GAME) {
  66 + WxBanner.I.destory();
  67 + }
40 68 }
41 69  
42   -
  70 + /**
  71 + * 初始化插屏
  72 + * @param adUnitId
  73 + */
  74 + initInterstitialAd(adUnitId?: string) {
  75 + if (cc.sys.platform === cc.sys.BYTEDANCE_GAME) {
  76 + // return DouyinInterstitial.initInterstitialAd(adUnitId);
  77 + } else if (cc.sys.platform === cc.sys.ALIPAY_GAME) {
  78 + AlipayInterstitial.initInterstitialAd(adUnitId)
  79 + } else if (cc.sys.platform === cc.sys.WECHAT_GAME) {
  80 + return WxInterstitial.initInterstitialAd(adUnitId)
  81 + }
  82 + }
43 83 /**
44 84 * 插屏
45 85 * @param adUnitId
46 86 */
47 87 createInterstitialAd(adUnitId: string) {
48   - if (sys.platform === sys.Platform.BYTEDANCE_MINI_GAME) {
49   - return DouyinInterstitial.showInterstitialAd(adUnitId);
50   - } else {
  88 + console.log('~~~~~~~~~~~插屏');
  89 + // return WxInterstitial.showInterstitialAd(adUnitId)
  90 + if (cc.sys.platform === cc.sys.BYTEDANCE_GAME) {
  91 + // return DouyinInterstitial.initInterstitialAd(adUnitId);
  92 + } else if (cc.sys.platform === cc.sys.ALIPAY_GAME) {
  93 + AlipayInterstitial.showInterstitialAd(adUnitId)
  94 + } else if (cc.sys.platform === cc.sys.WECHAT_GAME) {
51 95 return WxInterstitial.showInterstitialAd(adUnitId)
52 96 }
53 97 }
... ... @@ -86,7 +130,13 @@ export default class AdService {
86 130 let { id, appid, path, game } = data;
87 131 LogService.I.jumps(id, type);
88 132 if (!path) path = `?channel_id=${GAMEDATA.channel_id}`;
89   - return WxApi.I.navigateToMiniProgram(appid, path, opts)
  133 + if (cc.sys.platform === cc.sys.BYTEDANCE_GAME) {
  134 + } else if (cc.sys.platform === cc.sys.ALIPAY_GAME) {
  135 + return AlipayApi.I.navigateToMiniProgram(appid, path, opts)
  136 + } else if (cc.sys.platform === cc.sys.WECHAT_GAME) {
  137 + return WxApi.I.navigateToMiniProgram(appid, path, opts)
  138 + }
  139 +
90 140 }
91 141  
92 142  
... ...
wxsdk/service/DataService.ts
... ... @@ -16,25 +16,13 @@ export default class DataService {
16 16 this._data = new SdkData;
17 17 // 0点数据变动
18 18 let expiration = +((this.nextDay() - Date.now()) / 1000).toFixed(0);
19   - setTimeout(this.resetData.bind(this), expiration * 1000);
20   - if (typeof wx != 'undefined' || typeof my != 'undefined') {
21   - wx.onShow(this.onShow.bind(this));
22   - wx.onHide(this.onHide.bind(this));
23   - }
24   - }
  19 + setTimeout(this.resetData, expiration * 1000);
25 20  
26   - onShow() {
27   - // console.log("dataOnshow");
28   - this.updateTodayOnlineTime();
29   - }
30   - onHide() {
31   - // console.log("dataOnhide");
32   - clearInterval(this.timeInterval);
33 21 }
34 22  
35   - private resetData() {
  23 + private resetData(){
36 24 this.setPtm(0);//更新当天是否300s
37   - this.setLogindays(this.logindays + 1);// 更新登录天数
  25 + this.setLogindays(this.logindays+1);// 更新登录天数
38 26 this.setIsnew(0);//更新新老用户
39 27 }
40 28  
... ... @@ -49,6 +37,7 @@ export default class DataService {
49 37 };
50 38 }
51 39  
  40 +
52 41 get Data(): SdkData {
53 42 return this._data;
54 43 }
... ... @@ -527,13 +516,6 @@ export default class DataService {
527 516 return this;
528 517 }
529 518  
530   - // public addOnlineTime(t) {
531   - // let expiration = +((this.nextDay() - Date.now()) / 1000).toFixed(0);
532   - // let time = StorageUtils.I.get("pcsdk_today_online_time") || 0;
533   - // time += t;
534   - // StorageUtils.I.set("pcsdk_today_online_time", time, expiration)
535   - // }
536   -
537 519 private timeInterval
538 520 public updateTodayOnlineTime() {
539 521 let dot = StorageUtils.I.get("pcsdk_today_online_time_300") || 0;
... ... @@ -547,16 +529,14 @@ export default class DataService {
547 529 return;
548 530 } else {
549 531 this.setPtm(0)
550   - this.timeInterval = setInterval(this.stayFun.bind(this), 1000);
  532 + this.timeInterval = setInterval(this.stayFun.bind(this), 5000);
551 533 }
552 534 }
553   -
554   -
555 535 private stayFun() {
556 536 let expiration = +((this.nextDay() - Date.now()) / 1000).toFixed(0);
557 537 let time = StorageUtils.I.get("pcsdk_today_online_time") || 0;
558   - time += 1;
559   - StorageUtils.I.set("pcsdk_today_online_time", time, expiration);
  538 + time += 5;
  539 + StorageUtils.I.set("pcsdk_today_online_time", time, expiration)
560 540 let dot = StorageUtils.I.get("pcsdk_today_online_time_300") || 0;
561 541 if (dot === 1) {
562 542 this.setPtm(1)
... ... @@ -567,7 +547,7 @@ export default class DataService {
567 547 }, expiration * 1000);
568 548 return;
569 549 }
570   - // console.log("newUserTime", time, dot)
  550 + // console.log("newUserTime", newUserTime, newUserDot)
571 551 if (time >= 300 && dot == 0) {
572 552 StorageUtils.I.set("pcsdk_today_online_time_300", 1, expiration);
573 553 this.setPtm(1)
... ...
wxsdk/service/GameService.ts
1   -import { sys } from "cc";
2   -import { GAMEDATA, SDKVersion, __LOG__ } from "../base/SDKConst";
3   -import DouyinPay from "../douyin/DouyinPay";
  1 +import DataService from "./DataService";
4 2 import { SDKApi } from "../http/SDKApi";
5   -import QQPay from "../qq/QQPay";
6   -import WxApi from "../wx/WxApi";
  3 +import { GAMEDATA, SDKVersion, __LOG__ } from "../base/SDKConst";
7 4 import WxLogin from "../wx/WxLogin";
  5 +import WxApi from "../wx/WxApi";
8 6 import WxPay from "../wx/WxPay";
9 7 import WxSystem from "../wx/WxSystem";
10   -import DataService from "./DataService";
11   -import ZfbPay from "../alipay/zfbPay";
12 8  
13 9  
14 10 export default class GameService {
... ... @@ -39,6 +35,7 @@ export default class GameService {
39 35 return WxLogin.I.login(isAuthorize);
40 36 }
41 37  
  38 +
42 39 saveData(key: string, content: string) {
43 40 return SDKApi.saveData({ key, content, uid: DataService.I.UserId, token: DataService.I.Token });
44 41 }
... ... @@ -65,12 +62,38 @@ export default class GameService {
65 62 adList(adtyp) {
66 63 return SDKApi.adList({ adtyp, uid: DataService.I.UserId, token: DataService.I.Token })
67 64 }
68   -
69   - wxencrypted(iv, encryptedData) {
70   - return SDKApi.wxencrypted({ iv, encryptedData, openid: DataService.I.OpenId, token: DataService.I.Token, uid: DataService.I.UserId })
  65 + getGameNotice() {
  66 + return SDKApi.notice();
71 67 }
72 68  
73 69  
  70 + // subScribe(tmplIds: Array<string>, ids: Array<string>): Promise<any> {
  71 + // return new Promise((resolve, reject) => {
  72 + // WxApi.I.subscribeMessage(tmplIds)
  73 + // .then((ret: any) => {
  74 + // ret = ret || {};
  75 + // let acceptKeys = tmplIds.filter((idKey: string) => ret[idKey] && ret[idKey] === 'accept');
  76 + // if (!acceptKeys.length) {
  77 + // reject({ errCode: 0, errMsg: '点击取消订阅' });
  78 + // } else {
  79 + // let uid = +DataService.I.UserId;
  80 + // let token = DataService.I.Token + '';
  81 + // let openid = DataService.I.OpenId + '';
  82 + // let id = ids//JSON.stringify()
  83 + // SDKApi.subscribe({
  84 + // uid,
  85 + // token,
  86 + // openid,
  87 + // status: 1,
  88 + // id,
  89 + // })
  90 + // resolve({ code: 0, msg: '订阅成功!' })
  91 + // }
  92 +
  93 + // })
  94 + // .catch(err => reject(err));
  95 + // });
  96 + // }
74 97 subScribe(tmplIds: Array<string>, success: Function, fail: Function): Promise<any> {
75 98 return new Promise((resolve, reject) => {
76 99 WxApi.I.subscribeMessage(tmplIds)
... ... @@ -79,15 +102,55 @@ export default class GameService {
79 102 let acceptKeys = tmplIds.filter((idKey: string) => ret[idKey] && ret[idKey] === 'accept');
80 103 if (!acceptKeys.length) {
81 104 fail()
82   - resolve({ errCode: 0, errMsg: '点击取消订阅' });
  105 + reject({ errCode: 0, errMsg: '点击取消订阅' });
  106 +
83 107 } else {
  108 + // let uid = +DataService.I.UserId;
  109 + // let token = DataService.I.Token + '';
  110 + // let openid = DataService.I.OpenId + '';
  111 + // UserManager.I.issubscribe = true;
84 112 success(acceptKeys)
85 113 console.log('订阅成功', ret, acceptKeys)
  114 + // SDKApi.subscribe({
  115 + // uid,
  116 + // token,
  117 + // openid,
  118 + // status: 1,
  119 + // message: encodeURI(message),
  120 + // sendtime: sendtime,
  121 + // time: time,
  122 + // })
86 123 resolve(ret);
87 124 }
  125 + // GameService.I.subScribe(acceptKeys)
  126 + // .then(() => {
  127 + // resolve(ret);
  128 + // DebugUtils.I.dynamic('====> PCSDK subScribe订阅消息成功', ret);
  129 + // })
  130 + // .catch((err) => reject(err || { errCode: 0, errMsg: 'GameApi subScribe请求错误' }));
  131 +
88 132 })
89   - .catch(err => resolve(err));
  133 + .catch(err => reject(err));
90 134 });
  135 + // return WxApi.I.subscribeMessage(template_ids);
  136 + }
  137 +
  138 + async sendSubScribe(tmplIds: Array<string>, message: string, sendtime: number, time: number = 0) {
  139 + let uid = +DataService.I.UserId;
  140 + let token = DataService.I.Token + '';
  141 + let openid = DataService.I.OpenId + '';
  142 +
  143 + let back = await SDKApi.sendsubscribe({
  144 + uid,
  145 + token,
  146 + openid,
  147 + status: 1,
  148 + message: encodeURIComponent(message),
  149 + sendtime: Math.floor(sendtime),
  150 + time: time,
  151 + temid: tmplIds[0]
  152 + })
  153 + return back;
91 154 }
92 155  
93 156 /**
... ... @@ -97,18 +160,7 @@ export default class GameService {
97 160 * @returns
98 161 */
99 162 pay(params: { payid: string, goodid: string, money: number; orderid: string }, opts: any = {}) {
100   - if (sys.platform === sys.Platform.BYTEDANCE_MINI_GAME) {
101   - return DouyinPay.I.pay(params, opts);
102   - } else {
103   - if (typeof my != 'undefined') {
104   - return ZfbPay.I.pay(params, opts);
105   - } else if (typeof qq != 'undefined') {
106   - console.log("QQ支付")
107   - return QQPay.I.pay(params, opts);
108   - } else {
109   - return WxPay.I.pay(params, opts);
110   - }
111   - }
  163 + return WxPay.I.pay(params, opts);
112 164 }
113 165 /**
114 166 * 订单查询
... ... @@ -136,38 +188,6 @@ export default class GameService {
136 188 return SDKApi.goodslist();
137 189 }
138 190  
139   -
140   - /**
141   - * 文本检测
142   - */
143   - checkmsg(scene: number, content: string, nickname?: string, title?: string, signature?: string) {
144   - let gameid = GAMEDATA.game_id;
145   - let uid = DataService.I.UserId;
146   - let token = DataService.I.Token;
147   - let openid = DataService.I.OpenId;
148   - return SDKApi.checkmsg({
149   - gameid,
150   - uid,
151   - token,
152   - openid,
153   - scene, content, nickname, title, signature
154   - })
155   - }
156   - /**
157   - * 更换昵称和头像
158   - */
159   - updateNickname(nickname: string, headurl: string) {
160   - let gameid = GAMEDATA.game_id;
161   - let uid = DataService.I.UserId;
162   - let token = DataService.I.Token;
163   - let pkv = SDKVersion;
164   - return SDKApi.updateNickname({
165   - gameid, uid, token, pkv,
166   - nickname, headurl
167   - })
168   - }
169   -
170   -
171 191 /**
172 192 * 构建登录/弱登录公用参数
173 193 */
... ... @@ -217,6 +237,58 @@ export default class GameService {
217 237 }
218 238  
219 239  
  240 + //阿里增量任务
  241 + async aliMission(action_code, success: Function, fail: Function) {
  242 + let res = await SDKApi.aliMission({
  243 + ...this.buildParamsAli(action_code),
  244 + });
  245 + if (res.code) {
  246 + fail(res);
  247 + } else
  248 + success(res);
  249 + }
  250 +
  251 + /**
  252 + * {
  253 + "uid": 99,
  254 + "token": "12313123werwerwerewrw",
  255 + "openid": "2088012968344861",
  256 + "action_code": "pplwg_game_pass_level_3",
  257 + "action_finish_channel": "gamecenter"
  258 + }
  259 + * 阿里增量任务
  260 + */
  261 + public buildParamsAli(_action_code) {
  262 + console.log('阿里增量任务')
  263 + if (window['my'] == undefined) return;
  264 + let channel = 'other';
  265 + let info = my.getLaunchOptionsSync();
  266 + // console.log('~~~~~~~~~~~~action_finish_channel=', info);
  267 + // console.log('~~~~~~~~~~~~action_finish_channel=', info.query);
  268 + // console.log('~~~~~~~~~~~~action_finish_channel=', info.query.channel);
  269 + if (info.query.channel == undefined) {
  270 + channel = 'other';
  271 + } else {
  272 + if (info.query.channel.length <= 0 || info.query.channel == null) {
  273 + channel = 'other';
  274 + } else {
  275 + channel = info.query.channel;
  276 + }
  277 + }
  278 +
  279 + let uid = DataService.I.UserId;
  280 + let token = DataService.I.Token;
  281 + let openid = DataService.I.OpenId;
  282 + let action_code = _action_code;
  283 + let action_finish_channel = channel
  284 + return {
  285 + uid,
  286 + token,
  287 + openid,
  288 + action_code,
  289 + action_finish_channel
  290 + };
  291 + }
220 292  
221 293 /**
222 294 * 构建登录/弱登录公用参数
... ...
wxsdk/service/LogService.ts
... ... @@ -199,7 +199,7 @@ export default class LogService {
199 199 * @param times 时间
200 200 * @param perc 失败时的完成进度 (浮点数)
201 201 */
202   - async levelEnd(stageid, stagename, pattern, event, times, perc?) {
  202 + async levelEnd(stageid, stagename, pattern, event, times, perc?, valence=0) {
203 203 let fun = () => SDKApi.level({
204 204 ...this.buildParams(),
205 205 stageid,
... ... @@ -208,7 +208,8 @@ export default class LogService {
208 208 event,
209 209 times,
210 210 perc,
211   - typ: 3
  211 + typ: 3,
  212 + valence
212 213 })
213 214 this.checkLogin(fun);
214 215 }
... ... @@ -458,25 +459,25 @@ export default class LogService {
458 459 /**
459 460 * 客户端日志
460 461 */
461   - clientLog(content, level = SDKLogLevel.debug) {
  462 + clientLog(content, level = LogLevel.debug) {
462 463 SDKApi.client_log({
463 464 APIVersion: '0.6.0',
464 465 gameid: GAMEDATA.game_id,
465 466 cacheUserId: StorageUtils.I.get("userId") || "0",
466   - level: SDKLogLevel[level],
  467 + level: LogLevel[level],
467 468 content
468 469 })
469 470 switch (level) {
470   - case SDKLogLevel.error:
  471 + case LogLevel.error:
471 472 console.error(content);
472 473 break;
473   - case SDKLogLevel.debug:
  474 + case LogLevel.debug:
474 475 console.log(content);
475 476 break;
476   - case SDKLogLevel.info:
  477 + case LogLevel.info:
477 478 console.info(content);
478 479 break;
479   - case SDKLogLevel.warning:
  480 + case LogLevel.warning:
480 481 console.warn(content);
481 482 break;
482 483 default:
... ... @@ -510,22 +511,6 @@ export default class LogService {
510 511 })
511 512 this.checkLogin(fun);
512 513 }
513   - /**
514   - * loading上报
515   - * @param typ 1开始加载、2加载进行中、3加载结束
516   - * @param stageid 加载id
517   - * @param stagename 加载内容
518   - * @param event complete:成功 fail:失败
519   - * @param times 加载消耗时间 单位毫秒
520   - * @param perc 完成度
521   - */
522   - loading(typ: string, stageid: string, stagename: string, event: string, times: string, perc?: number) {
523   - let fun = () => SDKApi.loading({
524   - ...this.buildParams(),
525   - typ, stageid, stagename, event, times, perc
526   - })
527   - this.checkLogin(fun);
528   - }
529 514  
530 515  
531 516 /**
... ... @@ -586,7 +571,7 @@ export default class LogService {
586 571 error:更严重的问题,软件没能执行一些功能
587 572 critical:一个严重的错误,这表明程序本身可能无法继续运行
588 573 */
589   -export enum SDKLogLevel {
  574 +export enum LogLevel {
590 575 debug,
591 576 info,
592 577 warning,
... ...
wxsdk/service/ShareVideoService.ts
... ... @@ -6,7 +6,6 @@ import { __LOG__, GAMEDATA } from &quot;../base/SDKConst&quot;;
6 6 import { SDKApi } from "../http/SDKApi";
7 7 import DataService from "./DataService";
8 8 import SDKVideo from "../share/SDKVideo";
9   -import { sys } from "cc";
10 9  
11 10 export default class ShareVideoService {
12 11 private forwardKey?: string;
... ... @@ -28,28 +27,18 @@ export default class ShareVideoService {
28 27 this.forward(this.forwardKey);
29 28 }
30 29  
31   - private cnt: number = 1
32   - async initList() { //初始化List
  30 + async init() {
33 31 let data = await SDKApi.ShareList();
34   - if (data.code) {
35   - console.log('拉取ShareList失败!')
36   - setTimeout(this.initList.bind(this), 200 * this.cnt)
37   - this.cnt++;
38   - return
39   - }
40   - console.log('拉取ShareList成功!')
41   - console.log('拉取ShareList成功!',JSON.stringify(data));
42 32 this.setShareVideoData(data);
43   - if (this.forwardKey) this.forward(this.forwardKey);
44   - }
45   - async init() {
46   - this.initList();
  33 + // console.log(JSON.stringify(data))
47 34 SDKShare.I.updateShareMenu(true);//打开群分享
48   - if (sys.platform === sys.Platform.WECHAT_GAME) {
49   - if (GAMEDATA.shareMessageToFriend.scene > 0) {
50   - wx.setMessageToFriendQuery({ shareMessageToFriendScene: GAMEDATA.shareMessageToFriend.scene })
51   - }
  35 +
  36 +
  37 + if (GAMEDATA.shareMessageToFriend.scene > 0) {
  38 + my.setMessageToFriendQuery({ shareMessageToFriendScene: GAMEDATA.shareMessageToFriend.scene })
52 39 }
  40 +
  41 + if (this.forwardKey) this.forward(this.forwardKey);
53 42 }
54 43  
55 44 preload = true;
... ... @@ -411,10 +400,6 @@ export default class ShareVideoService {
411 400 return list[index];
412 401 }
413 402  
414   - onShareTimeline(title?: string, imageUrl?: string, imagePreviewUrl?: string, query?: string) {
415   - return SDKShare.I.onShareTimeline(title, imageUrl, imagePreviewUrl, query);
416   - }
417   -
418 403 private createQuery(params = {}): string {
419 404 let q = params["query"];
420 405 delete params["query"];
... ...
wxsdk/service/entity/SdkData.ts.meta
1 1 {
2   - "ver": "4.0.23",
3   - "importer": "typescript",
4   - "imported": true,
  2 + "ver": "1.0.8",
5 3 "uuid": "f09e38ff-4d68-417e-8904-949127e4d321",
6   - "files": [],
7   - "subMetas": {},
8   - "userData": {}
9   -}
  4 + "isPlugin": false,
  5 + "loadPluginInWeb": true,
  6 + "loadPluginInNative": true,
  7 + "loadPluginInEditor": false,
  8 + "subMetas": {}
  9 +}
10 10 \ No newline at end of file
... ...
wxsdk/service/entity/ShareData.ts.meta
1 1 {
2   - "ver": "4.0.23",
3   - "importer": "typescript",
4   - "imported": true,
  2 + "ver": "1.0.8",
5 3 "uuid": "d9db9b13-470b-456d-95ff-75354ec23ca0",
6   - "files": [],
7   - "subMetas": {},
8   - "userData": {}
9   -}
  4 + "isPlugin": false,
  5 + "loadPluginInWeb": true,
  6 + "loadPluginInNative": true,
  7 + "loadPluginInEditor": false,
  8 + "subMetas": {}
  9 +}
10 10 \ No newline at end of file
... ...
wxsdk/share/SDKShare.ts
... ... @@ -48,18 +48,20 @@ export default class SDKShare {
48 48 reject(null);
49 49 }
50 50 };
  51 + // 是否模拟分享
  52 + this.shareSimulate && !opts.closeSimulate && this.simulate({ ...callbackObj });
51 53  
52 54 if (this.shareSimulate && opts.closeSimulate) {
53 55 LogService.I.share(shareKey, share_id, DOT_SHARE_TYPE.share)
54 56 }
55 57 // 主动拉起转发
56   - if (typeof my != 'undefined') {
  58 + if (cc.sys.platform === cc.sys.ALIPAY_GAME) {
57 59 //模拟分享支付宝上面会失败
58 60 return AlipayApi.I.shareAppMessage(commonObj, callbackObj)
  61 + } else if (cc.sys.platform === cc.sys.WECHAT_GAME) {
  62 + return wx.shareAppMessage(commonObj);
59 63 } else {
60   - // 是否模拟分享
61   - this.shareSimulate && !opts.closeSimulate && this.simulate({ ...callbackObj });
62   - wx.shareAppMessage(commonObj);
  64 + return callbackObj.success();
63 65 }
64 66 });
65 67 }
... ... @@ -69,7 +71,7 @@ export default class SDKShare {
69 71 */
70 72 updateShareMenu(value) {
71 73 if (typeof wx == 'undefined') return
72   - wx.updateShareMenu({
  74 + my.updateShareMenu({
73 75 withShareTicket: value
74 76 });
75 77 }
... ... @@ -81,12 +83,10 @@ export default class SDKShare {
81 83 forward(params: any, opts: any = {}) {
82 84 let me = this;
83 85 let { title, imageUrl, query, imageUrlId } = params;
84   - if (typeof my != 'undefined') {
  86 + if (cc.sys.platform === cc.sys.ALIPAY_GAME) {
85 87 my.onShareAppMessage = function () {
86 88 return {
87 89 title: title,
88   - scImgUrl: imageUrl,
89   - bgImgUrl: 'https://wxsdk-cdn.miso-lab.com/moon-island/share/zfbshare.jpeg',
90 90 success: (ret?: any) => {
91 91 __LOG__ && console.error('WxShare forward success');
92 92 opts.success && opts.success.call(opts.context, ret);
... ... @@ -100,36 +100,33 @@ export default class SDKShare {
100 100 }
101 101 }
102 102 }
103   - return;
  103 + } else {
  104 + wx.onShareAppMessage(function () {
  105 + let obj = {
  106 + title,
  107 + imageUrl,
  108 + query,
  109 + imageUrlId: imageUrlId || '',
  110 + success: (ret?: any) => {
  111 + __LOG__ && console.error('WxShare forward success');
  112 + opts.success && opts.success.call(opts.context, ret);
  113 + },
  114 + fail: (err?: any) => {
  115 + __LOG__ && console.error('WxShare forward fail');
  116 + opts.fail && opts.fail.call(opts.context, err);
  117 + },
  118 + cancel: () => {
  119 + __LOG__ && console.error('WxShare forward cancel', null);
  120 + opts.fail && opts.fail.call(opts.context, null);
  121 + }
  122 + };
  123 + // 模拟分享
  124 + me.shareSimulate && !opts.closeSimulate && me.simulate({ ...obj });
  125 + return obj;
  126 + });
  127 + // 显示当前页面的转发按钮
  128 + wx.showShareMenu({});
104 129 }
105   - wx.onShareAppMessage(function () {
106   - let obj = {
107   - title,
108   - imageUrl,
109   - query,
110   - imageUrlId: imageUrlId || '',
111   - success: (ret?: any) => {
112   - __LOG__ && console.error('WxShare forward success');
113   - opts.success && opts.success.call(opts.context, ret);
114   - },
115   - fail: (err?: any) => {
116   - __LOG__ && console.error('WxShare forward fail');
117   - opts.fail && opts.fail.call(opts.context, err);
118   - },
119   - cancel: () => {
120   - __LOG__ && console.error('WxShare forward cancel', null);
121   - opts.fail && opts.fail.call(opts.context, null);
122   - }
123   - };
124   - // 模拟分享
125   - me.shareSimulate && !opts.closeSimulate && me.simulate({ ...obj });
126   - return obj;
127   - });
128   - // 显示当前页面的转发按钮 "shareAppMessage"表示“发送给朋友”按钮,"shareTimeline"表示“分享到朋友圈”按钮
129   - wx.showShareMenu({
130   - withShareTicket: true,
131   - menus: ['shareAppMessage', 'shareTimeline']
132   - })
133 130  
134 131 }
135 132  
... ... @@ -151,18 +148,4 @@ export default class SDKShare {
151 148 SimulateShare.I.bind(data);
152 149 }
153 150  
154   - onShareTimeline(title?: string, imageUrl?: string, imagePreviewUrl?: string, query?: string) {
155   - if (wx?.onShareTimeline) {
156   - wx.onShareTimeline(() => {
157   - return {
158   - title,//朋友圈标题
159   - imageUrl, // 朋友圈 小图
160   - imagePreviewUrl,//朋友圈 预览大图
161   - query,
162   - }
163   - })
164   - }
165   -
166   - }
167   -
168 151 }
169 152 \ No newline at end of file
... ...
wxsdk/share/SDKVideo.ts
1   -import { sys } from "cc";
2 1 import { ShareVideoError, __LOG__ } from "../base/SDKConst";
3 2 import { DOT_AD_TYPE, DOT_AD_STATUS } from "../base/SDKEnum";
4 3 import LogService from "../service/LogService";
5   -import TAMgr from "../../ta/TAMgr";
6 4 import AlipayApi from "../alipay/AlipayApi";
7 5  
8 6 /*
... ... @@ -36,6 +34,7 @@ export default class SDKVideo {
36 34 private isPreload: boolean = false
37 35 preloadVideo(adUnitId: string) {
38 36 if (this.preloadVideoAd || this.isPreload) return
  37 + // console.log('preloadVideo--')
39 38 this.isPreload = true;
40 39 let ad;
41 40 if (typeof my != 'undefined') {
... ... @@ -96,12 +95,9 @@ export default class SDKVideo {
96 95 return reject({ ...ShareVideoError.VideoInvalid });
97 96  
98 97 LogService.I.adStat(videoKey, this.adUnitId, DOT_AD_TYPE.video, DOT_AD_STATUS.request);
99   - TAMgr.Ins.dot('video', {
100   - ad_key: videoKey,
101   - type: DOT_AD_STATUS.request
102   - })
103   - let videoAd
104   - let hasVideo
  98 + let videoAd;
  99 + let hasVideo;
  100 +
105 101 if (this.preloadVideoAd) {
106 102 __LOG__ && console.log("使用预加载视频")
107 103 hasVideo = true
... ... @@ -167,7 +163,7 @@ export default class SDKVideo {
167 163 }
168 164  
169 165 }
170   - this.preloadVideo(adUnitId);
  166 + // this.preloadVideo(adUnitId);
171 167 __LOG__ && console.warn('====> PCSDK WxVideo 请求视频adUnitId', adUnitId);
172 168 });
173 169 }
... ... @@ -183,11 +179,7 @@ export default class SDKVideo {
183 179 try {
184 180 __LOG__ && console.warn("handleLoaded2");
185 181 LogService.I.adStat(this.videoKey, this.adUnitId, DOT_AD_TYPE.video, DOT_AD_STATUS.show)
186   - TAMgr.Ins.dot('video', {
187   - ad_key: this.videoKey,
188   - type: DOT_AD_STATUS.show
189   - })
190   - if (sys.platform === sys.Platform.WECHAT_GAME && typeof qq == 'undefined') {
  182 + if (cc.sys.platform === cc.sys.WECHAT_GAME && typeof qq == 'undefined') {
191 183 if (that.videoAd.isReady()) {//抖音、qq 没有 isReady
192 184 that.show_time = Date.now();
193 185 await that.videoAd.show();
... ... @@ -218,18 +210,10 @@ export default class SDKVideo {
218 210 if (res && res.isEnded || res === undefined) {
219 211 // 统计看视频成功
220 212 LogService.I.adStat(that.videoKey, that.adUnitId, DOT_AD_TYPE.video, DOT_AD_STATUS.complete)
221   - TAMgr.Ins.dot('video', {
222   - ad_key: that.videoKey,
223   - type: DOT_AD_STATUS.complete
224   - })
225 213 that.resolve && that.resolve({ type: 2 });
226 214 } else {
227 215 // console.log("视频关闭时间:", t)
228 216 LogService.I.adStat(that.videoKey, that.adUnitId, DOT_AD_TYPE.video, DOT_AD_STATUS.interrupt, t)
229   - TAMgr.Ins.dot('video', {
230   - ad_key: that.videoKey,
231   - type: DOT_AD_STATUS.interrupt
232   - })
233 217 that.reject && that.reject({ ...ShareVideoError.VideoQuit });
234 218 }
235 219 if (typeof my != 'undefined') {
... ... @@ -237,7 +221,7 @@ export default class SDKVideo {
237 221 } else {
238 222 that.videoAd.offClose(that.handleClose);
239 223 }
240   -
  224 + that.preloadVideo(that.adUnitId);
241 225 that._isPlaying = false;
242 226 that._isErrored = false;
243 227 }
... ... @@ -246,11 +230,15 @@ export default class SDKVideo {
246 230 __LOG__ && console.warn('====> PCSDK WxVideo 加载视频广告失败', err);
247 231 let that = SDKVideo.I;
248 232 LogService.I.adStat(that.videoKey, that.adUnitId, DOT_AD_TYPE.video, DOT_AD_STATUS.fail)
249   - TAMgr.Ins.dot('video', {
250   - ad_key: that.videoKey,
251   - type: DOT_AD_STATUS.fail
252   - })
253   - that.reject && that.reject({ ...ShareVideoError.VideoFail });
  233 + // that.reject && that.reject({ ...ShareVideoError.VideoFail });
  234 + if (that.reject) {
  235 + if (that.videoAd)
  236 + that.reject({ ...ShareVideoError.VideoFail })
  237 + else {
  238 + let fail = { code: 1010, msg: '查看次数过多,请稍后再看!' }
  239 + that.reject({ ...fail })
  240 + }
  241 + }
254 242 if (typeof my != 'undefined') {
255 243  
256 244 } else {
... ...
wxsdk/utils/RandomUtils.ts
... ... @@ -20,7 +20,7 @@ export default class RandomUtils {
20 20 static rand(min: number, max: number) {
21 21 min = min || 0;
22 22 max = max || 10000;
23   - return Math.floor(Math.random() * 10000) % (max - min) + min;
  23 + return Math.floor(Math.random() * 10000) % (max - min) + min;
24 24 }
25 25  
26 26 static rang(min: number, max: number) {
... ... @@ -30,5 +30,4 @@ export default class RandomUtils {
30 30 static randFloat(min: number, max: number) {
31 31 return parseFloat((Math.random() * (max - min) + min).toFixed(2));
32 32 }
33   -
34 33 }
... ...
wxsdk/utils/SDKUtils.ts
... ... @@ -65,6 +65,7 @@ export default class SDKUtils {
65 65  
66 66 // 兼容方式 - 版本比较
67 67 static compareVersion(v1: any, v2: any) {
  68 + // console.log("compareVersion", v1, v2)
68 69 v1 = v1.split('.');
69 70 v2 = v2.split('.');
70 71 let len = Math.max(v1.length, v2.length);
... ...
wxsdk/utils/SignUtils.ts
... ... @@ -11,7 +11,7 @@ export default class SignUtils {
11 11  
12 12 createSign(params: any) {
13 13 let signStr = this.createQuery(params) + '' + GAMEDATA.appkey;
14   - // console.error("signStr",signStr)
  14 + // console.error("signStr:::"+ signStr)
15 15 return Md5.hashStr(signStr);
16 16 }
17 17  
... ... @@ -71,7 +71,7 @@ export default class SignUtils {
71 71 let query = '';
72 72 for (let i = 0, len = keys.length; i < len; i++) {
73 73 // 为空,为 0的参数不参与签名,参数名为ver,pkv的参数不参与签名, 字符集为 utf-8
74   - if (params[keys[i]] == undefined ||params[keys[i]] === 'undefined' || params[keys[i]] === '' || params[keys[i]] === '0' || params[keys[i]] === 0 || keys[i] === 'ver' || keys[i] === 'pkv') continue
  74 + if (!params[keys[i]] || params[keys[i]] === '0' || keys[i] === 'ver' || keys[i] === 'pkv') continue
75 75 key = keys[i];
76 76 i && (query += '');
77 77 if (SDKUtils.isArray(params[key])) {
... ...
wxsdk/utils/StorageUtils.ts
... ... @@ -9,11 +9,7 @@ export default class StorageUtils {
9 9 private store: any = null
10 10  
11 11 constructor() {
12   - if (typeof localStorage === 'object')
13   - this.store = new Storage;
14   -
15   - if (typeof (wx) != "undefined")
16   - this.store = new WxStorage;
  12 + this.store = cc.sys.localStorage;
17 13 }
18 14  
19 15 private __isExpired(entity: any) {
... ...
wxsdk/wx/Version.ts
... ... @@ -2,20 +2,23 @@ import { __LOG__ } from &quot;../base/SDKConst&quot;;
2 2  
3 3 enum PlatformType {
4 4 WX = 'wx',
5   - QQ = 'qq'
  5 + QQ = 'qq',
  6 + MY = 'my'
6 7 }
7 8 enum Platform{
8   - PlatformType = 'wx'
  9 + PlatformType = 'my'
9 10 }
10 11 export default class Version {
11 12 private DEFUALT = '0.0.0';
12 13 private VERSION = {
13 14 createRewardedVideoAd: {
14 15 [PlatformType.WX]: '2.0.4',
15   - [PlatformType.QQ]: '0.1.26'
  16 + [PlatformType.QQ]: '0.1.26',
  17 + [PlatformType.MY]: '10.3.70'
16 18 },
17 19 createInterstitialAd: {
18   - [PlatformType.WX]: '2.6.0'
  20 + [PlatformType.WX]: '2.6.0',
  21 + [PlatformType.MY]: '10.3.66'
19 22 },
20 23 createFeedbackButton: {
21 24 [PlatformType.WX]: '2.1.2'
... ... @@ -25,7 +28,8 @@ export default class Version {
25 28 },
26 29 createBannerAd: {
27 30 [PlatformType.WX]: '2.0.4',
28   - [PlatformType.QQ]: '0.1.26'
  31 + [PlatformType.QQ]: '0.1.26',
  32 + [PlatformType.MY]: '10.3.66'
29 33 },
30 34 createGameBanner: {
31 35 [PlatformType.WX]: '2.7.5'
... ...
wxsdk/wx/WxApi.ts
... ... @@ -62,7 +62,7 @@ export default class WxApi {
62 62 if (!this.canIUse(Version.I.getVBannerAd())) return null;
63 63  
64 64 adIntervals = adIntervals || 30;
65   - return wx.createBannerAd({
  65 + return my.createBannerAd({
66 66 adUnitId,
67 67 style
68 68 });
... ... @@ -84,8 +84,9 @@ export default class WxApi {
84 84 * 创建插屏广告组件
85 85 */
86 86 createInterstitialAd(adUnitId: string) {
87   - if (!this.canIUse(Version.I.getVInterstitialAd())) return null;
88   - return wx.createInterstitialAd({
  87 + // if (!this.canIUse(Version.I.getVInterstitialAd())) return null;
  88 + if (typeof my === 'undefined') return null
  89 + return my.createInterstitialAd({
89 90 adUnitId
90 91 });
91 92 }
... ... @@ -116,7 +117,7 @@ export default class WxApi {
116 117 createRewardedVideoAd(adUnitId: string) {
117 118 if (!this.canIUse(Version.I.getVRewardedVideoAd())) return null;
118 119  
119   - return wx.createRewardedVideoAd({
  120 + return my.createRewardedAd({
120 121 adUnitId
121 122 });
122 123 }
... ... @@ -163,10 +164,10 @@ export default class WxApi {
163 164 }
164 165  
165 166 vibrateShort() {
166   - if (!this.canIUse(Version.I.getVVibrate())) return Promise.reject(null);
  167 + // if (!this.canIUse(Version.I.getVVibrate())) return Promise.reject(null);
167 168  
168 169 return new Promise((resolve, reject) => {
169   - wx.vibrateShort({
  170 + my.vibrateShort({
170 171 success: () => {
171 172 resolve(1);
172 173 },
... ... @@ -299,16 +300,25 @@ export default class WxApi {
299 300 */
300 301 login(): Promise<any> {
301 302 return new Promise((resolve, reject) => {
302   - wx.login({
303   - success: (ret: any) => {
304   - resolve(ret.code);
  303 + // wx.login({
  304 + // success: (ret: any) => {
  305 + // resolve(ret.code);
  306 + // },
  307 + // fail: (err: any) => {
  308 + // reject(err);
  309 + // WxApi.I.setAuthorize({
  310 + // errorTip: 'wx.login fail',
  311 + // ...err
  312 + // });
  313 + // }
  314 + // });
  315 + my.getAuthCode({
  316 + scopes: 'auth_base',
  317 + success: (res) => {
  318 + resolve(res.authCode);
305 319 },
306 320 fail: (err: any) => {
307 321 reject(err);
308   - WxApi.I.setAuthorize({
309   - errorTip: 'wx.login fail',
310   - ...err
311   - });
312 322 }
313 323 });
314 324 });
... ... @@ -371,8 +381,8 @@ export default class WxApi {
371 381 /**
372 382 * 米大师充值
373 383 */
374   - requestMidasPayment(params: { mode: string; env: number; offerId: string; currencyType: string; platform: string; buyQuantity: number; zoneId: string,outTradeNo:string }): Promise<any> {
375   - let { mode, env, offerId, currencyType, platform, buyQuantity, zoneId,outTradeNo } = params;
  384 + requestMidasPayment(params: { mode: string; env: number; offerId: string; currencyType: string; platform: string; buyQuantity: number; zoneId: string }): Promise<any> {
  385 + let { mode, env, offerId, currencyType, platform, buyQuantity, zoneId } = params;
376 386 console.warn('====> PCSDK WxApi requestMidasPayment 支付参数', {
377 387 mode,
378 388 env,
... ... @@ -380,8 +390,7 @@ export default class WxApi {
380 390 currencyType,
381 391 platform,
382 392 buyQuantity,
383   - zoneId,
384   - outTradeNo
  393 + zoneId
385 394 });
386 395 return new Promise((resolve, reject) => {
387 396 wx.requestMidasPayment({
... ... @@ -392,7 +401,6 @@ export default class WxApi {
392 401 platform,
393 402 buyQuantity,
394 403 zoneId,
395   - outTradeNo,
396 404 success: ret => {
397 405 if (ret && ret.errMsg === 'requestMidasPayment:ok')
398 406 resolve(ret);
... ...
wxsdk/wx/WxBanner.ts
... ... @@ -42,7 +42,15 @@ export default class WxBanner {
42 42 private queue: Function[] = [];
43 43 private isEnd: boolean = false;
44 44  
45   - create(adUnitId: string, opts?: { type?: number; bannerWidth?: number, offsetY?: number; adIntervals?: number, isOff?: boolean ,isCreate?:boolean}) {
  45 + create(adUnitId: string, opts?: { type?: number; bannerWidth?: number, offsetY?: number; adIntervals?: number, isOff?: boolean }) {
  46 + // console.log('wxbanner can not')
  47 + // console.log(my.env.clientVersion())
  48 + if (SDKUtils.compareVersion(my.env.clientVersion, '10.3.66') < 0) return null;
  49 + // let a = my.env.clientVersion()
  50 + // console.log(a)
  51 + // if (!WxApi.I.canIUse(Version.I.getVBannerAd()))
  52 + // console.log('wxbanner can')
  53 +
46 54 this.bannerParams = opts || {};
47 55 if (opts && opts.bannerWidth) {
48 56 this.bannerWidth = opts.bannerWidth;
... ... @@ -67,24 +75,19 @@ export default class WxBanner {
67 75 let style = { top: 0, left: (WxSystem.I.winWidth - this.bannerWidth) / 2, width: this.bannerWidth };
68 76 style = {
69 77 ...style,
70   - top: 0 + this.bannerParams.offsetY,
  78 + top: WxSystem.I.winHeight - 100,
71 79 };
72 80 // 创建并判断是否存在
73 81 // if (this.bannerParams.type === 2)
74 82 // this.bannerAd = wx.createGameBanner({ adUnitId, style: { left: style.left, top: this.bannerHeight } });
75 83 // else
76 84 if (this.bannerAd) {
77   - if(opts && opts.isCreate){
78   - //重新创建
79   - console.log("重新创建banner")
80   - }else{
81   - if (!opts || (opts && !opts.isOff)) {
82   - this.show(false);
83   - }
84   - return
  85 + if (!opts || (opts && !opts.isOff)) {
  86 + this.show(false);
85 87 }
  88 + return
86 89 }
87   - this.bannerAd = wx.createBannerAd({ adUnitId, style, adIntervals: this.bannerParams.adIntervals });
  90 + this.bannerAd = my.createBannerAd({ adUnitId, style, adIntervals: this.bannerParams.adIntervals });
88 91 LogService.I.adStat('banner', this.adUnitId, DOT_AD_TYPE.banner, DOT_AD_STATUS.request)
89 92 if (!this.bannerAd) {
90 93 WxBanner.I.handleQueue();
... ... @@ -204,6 +207,7 @@ export default class WxBanner {
204 207 let that = WxBanner.I;
205 208 that.unbind();
206 209 that._isErrored = true;
  210 + that.bannerAd?.destroy();
207 211 that.bannerAd = null;
208 212 that.handleQueue()
209 213 LogService.I.adStat('banner', that.adUnitId, DOT_AD_TYPE.banner, DOT_AD_STATUS.fail)
... ... @@ -213,9 +217,9 @@ export default class WxBanner {
213 217  
214 218 private unbind() {
215 219 if (this.bannerAd) {
216   - this.bannerAd.offLoad(this.onLoad);
217   - this.bannerAd.offError(this.onError);
218   - this.bannerAd.offResize(this.onResize);
  220 + // this.bannerAd.offLoad(this.onLoad);
  221 + // this.bannerAd.offError(this.onError);
  222 + // this.bannerAd.offResize(this.onResize);
219 223 }
220 224 }
221 225  
... ...
wxsdk/wx/WxCustom.ts
... ... @@ -178,9 +178,9 @@ export default class WxCustom {
178 178  
179 179 private unbind() {
180 180 if (this.customAd) {
181   - this.customAd.offLoad(this.onLoad);
182   - this.customAd.offClose(this.onClose);
183   - this.customAd.offError(this.onError);
  181 + // this.customAd.offLoad(this.onLoad);
  182 + // this.customAd.offClose(this.onClose);
  183 + // this.customAd.offError(this.onError);
184 184 }
185 185 }
186 186  
... ...
wxsdk/wx/WxInit.ts
... ... @@ -15,15 +15,15 @@ export default class WxInit {
15 15  
16 16 private constructor() {
17 17 this.onlineTime = DateUtils.nowTime;
18   - wx.onShow(this.onShow.bind(this));
19   - wx.onHide(this.onHide.bind(this));
20   - wx.onNetworkStatusChange(this.onNetworkStatusChange.bind(this));
  18 + my.onShow(this.onShow.bind(this));
  19 + my.onHide(this.onHide.bind(this));
  20 + my.onNetworkStatusChange(this.onNetworkStatusChange.bind(this));
21 21 }
22 22  
23 23 init() {
24 24 let { platform } = WxSystem.I.SystemData;
25 25 let launchData = WxLaunch.I.LaunchData;
26   - console.log("启动信息", JSON.stringify(launchData));
  26 + console.log("启动信息", launchData);
27 27 let { query, scene, referrerInfo } = launchData;
28 28 let {
29 29 invite_type,
... ... @@ -41,7 +41,6 @@ export default class WxInit {
41 41 // 抖音投放相关信息
42 42 clue_token,
43 43 ad_id,
44   - promotion_id,
45 44 creative_id,
46 45 advertister_id,
47 46 request_id
... ... @@ -59,10 +58,6 @@ export default class WxInit {
59 58 if (ad_id) {
60 59 fromChannel = ad_id;
61 60 }
62   - // 设置抖音投放转化跟踪 v2
63   - if(promotion_id){
64   - fromChannel = promotion_id;
65   - }
66 61  
67 62 //定向分享统计
68 63 if (shareMessageToFriendScene && shareMessageToFriendScene >= 0 && shareMessageToFriendScene <= 50) {
... ...
wxsdk/wx/WxLaunch.ts
... ... @@ -3,7 +3,8 @@ export default class WxLaunch {
3 3 private data: LaunchInfoSyncReturnValue;
4 4  
5 5 private constructor() {
6   - this.data = wx.getLaunchOptionsSync();
  6 + this.data = my.getLaunchOptionsSync();
  7 + // console.log('lauch--',this.data);
7 8 }
8 9  
9 10 get LaunchData() {
... ...
wxsdk/wx/WxLogin.ts
... ... @@ -8,7 +8,7 @@ import LogService from &quot;../service/LogService&quot;;
8 8 import { DOT_SHARE_TYPE } from "../base/SDKEnum";
9 9 import ShareVideoService from "../service/ShareVideoService";
10 10 import OnlineService from "../service/OnlineService";
11   -import AlipayApi from "../alipay/AlipayApi";
  11 +import AlipayApi from '../alipay/AlipayApi';
12 12  
13 13 export default class WxLogin {
14 14 /**
... ... @@ -18,21 +18,25 @@ export default class WxLogin {
18 18 * tip2:必须先调用wxLogin才能使用getUserInfo
19 19 */
20 20 async login(isAuthorize: boolean): Promise<any> {
21   - if (typeof my !== 'undefined') {
  21 +
  22 + if (cc.sys.platform === cc.sys.BYTEDANCE_GAME) {
  23 + return
  24 + } else if (cc.sys.platform === cc.sys.ALIPAY_GAME) {
  25 + let self = this;
22 26 return new Promise(async (resolve, reject) => {
23   - console.log("-----login4-------")
24   - let code = await AlipayApi.I.login();
25   - console.log("-----login5-------")
26   - console.log(code)
27 27 if (isAuthorize) {
28 28 AlipayApi.I.getUserinfo()
29   - .then((ret: any) => this.authedlogin(ret, code, resolve, reject))
30   - .catch((err: any) => this.weakLogin(err, code, resolve, reject));
  29 + .then((ret: any) => this.authedlogin(ret, ret.authCode, resolve, reject))
  30 + .catch(async (err: any) => {
  31 + let code = await AlipayApi.I.login();
  32 + self.weakLogin(err, code, resolve, reject);
  33 + });
31 34 } else {
32   - this.weakLogin({ errCode: 1, msg: '默认未授权登录' }, code, resolve, reject)
  35 + let code = await AlipayApi.I.login();
  36 + self.weakLogin({ errCode: 1, msg: '默认未授权登录' }, code, resolve, reject)
33 37 }
34 38 });
35   - } else {
  39 + } else if (cc.sys.platform === cc.sys.WECHAT_GAME) {
36 40 return new Promise(async (resolve, reject) => {
37 41 let code = await WxApi.I.login();
38 42 if (isAuthorize) {
... ... @@ -107,9 +111,7 @@ export default class WxLogin {
107 111 * @param isAuthorize 是否授权:true=已授权 false=没有授权成功
108 112 */
109 113 private handleLogin(data: any, resolve: any, isAuthorize: boolean) {
110   - // console.log("登录请求结果data", data)
111   -
112   - console.log("-----login5-------")
  114 + console.log("登录请求结果data"+JSON.stringify(data))
113 115 if (data) {
114 116 // 设置登录信息
115 117 if (data.data) {
... ... @@ -135,13 +137,11 @@ export default class WxLogin {
135 137 }
136 138 try { //修改时间后会报错,未找到原因
137 139 this.handleExpire(expire)
  140 + // 支付宝会报错,如有自定义分享请解决
  141 + // ShareVideoService.I.forward()
138 142 } catch (error) {
139 143 console.log("handleExpire_error", error)
140 144 }
141   - // 支付宝没有
142   - if(typeof my == 'undefined'){
143   - ShareVideoService.I.forward()
144   - }
145 145 }
146 146 }
147 147 resolve(data)
... ... @@ -209,11 +209,7 @@ export default class WxLogin {
209 209 refToken: reftoken,
210 210 expire,
211 211 });
212   - try { //修改时间后会报错,未找到原因
213   - this.handleExpire(expire)
214   - } catch (error) {
215   - console.log("handleExpire_error", error)
216   - }
  212 + this.handleExpire(expire)
217 213 })
218 214 }
219 215  
... ...
wxsdk/wx/WxPay.ts
... ... @@ -23,8 +23,7 @@ export default class WxPay {
23 23 offerId: OfferId,
24 24 currencyType: CurrencyType,
25 25 buyQuantity: params.money / 10,
26   - zoneId: ZoneId,
27   - outTradeNo:params.orderid
  26 + zoneId: ZoneId
28 27 };
29 28 let extend = "";
30 29 for (let key in opts) {
... ... @@ -49,7 +48,7 @@ export default class WxPay {
49 48 WxApi.I.requestMidasPayment(pms)
50 49 .then(() => this.handlePaySuccess({ ...params, platform }, opts, resolve, reject))
51 50 .catch(err => this.handlePayError({ ...params, platform }, opts, err, reject));
52   - } else {
  51 + }else{
53 52 reject(res);
54 53 }
55 54 })
... ... @@ -91,7 +90,7 @@ export default class WxPay {
91 90 }
92 91  
93 92 private handlePayError(data: { payid: string, goodid: string, money: number; orderid: string, platform: string }, opts, err: any, reject: any) {
94   - console.log("handlePayError支付失败", JSON.stringify(err));
  93 + console.log("支付失败", JSON.stringify(err));
95 94 let type = 2;
96 95 if (err.errCode + '' == '1') {
97 96 type = 3;
... ...
wxsdk/wx/WxSystem.ts
... ... @@ -3,7 +3,8 @@ export default class WxSystem {
3 3 private data: SystemInfoSyncReturnValue;
4 4  
5 5 private constructor() {
6   - this.data = wx.getSystemInfoSync();
  6 + this.data = my.getSystemInfoSync();
  7 + // console.log('WxSystem',this.data)
7 8 }
8 9  
9 10 get SystemData() {
... ... @@ -42,7 +43,8 @@ export default class WxSystem {
42 43 }
43 44  
44 45 get SDKVersion() {
45   - return this.data.SDKVersion || this.data.version;
  46 + //version 是支付宝返回的
  47 + return this.data.SDKVersion||this.data.version;
46 48 }
47 49  
48 50 get brand() {
... ...