接口对接文档

[信游科技] ## ``` 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 | 设备类型不匹配 |