游戏数据及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)