2021-01-21 15:16:40 +08:00

411 lines
11 KiB
Markdown

# 卡牌游戏接口说明
## 一. 说明
所有接口均需上传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, // 当前的经验值
ban: false, // 是否被禁用
free: false, // 是否免费
trial: false, // 是否是试用
trial_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_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失败
### 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, // 是否免费
trial: false, // 是否是试用
trial_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参数
| 字段 | 说明 |
| -------- | -------------------------------------- |
| 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
[ //附件列表
{
"itemid": 0, //道具id
"itemnum": 0, //道具数量
},
]
```
### 13. 获取物品列表
1. Method: POST
2. URI: /api/:accountid/items
| 字段 | 说明 |
| -------- | -------------------------------------- |
| accountid | 帐号id |
3. Response: JSON
```js
[ //物品列表
{
"itemid": 0, //道具id
"itemnum": 0, //道具数量
},
]
```
### 14. 解锁英雄卡槽
1. Method: POST
2. URI: /api/:accountid/hero/unlockslot/:heroid
| 字段 | 说明 |
| -------- | -------------------------------------- |
| accountid | 帐号id |
| heroid | 英雄id |
3. Response: JSON
```js
```
## 三. 服务端接口列表
### 1. 上传对战记录(服务端调用)
1. Method: POST
2. URI:
| 字段 | 说明 |
| -------- | -------------------------------------- |
| accountid | 帐号id |
3. Response: JSON
```json
```
```
```