微信、QQ小程序/小游戏接入简介(JavaScript版本)

为接入平台的相关数据,平台提供了一个简单的小程序接入SDK(SDWMiniSDK),CP在打包的时候请注意使用环境哦。具体接入操作说明如下。

注意事项

此SDK兼容了闪电玩H5版本的功能,在调取的时候,需要注意:

1.CP如果想要在接入后,打包成小游戏H5版本的情况下,可使用useSdw字段来判断是否要自动注入相应的H5版本文件,文件加载完成后,会将原先的sdw挂载到sdk.sdw这个属性下。

2.如果选择了自动注入,之前的sdw写法全部改成:

// 用法改写示例说明
// sdw[type](args);            ==>   sdk.use_H5_sdw(type,args);
// sdw.requestFullScreen();    ==>   sdk.use_H5_sdw('requestFullScreen');
// sdw.chooseSDWPay(payData);  ==>   sdk.use_H5_sdw('chooseSDWPay',payData);

3.否则,如果想要打包成H5版本的话,CP就需要自行分批打包处理(按照接小游戏和闪电玩平台两套接入)。

4.为了区分各个渠道的统计,CP的channel都是通过sdk.getChannel()获取,并且保持统一(初始化的时候传入的channel值是默认的channel,如果开启游戏的时候有第三方的channel,sdk会覆盖)。

5.手Q小程序小游戏文档内容和微信一致,SDK不一样,下载链接在文档的SDK初始化部分

6.微信和QQ小程序/小游戏的sdk几乎一样,QQ多查询星币余额和内容安全2个接口。详情看后续文档

接入前准备

a. 在《微信公众平台后台》中,需要添加安全域名(request合法域名)如下:

https://auth.shandw.com/(平台账号授权)
https://platform.shandw.com/(平台数据获取)
https://sttc.shandw.com/(平台统计数据)
https://wxpush.shandw.com/(QQ的内容安全接口,微信不需要)

b. 登录后台获取小程序的 wxAppIdwxKey (请注意保管,如果秘钥有变更,务必通知平台进行替换),提供给平台对接人员。

c. 向平台索要平台的 channelappIdkey,如果之前接入过H5版本的,不用重新生成(除非有特殊要求)。

d. 对接人员将appIdkeywxAppIdwxKey,添加到闪电玩平台后台中,否则会出现授权失败appid not found

参数名称说明如下。

参数名 类型 说明
channel String 闪电玩平台在创建游戏的时候,生成的channel
appId String 闪电玩平台在创建游戏的时候,生成的appId
key String 闪电玩平台在创建游戏的时候,生成的key
wxAppId String 微信小游戏的appId,微信后台提取
wxKey String 微信小游戏的密钥,微信后台提取,确保两者的密钥是一致的(后台可以重新生成密钥,更新后,需要及时通知闪电玩平台,一般都不会去重新生成密钥)

SDK下载+初始化

在游戏代码中,引入平台的接入SDK文件,用于后续的接入操作,SDK有如下几种类型,开发者可根据支持度自行选择。
如果是TypeScript开发者,请下载window版本,然后新建一个*.d.ts文件,declare const SDWMiniSDK:any;

微信SDK文件下载地址 类型 说明
SDWMiniSDK CommonJS 使用require导入
SDWMiniSDK Window 使用window.SDWMiniSDK

注:手Q SDK文件下载地址(文档内容一致,sdk不一样)

QQ SDK文件下载地址 类型 说明
QQ_SDWMiniSDK CommonJS 使用require导入
QQ_SDWMiniSDK Window 使用window.SDWMiniSDK

下载完SDK,并且拿到相应的参数后,可对SDK进行初始化操作。

示例代码:

var SDWMiniSDK = require("SDWMiniSDK"); // 支持require的使用

var sdk = new SDWMiniSDK({
    wxAppId:wxAppId,         // 微信小游戏的APPID
    channel:channel,         // 平台给予的平台channel
    appId:appId,             // 闪电玩平台的appId
    useSdw:false,            // 是否在H5版本中自动注入sdw,dhpay文件
});

var CHANNEL = sdk.getChannel();  // 获取渠道号(注意事项4)

之后所有的CHANNEL以这个为准,如果服务端需要用到channel参与校验的,需要前端将此CHANNEL通知给后台,确保前后端的channel的一致,用于数据的区分处理。

获取用户信息

使用初始化后sdk的getAuthInfo(option),用户获取平台的用户信息,option参数如下说明。

