光卡公共平台小游戏接入文档.md 27.6 KB

公共SDK-小游戏接入文档

版本:1.5.3

最后修改:2020年12月17日

一、接入准备

游戏页面引入公共SDK相关JS文件(复制sdk下的所有js文件到游戏工程)

   let commonH5SDK = require('./commonH5SDK.js')

二、JS接口(对接可参考demo.js中的例子)

  1. 初始化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);
    
  2. 账号登录

    var param = "test";//透传参数
    //启用账号登录接口
    commonH5SDK.login(param);
    
  3. 注销账号/切换账号(小游戏不用接)

    //注销接口
    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{//不存在切换账号接口,游戏自己处理
    
        }
    }
    
  4. 提交数据信息

    - 注:进入游戏类型为必接接口
    在游戏中对应点根据不同的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);
    
  5. 支付

    //设置订单参数
    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);
    
  6. 退出游戏

    if(commonH5SDK.hasShowExitDialog()){//渠道含有退出框,游戏在回调中处理退出逻辑
        commonH5SDK.showExitDialog();
    }else{
        //游戏自己处理退出逻辑后调用exitGame()接口
        commonH5SDK.exitGame();
    }
    
  7. 获取公共层参数接口

    说明:本接口通过键获取对应的参数值,需要在初始化成功后才能调用
    /**
      获取公共层参数
      @param {string} key 
     */
    getParamValueByKey:function (key)
    
    例子:
    commonH5SDK.getParamValueByKey("custom");//获取公共后台的自定义参数
    commonH5SDK.getParamValueByKey("channelParameter1");//渠道标识1
    commonH5SDK.getParamValueByKey("channelParameter2");//渠道标识2
    commonH5SDK.getParamValueByKey("channelId");//渠道号
    
  8. 扩展接口(游戏可根据渠道要求看是否接入)

    /**
      扩展接口
      @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);