1、 广州市建设领域管理应用信息平台建筑工人考勤数据接口标准目录一、引言11.1编写目的11.2适用范围11.3简称和术语1二、开发规范22.1通信协议22.2通信安全22.3注意事项2三、接口说明43.1批量上报工人考勤43.2实时上报工人考勤5四、附录54.1 测试环境54.2 结果码对照表52一、引言1.1编写目的为实现广州市建设领域管理应用信息平台对项目从业人员实名制管理和工人工资分账管理,考虑到部分项目已经在使用一些商业化实名制管理系统,为避免数据重复登记、减少系统改造成本,特编写本接口文档以供施工企业相关技术人员对接。1.2适用范围本文档的适用对象为接入广州市建设领域管理应用信息平台的
2、施工企业技术开发人员、日常维护人员。1.3简称和术语广州市建设领域管理应用信息平台:以下简称“信息平台”施工企业:指依法取得施工企业资质证书,在本市从事建设施工活动的施工总承包企业、专业承包企业和劳务分包企业二、开发规范2.1通信协议l 采用HTTP(或HTTPS)协议进行请求和响应的处理。接口请求采用GET/POST方式。接口响应返回JSON格式的数据。l 由“信息平台”提供接口地址,企业实名制或考勤系统调用。l 接口请求URL地址:详见接口说明。l 接口未注明处均使用UTF-8编码。l 通信过程中涉及的中文或特殊符号的传输,需进行urlencode处理。l HTTP(或HTTPS)请求参数
3、均为字符串。l 接口请求需进行签名,详见2.2通信安全一节。2.2通信安全为保证数据传输过程中的数据真实性,我们需要对数据进行数字签名,在接收签名数据之后进行签名校验。“信息平台”会为施工企业的每个工程分配唯一的接入编号和接入密钥。签名机制如下:l 对全部有长度限制的传输字段(不包括NL类型的字段)进行签名,将参数名(区分大小写)和参数值(需进行urlencode处理)用“=”连接,参数值为空的参数不参与签名,参数之间用“&”连接,格式是:param1=val1¶m2=val2。l 参数组装顺序规则:参数名的字典顺序。l 密钥拼接方式为传输参数直接连接密钥,如只有param1和para
4、m2两参数,值分别为val1和val2,密钥为key,拼接结果为:param1=val1¶m2=val2key。l 使用“信息平台”分配的密钥进行MD5加密(密钥直接跟在组装好的参数后即可),将值赋给sign参数。l 敏感信息身份证号、银行卡号需要加密传输,使用DES加密,加密key等于接入密钥,加密后的字节码转为16进制编码的字符串,并在密文字符串的前面加“des:”前缀。算法:密文=”des:” + HEX(DES(idcard, key),如:身份证号:5113011990010181111,接入密钥:8c2da4c769828fcfa77aedb690999cf9,密文:des
5、:80cfe03525bb2b8d43d62ff369e95334cd1facfe4bbb800c2.3注意事项l 接口中各项参数当标识是M时参数必选,为O时可选。l 接口字段长度分为三种:无限制(NL),固定长度(FL),可变长度(VL)。如果为FL,则长度必须精确到FL后跟随的数字,格式举例FL14;如果为VL,则长度在可变范围内即可,如果长度不够,不补空格或其它字符,格式举例VL30。l 接口说明中,若参数字体为红色,请仔细阅读备注说明。l 请求返回结果码不为0时,需要再次提交请求。如果结果码大于0,则需要根据提示信息修改错误后再次提交;如果结果码小于0,可以间隔一段时间再提交(如:选择
6、间隔5分钟、10分钟、30分钟、1小时提交一次,连续5次提交不成功时推迟到第二天再提交)。三、接口说明l 所有接口响应的返回信息均以JSON字符串形式返回,可以使用JSON工具包对其进行解析。l 返回信息具体字段参照接口说明中的响应参数,以下以举例:处理成功:resultCode:0,resultDesc:处理成功处理失败:resultCode:1,resultDesc:签名错误l 返回结果码对照见附录4.2结果码对照表。3.1批量上报工人考勤接口说明接口描述施工企业批量上报工人考勤请求地址/attendance/attendance/saves测试请求地址请求参数参数限制长度注释备注acce
7、ssNoMFL32接入编号“信息平台”为施工企业分配的接入编号dataListMNL考勤数据列表考勤数据列表。不参与签名。json格式的数据:builderIdcard : 工人身份证号,使用DES加密,workDate : 考勤日期yyyyMMdd,workStart : 上班时间yyyyMMddHHmmss,workEnd : 下班时间yyyyMMddHHmmsstimestampMFL17时间戳北京时间精确到毫秒(yyyyMMddHHmmssSSS)signMFL32签名dataList不参与签名响应参数参数限制说明resultCodeM返回结果码,数字类型。0表示成功;其它表示失败。r
8、esultDescO返回结果描述3.2实时上报工人考勤接口说明接口描述施工企业实时上报工人考勤。工人必须存在。请求地址/attendance/attendance/save测试请求地址请求参数参数限制长度注释备注accessNoMFL32接入编号“信息平台”为施工企业分配的接入编号builderIdcardMVL150工人身份证号检查工人是否存在的依据,使用DES加密atteTimeMFL17考勤时间yyyyMMddHHmmssatteImageONL考勤图片取图片的二进制值,转成base64编码。不参与签名timestampMFL17时间戳北京时间精确到毫秒(yyyyMMddHHmmssSS
9、S)signMFL32签名atteImage不参与签名响应参数参数限制说明resultCodeM返回结果码,数字类型。0表示成功;其它表示失败。resultDescO返回结果描述四、附录4.1 测试环境测试环境接入编号:测试环境接入密钥:teamCode:builderIdcard:4.2 结果码对照表返回码返回码文本介绍说明0请求成功当且仅当返回码为0时,请求成功1签名验证失败签名错误2参数错误参数长度或数据类型错误3接入编号错误接入编号不存在201班组不存在添加修改班组工人时返回202工人不存在添加修改工人证书、添加修改班组工人时返回-1系统内部异常:.,请稍候再试系统内部异常,返回异常描
10、述4.3调用示例1、 将参数排序 (以Java TreeMap实现参数名按ASCII字典顺序排序)TreeMap params = new TreeMap();params.put(“param1”, urlencode(“value1”, “UTF-8”);params.put(“param2”, urlencode(“value2”, “UTF-8”);2、 将参数拼接成字符串 (空值不参与签名)String str = ;for(param : params) if(param.value != null & param.value.length() 0) str += & + param.key + = + param.value; str = str.substring(1, str.length();3、 生成签名String sign = md5(str + key);params.put(sign, sign);4、 提交数据http.post(params);6