# 问卷系统接入 ## 版本说明 > 该文档为游族问卷系统 游一问V3.0版本的游戏接入文档。 ## 使用场景 运营在问卷配置后台添加问卷后,问卷系统会颁发一个供玩家访问的url,包含问卷系统的访问地址和问卷唯一标识qnid。为满足玩家上报信息和游戏内角色关联,需要游戏进行适当的url拼接,在游戏内向玩家发放并跳转至问卷系统页面。 ## 接口说明 ### URL说明 游戏内,访问问卷系统时,需使用以下接口,来获取相应问卷。 - 请求方式:GET - 请求URL及规则:https://uask-v3.youzu.com/route?data= url_encode(base64_encode(str)) (海外游戏:https://uask-v3.gtarcade.com/route?data= url_encode(base64_encode(str))) - str组成方式及所含元素: | 参数 | 描述 | 是否必须 | 类型 | 备注 | | ----------- | -------------- | -------- | ------------ | ------------------------------------------------------------ | | app_id | 应用ID | true | int | 问卷系统分配,联系运营或者系统管理员获取 | | qn_id | 问卷唯一标识ID | true | int | 运营配置问卷后可以获取 | | server_id | 服务器ID | true | varchar(40) | 服务器ID;若已合服,请与上报数据中心逻辑一致(上报合服前的原始serverid) | | server_name | 服务器名称 | true | varchar(255) | 服务器名称 | | role_id | 角色ID | true | varchar(40) | 游戏内角色ID | | role_name | 角色名称 | true | varchar(255) | 游戏内角色名称 | | timeline | 时间戳 | true | int | 十位时间戳,最小单位为秒 | | lang_key | 问卷语言 | false | varchar(255) | | | did | 设备ID | false | varchar(255) | | | os | 设备操作系统 | false | varchar(255) | | | custom_data | 扩展参数 | false | varchar(255) | 自定义扩展用 | | sign | 签名 | true | string | `具体签名规则见下文` | | 语言 | lang_key | | -------- | -------- | | 英语 | en-us | | 中文简体 | zh-cn | | 繁体中文 | zh-zh | | 土耳其语 | tr-tr | | 德语 | de-de | | 法语 | fr-fr | | 俄语 | ru-ru | | 西班牙语 | es-es | | 葡萄牙语 | pt-pt | | 波兰语 | pl-pl | | 印尼语 | id-id | | 意大利语 | it-it | | 泰语 | th-th | | 阿拉伯语 | ar-ar | | 韩语 | kr-kr | | 日文 | jp-jp | | 越南语 | vi-vn | ### 签名规则 1. 上述`必填参数除sign外`按照参数名`字母升序排列`,sign不参与签名; 2. 排序后的参数名与对应的参数值用`&`拼接,如:a=1,b=2,c=3拼接得到a=1&b=2&c=3; 3. `直接拼接`key值,得到a=1&b=2&c=3key,做md5加密,`key由问卷系统分配`.(生成md5格式:32位小写) ### php代码示例 ”` $key = ‘LMhCcfojRJL6CXNS’; $params = [ ‘app_id’ => 16, ‘qn_id’ => 596, ‘server_id’ => ‘888’, ‘server_name’ => ‘tttttttt’, ‘role_id’ => ‘ssss’, ‘role_name’ => ‘xxxx’, ‘timeline’ => time(), ‘did’ => ‘test’, ‘os’ => ‘os’, ‘custom_data’ => ‘json string’, ]; ```code $data = $params; unset($data['did'],$data['os'],$data['custom_data']); $sign = $this->genSign($data ,$key); $params['sign'] = $sign; $strA = http_build_query($params); echo urlencode(base64_encode($strA)); private function genSign($params ,$key) { ksort($params); $str = http_build_query($params); return md5($str.$key); } ```