提交 aa2b803b 作者: 王进

同步微信版本

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