1.12.1. 规范说明
请求说明:
Method:POST
Url:${3rdCallBackUrl}?timestamp=xxxxx&nonce=xxxxx&sign=xxxxx
参数名 | 描述 |
---|---|
3rdCallBackUrl | 第三方接收数据的地址,详见数据推送配置 |
timestamp | unix时间戳,与nonce一起,防止重放攻击 |
nonce | 随机数,与timestamp一起,防止重放攻击 |
sign | 数字签名,md5-32位-小写(timestamp+nonce+token),其中token详见数据推送配置 |
- Head
参数名 | 描述 |
---|---|
companyId | dbs平台内部公司唯一标识 |
companyCode | 与创建公司时传入的一致,一般表示第三方系统内部公司唯一标识 |
sid | 服务id,代表消息事件类型 |
- Body
// 此处数据表示请求的body内容,若第三方配置需要加密,则body会是标准入参消息体加密后的密文
{
"sid": "服务id,不同业务sid不一样,如dse.push.punchRecord表示打卡记录推送",
"mid": "消息id",
"payload": {
"params": {
// 具体参数信息, 详细看具体业务推送
}
}
}
回复说明:
注:回复一律使用明文,不需要加密
{
"code": "00000000",
"message": "success"
}
参数名 | 必填 | 描述 |
---|---|---|
code | Y | 返回编码,00000000表示成功, 其他表示失败 |
message | N | 编码描述 |
1.12.2. 推送流程
如下图所示:
- 设置数据推送配置,平台会发送测试请求验证URL地址是否符合约定,若不符合,则会设置失败;
- 平台接收到设备上传的数据,立即出发数据推送引擎,发起实时推送;
- 第三方在接收到平台推送的信息后,3秒内必须回复成功编码,否则当作推送失败处理;
- 第一次实时推送失败后,会再继续尝试第二次实时推送,失败后进入数据中转站;
- 中转站的数据默认存活期为48小时,48小时之内会不定时不定点尝试继续推送;
- 中转站数据存活期仍未推送成功的就会被归档,这些数据不再纳入推送范畴;
1.12.3. 数据推送配置
开发者账号登录,在应用可视化界面配置,如下图所示。
- 推送开发
默认为关,即不接受任何消息推送。
- URL
接收推送消息的url地址,http或者https,配置时会对此URL地址进行验证。url验证规则查看测试推送地址
- token
用于数据推送时的签名认证,详情查看规范说明
- 是否加密、加密密钥
若选择不加密,则推送都是明文传输,若选择加密,则会body内容会使用AES128(AES/ECB/PKCS5Padding)进行加密,密钥为此处设置的密钥,详情查看规范说明
- 消息事件类型
选择需要推送的事件,如打卡记录
1.12.4. 测试推送地址
此接口是用于测试设置的推送地址是否正常
收到sid=dse.push.test的数据,直接回复code=00000000的消息即可
Request:
// 此接口不管设置加密与否,body内容都采用明文传输
// 若推送采用加密,有必要对事件进行区分,可获取http请求head中的sid字段进行区分
{
"sid": "dse.push.test",
"mid": "xxxxxxxx"
}
Response:
{
"code": "00000000",
"message": "success"
}
1.12.5. 打卡记录推送
支持的版本:v1.2.3 +
推送设备上传的打卡记录
Request:
{
"sid": "dse.push.punchRecord",
"mid": "",
"payload": {
"params": {
"companyId": "xxxxx",
"companyCode": "xxxx",
"punchRecords": [{
"sn": "",
"employeeNo": "",
"punchTime": 1492617600,
"iso8601PunchTime": "2019-06-03T09:01:01+08:00",
"workCode": "",
"status": "0",
"temperature": "36.50",
"maskStatus": "1"
}]
}
}
}
参数名 | 描述 |
---|---|
companyId | dbs平台内部公司唯一标识 |
companyCode | 与创建公司时传入的一致,一般表示第三方系统内部公司唯一标识 |
sn | 打卡设备序列号 |
employeeNo | 打卡员工工号 |
punchTime | 打卡标准Unix时间戳 |
iso8601PunchTime | 打卡时间(iso8601标准格式) |
workCode | 工作代码 |
status | 打卡状态,0 上班签到,1 下班签退,2 外出,3 外出返回,4 加班签到,5 加班签退,255 默认 |
temperature | 体温。此属性配合设备使用,当设备带体温检测功能才有返回值 |
maskStatus | 是否佩戴口罩,0 未佩戴口罩,1 已佩戴口罩。此属性配合设备使用,当设备带口罩检测功能才有返回值 |
回复信息请参看规范说明
1.12.6. 打卡照片推送
打卡照片为在设备打卡时拍摄的照片
每一次打卡将会产生2条记录,一条是打卡记录,一条是打卡照片,sn+employeeNo+punchTime为唯一标识
Request:
{
"sid": "dse.push.punchPhoto",
"mid": "xxxxxxxx",
"payload": {
"params": {
"companyId": "xxxxx",
"companyCode": "xxxx",
"punchPhotos": [{
"sn": "设备号",
"employeeNo": "员工编号",
"punchTime": 1492617600,
"photo": "https://xxxxx.jpg"
}]
}
}
}
参数名 | 描述 |
---|---|
companyId | dbs平台内部公司唯一标识 |
companyCode | 与创建公司时传入的一致,一般表示第三方系统内部公司唯一标识 |
sn | 打卡设备序列号 |
employeeNo | 打卡员工工号 |
punchTime | 打卡标准Unix时间戳 |
photo | 打卡照片url地址,此照片会在DBS存活一段时间(默认是3个月),超过有效期,无法再用提供的url地址获取照片,所以如果对接的业务系统有需求需要存储更久,建议下载此照片存储在自己的系统里。 |
回复信息请参看规范说明
1.12.7. 设备初始化推送
支持的版本:v1.2.2 +
- 设备第一次初始化时推送设备基本信息
Request:
{
"sid": "dse.push.deviceInit",
"mid": "xxxxxxxx",
"payload": {
"params": {
"companyId": "xxxxx",
"companyCode": "xxxx",
"sn": "设备号",
"timezone": "+08:00",
"alais": "一楼打卡机",
"status": 1,
"enable": 1,
"remoteIp": "110.80.38.76",
"initTimeStamp": 1557910639
}
}
}
参数名 | 描述 |
---|---|
companyId | dbs平台内部公司唯一标识 |
companyCode | 与创建公司时传入的一致,一般表示第三方系统内部公司唯一标识 |
sn | 设备序列号 |
timezone | 设备时区 |
alais | 设备别名 |
status | 设备在线状态,1代表在线,0代表离线 |
enable | 设备启用状态,1代表启用,0代表禁用 |
remoteIp | 设备公网Ip地址 |
initTimeStamp | 设备初始化时间戳 |
回复信息请参看规范说明
1.12.8. 设备状态变化推送
支持的版本:v1.2.2 +
- 设备状态发生变化时推送设备状态信息
Request:
{
"sid": "dse.push.deviceStatus",
"mid": "xxxxxxxx",
"payload": {
"params": {
"companyId": "xxxxx",
"companyCode": "xxxx",
"sn": "设备号",
"status": 1,
"changeTimeStamp": 1557910639
}
}
}
参数名 | 描述 |
---|---|
companyId | dbs平台内部公司唯一标识 |
companyCode | 与创建公司时传入的一致,一般表示第三方系统内部公司唯一标识 |
sn | 设备序列号 |
status | 设备在线状态,1代表在线,0代表离线 |
changeTimeStamp | 设备状态变化时间戳 |
回复信息请参看规范说明
1.12.9. 指纹登记进度通知
支持的版本:v1.2.2 +
远程控制登记指纹后,实时上报用户登记指纹的状态.
使用须知:
- 不同设备对于登记指纹回传的次数不同,正常是回传3次,以end结束标识为准;
- 该通知与登记指纹配对,若手动打开设备登记窗口没有此提示;
Request:
{
"sid": "dse.push.registerFpTip",
"mid": "xxxx",
"payload": {
"params": {
"companyId": "xxxxx",
"companyCode": "xxxx",
"sn": "xxxx",
"num": "xxxx",
"code": "xxxx",
"message": "xxxx",
"end": "1",
"sessionId": "xxxx"
}
}
}
参数 | 描述 |
---|---|
companyId | dbs平台内部公司唯一标识 |
companyCode | 与创建公司时传入的一致,一般表示第三方系统内部公司唯一标识 |
sn | 设备序列号 |
num | 第N次按手指 |
code | 第N次按手指返回值 |
message | 第N次按手指返回值对应的消息内容 |
end | 结束标识,1:结束,0:否(默认) |
sessionId | 会话唯一标识,与登记指纹匹配 |
code与message消息列表:
code | message |
---|---|
0 | 成功 |
-1 | 用户不存在 |
-2 | 指纹容量已满 |
-3 | 指纹重复 |
-4 | 超时退出 |
-5 | 指纹合成失败 |
-6 | 获取数据异常 |
-7 | 添加到内存失败 |
-10 | 模板提取异常【位置不对】 |
-11 | 其他异常 |
回复信息请参看规范说明