游戏数据及GM指令接入说明
一.使用说明
为游戏开发者提供配置GM指令和玩家信息查询规范,通过GM指令和玩家信息的查询,帮助运营和客服人员更好的提升客户服务,实现市场营销、销售、服务等活动自动化。
1. 配置GM指令请求方式
游戏列表,点击今日游戏配置
选择请求方式(通过中间层或直接发送到游戏服务器),并配置请求地址
2. GM指令请求方式说明
通过中间层(推荐)
中间层存在于cp服务器,统计后台发送后,通过中间层再分发到各游戏服务器,中间层接收并检验数据正确后返回统计后台成功,并异步分发到其他服务器
优点:发送多台服务器只需一个http请求,中间层与游戏服务器的交互为cp服务端定义,可按照游戏服务端需求选择更高效的交互方式
缺点:中间层开发成本和维护成本高(后台提供中间层数据接收php代码DEMO)
直接发送到游戏服务器
统计后台通过ajax http异步请求到各游戏服务器,游戏服务器的ip和webserver端口存在于统计后台
优点:游戏服务器只需提供webserver并按照接入文档接收数据即可
确定:只提供http请求方式接口,效率不足
二.请求接口
1. 游戏信息查询接口
1.1. 玩家信息查询
接口描述:
请求方式:POST
请求参数:
参数 |
类型 |
必填 |
备注 |
method |
string |
是 |
标识调用接口方法名(本接口填写 getUserMes) |
serverId |
int |
是 |
服务器ID |
data_type |
Int |
是 |
后台配置类型id |
show_type |
Int |
是 |
1.列表形式 2.明细形式 |
user_type |
Int |
是 |
查询类型 1:角色名,2:角色id |
user |
string |
是 |
根据user_type填写内容角色名或角色id |
timestamp |
Int |
是 |
当前时间 |
key |
md5 |
是 |
验证签名(规则见其他说明) |
1.2. 玩家日志查询
接口描述:
请求方式:POST
请求参数:
参数 |
类型 |
必填 |
备注 |
method |
string |
是 |
标识调用接口方法名(本接口填写 getUserLog) |
serverId |
int |
是 |
服务器ID |
data_type |
Int |
是 |
后台配置类型id |
show_type |
Int |
是 |
1.列表形式 2.明细形式 |
user_type |
Int |
是 |
查询类型 1:角色名,2:角色id |
start_time |
Int |
是 |
查询开始时间(无时间选择填写今天) |
user |
string |
是 |
根据user_type填写内容角色名或角色id |
timestamp |
Int |
是 |
当前时间 |
key |
md5 |
是 |
验证签名(规则见其他说明) |
1.3. 其他信息查询
接口描述:
请求方式:POST
请求参数:
参数 |
类型 |
必填 |
备注 |
method |
string |
是 |
标识调用接口方法名(本接口填写 getGameMes) |
serverId |
int |
是 |
服务器ID |
data_type |
Int |
是 |
后台配置类型id |
show_type |
Int |
是 |
1.列表形式 2.明细形式 |
ext_verify |
Json |
是 |
自定义字段必填验证({‘ext1’,’ext2’……}) |
自定义查询字段1 |
后台配置的自定义字段 |
||
自定义查询字段2 |
|||
自定义查询字段3 |
|||
……(后台配置更多字段) |
|||
timestamp |
Int |
是 |
当前时间 |
key |
md5 |
是 |
验证签名(规则见其他说明) |
1.4. 返回参数
返回格式:json
列表形式(日志查询):
参数名称 |
说明 |
备注 |
见下面说明 |
错误码 |
|
data |
{ "table_header": [ "字段1", "字段2", "字段3", "字段4", …… ], "table_list": [ [ "内容1", "内容2", "内容3", "内容4", …… ], …… ] } |
返回一个列表内容 table_header为表头,显示列表的标题 table_list 为列表类容,与表头字段必须一一对应 |
参数名称 |
说明 |
备注 |
statusCode |
见下面说明 |
错误码 |
data |
{ "keys": [ "名称1", "名称2", "名称3", …… ], "values": [ "数据1", "数据2", "数据3", …… ] } |
返回一个明细内容 Keys:每个数据的标题 Values:每个数据的内容 字段必须一一对应 |
2. GM指令发送接口
请求方式:POST,json数据流
请求参数:
参数 |
类型 |
必填 |
备注 |
method |
string |
是 |
标识调用接口方法名(本接口填写 sendGmInfo) |
opids |
string |
是 |
渠道ID列表(多渠道以英文逗号隔开),长度不超过255 |
sid |
string |
是 |
区服ID |
attachment |
Json |
是 |
自定义标识(key=>value) |
goods |
Json |
是 |
没有选择物品时为0,有的话为json数组,示例[{"code":780036,"type":6,"amount":99},{"code":230706,"type":22,"amount":2}] (注:code:物品代码,type:物品类型,amount:数量) |
gm_no |
int |
是 |
自定义字段必填验证({‘ext1’,’ext2’……}) |
timestamp |
Int |
是 |
当前时间 |
key |
md5 |
是 |
验证签名(规则见其他说明) |
返回结果:POST方式,json
返回参数 |
描述 |
类型 |
示例 |
statusCode |
返回状态吗 |
int |
200 |
请求字符串:
{"attachment":"{\"notice\":\"aaa\"}","gm_no":103,"goods":"0","method":"sendGmInfo","opids":"1,2","sid":"1","timestamp":1468294004,"key":"cb4d681317aa2a725b4fe7b483d11c99"}
请求实例:
实例:(php语言:)
$url = ‘接入方地址’;
$data = array (
'attachment' => '{"notice":"aaa"}',
'gm_no' => 103,
'goods' => '0',
'method' => 'sendGmInfo',
'opids' => '1,2',
'sid' => '1',
'timestamp' => 1468294004,
'key' => 'cb4d681317aa2a725b4fe7b483d11c99',
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); //json数据流
$rtn = curl_exec($ch);
curl_close($ch);
echo $rtn;
exit();
接收:(php语言): file_get_contents('php://input')
三. 其他说明
1. 错误码(statusCode)
200:成功
201:serverId无效
202:方法类型或方法名称为空
203:方法类型或方法名称无效
204:参数不完整
205: 签名错误
999:其他错误
2. 签名说明
appId:从后台基本信息获取游戏appId
appKey:从后台基本信息获取游戏appKey
timestamp:请求参数中的时间戳
请求参数首字母排序:请求参数中,去掉timestamp和key的其他参数
规则 key = md5(appId+md5(请求参数首字母排序)+timestamp+appKey)