参数名 类型 说明
ignore Boolean true:忽略用户授权;false:正常授权,获取用户信息(头像,昵称等)
success Function 成功回调函数,经过平台转换后,正确得到闪电玩平台的用户数据。
fail Function 失败回调函数。

登录的流程图如下所示:

示例代码:

sdk.getAuthInfo({
  ignore:false,
  success:function(res){
	console.log('用户信息数据:',res);
  },
  fail:function(res){
	console.log(res);
  }
});

Tips:

1.如果需要对小游戏用户信息进行校验(具体检验需要CP自行实现),sign加密方式如下,前端的sign和time通过res中获取,key是保存在服务端的闪电玩平台密钥。其中: sign = md5("channel=" + channel + "&appid=" + appid + "&time=" + time + "&openid=" + openid + "&uid=" + uid+ key)

2.授权失败后的处理流程,请详见《用户授权失败处理流程》

获取启动参数

调用sdk的getLaunchQuery(all),返回一个启动参数对象,具体传入的参数说明如下。

参数名 类型 说明
all Boolean true:获取全部启动的参数(包含启动场景值scene等);false:只获取query部分

建议:需要使用的时候再获取,如果小游戏还在后台中运行,又新开一个不同参数的同一小游戏,此时需要重新获取,来更新参数值。
如果需要获取场景值,部分场景值需要不同的基础库来支持,详情参阅《微信小程序场景值说明》

设置分享

调用sdk的onSetShareOperate(option),可自定义分享文案,传入的参数说明如下。

参数名 类型 说明
title String 小程序分享的标题
imageUrl String 转发显示图片的链接,可以是网络图片路径或本地图片文件路径或相对代码包根目录的图片文件路径(微信小程序的图片比例为,5:4)
query String 查询字符串,必须是 key1=val1&key2=val2 的格式,没有则不填。
fastShare Boolean 分享设置字段,true表示立马唤起分享界面,false表示仅仅设置分享文案(具体分享需要用户主动去点击右上角的分享相关功能)
shareId Int 分享id(一般通过接入分享统计功能的时候会有此字段),用于分享统计(可统计唤起分享,分享成功,通过分享打开等等的数据)
success Function 分享回调函数
fail Function 分享回调函数

示例代码:

sdk.onSetShareOperate({
  title: '游戏分享标题',
  imageUrl: '',
  query:'parm1=a&parm2=b',
  fastShare:false,    // 是否快速转发,false表示设置
  shareId:111,  // 分享文案的统计id
  success:function (res) {
    // 转发成功
  },
  fail:function (res) {
    // 转发失败
  }
});

对于分享回调函数,微信声称可能会取消分享回调的功能,如果在模拟器工具上和手机上,出现没有回调的情况,纯属正常现象。

排行榜接入指南

游戏的排行榜接入,详情请参阅《游戏排行榜接入指南》

使用其他H5的sdw接口的改写

此方法改写,尚不完善,不建议使用。
此种写法主要是兼容H5版本的使用,CP也可以根据sdk.onMiniProgram和sdk.sdw(原先的sdw对象)自行组合调用。

// 调用支付
sdk.use_H5_sdw('chooseSDWPay',payData);

关注公众号信息

平台的关注信息接入具体接入请点击《关注公众号信息接入指南》

小游戏悬浮窗信息获取

通过调用sdk的getSdwAdInfo(option),获取悬浮窗的相关信息。

示例代码:

sdk.getSdwAdInfo({
  id: ID || appId,   // 广告ID,没有特定广告ID,则填写appId
  success:function (res) {
    console.log('获取到的数据:',res);
  },
  fail:function (res) {
    // 获取失败
  }
});

其中res的数据结构详情见《游戏悬浮窗数据结构说明》

支付接入指南

小游戏的支付,详情请见《支付接入指南》

小游戏打开小程序

调用sdk的goToSdw(option),即可打开小程序(小程序和小游戏必须符合相互跳转的规则),option可传入如下参数。

参数名 类型 说明
appId String 打开小程序的id,不填则为《闪电玩娱乐大厅》小程序
data Object 参数对象,可向小程序中传入参数,data对象内只能是Number,String,Boolean类型
path String 打开小程序的路径,默认是平台首页,需要明确路劲的时候才可填写

微信跳转规则变更,需要小游戏在game.json中配置navigateToMiniProgramAppIdList,将需要跳转的小程序微信id添加到允许列表中。

// game.json
{
    "navigateToMiniProgramAppIdList":[
        "微信小程序(小游戏)id"
    ]
}

示例代码:

