光卡公共平台小游戏接入文档.md
27.6 KB
公共SDK-小游戏接入文档
版本:1.5.3
最后修改:2020年12月17日
一、接入准备
游戏页面引入公共SDK相关JS文件(复制sdk下的所有js文件到游戏工程)
let commonH5SDK = require('./commonH5SDK.js')
二、JS接口(对接可参考demo.js中的例子)
-
初始化SDK(必接)
//设置公共sdk回调方法 /** code: { INIT_SUCCESS: 1, INIT_FAIL: -1, LOGIN_SUCCESS: 10, LOGIN_FAIL: -10, LOGOUT_SUCCESS: 100, LOGOUT_FAIL: -100, SWITCH_SUCCESS: 1000, SWITCH_FAIL: -1000, PAY_SUCCESS: 2,//充值以服务端回调结果为准 PAY_FAIL: -2, PAY_CANCEL:-3,//支付取消 EXIT_SUCCESS: 4,//退出成功 EXIT_CANCEL: -4//取消退出 } @param {*} code commonH5SDK.code中对应值 @param {*} msg */ callback: function (code, msg) { console.log(code, msg); switch (code) { case commonH5SDK.code.INIT_SUCCESS://初始化成功 msg为描述 console.log("game init success") break; case commonH5SDK.code.LOGIN_SUCCESS://登录成功 /** *custom: "test"//透传参数 *openId: "x1111dc104b800724d112195b61e1ff5" *serverSign: "ccb0488a46be85b9fc1b5bd55b532376"//签名校验sign *timestamp: "1554174508038" **/ console.log("game login success"); console.log("openId:" + msg.openId + "custom:" + msg.custom + "serverSign:" + msg.serverSign + "timestamp:" + msg.timestamp); break; case commonH5SDK.code.LOGOUT_SUCCESS: console.log("game logout success") break; case commonH5SDK.code.SWITCH_SUCCESS: console.log("game switch account success") break; case commonH5SDK.code.PAY_SUCCESS://不一定有回调,看渠道通知,以服务端通知为准 console.log("game pay success") break; case commonH5SDK.code.EXIT_SUCCESS: //游戏处理退出逻辑 break; } }, //参数找运营获取 var sdkInfo = { "gameSimpleName": "fytx_test",//游戏简称 "sdkSimpleName": "huoshu_wx",//sdk简称 "sdkVersionCode": "V1_0",//sdk服务端版本号 "sdkClientVersion": "1.0"//sdk客户端版本号 } commonH5SDK.init(sdkInfo,this.callback);
-
账号登录
var param = "test";//透传参数 //启用账号登录接口 commonH5SDK.login(param);
-
注销账号/切换账号(小游戏不用接)
//注销接口 if(commonH5SDK.hasLogout()){//判断是否存在注销接口 commonH5SDK.logout(); } //切换账号接口 if(commonH5SDK.hasSwitchAccount()){//判断是否存在切换账号接口 commonH5SDK.switchAccount(); } 例子: /** * commonH5SDK.hasLogout() * commonH5SDK.hasSwitchAccount() * 游戏可以根据上面两个接口判断是否提供切换账号接口 */ switchAccount: function () { if (commonH5SDK.hasLogout()) {//存在注销接口,注销后会回调到初始化接口的注销类型的回调中 commonH5SDK.logout(); }else if (commonH5SDK.hasSwitchAccount()) {//存在切换账号接口,切换账号成功后会回调到初始化接口中的切换账号类型回调中 console.log("end switch account"); commonH5SDK.switchAccount(); }else{//不存在切换账号接口,游戏自己处理 } }
-
提交数据信息
- 注:进入游戏类型为必接接口 在游戏中对应点根据不同的type进行调用 /** * commonH5SDK.type中对应类型值 type: { arriveServerSelectPage: 1, //到达选服页面 createRole: 2, //创建角色时调用 enterGame: 3, //进入游戏时调用 upRoleLevel: 4, //角色升级日志 arriveEntrance: 5, //首屏日志 enterServer: 6, //选服完成,点击进入对应服时 arriveFirstScene: 7, //到达游戏内第一场景时调用 arriveLoadingFinish: 8, //资源加载完成 arriveLoadingZero: 9, //刚开始加载资源类型 arriveCreateRolePage: 10, //到达创建角色页面 newcomerFinish:11, //新手完成上报 checkpointStart:12,//关卡开始 checkpointEnd:13,//关卡结束 selectRole:14,//选角色 renameRole:15,//角色改名 newcomerStart:16//新手开始 } */ var submitType = commonH5SDK.type.enterGame;//进入游戏 //设置角色信息 var roleInfo = { "roleId": "角色ID", "roleName": "角色名称", "roleLevel": "角色等级", "roleSex": "角色性别 1:男 0:女", "serverId": "服务器ID", "serverName": "服务器名称", "roleCTime": "角色创建时间", "partyName": "工会名字", "roleType": "角色类型", "roleChangeTime": "角色更新时间", "vipLevel": "VIP等级", "diamond": "角色金币数量", "moneyType": "商品单位", "custom": "微信小游戏分享的query参数,与扩展接口的分享时data一致", "isNew":"新创建角色第一次登录进游戏为1,其他为0", "score":"战力", "isFinishNewComer":"是否已完成新手,0否1是", "roleLevelReborn":"转生等级,没有传0", "partyId":"工会id(请用数字,如无请传"0")", "checkPointId":"关卡id(请用数字,如无请传"0")", "checkPointName":"关卡名(没有的传 "无")", "checkPointResult":"关卡结果,1中途退出2胜利3失败4打平", "professionId":"职业id(请用数字,如无请传"0")", "professionName":"职业名称(没有的传 "无")" }; //以上信息中,游戏如没有传空值即可 //启用提交信息接口 commonH5SDK.submitData(submitType, roleInfo);
-
支付
//设置订单参数 var payInfo = { "serverId": "服务器ID", "serverName": "服务器名字", "playerId": "角色ID", "openId":"渠道用户ID", "playerName": "角色名字", "playerLevel": "角色等级", "postAmount": "金额", "productId": "商品ID", "productName": "商品名称", "productDesc": "商品描述", "custom": "自定义透传参数", "exchange": "游戏币与人民币(元)的兑换比例", "otherInfo": "额外信息", "timestamp": "时间戳", "payType":"1:好友代付,0:正常支付(自己付款)" }; //以上信息中,游戏如没有传空值即可 //启用支付接口 commonH5SDK.pay(payInfo);
-
退出游戏
if(commonH5SDK.hasShowExitDialog()){//渠道含有退出框,游戏在回调中处理退出逻辑 commonH5SDK.showExitDialog(); }else{ //游戏自己处理退出逻辑后调用exitGame()接口 commonH5SDK.exitGame(); }
-
获取公共层参数接口
说明:本接口通过键获取对应的参数值,需要在初始化成功后才能调用 /** 获取公共层参数 @param {string} key */ getParamValueByKey:function (key) 例子: commonH5SDK.getParamValueByKey("custom");//获取公共后台的自定义参数 commonH5SDK.getParamValueByKey("channelParameter1");//渠道标识1 commonH5SDK.getParamValueByKey("channelParameter2");//渠道标识2 commonH5SDK.getParamValueByKey("channelId");//渠道号
-
扩展接口(游戏可根据渠道要求看是否接入)
/** 扩展接口 @param {*} type 扩展类型 /** * data参数传递 * type为msgSecCheck时传检验内容(eg:"内容") * type:realVerify/realNameVerify时传递身份证信息(eg:{id:"身份证号",name:"姓名"}) * type:share时传递的是平台api收到的query参数(内容格式必须是 eg:'key1=value1&key2=value2') * type:mulShare时data例子: * { * type:0,//分享类型 0:普通分享 1:朋友圈分享 * data:"key1=value1&key2=value2"//平台api收到的getLaunchOptionsSync.query参数(内容格式必须是 eg:'key1=value1&key2=value2') * } * type:showAd时数据例子: { type:1,//广告操作类型 1:显示视频广告 2:显示banner广告 -2:关闭banner广告 3:显示插屏广告 style:{//type等于2时需要传style其它类型可不传 left:0,//banner左上角横坐标位置 top:0,//banner左上角纵坐标位置 width:0,//宽度 height:0//高度 } } * type:bindPhone时数据 { type:1,//0:为获取验证码 1:为绑定操作 phone:"18xxxxx",//手机号 smsCode:"058961"//验证码 } * type:getUserInfo时传按钮样式(eg:{ type: 'text', text: '授权', style: { left: 10, top: 76, width: 200, height: 40, lineHeight: 40, backgroundColor: '#ff0000', color: '#ffffff', textAlign: 'center', fontSize: 16, borderRadius: 4 } }) * 其他暂传空 */ @param {*} data 传递数据 @param {*} callback 回调方法 */ expansionInterface: function (type, data, callback); 字段说明: /** * 传公共sdk扩展类型 * { gameSetting: 100, //功能设置 downloadMicroClent: 101, //下载微端 share: 102, //分享 data:"key1=value1&key2=value2"//平台api收到的getLaunchOptionsSync.query参数(内容格式必须是 eg:'key1=value1&key2=value2') focus: 103, //关注 save2Desktop: 104, //保存到桌面 realVerify: 105, //实名认证(已弃用) back2Game: 106, //返回游戏 bindPhone: 107, //绑定手机有奖接口 { type:1,//0:为获取验证码 1:为绑定操作 phone:"18xxxxx",//手机号 smsCode:"058961"//验证码 } msgSecCheck: 108, //违规内容判断接口 data为验证的数据内容 checkBalance: 109, //查询余额 showAd: 110, //广告类型 score: 111,//评分 kefu: 112,//客服接口 queryProductsInfo: 113,//根据sku(商品ID)查询商品信息 userCenter: 114,//用户中心 eventTrack: 115, //事件上报 realNameVerify: 116, //新实名认证 mulShare:117, //分享功能(适应不同类型的分享功能) 118,//蓝钻查询 119,//蓝钻购买接口 120,//查询永久订阅状态 121,//调用永久订阅接口 122,//获取玩家首次进入游戏的场景值 123//消息订阅接口 } */ var expansion_type = commonH5SDK.expansion_type.gameSetting;//功能设置 /** * { code:0,//0:成功 其他为失败 message:"success",//返回结果描述 data:{//功能设置返回,其他接口暂时不返回data数据 has_micro_client: 0,//是否有微端 0:没有,1:有,2已经在微端中 is_share: 0,//是否有分享接口 0:没有,1:有 is_focus: 0,//是否有关注 0:没,1:有,2:已经关注 is_apple_pay: 0,//是否开启苹果支付 0:不开启 1:开启 is_open_pay: 1,//1开启充值入口,其他为关闭充值入口 默认开启 is_desktop: 0,//是否有保存桌面 0:没有 1:有 is_switch_account: 0,//是否有切换账号 0:没有 1有 is_realverify: 0,//是否有实名认证 0:没有 1:有 2:已认证 is_real_name_verify:-1,//是否有实名认证接口 -1:不存在实名功能(cp和渠道协商) 0:没有界面接口渠道内部有实名功能,1:有界面接口 2:已认证 birthday:"",//用户实名生日20200101(进行左移两位加密操作) is_real_name_verify为2时才有数据 is_super_kefu: 0,//是否有超级客服 0:没 1:有 is_backtogame: 0,//是否有返回按钮 0:没有,1:有 is_lock: 0,//是否竖屏 0:研发默认样式 1:强制竖屏 is_focus_gift: 0,//关注有礼 0:关闭 1:开启 is_bindphone: 0,//绑定手机 0:关闭 1:开启 2:已绑定手机 is_msgseccheck: 0, //违规内容判断接口 0:没有,1:有 is_checkbalance: 0,//是否有查询 0:没有,1:有 is_showad: 0,//是否有广告接口 0:没有,1:有 is_usercenter: 0,//是否有用户中心接口 0:没有 1:有 is_kefu: 0,//是否有客服 0:没有,1:有(调用对应的客服类型接口(kefu)) is_score: 0,//是否有评分接口 0:没有,1:有(调用对应的评分类型接口(score)) is_query_products_info: 0,//是否有查询商品信息接口 0,没有 1:有(调用对应的查询商品信息接口(queryProductsInfo)) is_event_track: 0,// 0:没有 1:有 是否有事件上报接口 is_blue_vip_function:0,//0:没有蓝钻功能 1:有蓝钻功能 (此状态配合蓝钻查询和蓝钻购买) is_subscribe_whats_new:0,//0:没有游戏更新订阅接口 1:有游戏更新订阅 msg_subscribe_code:0,//0:没有消息订阅接口,1:表示有消息订阅接口 2:表示已经订阅 is_get_scene_interface:0//是否有获取首次进入游戏场景值接口,0:没有 1:有 } data:{//余额类型返回数据 code为失败时此字段不返回 balance:0//余额 } data:{//广告类型返回数据 code为失败时此字段不返回 isFinishTask:1//等于1时为广告任务完成,其他为任务未完成 } } * @param {*} result */ var expansionCallBack = function(result){ } commonH5SDK.expansionInterface(expansion_type,data,expansionCallBack);
8.1. 扩展接口(商品信息查询(目前用于海外渠道显示商场))
/**
扩展接口
@param {*} type commonH5SDK.expansion_type.queryProductsInfo
@param {*} data "productId1,productId2" //传入要查询的商品ID字符串,多个之前用逗号隔开
@param {*} callback 回调方法
*/
expansionInterface: function (type, data, callback);
示例:
/**
* {
code:0,//0:成功 其他为失败
message:"success",//返回描述
data:{//查询商品信息返回数据(queryProductsInfo)
"android.test.purchased0": {//key为商品ID
"displayPrice": "₩1167.28",//显示价格
"price": "₩1,167", //实际价格(去除小数点) 充值传递
"priceAmountMicros": 1167284249, //数字价格
"priceCurrencyCode": "KRW", //货币代码
"sku": "android.test.purchased0",//商品ID
"title": "名称示例"
},
"android.test.purchased1": {
"displayPrice": "₩1167.28",
"price": "₩1,167",
"priceAmountMicros": 1167284249,
"priceCurrencyCode": "KRW",
"sku": "android.test.purchased1",
"title": "名称示例"
}
}
}
* @param {*} result
*/
var expansionCallBack = function(result){
}
commonH5SDK.expansionInterface(commonH5SDK.expansion_type.queryProductsInfo,"test1,test2,test3",expansionCallBack);
8.3. 扩展接口(实名认证)
/**
扩展接口(根据gameSetting中获取字段is_real_name_verify为有接口时调用)
@param {*} type commonH5SDK.expansion_type.realNameVerify
@param {*} data 当需要游戏自定义页面时传递{id:"身份证号",name:"姓名"},其他传""
@param {*} callback 回调方法
{
code:0,//0成功,其他失败
message:"",//空值不做处理
data:"20190101"//(游戏将获取到的密文右移两位 eg:19900101 >> 2)
}
*/
expansionInterface: function (type, data, callback);
示例:
var expansionCallBack = function(result){
}
commonH5SDK.expansionInterface(commonH5SDK.expansion_type.realNameVerify,{id:"身份证号",name:"姓名"},expansionCallBack);
8.4. 扩展接口(蓝钻查询)
/**
扩展接口 (根据gameSetting中获取字段is_blue_vip_function为有接口时调用)
@param {*} type 游戏直接传入int值118
@param {*} data 传""
@param {*} callback 回调方法
{
code:0,//0成功,其他失败
message:"success",//空值不做处理
data:{
"is_blue_vip": 0, //是否蓝钻, 1表示是,0表示不是
"server_time": 1605250960,//服务器时间,用于比较蓝钻开通时间和到期时间,unix时间戳,单位为秒
"is_blue_year_vip": 0,//是否年费蓝钻;1表示是,0表示不是
"seq": 0,
"expand_vip_reg_time": 0,//超级蓝钻开通时间,unix时间戳,单位为秒
"year_vip_reg_time": 0,//年费蓝钻开通时间,unix时间戳,单位为秒
"super_vip_reg_time": 0,//豪华蓝钻开通时间,unix时间戳,单位为秒
"vip_reg_time": 0,//蓝钻开通时间,unix时间戳,单位为秒
"ret": 0,
"uin": 0,
"pf": "qqgame",
"is_super_blue_vip": 0,//是否豪华蓝钻;1表示是,0表示不是
"is_have_growth": 0,//蓝钻是否具备成长值,1表示是,0表示不是
"msg": "",
"is_expand_blue_vip": 0,//是否超级蓝钻;1表示是,0表示不是
"blue_vip_level": 0,//蓝钻等级
"is_mobile_blue_vip": 0,//是否手机蓝钻;1表示是,0表示不是
"vip_valid_time": 0,//蓝钻到期时间,unix时间戳,单位为秒
"super_vip_valid_time": 0,//豪华蓝钻到期时间,unix时间戳,单位为秒
"expand_vip_valid_time": 0,//超级蓝钻到期时间,unix时间戳,单位为秒
"year_vip_valid_time": 0 //年费蓝钻到期时间,unix时间戳,单位为秒
}
}
*/
expansionInterface: function (type, data, callback);
示例:
var expansionCallBack = function(result){
}
commonH5SDK.expansionInterface(118,"",expansionCallBack);
8.5. 扩展接口(蓝钻购买)
/**
扩展接口 (根据gameSetting中获取字段is_blue_vip_function为有接口时调用)
@param {*} type 游戏直接传入int值119
@param {*} data 传""
@param {*} callback 此接口不会有结果回调
*/
expansionInterface: function (type, data, callback);
示例:
commonH5SDK.expansionInterface(119,"","");
8.6. 扩展接口(游戏更新提醒订阅查询)
/**
扩展接口 (根据gameSetting中获取字段is_subscribe_whats_new为有接口时调用)
@param {*} type 游戏直接传入int值120
@param {*} data 传""
@param {*} callback
{
code:0,//0:表示用于已订阅,其他未订阅
message:"success" //返回消息
}
*/
expansionInterface: function (type, data, callback);
示例:
var expansionCallBack = function(result){
}
commonH5SDK.expansionInterface(120,"",expansionCallBack);
8.7. 扩展接口(游戏更新提醒订阅)
/**
扩展接口 (根据gameSetting中获取字段is_subscribe_whats_new为有接口时调用)
@param {*} type 游戏直接传入int值121
@param {*} data 传""
@param {*} callback
{
code:0,//0:表示订阅成功,其他未订阅
message:"success" //返回消息
}
*/
expansionInterface: function (type, data, callback);
示例:
var expansionCallBack = function(result){
}
commonH5SDK.expansionInterface(121,"",expansionCallBack);
8.8. 扩展接口(分享接口)
/**
扩展接口 (根据gameSetting中获取字段is_share为有接口时调用)
@param {*} type 游戏直接传入int值117
@param {*} data
{
type:0,//分享类型 0:普通分享 1:朋友圈分享
data:"key1=value1&key2=value2"
}
@param {*} callback(`分享不一定会返回`)
{
code:0,//0:分享成功 其他未分享失败
message:"success" //返回消息
}
*/
expansionInterface: function (type, data, callback);
示例:
var expansionCallBack = function(result){
}
commonH5SDK.expansionInterface(117,"",expansionCallBack);
8.9. 扩展接口(绑定手机)
/**
扩展接口 (根据gameSetting中获取字段is_bindphone为有接口时调用)
@param {*} type 游戏直接传入int值107
@param {*} data
{
type:1,//0:为获取验证码 1:为绑定操作
phone:"18xxxxx",//手机号
smsCode:"058961"//验证码 获取验证码时传""
}
@param {*} callback
{
code:0,//0:成功 其他失败
message:"success" //返回消息
}
*/
expansionInterface: function (type, data, callback);
示例:
var expansionCallBack = function(result){
}
var data = {
type:1,//0:为获取验证码 1:为绑定操作
phone:"18xxxxx",//手机号
smsCode:"058961"//验证码 获取验证码时传""
}
commonH5SDK.expansionInterface(107,data,expansionCallBack);
8.10. 扩展接口(广告接口)
/**
扩展接口 (根据gameSetting中获取字段is_showad为有接口时调用)
@param {*} type 游戏直接传入int值110
@param {*} data
{
type:1,//广告操作类型 1:显示视频广告 2:显示banner广告 -2:关闭banner广告 3:显示插屏广告
style:{//type等于2时需要传style其它类型可不传
left:0,//banner左上角横坐标位置
top:0,//banner左上角纵坐标位置
width:0,//宽度
height:0//高度
}
}
@param {*} callback
{
code:0,//0:成功 其他失败
message:"success" //返回消息
}
*/
expansionInterface: function (type, data, callback);
示例:
var expansionCallBack = function(result){
}
var data = {
type:1,//广告操作类型 1:显示视频广告 2:显示banner广告 -2:关闭banner广告 3:显示插屏广告
style:{//type等于2时需要传style其它类型可不传
left:0,//banner左上角横坐标位置
top:0,//banner左上角纵坐标位置
width:0,//宽度
height:0//高度
}
}
commonH5SDK.expansionInterface(110,data,expansionCallBack);
8.11. 扩展接口(获取玩家首次进入游戏场景值接口)
/**
扩展接口 (根据gameSetting中获取字段is_get_scene_interface为1时有此接口调用)
@param {*} type 游戏直接传入int值122
@param {*} data 传""
@param {*} callback
{
code:0,
message:"",
data:{
first_scene:"玩家首次进入的场景值",
current_scene:"玩家当次进入的场景值"
}
}
*/
expansionInterface: function (type, data, callback);
示例:
var expansionCallBack = function(result){
//result.code 0:时订阅成功,其他未失败
}
commonH5SDK.expansionInterface(122,"",expansionCallBack);
8.12. 扩展接口(消息订阅接口)
/**
扩展接口 (根据gameSetting中获取字段msg_subscribe_code为1时有此接口调用)
@param {*} type 游戏直接传入int值123
@param {*} data 传""
@param {*} callback
{
code:0,//0:成功 其他失败
message:"success" //返回消息
}
*/
expansionInterface: function (type, data, callback);
示例:
var expansionCallBack = function(result){
//result.code 0:时订阅成功,其他未失败
}
commonH5SDK.expansionInterface(123,"",expansionCallBack);
8.13. 扩展接口(添加桌面快捷键)
/**
扩展接口 (根据gameSetting中获取字段is_desktop为1时有此接口调用)
@param {*} type 游戏直接传入int值104
@param {*} data 传""
@param {*} callback
{
code:0,//0:成功 其他失败
message:"success" //返回消息
}
*/
expansionInterface: function (type, data, callback);
示例:
var expansionCallBack = function(result){
//result.code 0:添加成功,添加失败
}
commonH5SDK.expansionInterface(104,"",expansionCallBack);