# 卡牌游戏接口说明 ## 一. 说明 所有接口均需上传sessionid 通用返回JSON结构, 接口Response的数据结构说明只包含data部分 ``` JSON { "errcode": 0, //0:成功 2: 缺少必要参数(accountid, sessionid) 4: 帐号被封, 5: 帐号未找到 100: 所有未定义的错误 "errmsg": "", //错误描述 "data": {}, // 数据 } ``` ## 二. 客户端接口列表 ### 1. 玩家资料 1. Method: POST 2. URI: /api/:accountid/uinfo | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | > POST参数 | 字段 | 说明 | | -------- | -------------------------------------- | | nickname |昵称 | | avatar |头像 | 3. Response: JSON ```js { accountid: '', cards: [number], heros: [{ heroid: number, owned: true, // 是否已拥有 usetype: 1, // 赛季专属, 0: 通用, 1: 赛季排位专用, 2: 匹配专用 level: number, // 等级 exp: number, // 当前的经验值 ban: false, // 是否被禁用 free: false, // 是否免费 trial: false, // 是否是试用 trial_expire: 1609919293, // 试用到期时间, 0: 说明是永久 }], moneys: [ { "itemid": 80012, //代币的id "itemnum": 140 // 数量 } ], normal_stat: [0, 0, 0, 0] //匹配: 胜利场数, 失败场数, 平局场数, 掉线场数 season_rank: 1 // 当前赛季排名 match_score: 1000 //当前匹配分, 用于匹配时上传 season_score: 1000 // 排位分, 用于显示 season_data: {} // 当前赛季统计信息, 内容同接口11 } ``` ### 2. 可用卡牌信息 1. Method: POST 2. URI: /api/:accountid/cards | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | 3. Response: JSON > 说明: 匹配模式可以用的卡: (owned == true || (free == true && not expired)) && (usetype == 0 || usetype == 2) > 赛季排位模式可以用的卡: (owned == true || (free == true && not expired)) && (usetype == 0 || usetype == 1) ```js [{ cardid: 1022, // 卡牌id owned: true, // 是否已拥有 ban: false, // 是否被禁用 usetype: 1, // 赛季专属, 0: 通用, 1: 赛季排位专用, 2: 匹配专用 free: false, // 是否免费 free_expire: 1609919293 // 免费到期时间 time:1609919293 // 该卡第一次解锁时间 }] ``` ### 3. 可用英雄列表 > 这个接口用户信息中的英雄列表最大的不同, 这里返回所有可用英雄, 用户信息中只返回永久免费和玩家拥有的英雄 1. Method: POST 2. URI: /api/:accountid/heros | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | 3. Response: JSON > 说明: 匹配模式可以用的英雄: (owned == true || (trial== true && not expired)) && (usetype == 0 || usetype == 2) > 赛季排位模式可以用的英雄: (owned == true || (trial== true && not expired)) && (usetype == 0 || usetype == 1) ```js [{ heroid: 1022, // 英雄id owned: true, // 是否已拥有 ban: false, // 是否被禁用 usetype: 1, // 赛季专属, 0: 通用, 1: 赛季排位专用, 2: 匹配专用 ban: false, // 是否被禁用 free: false, // 是否免费 trial: false, // 是否试用 trial_expire: 1609919293 // 试用到期时间, 0: 说明是永久 level: 1, // 等级 exp: 0, // 当前的经验值 time: 1609919293 // 该英雄解锁时间 slot: 1, // 已解锁卡槽数量 }] ``` ### 4. 自定义卡组列表 1. Method: POST 2. URI: /api/:accountid/card_group/:heroid | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | | heroid | 英雄id, 不传的话, 获取该玩家所有可用卡组 | 3. Response: JSON ```js [{ gid: '', // 卡组id heroid: '', // 英雄id selected: true, // 当前选择的卡组 isdefault: false, // 是否是默认卡组, 默认卡组不能编辑 cards: [{ cardid: '', // 卡牌id owned: true, // 是否已拥有 ban: false, // 是否被禁用 usetype: 1, // 赛季专属, 0: 通用, 1: 赛季排位专用, 2: 匹配专用 free: false, // 是否免费 free_expire: 1609919293 // 免费到期时间 }] }] ``` ### 5. 保存卡组 1. Method: POST 2. URI: /api/:accountid/card_group/save/:gid | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | | gid | 卡组id, 新卡组传 'new' | > POST参数 | 字段 | 说明 | | -------- | -------------------------------------- | | heroid |英雄id | | selected |是否设为选中 | | cards |[cardid] 卡牌id的数组 | 3. Response: JSON 根据errcode判断成功or失败 ### 6. 删除卡组 1. Method: POST 2. URI: /api/:accountid/card_group/delete/:gid | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | | gid | 卡组id, 不能为空 | 3. Response: JSON 根据errcode判断成功or失败 ### 8. 抽卡 1. Method: POST 2. URI: /api/:accountid/card/draw | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | > POST参数 | 字段 | 说明 | | -------- | -------------------------------------- | | count | 类型 1 或 10 | |itemid| 抽卡使用的物品id | 3. Response: JSON ```js [{ id: 11022, // 卡牌id used: 1, // 是否已经自动激活卡或英雄, 1: 已自动激活 0: 未激活 count: 1000, // 数量 heroid: 111, // 激活的英雄id, 可能为空 cardid: 100 // 激活的卡id, 可能为空 }] ``` ### 9. 对战记录列表 1. Method: POST 2. URI: /api/:accountid/records | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | 3. Response: JSON ```json ``` ### ~~10. 升级英雄~~ 1. Method: POST 2. URI: /api/:accountid/hero/update/:heroid | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | | heroid | 英雄id | > POST参数 | 字段 | 说明 | | -------- | -------------------------------------- | | items |使用代币类型和数量, 格式 money0:count\|money1:count1 | 3. Response: JSON ```json { exp: 1022, // 升级后当前经验值 level: 1, // 升级后的等级 exp_gain: 100, // 本次升级一共获得的经验 } ``` ### 11. 赛季统计信息 1. Method: POST 2. URI: /api/:accountid/season_data | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | 3. Response: JSON ```json { "0": 477, //最高伤害 "1": 62, // 最高承伤 "2": 289, // 最高总战力 "3": 150, // 最高单体战力 "4": 6, // 最高每局胡牌数 "5": 0, // 每局最多送给队友抽牌数 "0_total": 1071.3, // 所有伤害积分 "1_total": 86, // 所有承伤积分 "2_total": 1302, // 最高总战力积分 "3_total": 1325, // 单体战力总积分 "4_total": 390, // 所有胡牌数 "5_total": 0, // 赠送牌数 "honor_ap": 4174.3, // 历史战功和 "mvp_ap": 4174.3, // mvp积分和 "win": 5, // 胜利场数, "lost": 0, // 失败场数 "score": 1281.061909262327, // 当前天体分 "match_score": 2921.59286389349 // 当前匹配分 } ``` ### 12. 获取邮件附件 1. Method: POST 2. URI: /api/:accountid/mail_attachment | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | > POST参数 | 字段 | 说明 | | -------- | -------------------------------------- | | mail_ids |邮件id列表以","分割 | 3. Response: JSON ```js [ //附件列表 { "id": 0, //道具id "count": 0, //道具数量 "type": 1 //道具类型 }, ] ``` ### 13. 获取物品列表 1. Method: POST 2. URI: /api/:accountid/items | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | > POST参数 | 字段 | 说明 | | -------- | -------------------------------------- | | type |物品类型, 不传的话就获取背包中所有物品 | | items |特定物品id数组 | 3. Response: JSON ```js [ //物品列表 { "id": 0, //道具id "count": 0, //道具数量 "type": 1 //道具类型 } ] ``` ### 14. 使用物品 1. Method: POST 2. URI: /api/:accountid/useitem | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | > POST参数 | 字段 | 说明 | | -------- | -------------------------------------- | | itemid |物品id | | count |使用数量 | 3. Response: JSON ```js [ //物品列表 { "id": 0, //道具id "count": 0, //道具数量 "type": 1 //道具类型 }, ] ``` ### 15. 解锁英雄卡槽 1. Method: POST 2. URI: /api/:accountid/hero/unlockslot/:heroid | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | | heroid | 英雄id | 3. Response: JSON ```js ``` ### 16. 购买物品 1. Method: POST 2. URI: /api/:accountid/hero/buyitem | 字段 | 说明 | | --------- | ------ | | accountid | 帐号id | > POST参数 | 字段 | 说明 | | -------- | -------------------------------------- | | itemid |需要购买的物品id | |count|购买数量| 3. Response: JSON ```js { "itemid": 1002, //道具id "buynum": 1, //道具数量 "totalnum": 100, //购买成功后总数量 "priceid": 21231, // 使用代币的id "pricenum": 20 // 使用代币数量 } ``` ### 17. 分解卡片 1. Method: POST 2. URI: /api/:accountid/card/destory | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | > POST参数 | 字段 | | 说明 | | -------- |--| -------------------------------------- | |cards |cardid |卡牌id | | |count |使用数量 | 3. Response: JSON ```js [ //物品列表 { "id": 0, //道具id "count": 0, //道具数量 }, ] ``` ### 18. 刷新随机到的武将 1. Method: POST 2. URI: /api/:accountid/randomhero | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | 3. Response: JSON ```js ``` ### 19. 拼藏宝图 1. Method: POST 2. URI: /api/:accountid/puzzle | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | 3. Response: JSON ```js { "id": 0, //道具id "count": 0, //道具数量 "type": 1 //道具类型 } ``` ### 20. 签到列表 > 签到接口不需要手动调用 1. Method: POST 2. URI: /api/:accountid/sign/list | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | 3. Response: JSON ```js "cfgs": [ //配置列表 { "id": 6, "title": "第7天", "reward_type": 80013, // 物品id "reward_count": 800, // 数量 "need_type": 1, // 获取奖励物品需要的条件 "need_count": 7, // 获取奖励物品需要的条件的数量 "reward_list": [ // 如果奖励物品是多个, 则读取该字段, 如果是单个, 则无此字段 { "reward_type": 80013, "reward_count": 2 }, { "reward_type": 80012, "reward_count": 800 } ], "status": 0 // 领取状态 0: 未开始, 1: 可补签, 2: 可领取, 3: 已领取 } ], "last": 1611751985, // 最后签到时间 "betweenDays": 1, // 最后签到时间与当前所隔天数 "doubleReward": 0, // 是否能双倍领取 0: 可以, 1: 当日已领取单倍, 2: 当日已领取双倍 "userData": { // 本轮用户领取记录 "0": 3 } ``` ### 21. 签到领取物品 > 签到接口不需要手动调用 1. Method: POST 2. URI: /api/:accountid/sign/list | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | > POST参数 | 字段 |说明 | | -------- | -------------------------------------- | |type |领取类型 1: 普通领取, 2: 双倍领取, 3: 补签 | |id |签到列表中返回的id | 3. Response: JSON ```js [ //物品列表 { "id": 0, //道具id "count": 0, //道具数量 }, ] ``` ### 22. 排行榜 1. Method: POST 2. URI: /api/:accountid/rank | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | > POST参数 | 字段 |说明 | | -------- | -------------------------------------- | |limit |获取的数据数量 | |skip |skip数量 | 3. Response: JSON ```js {"records": [ { "rank": 0, "accountid": "6000_3200_QcYw2AAK6Vf95WNfRmHYly340J455zZR", "nickname": "Sunny", "avatar": "https://resource.kingsome.cn/matchvs_cdn/1.0.0.1/avatar/10_2.jpg", "score": 1000 }, ], "userRank": 0, //当前玩家的排名 "userScore": 1000 //当前玩家的积分 } ``` ### 23. 排行榜-附近的玩家 1. Method: POST 2. URI: /api/:accountid/rank/nearMe | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | 3. Response: JSON ```js { "rank": 0, "accountid": "6000_3200_QcYw2AAK6Vf95WNfRmHYly340J455zZR", "nickname": "Sunny", "avatar": "https://resource.kingsome.cn/matchvs_cdn/1.0.0.1/avatar/10_2.jpg", "score": 1000 }, ``` ## 三. 服务端接口列表 ### 1. 上传对战记录(服务端调用) 1. Method: POST 2. URI: | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | 3. Response: JSON ```json ``` ### 2. 开始比赛 1. Method: POST 2. URI: /svr/:accountid/beginmatch | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | > POST参数 | 字段 | 说明 | | -------- | -------------------------------------- | | matchid |10_match.xlsx里的id | 3. Response: JSON ```js ``` ### 3. 解锁英雄 1. Method: POST 2. URI: /svr/:accountid/hero/unlock/:heroid | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | | heroid | 英雄id | > POST参数 | 字段 | 说明 | | -------- | -------------------------------------- | | type | 类型 0: 碎片, 1: 试用 | 3. Response: JSON > 说明: 解锁成功的话, 会返回当前解锁英雄的数据 ```js [{ heroid: 1022, // 英雄id owned: true, // 是否已拥有 ban: false, // 是否被禁用 usetype: 1, // 赛季专属, 0: 通用, 1: 赛季排位专用, 2: 匹配专用 free: false, // 是否免费 trial: false, // 是否是试用 trial_expire: 1609919293 // 试用到期时间, 0: 说明是永久 level: 1, // 等级 exp: 0, // 当前的经验值 }] ``` ### 4. 获取用户的简要信息 1. Method: GET 2. URI: /svr/:accountid/uinfo | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | 3. Response: JSON ```js { nickname: '阿三', // 英雄id avatar: true, // 头像 accountid: '' score: 1000 } ``` ### 5. 随机获取一个机器人信息 1. Method: POST 2. URI: /svr/randomrobot > POST参数 | 字段 | 说明 | | -------- | -------------------------------------- | | min |最小天梯分 | | max |最高天梯分 | | accounts |需要过滤的accountid数组 | 3. Response: JSON ```js { nickname: '阿三', // 英雄id avatar: true, // 头像 accountid: '' score: 1000 } ```