sdk.goToSdw({
    path: '',
    appId: '',
    data: {
        param1: 'a',
        param2: 'c',
    }
});

小游戏数据上报

可将微信小游戏的相关数据上报给平台,做相应的统计分析,调用wxGameUpload(option),option参数入如下说明。

参数名 类型 说明
serverno String 游戏分区标识
servername String 游戏分区名称
rolename String 游戏角色名称
rolelevel String 游戏角色等级
remark String 透传参数
success Function 上报成功的回调函数
fail Function 上报失败的回调函数

示例代码:

sdk.wxGameUpload({
    serverno: 'serverno游戏分区标识',
    servername: 'servername分区名称',
    rolename: 'rolename角色名',
    rolelevel: 'rolelevel角色等级',
    remark: 'remark透传参数',
    success: function (res) {
        // 转发成功
        console.log('upload success');
    },
    fail: function (res) {
        // 转发失败
        console.log('upload fail');
    }
});

闪电玩用户绑定手机号

现提供一个用户绑定手机的方法,绑定界面需要CP自行按照游戏风格进行设计实现,绑定过程的接口由sdk提供,主要分为两部分:

a.获取验证码

CP需要提供一个用户输入手机号的输入框,供用户输入手机号,然后调用sdk.bindPhone.getBindCode(option)方法,获取验证码。方法传入的参数如下说明。

参数名 类型 说明
phone String 用户输入的手机号
success Function 验证码发送成功的回调
fail Function 验证码发送失败的回调

示例代码:

sdk.bindPhone.getBindCode({
    phone: 'user phone',
    success: function (res) {
        console.log(res.msg); // 验证码已经发送
    },
    fail: function (res) {
        console.log(res.msg); // 接口错误信息
    }
});

b.绑定手机操作

等到成功获取验证码后,用户可以输入获取到的验证码后,调用sdk.bindPhone.bindPhone(option)方法,进行绑定操作。方法传入的参数如下说明。

参数名 类型 说明
code String 用户输入的验证码
success Function 绑定成功的回调
fail Function 绑定失败的回调

示例代码:

sdk.bindPhone.bindPhone({
    code: 'user code',
    success: function (res) {
        console.log(res.msg); // 绑定手机成功回调
    },
    fail: function (res) {
        console.log(res.msg); // 接口错误信息
    }
});

Tips:
1.绑定界面由游戏根据游戏风格自行设计实现;
2.进行绑定的时候,手机号是获取验证码填入的手机号(sdk会进行缓存),如果需要切换,请重新调用获取验证码接口;
3.获取验证码的时候,最好做一个倒计时限制(倒计一分钟即可),验证码接口服务端有时间限制;
4.如果用户之前绑定过手机,用户信息中会有一个phone字段,内容为手机号,否则该字段为空;
5.用户如果需要更换手机号,限制时间为一周(接口会返回相应的提示),即:一周只能换一次绑定的手机号。

检查接入是否正确

具体请查阅《检查接入正确》

QQ查询星币余额

参数名 类型 说明
success Function 查询成功的回调
fail Function 查询失败的回调
  sdk.queryXingBiCount({
    success:function(res){
        console.log("查询成功返回:",res)
    },
    fail:function(res){
        console.log("查询失败返回:",res)
    }
})

QQ内容安全检查

校验一张图片\一段文本\音频是否含有违法违规内容。

参数名 类型 说明
wxAppId String QQ小程序/小游戏的appid
appId String 游戏在闪电玩平台的appid
sec String 秒为单位的时间戳
sign String md5(wxAppId + sec + gameKey(闪电玩平台的gamekey))
checkType String 审查内容类型, msg=文本内容,media=媒体,img=图片
content String msg = 文本内容即可、图片 = 图片的二进制内容、媒体 = 要检测的多媒体url
success Function 查询成功的回调
fail Function 查询失败的回调

示例代码

  // 测试敏感词校验
        var sec = (+new Date() / 1000) >> 0;
        var before = ("1145326931" + sec + "fbc92a323bce41a698018a247a1f11")
        var after = (sdk.md5(before)).toLowerCase()
        console.log("签名前:::",before)
        console.log("签名后:",after)
        sdk.msgSecCheck({
            wxAppId: "1109263355",
            appId: "1145326931",
            sec: sec,
            sign: after,
            content:"april不足的地方咖啡开发基金安防机is我爱飞快的将打开接口计算",
            checkType: 'msg',
            success:function(res){
                console.log("查询成功返回:",res)
            },
            fail:function(res){
                console.log("查询失败返回:",res)
            }
        })