接口对接文档
[信游科技]
##
```
version: "v1.2019.07.22",
dosc: "认证对接文档",
author: 刘尚乾
```
## 功能
- [登陆](#login)
- [注册](#reg)
- [退出](#exit)
- [第三方登陆](#oauth)
- [短信](#phone)
- [邮件](#email)
- [账户查询](#exist)
- [token验证(获取当前信息)](#verify)
- [获取当前状态](#online)
## 客户端对接
<font color="red">请求地址:XXX</font>
### <span id="login">登陆</span>
| 请求地址 | 请求类型 | 传参方式 | 响应结果 |
|---------------------|----------|----------|----------|
| 172.168.1.111:5000/ | http | get | Result |
| 参数名称 | 参数类型 | 是否必填 | 参数值 | 描述 |
|----------|----------|----------|---------------|--------------------------------|
| uname | string | 是 | | 用户名 |
| type | string | 是 | xy.user.login | 登陆 |
| session | string | 是 | | 服务器session |
| token | string | 是 | | 密码:MD5(session+MD5(password) |
| time | string | 是 | | 请求时间戳 |
| sign | string | 是 | | 签名 |
#### 签名
``` CSharp
加密方式:MD5
sign=MD5(type#uname#session#token#time)
```
#### params
```
uname:"用户名"
type:"xy.user.login"
session:"服务器session"
token:"密码:MD5(session+MD5(password)"
time:"请求时间戳"
sign:"签名"
```
#### 请求登录地址示例
``` http
请求方式:http
http://172.168.1.111:5000/?uname=xxx&type=xxx&session=xxx&token=xxx&time=xxx&sign=xxx
```
#### 请求响应示例
```json
{
"code":"状态码(int)",
"msg":"消息提示",
"data":"token令牌"
}
```
#### 响应状态码
| code | 描述 |
|------|------------------------|
| 23 | 用户名为空 |
| 29 | session or token 为空 |
| 34 | 时间戳过期 |
| 11 | 签名不正确 |
| 1 | 成功 |
#### Postman请求实示例
##### form-data
``` txt
type:xy.user.login
uname:{{uname}}
session:{{session}}
token:{{token}}
time:{{time}}
sign:{{sign}}
md5:{{md5}}
```
##### Pre-request script
``` javascript
//设置默认参数
postman.setGlobalVariable("token","token");
postman.setGlobalVariable("time",Math.round(new Date().getTime()));
//获取参数
time =postman.getGlobalVariable('time')
uname =pm.variables.get("uname");
session = pm.variables.get("session");
token = postman.getGlobalVariable('token');
type = pm.variables.get("type");
//字符串进行md5加密
var md5 =`${type}#${uname}#${session}#${token}#${time}`
var strmd5= CryptoJS.MD5(md5).toString();
postman.setGlobalVariable("sign",strmd5);
postman.setGlobalVariable("md5",md5);
```
##### Tests
``` javascript
response = JSON.parse(responseBody);
tests["code is 1"] = response.code === 1;
```
### <span id="reg">注册</span>
| 请求地址 | 请求类型 | 传参方式 | 响应结果 |
|---------------------|----------|----------|----------|
| 172.168.1.111:5000/ | http | get | Result |
| 参数名称 | 参数类型 | 是否必填 | 参数值 | 描述 |
|----------|----------|----------|-------------|--------------------------------|
| regtype | string | 是 | | 注册类型 |
| uname | string | 是 | | 用户名 |
| password | string | 是 | | 密码 |
| source | string | 是 | | 注册来源 |
| type | string | 是 | xy.user.reg | 注册 |
| session | string | 是 | | 服务器session |
| token | string | 是 | | 密码:MD5(session+MD5(password) |
| time | string | 是 | | 时间戳 |
| sign | string | 是 | | 签名 |
#### 签名
``` CSharp
加密方式:MD5
sign=md5(type#regtype#uname#password#source#time)
```
#### params
```
regtype:"注册类型"
uname:"用户名"
password:"密码"
source:"注册来源"
type:"xy.user.reg"
session:服务器session
token:密码:MD5(session+MD5(password)
time:"时间戳"
sign:"签名"
```
#### 请求注册地址示例
``` http
请求方式:http
http://172.168.1.111:5000/?regtype=xxx&uname=xxx&password=xxx&source=xxx&type=xxx&session=xxx&token=xxx&time=xxx&sign=xxx
```
#### 请求响应示例
```json
{
"code":"状态码(int)",
"msg":"消息提示",
"data":"token令牌"
}
```
#### 响应状态码
| code | 描述 |
|------|--------------|
| 29 | 注册类型为空 |
| 23 | 用户名为空 |
| 16 | 密码为空 |
| 30 | source 为空 |
| 34 | 时间戳已过期 |
| 11 | 签名错误 |
| 1 | 成功 |
#### Postman 请求示例
##### form-data
``` txt
type:xy.user.reg
uname:vchy
password:123456
session:{{session}}
token:{{token}}
time:{{time}}
sign:{{sign}}
md5:{{md5}}
source:{{source}}
regtype:{{regtype}}
```
##### Pre-request script
``` javascript
//设置默认参数
postman.setGlobalVariable("regtype","regtype");
postman.setGlobalVariable("source","source");
postman.setGlobalVariable("session","session");
postman.setGlobalVariable("token","token");
postman.setGlobalVariable("time",Math.round(new Date().getTime()));
//获取参数
type = pm.variables.get("type");
regtype = postman.getGlobalVariable('regtype');
uname = pm.variables.get("uname");
password =pm.variables.get("password");
source = postman.getGlobalVariable('source');
session = postman.getGlobalVariable('session');
token = postman.getGlobalVariable('token');
time = postman.getGlobalVariable('time');
//字符串进行md5加密
var md5 =`${type}#${regtype}#${uname}#${password}#${source}#${time}`
var strmd5= CryptoJS.MD5(md5).toString();
postman.setGlobalVariable("sign",strmd5);
postman.setGlobalVariable("md5",md5);
postman.setGlobalVariable("uname","vchy");
postman.setGlobalVariable("password","123456");
```
##### Tests
``` javascript
response = JSON.parse(responseBody);
tests["code is 1"] = response.code === 1;
```
### <span id="exit">退出</span>
| 请求地址 | 请求类型 | 传参方式 | 响应结果 |
|---------------------|----------|----------|----------|
| 172.168.1.111:5000/ | http | get | Result |
| 参数名称 | 参数类型 | 是否必填 | 参数值 | 描述 |
|----------|----------|----------|----------------|----------|
| token | string | 是 | | 身份令牌 |
| time | string | 是 | | 时间戳 |
| type | string | 是 | xy.user.logout | 退出 |
| sign | string | 是 | | 签名 |
#### 签名
``` CSharp
加密方式:MD5
sign=md5(type+time+token)
```
#### params
```
type:"xy.user.logout"
time:"时间戳"
token:"身份令牌"
sign:"签名"
```
#### 请求退出地址示例
``` http
请求方式:http
http://172.168.1.111:5000/?type=xxx&time=xxx&token=xxx&sign=xxx
```
#### 请求响应示例
```json
{
"code":"状态码(int)",
"msg":"消息提示",
"data":null
}
```
#### 响应状态码
| code | 描述 |
|------|--------------|
| 29 | token为空 |
| 34 | 时间戳已过期 |
| 11 | 签名错误 |
| 1 | 成功 |
#### Postman
##### form-data
``` txt
type:xy.user.logout
token:{{token}}
time:{{time}}
sign:{{sign}}
```
##### pre -request script
``` javascript
//设置默认参数
postman.setGlobalVariable("time",Math.round(new Date().getTime()));
//获取参数
type = pm.variables.get("type");
time = postman.getGlobalVariable('time');
token = postman.getGlobalVariable('token');
//字符串进行md5加密
var md5 =`${type}#${time}#${token}`
var strmd5= CryptoJS.MD5(md5).toString();
postman.setGlobalVariable("sign",strmd5);
postman.setGlobalVariable("md5",md5);
```
##### tests
``` javascript
response = JSON.parse(responseBody);
tests["code is 1"] = response.code === 1;
```
### <span id="oauth">第三方登陆</span>
| 请求地址 | 请求类型 | 传参方式 | 响应结果 |
|---------------------|----------|----------|----------|
| 172.168.1.111:5000/ | http | get | Result |
| 参数名称 | 参数类型 | 是否必填 | 参数值 | 描述 |
|-----------|----------|----------|---------------|--------------|
| time | string | 是 | | 时间戳 |
| authorize | string | 是 | | 第三方授权码 |
| referer | string | 是 | | 当前请求地址 |
| type | string | 是 | xy.user.oauth | 第三方登陆 |
| sign | string | 是 | | 签名 |
#### 签名
``` CSharp
加密方式:MD5
sign=md5(type+time+authorize)
```
#### params
```
time:时间戳
authorize:授权码
type:xy.user.oauth
sign:签名
referer:当前请求地址
```
#### 请求第三方登陆地址示例
``` http
请求方式:http
http://172.168.1.111:5000/?time=xxx&authorize=xxx&type=xxx&sign=xxx&referer=xxx
```
#### 请求响应示例
```json
{
"code":"状态码",
"msg":"消息提示",
"data":"token令牌"
}
```
#### 响应状态码
| code | 描述 |
|------|------------|
| 34 | 时间戳过期 |
| 11 | 签名错误 |
| 1 | 成功 |
###<span id="phone">短信</span>
| 请求地址 | 请求类型 | 传参方式 | 响应结果 |
|---------------------|----------|----------|----------|
| 172.168.1.111:5000/ | http | get | Result |
| 参数名称 | 参数类型 | 是否必填 | 参数值 | 描述 |
|----------|----------|----------|--------------------|----------|
| time | string | 是 | | 时间戳 |
| phone | string | 是 | | 手机号 |
| type | string | 是 | xy.user.send.phone | 发送短信 |
| sign | string | 是 | | 签名 |
####签名
``` CSharp
加密方式:MD5
sign=md5(type+time+phone)
```
#### params
```
time:时间戳
phone:手机号
type:xy.user.send.phone
sign:签名
```
#### 请求短信地址示例
``` http
请求方式:http
http://172.168.1.111:5000/?time=xxx&phone=xxx&type=xxx&sign=xxx
```
#### 请求响应示例
```json
{
"code":"状态码",
"msg":"消息提示",
"data":"token令牌"
}
```
#### 响应状态码
| code | 描述 |
|------|------------|
| 34 | 时间戳过期 |
| 11 | 签名错误 |
| 17 | 手机号为空 |
| 1 | 成功 |
### <span id="email">邮件</span>
| 请求地址 | 请求类型 | 传参方式 | 响应结果 |
|---------------------|----------|----------|----------|
| 172.168.1.111:5000/ | http | get | Result |
| 参数名称 | 参数类型 | 是否必填 | 参数值 | 描述 |
|----------|----------|----------|-------------------|----------|
| time | string | 是 | | 时间戳 |
| mail | string | 是 | | 邮箱 |
| type | string | 是 | xy.user.send.mail | 发送邮件 |
| sign | string | 是 | | 签名 |
#### 签名
``` CSharp
加密方式:MD5
sign=md5(type+time+mail)
```
#### params
```
time:时间戳
mail:邮箱
type:xy.user.send.mail
sign:签名
```
#### 请求邮件地址示例
``` http
请求方式:http
http://172.168.1.111:5000/?time=xxx&mail=xxx&type=xxx&sign=xxx
```
#### 请求响应示例
```json
{
"code":"状态码",
"msg":"消息提示",
"data":"token令牌"
}
```
#### 响应状态码
| code | 描述 |
|------|----------------|
| 34 | 时间戳过期 |
| 11 | 签名错误 |
| 18 | 邮箱格式不正确 |
| 1 | 成功 |
### <span id="exist">账户查询</span>
| 请求地址 | 请求类型 | 传参方式 | 响应结果 |
|---------------------|----------|----------|----------|
| 172.168.1.111:5000/ | http | get | Result |
| 参数名称 | 参数类型 | 是否必填 | 参数值 | 描述 |
|----------|----------|----------|----------------|----------|
| uname | string | 是 | | 用户名 |
| type | string | 是 | xy.user.exists | 账户查询 |
| time | string | 是 | | 时间戳 |
| sign | string | 是 | | 签名 |
#### 签名
``` CSharp
加密方式:MD5
sign=md5($"{type}#{tine}#{uname}")
```
#### params
```
uname:用户名
type:xy.user.exists
time:时间戳
sign:签名
```
#### 请求账户验证地址示例
``` http
请求方式:http
http://172.168.1.111:5000/?uname=xxx&type=xxx&time=xxx&sign=xxx
```
#### 请求响应示例
```json
{
"code":"响应状态码(int)",
"msg":"消息提示",
"data":null
}
```
#### 响应状态码
| code | 描述 |
|------|------------|
| 34 | 时间戳过期 |
| 11 | 签名错误 |
| 47 | 账户为空 |
| 15 | 账户已存在 |
| 23 | 账户不存在 |
### <span id="verify">token验证</span>
| 请求地址 | 请求类型 | 传参方式 | 响应结果 |
|---------------------|----------|----------|----------|
| 172.168.1.111:5000/ | http | get/post | Result |
| 参数名称 | 参数类型 | 是否必填 | 参数值 | 描述 |
|----------|----------|----------|----------------|----------|
| token | string | 是 | | 身份令牌 |
| type | string | 是 | xy.user.token.verify | 账户查询 |
| time | string | 是 | | 时间戳 |
| sign | string | 是 | | 签名 |
#### 签名
``` CSharp
加密方式:MD5
sign=md5($"{type}#{time}#{token}")
```
#### params
```
token:
type:token验证
time:
sign:
```
#### token验证地址示例
``` http
请求方式:http
http://172.168.1.111:5000/?token=xxx&type=xxx&time=xxx&sign=xxx
```
#### 请求响应示例
```json
{
"code":"状态码(int)",
"msg":"消息提示",
"data":{
"uid":"玩家ID",
"uname":"玩家名称",
"source":"用户来源"
}
}
```
#### 响应状态码
| code | 描述 |
|------|--------------------|
| 34 | 时间戳过期 |
| 11 | 签名错误 |
| 120 | 身份令牌离线 |
| 121 | 身份令牌已被顶下线 |
| 122 | 身份令牌为空 |
| 123 | 身份令牌无效 |
| 124 | 设备类型不匹配 |
| 1 | 成功 |
### <span id="online">获取在线状态</span>
| 请求地址 | 请求类型 | 传参方式 | 响应结果 |
|---------------------|----------|----------|----------|
| 172.168.1.111:5000/ | http | get/post | Result |
| 参数名称 | 参数类型 | 是否必填 | 参数值 | 描述 |
|----------|----------|----------|----------------|----------|
| type | string | 是 | xy.user.online | 获取在线状态 |
| time | string | 是 | | 时间戳 |
| sign | string | 是 | | 签名 |
#### 签名
``` CSharp
加密方式:MD5
sign=md5($"{type}#{time}")
```
#### params
```
type:token验证
time:
sign:
```
#### 获取在线状态示例
``` http
请求方式:http
http://172.168.1.111:5000/?type=xxx&time=xxx&sign=xxx
```
#### 请求响应示例
```json
{
"code":"状态码(int)",
"msg":"消息提示",
"data":{
"uid":"玩家ID",
"uname":"玩家名称",
"source":"用户来源"
}
}
```
#### 响应状态码
| code | 描述 |
|------|--------------------|
| 34 | 时间戳过期 |
| 11 | 签名错误 |
| 1 | 成功 |
# xykj result code status
| 返回值 | 说明 |
|--------|-----------------------------|
| -1 | 暂无角色 |
| 1 | 成功 |
| 2 | pid异常 |
| 3 | 合作暂停 |
| 4 | 游戏id异常 |
| 5 | 游戏服id异常或未到开服时间 |
| 6 | 用户id异常 |
| 7 | 时间戳参数异常 |
| 8 | 订单号已存在 |
| 9 | 充值金额异常 |
| 10 | 请求类型异常 |
| 11 | sign错误 |
| 12 | ip不在白名单 |
| 13 | 支付方式异常 |
| 14 | 注册账号不合法 |
| 15 | 账号已存在 |
| 16 | 密码不符合要求 |
| 17 | 手机号不正确 |
| 18 | 邮箱不正确 |
| 19 | 真实姓名错误 |
| 20 | 身份证号错误 |
| 21 | 手机号已被绑定 |
| 22 | 邮箱已被绑定 |
| 23 | 账号不存在 |
| 24 | 绑定手机号不存在 |
| 25 | 绑定邮箱不存在 |
| 26 | 登陆密码错误 |
| 27 | 登陆受限 |
| 28 | 密保问题不存在 |
| 29 | 密保答案不存在 |
| 30 | 来源异常 |
| 31 | 验证码错误 |
| 32 | 口令错误 |
| 33 | 订单号异常 |
| 34 | 请求超时 |
| 35 | 平台币数量异常 |
| 36 | 礼包编号异常或者礼包不存在 |
| 37 | 没有礼包可领取或礼包已领完 |
| 38 | 优惠卷码错误 |
| 39 | vip等级不满足要求 |
| 40 | 支付密码未设置或错误 |
| 41 | 积分不足,扣除失败 |
| 42 | 游戏接口不存在或异常 |
| 43 | 未登录站点 |
| 44 | 没有此操作的权限 |
| 45 | 没有调用此接口的权限 |
| 46 | 接口未配置,请在后台配置接口 |
| 47 | 账户为空 |
| 120 | 身份令牌离线 |
| 121 | 身份令牌已被顶下线 |
| 122 | 身份令牌为空 |
| 123 | 身份令牌无效 |
| 124 | 设备类型不匹配 |