"use strict"; cc._RF.push(module, '5c5bd9NS+JOaLaYqbUdHfeN', 'qq_sdk'); // Scripts/sdks/qq_sdk.js "use strict"; // window.PLATFORM = "qq"; // 平台号 // window.PACKAGE_VERSION = "_0_0_2"; // window.CHANNEL = "h5sszg_qq"; // 渠道号 window.PACKAGE_NAME = "闪烁之光口袋版"; // 渠道号 var LoginController = require("login_controller"); var RoleController = require("role_controller"); var VipEvent = require("vip_event"); var QQSDK = function QQSDK() {}; QQSDK.account_info = null; QQSDK.user_info = null; QQSDK.initSDK = function () { console.log("QQSDK相关"); console.log(window); if (!window.qq) return; this.initTopInfo(); window.CHANNEL = "h5youyi_qq"; window.PLATFORM_NAME = "wb"; window.PLATFORM = "wb"; qq.setKeepScreenOn({ keepScreenOn: true }); qq.onShow(function (res) { qq.setKeepScreenOn({ keepScreenOn: true }); }); qq.onHide(function (res) { qq.setKeepScreenOn({ keepScreenOn: false }); }); qq.showShareMenu({ showShareItems: ['qq', 'qzone', 'wechatFriends', 'wechatMoment'], success: function success() { qq.onShareAppMessage(function () { return { imageUrl: "https://s2.ax1x.com/2019/09/21/nvzZlj.png" // 图片 URL }; }); } }); qq.getSetting({ success: function success(res) { cc.log(res); if (res.authSetting["scope.userInfo"]) { QQSDK.checkLoginStatus(); } else { var info = qq.getSystemInfoSync(); var button = qq.createUserInfoButton({ type: 'text', text: '', style: { left: 0, //info.screenWidth/2-80, top: info.screenHeight / 2, //info.windowHeight - info.windowHeight/3, width: info.screenWidth, //160, height: info.screenHeight / 2, //40, lineHeight: 0, backgroundColor: '', color: '#ffffff', textAlign: 'center', fontSize: 16, borderRadius: 4 } }); button.show(); button.onTap(function (res) { button.hide(); QQSDK.checkLoginStatus(); console.log(res); }); } } }); }; QQSDK.initTopInfo = function () { var menuInfo = qq.getMenuButtonBoundingClientRect(); var systemInfo = qq.getSystemInfoSync(); if (menuInfo.top > 30) { window.WX_FIT = menuInfo.top / systemInfo.screenHeight * 0.7 || 0; } else { window.WX_FIT = menuInfo.top / systemInfo.screenHeight * 0.1 || 0; } console.log("QQ小游戏菜单栏的适配值"); cc.log(WX_FIT); }; QQSDK.checkLoginStatus = function () { // 获取本地key try { var value = this.account_info = qq.getStorageSync('account_info'); if (value) { QQSDK.checkSessionKey(value); } else { QQSDK.login(); } } catch (e) {// Do something when catch error } }; QQSDK.login = function () { if (window.qq) { qq.login({ success: function success(res) { if (res.code) { //发起网络请求 cc.log("初始化登录信息返回"); cc.log(res); qq.request({ url: 'https://s1-wb-h5sszg.shiyuegame.com/api.php/pf/qq/login', method: "POST", data: { js_code: res.code, cps: "qqtest" }, header: { 'content-type': 'application/json' // 默认值 }, success: function success(res) { cc.log("服务器登录信息返回"); cc.log(res); if (res && res.data) { if (res.data.error == 666) { // 请求成功 try { console.log("保存用户信息到本地"); cc.log(res.data.msg); QQSDK.account_info = res.data.msg; qq.setStorageSync('account_info', res.data.msg); // 请求成功开始登录游戏 QQSDK.initUserInfo(); } catch (e) {} } } } }); } else { console.log('登录失败!' + res.errMsg); } } }); } }; QQSDK.checkSessionKey = function (data) { cc.log("校验key是否过期"); qq.checkSession({ success: function success() { // 没有失效,继续登录 QQSDK.initUserInfo(); }, fail: function fail() { // session_key 已经失效,需要重新执行登录流程 QQSDK.login(); } }); }; QQSDK.initUserInfo = function () { qq.getUserInfo({ success: function success(res) { QQSDK.user_info = res; cc.log("获取用户信息成功"); cc.log(res); QQSDK.setLoginData(res); }, fail: function fail(res) { cc.log("获取用户信息失败"); } }); }; QQSDK.setLoginData = function (user_info) { this.user_info = user_info; this.sdkBackLogin(); }; // SDK登录成功回调 QQSDK.sdkBackLogin = function () { var login_data = {}; login_data.usrName = "qq_" + this.account_info.openid; login_data.password = "qq123456"; console.log("QQ数据初始花成功,开始请求服务器列表"); LoginController.getInstance().loginPlatformRequest(login_data); }; QQSDK.loginGame = function () { var test_acount = LoginController.getInstance().getTestAccount(); cc.log("使用了QQ测试账号"); cc.log(test_acount); // SDK请求登录游戏 var login_data = {}; if (test_acount) { login_data.account = test_acount; } else { login_data.account = "qq_" + this.account_info.openid; } login_data.rawData = this.user_info.rawData; login_data.signature = this.user_info.signature; login_data.channel = CHANNEL; login_data.package_name = PACKAGE_NAME; login_data.package_version = PACKAGE_VERSION; login_data.platform = PLATFORM; login_data.token = QQSDK.account_info.session_key; login_data.timestamp = QQSDK.account_info.time; login_data.sign = QQSDK.account_info.sign; LoginController.getInstance().cusSDKLogin(login_data); }; // 通知服务器成功 QQSDK.submitLogin = function (url) { if (url) { var submit_url = "https://" + url + "/api.php/pf/qq/session"; console.log(submit_url); console.log(QQSDK.account_info); qq.request({ url: submit_url, method: "POST", data: { session_key: QQSDK.account_info.session_key, openid: QQSDK.account_info.openid, time: QQSDK.account_info.time, sign: QQSDK.account_info.sign, cps: "qqtest" }, header: { 'content-type': 'application/json' // 默认值 }, success: function success(res) { cc.log("服务器登录信息返回"); cc.log(res); if (res && res.data) { console.log(res.data); if (res.data.error == 666) {// 请求成功 } } } }); } }; QQSDK.getCurrChannel = function () {}; QQSDK.canvasToTempFilePath = function () { var canvas = cc.game.canvas; canvas.toTempFilePath({ x: 0, y: 510 * canvas.height / 1280, width: canvas.width, height: 550 * canvas.height / 1280, destWidth: 500, destHeight: 400, fileType: "jpg", success: function success(res) { //.可以保存该截屏图片 qq.shareAppMessage({ imageUrl: res.tempFilePath }); }, fail: function fail(res) { //.可以保存该截屏图片 qq.shareAppMessage({ imageUrl: "https://s2.ax1x.com/2019/09/21/nvzZlj.png" // 图片 URL }); } }); }; QQSDK.getSubChannel = function () {}; // QQ小游戏余额查询 QQSDK.checkBalance = function () { var loginInfo = LoginController.getInstance().model.getLoginInfo(); var data = { openid: this.account_info.openid, time: QQSDK.account_info.time, sign: QQSDK.account_info.sign, cps: "qqtest" }; qq.request({ url: "https://" + loginInfo.host + "/api.php/pf/qq/balance", method: "POST", data: data, header: { 'content-type': 'application/json' // 默认值 }, success: function success(res) { if (res && res.data) { if (res.data.error == 666) { // 请求成功 try { if (res.data.msg) { gcore.GlobalEvent.fire(VipEvent.UPDATA_QQ_BALANCE, res.data.msg.remainder); } } catch (e) {} } } } }); }; //支付 QQSDK.pay = function (money, buyNum, prodId, productName, productDesc, extension, coinNum) { var payCallFunc = function () { var loginInfo = LoginController.getInstance().model.getLoginInfo(); var roleVo = RoleController.getInstance().getRoleVo(); if (roleVo == null) return; var severInfo = roleVo.srv_id.split("_"); var platform = severInfo[0] || ""; var zone_id = severInfo[1]; var systemInfo = qq.getSystemInfoSync(); var systemName = systemInfo.system; var pf = ""; if (systemName.indexOf("iOS") > -1) {// return; } else if (systemName.indexOf("Android") > -1) { pf = "qq_m_qq-2001-android-2011"; } //时间戳 var date_time = Math.ceil(Date.now() / 1000); productName = productName || money * 10 + "钻石"; var cps = "qqtest"; var channel = CHANNEL; var _extension = roleVo.rid + "$$" + platform + "$$" + zone_id + "$$" + channel + "$$" + prodId + "$$" + productName + "$$" + cps + "$$" + date_time; cc.log("拓展参数_extension==>", _extension); var base_64 = require("base64").Base64; _extension = base_64.encode(_extension); qq.request({ url: "https://" + loginInfo.host + "/api.php/pf/qq/pre_pay", method: "POST", data: { openid: this.account_info.openid, zone_id: zone_id, pf: pf, amt: money * 10, good_num: 1, time: QQSDK.account_info.time, sign: QQSDK.account_info.sign, app_remark: _extension, cps: cps }, header: { 'content-type': 'application/json' // 默认值 }, success: function success(res) { console.log("预下单返回"); console.log(res); if (res && res.data) { if (res.data.error == 666) { // 请求成功 try { qq.requestMidasPayment({ prepayId: res.data.msg.prepayId, starCurrency: money * 10, success: function success(res) { console.log("支付回调成功", res); }, fail: function fail(res) { console.log("支付回调失败", res); }, complete: function complete(res) { console.log("支付回调complete", res); } }); } catch (e) {} } } } }); }.bind(this); require("tips_controller").getInstance().showFirstCharge(payCallFunc); }; module.exports = QQSDK; cc._RF.pop();