提交 aa2b803b 作者: 王进

同步微信版本

上级 ef018f1f
/** /**
* 鲸鱼游戏QQ小游戏接入库 * 鲸鱼游戏QQ小游戏接入库
* @author 推广技术部 * @author 推广技术部
* @time: 2019-09-25 * @time: 2019-12-03
*/ */
class QQSDK { class QQSDK {
private sdkVersion: string = '1.1' private sdkVersion: string = '1.2'
public constructor() { public constructor() {
this.sdkInit() this.sdkInit()
this.timerInit(); this.timerInit();
...@@ -60,14 +60,10 @@ class QQSDK { ...@@ -60,14 +60,10 @@ class QQSDK {
product_code: qq_SDKConfig.productCode, product_code: qq_SDKConfig.productCode,
activity_id: _self.actId activity_id: _self.actId
} }
let res = await this.sdkRequest(qqLinks.getActShareInfo, postData, 'POST').catch(err => { let { code, data} = await this.sdkRequest(qqLinks.getActShareInfo, postData, 'POST').catch(err => {
console.log("@@SDK异常::getActiveShareInfo", err); console.log("@@SDK异常::getActiveShareInfo", err);
}); });
if (res.code == 0) { return code == 0 ? data : 0;
return res.data;
} else {
return 0;
}
} }
public async Login() { public async Login() {
const _selt = this; const _selt = this;
...@@ -76,12 +72,12 @@ class QQSDK { ...@@ -76,12 +72,12 @@ class QQSDK {
appid: qq_SDKConfig.appid, appid: qq_SDKConfig.appid,
code: loginPromise.code code: loginPromise.code
}) })
let sdkLoginData = await _selt.sdkRequest(qqLinks.init, loginPostData).catch(err => { let { code, data } = await _selt.sdkRequest(qqLinks.init, loginPostData).catch(err => {
_selt.Login() _selt.Login()
}); });
if (sdkLoginData.code == 0) { if (code == 0) {
_selt.ReportParams.openId = _selt.sdkParams.open_id = _selt.sdkParams.uniqueid= _selt.heartParams.uuid = sdkLoginData.data.openid; _selt.ReportParams.openId = _selt.sdkParams.open_id = _selt.sdkParams.uniqueid = _selt.heartParams.uuid = data.openid;
_selt.sdkParams.session_key = sdkLoginData.data.session_key; _selt.sdkParams.session_key = data.session_key;
if (_selt.actId) { if (_selt.actId) {
let shareInfo = { let shareInfo = {
activity_id: _selt.actId, activity_id: _selt.actId,
...@@ -98,28 +94,31 @@ class QQSDK { ...@@ -98,28 +94,31 @@ class QQSDK {
private async sdkActive() { private async sdkActive() {
const _selt = this const _selt = this
console.log("@@SDK激活", _selt.sdkParams) console.log("@@SDK激活", _selt.sdkParams)
let sdkActData = await _selt.sdkRequest(qqLinks.active, this.sdkParams).catch(err => { let { code, data, msg } = await _selt.sdkRequest(qqLinks.active, this.sdkParams).catch(err => {
console.log("@@SDK激活异常:", err) console.log("@@SDK激活异常:", err)
_selt.sdkAlert("@@SDK激活异常:" + err) _selt.sdkAlert("@@SDK激活异常:" + err)
}); });
_selt.sdkParams.pay_channel = sdkActData.data.default_pay_channel; if (code == 0) {
_selt.getAuthorize = sdkActData.data.weixin_from; _selt.sdkParams.pay_channel = data.default_pay_channel;
_selt.ActiReport(); // 上报激活 _selt.ActiReport(); // 上报激活
} else {
_selt.sdkAlert(msg);
}
return _selt.sdkLogin(); return _selt.sdkLogin();
} }
private async sdkLogin() { private async sdkLogin() {
const _selt = this const _selt = this
// 获取用户信息 // 获取用户信息
_selt.sdkParams.token = '' // 强制清空登录toekn _selt.sdkParams.token = '' // 强制清空登录toekn
let sdkLoginData = await _selt.sdkRequest(qqLinks.login, _selt.sdkParams).catch(err => { let { code, data } = await _selt.sdkRequest(qqLinks.login, _selt.sdkParams).catch(err => {
console.log("@@SDK登陆异常:", err) console.log("@@SDK登陆异常:", err)
_selt.sdkAlert("@@SDK登陆异常:" + err) _selt.sdkAlert("@@SDK登陆异常:" + err)
}); });
if (sdkLoginData.code == 0) { if (code == 0) {
// 根据SDK返回用户状态来判断用户是否注册 // 根据SDK返回用户状态来判断用户是否注册
_selt.sdkParams.token = sdkLoginData.data.token // 记录用户toekn _selt.sdkParams.token = data.token // 记录用户toekn
_selt.ReportParams.userId= _selt.heartParams.userid = sdkLoginData.data.uid // 记录用户ID _selt.ReportParams.userId = _selt.heartParams.userid = data.uid // 记录用户ID
let LoginCallBack = _selt.deepCopy({}, sdkLoginData.data, { let LoginCallBack = _selt.deepCopy({}, data, {
os: _selt.sdkParams.os, // 返回系统类型IOS或者android os: _selt.sdkParams.os, // 返回系统类型IOS或者android
session_key: _selt.sdkParams.session_key // 返回session_key session_key: _selt.sdkParams.session_key // 返回session_key
}) })
...@@ -128,8 +127,7 @@ class QQSDK { ...@@ -128,8 +127,7 @@ class QQSDK {
} }
} }
public async payOrderStatus(Params) { public async payOrderStatus(Params) {
let payResult = await this.payOrder(Params, false); return await this.payOrder(Params, false);
return payResult;
} }
// SDK支付接口 // SDK支付接口
public async payOrder(Params, showSDKAlert = true) { public async payOrder(Params, showSDKAlert = true) {
...@@ -198,52 +196,49 @@ class QQSDK { ...@@ -198,52 +196,49 @@ class QQSDK {
return 3023; return 3023;
} else { // 输出订单失败消息 } else { // 输出订单失败消息
const errmsg = res.msg || '支付失败..' const errmsg = res.msg || '支付失败..'
if (showSDKAlert) _selt.sdkAlert(errmsg); if (showSDKAlert) {
const params = {
title: '支付提示',
content: errmsg,
showCancel: false
}
_selt.showModal(params);
}
return 0; return 0;
} }
} }
private async getCoins(orderParams) { // 通知服务端扣费 private async getCoins(orderParams) { // 通知服务端扣费
console.log("@@SDK通知扣费", orderParams) console.log("@@SDK通知扣费", orderParams)
let coinsResult = await this.sdkRequest(qqLinks.pay, orderParams).catch(err => { return await this.sdkRequest(qqLinks.pay, orderParams).catch(err => {
console.log("@@SDK异常::getCoins", err); console.log("@@SDK异常::getCoins", err);
}); });
return coinsResult;
} }
public async checkUserPhoneBind() { // 查询用户绑定状态 public async checkUserPhoneBind() { // 查询用户绑定状态
const _selt = this; const _selt = this;
let postData = _selt.deepCopy({}, _selt.sdkParams, { uid: _selt.ReportParams.userId }); let postData = _selt.deepCopy({}, _selt.sdkParams, { uid: _selt.ReportParams.userId });
let bindType = await _selt.sdkRequest(qqLinks.bindPhone, postData); let { code } = await _selt.sdkRequest(qqLinks.bindPhone, postData);
return (bindType.code == 0); return (code == 0);
} }
public async phoneCode(phoneInfo, callback) { public async phoneCode(phoneInfo) {
const _selt = this; const _selt = this;
let postData = this.deepCopy({}, _selt.sdkParams, phoneInfo); let postData = this.deepCopy({}, _selt.sdkParams, phoneInfo);
postData.type = 'SDK.BIND_MOBILE'; // 小程序专属短信类型 postData.type = 'SDK.BIND_MOBILE'; // 小程序专属短信类型
// 发送验证码接口 // 发送验证码接口
let res = await this.sdkRequest(qqLinks.sendCode, postData).catch(err => { let { code } = await this.sdkRequest(qqLinks.sendCode, postData).catch(err => {
console.log("@@SDK::验证码发送失败", err); console.log("@@SDK::验证码发送失败", err);
_selt.sdkAlert("发送失败,请重试.."); _selt.sdkAlert("发送失败,请重试..");
}); });
if (res.code == 0) { return code == 0;
callback(true);
} else {
callback(false);
} }
} public async userPhone(phoneInfo) {
public async userPhone(phoneInfo, callback) {
const _selt = this; const _selt = this;
let postData = this.deepCopy({}, _selt.sdkParams, phoneInfo); let postData = this.deepCopy({}, _selt.sdkParams, phoneInfo);
postData.source = 'WEIXIN'; // 用户平台来源 postData.source = 'WEIXIN'; // 用户平台来源
//保存用户手机信息 //保存用户手机信息
let res = await this.sdkRequest(qqLinks.saveNum, postData).catch(err => { let {code, msg } = await this.sdkRequest(qqLinks.saveNum, postData).catch(err => {
console.log("@@SDK::保存手机失败", err); console.log("@@SDK::保存手机失败", err);
}); });
if (res.code == 0) { return code == 0;
callback(true);
} else {
console.log("@@绑定失败::", res.msg);
callback(false);
}
} }
public async checkUserAdvised() { // 防沉迷验证 public async checkUserAdvised() { // 防沉迷验证
const _selt = this; const _selt = this;
...@@ -373,7 +368,7 @@ class QQSDK { ...@@ -373,7 +368,7 @@ class QQSDK {
const _selt = this const _selt = this
await (qq as any).getNetworkType({ await (qq as any).getNetworkType({
success: (res) => { success: (res) => {
_selt.ReportParams.networkType= _selt.heartParams.info.network = res.networkType _selt.ReportParams.networkType = _selt.heartParams.info.network = res.networkType
}, },
fail: (err) => { fail: (err) => {
console.log("@@SDK错误->getNetworkType", err) console.log("@@SDK错误->getNetworkType", err)
...@@ -385,7 +380,7 @@ class QQSDK { ...@@ -385,7 +380,7 @@ class QQSDK {
await (qq as any).getSystemInfo({ await (qq as any).getSystemInfo({
success: (res) => { success: (res) => {
console.log('##', res); console.log('##', res);
_selt.ReportParams.model = _selt.sdkParams.equipmentname= _selt.heartParams.info.model = res.model _selt.ReportParams.model = _selt.sdkParams.equipmentname = _selt.heartParams.info.model = res.model
_selt.ReportParams.screenWidth = res.screenWidth _selt.ReportParams.screenWidth = res.screenWidth
_selt.ReportParams.screenHeight = res.screenHeight _selt.ReportParams.screenHeight = res.screenHeight
_selt.heartParams.resolution = res.screenWidth + '*' + res.screenHeight _selt.heartParams.resolution = res.screenWidth + '*' + res.screenHeight
...@@ -445,6 +440,32 @@ class QQSDK { ...@@ -445,6 +440,32 @@ class QQSDK {
const obj = this.heartParams; const obj = this.heartParams;
const tmp = Date.parse(new Date().toString()).toString() // 获取请求的时间戳秒 const tmp = Date.parse(new Date().toString()).toString() // 获取请求的时间戳秒
obj.time = obj.gentime = tmp.substr(0, 10); obj.time = obj.gentime = tmp.substr(0, 10);
obj.action = 'heartBeat';
obj.content.click_times = null;
this.reportEncode(obj);
setTimeout(function () {
_selt.heartBeat();
_selt.clickReport();
}, 60000);
}
// 上报点击
private clickCounter = 0 // 当前用户点击次数
public userClickEvent() {
this.clickCounter++;
// console.log("--SDK当前点击次数", this.clickCounter);
}
private async clickReport() {
if (this.clickCounter > 0) {
const obj = this.heartParams;
const tmp = Date.parse(new Date().toString()).toString() // 获取请求的时间戳秒
obj.time = obj.gentime = tmp.substr(0, 10);
obj.action = 'userappclick';
obj.content.click_times = this.clickCounter;
await this.reportEncode(obj);
}
this.clickCounter = 0; // 上报后归零
}
private reportEncode(obj) {
let keys = Object.keys(obj).sort(); let keys = Object.keys(obj).sort();
let key_url = ""; let key_url = "";
for (let i = 0; i < keys.length; i++) { for (let i = 0; i < keys.length; i++) {
...@@ -452,9 +473,6 @@ class QQSDK { ...@@ -452,9 +473,6 @@ class QQSDK {
} }
obj.sign = md5(key_url + 'BA886FF52827126DCD18E73E0E16420C') obj.sign = md5(key_url + 'BA886FF52827126DCD18E73E0E16420C')
this.request(qqLinks.heartReport, obj, 'POST'); this.request(qqLinks.heartReport, obj, 'POST');
setTimeout(function () {
_selt.heartBeat();
}, 60000);
} }
// 上报激活 // 上报激活
public ActiReport() { public ActiReport() {
...@@ -865,7 +883,9 @@ class QQSDK { ...@@ -865,7 +883,9 @@ class QQSDK {
wifiname: "" wifiname: ""
}, },
source: "weixinmp-api", source: "weixinmp-api",
content: "" content: {
click_times: 0
}
} }
// 统计上报参数 // 统计上报参数
private ReportParams = { private ReportParams = {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论