# 卡牌游戏接口说明 ## 一. 说明 所有接口均需上传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 | 3. Response: JSON ```js { accountid: '', cards: [number], heros: [{ heroid: number, owned: true, // 是否已拥有 usetype: 1, // 赛季专属, 0: 通用, 1: 赛季排位专用, 2: 匹配专用 level: number, // 等级 exp: number, // 当前的经验值 free: false, // 是否免费 free_expire: 1609919293, // 免费到期时间, 0: 说明是永久免费 }], moneys: { 'coin': 0, // 金币 'diamond': 0, // 钻石 'hero_shard': 0, // 通用英雄碎片 'hero_exp': 0, // 通用英雄经验 'hero_shard_heroid': 0, // 英雄专用碎片 'hero_exp_heroid': 0, // 英雄专用经验 'card_scroll': 0, //抽卡卷轴 }, normal_stat: [0, 0, 0, 0] //匹配: 胜利场数, 失败场数, 平局场数, 掉线场数 season_stat: [0, 0, 0, 0] // 当前赛季状态 season_rank: 1 // 当前赛季排名 } ``` ### 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 // 免费到期时间 }] ``` ### 3. 可用英雄列表 > 这个接口用户信息中的英雄列表最大的不同, 这里返回所有可用英雄, 用户信息中只返回永久免费和玩家拥有的英雄 1. Method: POST 2. URI: /api/:accountid/heros | 字段 | 说明 | | -------- | -------------------------------------- | | 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 [{ heroid: 1022, // 英雄id owned: true, // 是否已拥有 ban: false, // 是否被禁用 usetype: 1, // 赛季专属, 0: 通用, 1: 赛季排位专用, 2: 匹配专用 free: false, // 是否免费 free_expire: 1609919293 // 免费到期时间, 0: 说明是永久免费 level: 1, // 等级 exp: 0, // 当前的经验值 }] ``` ### 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失败 ### 7. 解锁英雄 1. Method: POST 2. URI: /api/: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, // 是否免费 free_expire: 1609919293 // 免费到期时间, 0: 说明是永久免费 level: 1, // 等级 exp: 0, // 当前的经验值 }] ``` ### 8. 抽卡 1. Method: POST 2. URI: /api/:accountid/card/draw/:count | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | | count | 抽卡数量 | 3. Response: JSON ```js [{ cardid: 1022, // 卡牌id isnew: true, // 是否是新获得的卡 expdust: '', // 分解可获得的英雄经验的item id dustcount: 100 // 可获得数量 }] ``` ### 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参数 | 字段 | 说明 | | -------- | -------------------------------------- | | count |使用数量 | 3. Response: JSON ```json { exp: 1022, // 当前经验值 exp_POST: 100, // 本次获得的经验 level: 1 // 当前等级 } ``` ### 11. 将专属英雄碎片转化成经验 1. Method: POST 2. URI: /api/:accountid/hero/toexp/:heroid | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | | heroid | 英雄id | 3. Response: JSON ```json { exp: 1022, // 当前经验值 exp_POST: 100, // 本次获得的经验 level: 1 // 当前等级 } ``` ## 三. 服务端接口列表 ### 1. 上传对战记录(服务端调用) 1. Method: POST 2. URI: | 字段 | 说明 | | -------- | -------------------------------------- | | accountid | 帐号id | 3. Response: JSON ```json ``` ```