《Unilight平台接入》协议文档
协议说明
LoginUrl客户端请求时:
1) 响应超时,超时时间为15秒;
2) 网络断开情况的处理:点击后刷新游戏
服务端回调数据:
http/websocket暂时采用json数据格式,考虑移动端节约流量,兼顾可读性,尽量使用2-3个字符表示,并且写明全称或描述。
声明
LoginUrl 登陆服务器URL
gatewayurl 网关服务器URL
Action http请求URL地址
URL+["?unigame_plat_sign="+MD5(msg+time+platKey)]+["?compress="+Pmd.CompressType]
注:
可选参数unigame_plat_sign,当获取到plat_token后使用
可选参数compress 需要开启数据压缩模式时使用,使用此参数时发送和接收的数据为二进制格式utf-8字符串。压缩类型可参考Pmd.CompressType
关键字
为了保持响应数据(data)中相同意义的字段的命名统一性,请使用下面关键字
| errno |
平台状态返回码 |
gameid |
游戏ID |
|
|
|
|
| zoneid |
区服ID |
resultCode |
游戏状态返回码 |
|
|
|
|
1. 平台接入(http)
|
|
|
| 请求 |
Action |
LoginUrl+["?compress="+ Pmd.CompressType] |
| 请求 |
Example |
http://server.login.bwgame.com.cn:7000/httplogin?compress=gzip |
|
|
|
|
|
|
| 请求 |
msg |
字段 |
类型 |
默认值 |
描述 |
| 请求 |
msg |
do |
String |
request-zone-list |
请求区列表 |
| 请求 |
msg |
gameid |
Int |
|
游戏ID |
| 请求 |
msg |
data |
字段 |
类型 |
默认值 |
| 请求 |
msg |
data |
gameid |
Int |
游戏ID |
|
|
|
|
|
| 响应 |
字段 |
类型 |
默认值 |
描述 |
| 响应 |
errono |
Int |
0 |
状态码 |
| 响应 |
gameid |
Int |
|
游戏ID |
| 响应 |
do |
String |
request-zone-list |
请求区列表 |
| 响应 |
data |
字段 |
类型 |
默认值 |
| 响应 |
data |
gamename |
|
游戏名称 |
| 响应 |
data |
zonelist |
{"state": 0, "zoneid": 301, "zonename": "老虎机301"} |
区列表 |
| 响应 |
data |
gameid |
Int |
游戏ID |
| 样例: |
|
|
|
|
| SEND: |
|
|
|
|
| { |
|
|
|
|
| "do": "request-zone-list", |
|
|
|
|
| "data": { |
|
|
|
|
| "gameid": 170 |
|
|
|
|
| }, |
|
|
|
|
| "gameid": 170, |
|
|
|
|
| "unigame_plat_timestamp": 1445390145867 |
|
|
|
|
| } |
|
|
|
|
| RECV: |
|
|
|
|
| { |
|
|
|
|
| "data": { |
|
|
|
|
| "gameid": 170, |
|
|
|
|
| "gamename": "老虎机", |
|
|
|
|
| "zonelist": [ |
|
|
|
|
| { |
|
|
|
|
| "state": 0, |
|
|
|
|
| "zoneid": 301, |
|
|
|
|
| "zonename": "老虎机301" |
|
|
|
|
| }, |
|
|
|
|
| { |
|
|
|
|
| "state": 1, |
|
|
|
|
| "zoneid": 302, |
|
|
|
|
| "zonename": "老虎机302" |
|
|
|
|
| } |
|
|
|
|
| ] |
|
|
|
|
| }, |
|
|
|
|
| "do": "request-zone-list", |
|
|
|
|
| "errno": "0", |
|
|
|
|
| "gameid": 170, |
|
|
|
|
| "st": 1445390168, |
|
|
|
|
| "unigame_plat_timestamp": 1445390145867 |
|
|
|
|
| } |
|
|
|
|
1.2平台账号注册
|
|
|
| 请求 |
Action |
LoginUrl+["?compress="+ Pmd.CompressType] |
| 请求 |
Example |
http://server.login.bwgame.com.cn:7000/httplogin?compress=gzip |
|
|
|
|
|
|
| 请求 |
msg |
字段 |
类型 |
默认值 |
描述 |
| 请求 |
msg |
do |
String |
plat-token-login |
请求命令 |
| 请求 |
msg |
gameid |
Int |
|
游戏ID |
| 请求 |
msg |
zoneid |
Int |
|
区服ID |
| 请求 |
msg |
data |
Pmd.ThirdPlatLoginUserPmd_C |
|
请求数据 |
|
|
|
|
|
| 响应 |
字段 |
类型 |
默认值 |
描述 |
| 响应 |
errono |
Int |
0 |
状态码 |
| 响应 |
gameid |
Int |
|
游戏ID |
| 响应 |
zoneid |
Int |
|
区服ID |
| 响应 |
uid |
String |
|
用户ID |
| 响应 |
do |
String |
|
操作命令 |
| 响应 |
unigame_plat_key |
String |
|
平台登录密钥 |
| 响应 |
unigame_plat_login |
String |
|
平台登录token |
| 响应 |
unigame_plat_login_timeout |
String |
|
平台登录token过期时间 |
| 响应 |
unigame_plat_timestamp |
String |
|
平台时间戳(暂时未使用) |
| 响应 |
data |
Pmd.ThirdPlatLoginUserPmd_S |
|
|
| 样例: |
|
|
|
|
| SEND: |
|
|
|
|
| "do": "plat-token-login", |
|
|
|
|
| "data": { |
|
|
|
|
| "platinfo": { |
|
|
|
|
| "account": null, |
|
|
|
|
| "email": null, |
|
|
|
|
| "platid": "69", |
|
|
|
|
| "gender": null, |
|
|
|
|
| "nickname": null, |
|
|
|
|
| "timestamp": "1445350704", |
|
|
|
|
| "uid": "e63541fcb17e150369ea679ca7039617", |
|
|
|
|
| "sign": "8a79b902301acf99564ffc67d6cba12e", |
|
|
|
|
| "gameid": "170", |
|
|
|
|
| "faceurl": null |
|
|
|
|
| }, |
|
|
|
|
| "gameid": 170 |
|
|
|
|
| }, |
|
|
|
|
| "gameid": 170, |
|
|
|
|
| "zoneid": 301, |
|
|
|
|
| "unigame_plat_timestamp": 1445350889429 |
|
|
|
|
| } |
|
|
|
|
RECV:
{
"data": {
"gameid": 170,
"platinfo": {
"account": null,
"email": null,
"faceurl": null,
"gameid": "170",
"gender": null,
"nickname": null,
"platid": "69",
"sign": "8a79b902301acf99564ffc67d6cba12e",
"timestamp": "1445350704",
"uid": "e63541fcb17e150369ea679ca7039617"
},
"sid": "69::e63541fcb17e150369ea679ca7039617",
"uid": "1000375"
},
"do": "plat-token-login",
"gameid": 170,
"unigame_plat_key": "326020f1d713db47330b423f2577ffc9",
"unigame_plat_login": "83c642b96ce868c88fd8037c5f9e1633-1445350752",
"unigame_plat_login_timeout": "2592000",
"unigame_plat_timestamp": 1445350889429,
"zoneid": 301
}
1.3平台账号注册
|
|
|
| 请求 |
Action |
LoginUrl+"?unigame_plat_sign="+MD5(msg+ unigame_plat_timestamp+unigame_plat_key)+["&compress="+ Pmd.CompressType] |
| 请求 |
Example |
http://login.publish.bwgame.com.cn:7000/httplogin? unigame_plat_sign=b6cc00a86dbd00b687d287b737e5e765 |
|
|
|
|
|
|
| 请求 |
msg |
字段 |
类型 |
默认值 |
描述 |
| 请求 |
msg |
do |
String |
request-select-zone |
选区请求 |
| 请求 |
msg |
gameid |
Int |
|
游戏ID |
| 请求 |
msg |
zoneid |
Int |
|
区服ID |
| 请求 |
msg |
uid |
String |
|
用户ID |
| 请求 |
msg |
unigame_plat_login |
String |
1.2步骤请求得到的返回值unigame_plat_login |
token |
| 请求 |
msg |
unigame_plat_timestamp |
Int |
|
当前时间毫秒 |
| 请求 |
msg |
data |
字段 |
类型 |
默认值 |
| 请求 |
msg |
data |
gameid |
Int |
|
| 请求 |
msg |
data |
zoneid |
Int |
|
|
|
|
|
|
| 响应 |
字段 |
类型 |
默认值 |
描述 |
| 响应 |
errono |
Int |
0 |
状态码 |
| 响应 |
do |
String |
request-select-zone |
|
| 响应 |
gameid |
|
|
|
| 响应 |
zoneid |
|
|
|
| 响应 |
uid |
String |
|
字符串 |
| 响应 |
st |
Int |
|
|
| 响应 |
unigame_plat_login |
|
|
|
| 响应 |
unigame_plat_timestamp |
|
|
|
| 响应 |
data |
字段 |
类型 |
默认值 |
| 响应 |
data |
gameid |
Int |
游戏ID |
| 响应 |
data |
gatewayurl |
String |
网关URL |
| 响应 |
data |
zoneid |
Int |
区服URL |
| 样例: |
|
|
|
|
| SEND: |
|
|
|
|
| { |
|
|
|
|
| "do": "request-select-zone", |
|
|
|
|
| "data": { |
|
|
|
|
| "gameid": 170, |
|
|
|
|
| "zoneid": 301 |
|
|
|
|
| }, |
|
|
|
|
| "uid": "1000375", |
|
|
|
|
| "gameid": 170, |
|
|
|
|
| "zoneid": 301, |
|
|
|
|
| "unigame_plat_login": "83c642b96ce868c88fd8037c5f9e1633-1445350752", |
|
|
|
|
| "unigame_plat_timestamp": 1445350889663 |
|
|
|
|
| } |
|
|
|
|
| RECV: |
|
|
|
|
| { |
|
|
|
|
| "data": { |
|
|
|
|
| "gameid": 170, |
|
|
|
|
| "gatewayurl": "http://114.119.6.83:7001/shen/user/http", |
|
|
|
|
| "zoneid": 301 |
|
|
|
|
| }, |
|
|
|
|
| "do": "request-select-zone", |
|
|
|
|
| "errno": "0", |
|
|
|
|
| "gameid": 170, |
|
|
|
|
| "st": 1445350753, |
|
|
|
|
| "uid": "1000375", |
|
|
|
|
| "unigame_plat_login": "83c642b96ce868c88fd8037c5f9e1633-1445350752", |
|
|
|
|
| "unigame_plat_timestamp": 1445350889663, |
|
|
|
|
| "zoneid": 301 |
|
|
|
|
| } |
|
|
|
|
1.4发送普通http请求
|
|
|
| 请求 |
gatewayurl+"?unigame_plat_sign="+MD5(msg+ unigame_plat_timestamp+unigame_plat_key)+["&compress="+Pmd.CompressType] |
|
| 请求 |
Example |
http://login.publish.bwgame.com.cn:7000/httplogin? unigame_plat_sign=b6cc00a86dbd00b687d287b737e5e765 |
|
|
|
|
|
|
| 请求 |
msg |
字段 |
类型 |
默认值 |
描述 |
| 请求 |
msg |
do |
String |
|
游戏请求 |
| 请求 |
msg |
gameid |
Int |
|
游戏ID |
| 请求 |
msg |
zoneid |
Int |
|
区服ID |
| 请求 |
msg |
uid |
String |
|
用户ID |
| 请求 |
msg |
unigame_plat_login |
String |
1.2步骤请求得到的返回值unigame_plat_login |
用户ID |
| 请求 |
msg |
unigame_plat_timestamp |
Int |
|
当前时间毫秒 |
| 请求 |
msg |
data |
Object |
|
Json消息 |
|
|
|
|
|
| 响应 |
字段 |
类型 |
默认值 |
描述 |
| 响应 |
errono |
Int |
0 |
状态码 |
| 响应 |
do |
String |
协议名称 |
|
| 响应 |
gameid |
|
|
|
| 响应 |
zoneid |
|
|
|
| 响应 |
uid |
String |
|
字符串 |
| 响应 |
st |
Int |
|
|
| 响应 |
data |
Object |
|
|
| 样例: |
|
|
|
|
| SEND: |
|
|
|
|
| { |
|
|
|
|
| "do": "Cmd.LoginThird_C", |
|
|
|
|
| "data": { |
|
|
|
|
| "uid": "1000375", |
|
|
|
|
| "platInfo": { |
|
|
|
|
| "account": null, |
|
|
|
|
| "email": null, |
|
|
|
|
| "faceurl": null, |
|
|
|
|
| "gameid": "170", |
|
|
|
|
| "gender": null, |
|
|
|
|
| "nickname": null, |
|
|
|
|
| "platid": "69", |
|
|
|
|
| "sign": "8a79b902301acf99564ffc67d6cba12e", |
|
|
|
|
| "timestamp": "1445350704", |
|
|
|
|
| "uid": "e63541fcb17e150369ea679ca7039617" |
|
|
|
|
| } |
|
|
|
|
| }, |
|
|
|
|
| "uid": "1000375", |
|
|
|
|
| "gameid": 170, |
|
|
|
|
| "zoneid": 301, |
|
|
|
|
| "unigame_plat_login": "83c642b96ce868c88fd8037c5f9e1633-1445350752", |
|
|
|
|
| "unigame_plat_timestamp": 1445350890271 |
|
|
|
|
| } |
|
|
|
|
| RECV: |
|
|
|
|
| { |
|
|
|
|
| "errno": "0", |
|
|
|
|
| "st": 1445350753, |
|
|
|
|
| "data": { |
|
|
|
|
| "resultCode": 0, |
|
|
|
|
| "uid": 1000375, |
|
|
|
|
| "errno": "0", |
|
|
|
|
| "userInfo": { |
|
|
|
|
| "username": "1000375", |
|
|
|
|
| "headurl": "http://h5.publish.bwgame.com.cn/SuperSlot/avar.png", |
|
|
|
|
| "platid": 69, |
|
|
|
|
| "plataccount": "1000375", |
|
|
|
|
| "passwd": "123456", |
|
|
|
|
| "chips": 7516, |
|
|
|
|
| "gender": "男", |
|
|
|
|
| "email": "123@qq.com" |
|
|
|
|
| } |
|
|
|
|
| }, |
|
|
|
|
| "do": "Cmd.Login_S" |
|
|
|
|
| } |
|
|
|
|
2.开启长连接(webSocket)
2.1Http请求开启长连接
|
|
|
| 请求 |
Action |
gatewayurl+"?unigame_plat_sign="+MD5(msg+ unigame_plat_timestamp+unigame_plat_key)+["&compress="+Pmd.CompressType] |
| 请求 |
Example |
http://login.publish.bwgame.com.cn:7000/httplogin? unigame_plat_sign=b6cc00a86dbd00b687d287b737e5e765 |
|
|
|
|
|
|
| 请求 |
msg |
字段 |
类型 |
默认值 |
描述 |
| 请求 |
msg |
do |
String |
Pmd.WebSocketForwardUserPmd_C |
打开长链接 |
| 请求 |
msg |
gameid |
Int |
|
游戏ID |
| 请求 |
msg |
zoneid |
Int |
|
区服ID |
| 请求 |
msg |
uid |
String |
|
用户ID |
| 请求 |
msg |
unigame_plat_login |
String |
1.2步骤请求得到的返回值unigame_plat_login |
|
| 请求 |
msg |
unigame_plat_timestamp |
Int |
|
当前时间毫秒 |
| 请求 |
msg |
data |
Pmd.WebSocketForwardUserPmd_C |
|
|
|
|
|
|
|
| 响应 |
字段 |
类型 |
默认值 |
描述 |
| 响应 |
errono |
Int |
0 |
状态码 |
| 响应 |
do |
String |
Pmd. WebSocketForwardUserPmd_S |
请求开启长连接成功 |
| 响应 |
gameid |
|
|
游戏ID |
| 响应 |
zoneid |
|
|
区服ID |
| 响应 |
uid |
String |
|
用户ID |
| 响应 |
st |
Int |
|
用户信息 |
| 响应 |
unigame_plat_login |
|
|
oken |
| 响应 |
unigame_plat_timestamp |
|
|
过期时间 |
| 响应 |
data |
字段 |
类型 |
默认值 |
| 响应 |
data |
gameid |
Int |
游戏ID |
| 响应 |
data |
gatewayurl |
String |
网关URL |
| 响应 |
data |
zoneid |
Int |
区服URL |
| 样例: |
|
|
|
|
| SEND: |
|
|
|
|
| { |
|
|
|
|
| "do": "Pmd.WebSocketForwardUserPmd_C", |
|
|
|
|
| "data": { |
|
|
|
|
| "accountid": 1040039 |
|
|
|
|
| }, |
|
|
|
|
| "uid": "1040039", |
|
|
|
|
| "gameid": 170, |
|
|
|
|
| "zoneid": 304, |
|
|
|
|
| "unigame_plat_login": "4e75dec0cacda5130a3a4355a1efef88-1445337885", |
|
|
|
|
| "unigame_plat_timestamp": 1445394179814 |
|
|
|
|
| } |
|
|
|
|
| RECV: |
|
|
|
|
| { |
|
|
|
|
| "errno": "0", |
|
|
|
|
| "st": 1445394202, |
|
|
|
|
| "do": "Pmd.WebSocketForwardUserPmd_S", |
|
|
|
|
| "data": { |
|
|
|
|
| "zoneid": 304, |
|
|
|
|
| "tokenid": 1445394202878, |
|
|
|
|
| "gatewayurl": "ws://14.17.104.56:7001/shen/user", |
|
|
|
|
| "errno": "0", |
|
|
|
|
| "accountid": 1040039, |
|
|
|
|
| "gameid": 170, |
|
|
|
|
| "logintempid": 0 |
|
|
|
|
| } |
|
|
|
|
| } |
|
|
|
|
2.2 WS登录长连接
本步骤只能在2.1步骤成功之后开始,首先建立websocket,url连接地址为:
2.1步骤获取的gatewayurl+”/json”。Websocket建立成功后开始下面的ws登录验证步骤。
|
|
|
| 字段 |
类型 |
描述 |
| cmd_name |
String |
Pmd.UserLoginTokenLoginUserPmd_C |
| data |
Pmd.UserLoginTokenLoginUserPmd_C |
|
| - 成功响应 |
|
|
|
|
|
| 字段 |
类型 |
描述 |
| cmd_name |
String |
Pmd.UserLoginReturnOkLoginUserPmd_S |
| data |
Pmd.UserLoginReturnOkLoginUserPmd_S |
|
| - 失败响应 |
|
|
|
|
|
| 字段 |
类型 |
描述 |
| cmd_name |
String |
Pmd.UserLoginReturnFailLoginUserPmd_S |
| data |
Pmd.UserLoginReturnFailLoginUserPmd_S |
|
| - 用户被踢下线相应 |
|
|
|
|
|
| 字段 |
类型 |
描述 |
| cmd_name |
String |
Pmd.ReconnectKickoutLoginUserPmd_S |
| data |
Pmd. ReconnectKickoutLoginUserPmd_S |
|
备注(协议部分)
1.1.压缩枚举
Pmd.CompressType 枚举
|
|
|
|
| 字段 |
类型 |
说明 |
描述 |
| gzip |
String |
Gzip压缩 |
|
| flate |
String |
Flate压缩 |
|
| zlib |
String |
zLib压缩 |
|
| lzw |
String |
Lzw压缩 |
|
| ## 1.2.第三方平台用户信息 |
|
|
|
| ### Pmd.PlatInfo |
|
|
|
|
|
|
|
| ---- |
---- |
---- |
---- |
| 字段 |
类型 |
说明 |
描述 |
| account |
int |
|
账号 |
| email |
int |
|
email |
| faceurl |
int |
|
头像 |
| gameid |
int |
|
游戏id |
| gender |
int |
|
第三方平台性别 |
| nickname |
int |
|
第三方平台昵称 |
| platid |
int |
|
平台id |
| sign |
String |
|
登陆签名 |
| timestamp |
String |
|
登陆时间戳 |
| uid |
String |
|
第三方平台用户id |
| ## 1.3.平台注册登录请求协议 |
|
|
|
| ### Pmd.ThirdPlatLoginUserPmd_C |
|
|
|
|
|
|
|
| ---- |
---- |
---- |
---- |
| 字段 |
类型 |
说明 |
描述 |
| platinfo |
Pmd.PlatInfo |
第三方平台用户ID |
|
| gameid |
Int |
游戏ID |
|
| ## 1.4.平台注册登录返回协议 |
|
|
|
| ### Pmd.ThirdPlatLoginUserPmd_S |
|
|
|
|
|
|
|
| ---- |
---- |
---- |
---- |
| 字段 |
类型 |
说明 |
描述 |
| platinfo |
Pmd.PlatInfo |
第三方平台用户ID |
|
| gameid |
Int |
游戏ID |
|
| uid |
String |
用户ID |
|
| sid |
String |
用户唯一标识符 |
Platid+’:’+[username |
| ## 1.5.http开启WS |
|
|
|
| ### Pmd.WebSocketForwardUserPmd_C |
|
|
|
|
|
|
|
| ---- |
---- |
---- |
---- |
| 字段 |
类型 |
说明 |
描述 |
| platinfo |
Pmd.PlatInfo |
第三方平台用户ID |
|
| gameid |
Int |
Flate压缩 |
|
| ## 1.6.http开启WS成功 |
|
|
|
| ### Pmd.WebSocketForwardUserPmd_S |
|
|
|
|
|
|
|
| ---- |
---- |
---- |
---- |
| 字段 |
类型 |
说明 |
描述 |
| gatewayurl |
String |
网关url |
|
| accountid |
Int |
账号id |
|
| logintempid |
Int |
账号id |
|
| ## 1.7. http开启WS失败 |
|
|
|
| ### Pmd.UserLoginReturnFailLoginUserPmd_S |
|
|
|
|
|
|
|
| ---- |
---- |
---- |
---- |
| 字段 |
类型 |
说明 |
描述 |
| desc |
|
http开启失败描述 |
|
| ## 1.8.WS登陆 |
|
|
|
| ### Pmd.UserLoginReturnOkLoginUserPmd_S |
|
|
|
|
|
|
|
| ---- |
---- |
---- |
---- |
| 字段 |
类型 |
说明 |
描述 |
| gameid |
int |
游戏id |
|
| zoneid |
int |
区服id |
|
| logintempid |
int |
2.1步骤成功返回得到的logintempid |
|
| timestamp |
int |
当前时间毫秒数 |
|
| tokenmd5 |
String |
accounted、logintempid、timestamp、platkey按顺序字符串拼接的md5值 |
|
| MD5(String(accountid)+String(logintempid)+String(timestamp)+platkey) |
|
|
|
|
|
|
|
| accountid |
int |
2.1步骤成功返回得到的accountid |
|
| ## 1.9. WS登陆成功 |
|
|
|
| ### Pmd.UserLoginReturnOkLoginUserPmd_S |
|
|
|
|
|
|
|
| ---- |
---- |
---- |
---- |
| 字段 |
类型 |
说明 |
描述 |
| ## 1.10.WS登陆失败 |
|
|
|
| ### Pmd.UserLoginReturnFailLoginUserPmd_S |
|
|
|
|
|
|
|
| ---- |
---- |
---- |
---- |
| 字段 |
类型 |
说明 |
描述 |
| desc |
String |
Ws登录失败详情 |
|
| retcode |
String |
返回码 |
|
| ## 1.11.WS被踢下线 |
|
|
|
| ### Pmd.ReconnectKickoutLoginUserPmd_S |
|
|
|
|
|
|
|
| ---- |
---- |
---- |
---- |
| 字段 |
类型 |
说明 |
描述 |
| desc |
int |
被踢下线详细 |
|