消息订阅说明

一、消息订阅介绍

  薪人薪事开放平台是企业内部系统与薪人薪事后台系统之间的桥梁。在业务接口对接的基础之上,为了构建更完善的系统间信息交流机制, 我们提供了消息订阅服务。开放平台将消息及时推送到企业系统,增强了业务流程的可感知性; 同时,完善了系统间数据交互的方式,提高了数据的准确性和可读性。

二、消息订阅时序图

avatar

消息订阅需要注意以下几点:
  • 企业需提供一个接收消息的地址,我们会将您订阅的消息推送到这个URL。

  • 订阅消息的链接需要支持post方式请求。

  • 消息订阅的http请求的超时时间为3秒

  • 推送消息地址需要支持接口验证,接收到如下格式验证消息后需返回{"message":"success"}。

    {
      "messageId": "uuid",
      "type": "verify",
      "sendtime": "1515986177"
    }
    `
    
主动查询推送失败的消息

接收到消息之后,返回如下数据表示成功接收消息。

{"message":"success"}

除此之外,其他消息一律视为处理失败。消息推送失败之后,不会重试。

这些订阅失败的消息,可以通过失败消息接口查询。该接口只能查询最近7日的失败消息。

三、消息介绍

3.1 消息体

参数 类型 说明
messageId String 唯一标识一条消息
type String 消息类型
sendtime Long 发送时间
{
    "messageId": "uuid",
    "type": "department_create",
    "sendtime": 1515986177,
    ... //其他字段信息
}

3.2 消息类型

员工相关的消息

消息类型 所属类别 说明
employee_entry 员工 薪人薪事员工入职,推送此类消息 详见员工入职消息推送
employee_update 员工 薪人薪事员工更新,推送此类消息 详见员工更新消息推送
employee_delete 员工 薪人薪事员工删除,推送此类消息 详见员工删除消息推送
employee_dismiss 员工 薪人薪事员工离职,推送此类消息 详见员工离职消息推送
employee_pending_entry 员工 薪人薪事创建待入职员工,推送此类消息 详见创建待入职员工消息推送
employee_pending_update 员工 薪人薪事更新待入职员工,推送此类消息 详见更新待入职员工消息推送
employee_pending_delete 员工 薪人薪事删除待入职员工,推送此类消息 详见删除待入职员工消息推送
employee_group_add 员工分组字段 薪人薪事员工分组字段添加,推送此类消息 详见员工分组字段添加消息推送
employee_group_update 员工分组字段 薪人薪事员工分组字段更新,推送此类消息 详见员工分组字段更新消息推送
employee_group_delete 员工分组字段 薪人薪事员工分组字段删除,推送此类消息 详见员工分组字段删除消息推送
employee_pending_group_add 员工分组字段 薪人薪事待入职员工分组字段添加,推送此类消息 详见待入职员工分组字段添加消息推送
employee_pending_group_update 员工分组字段 薪人薪事待入职员工分组字段更新,推送此类消息 详见待入职员工分组字段更新消息推送
employee_pending_group_delete 员工分组字段 薪人薪事待入职员工分组字段删除,推送此类消息 详见待入职员工分组字段删除消息推送

部门相关的消息

消息类型 所属类别 说明
department_create 部门 薪人薪事部门创建,推送此类消息 详见部门创建消息推送
department_update 部门 薪人薪事部门更新,推送此类消息 详见部门更新消息推送
department_delete 部门 薪人薪事部门删除,推送此类消息 详见部门删除消息推送
department_enable 部门 薪人薪事部门启用,推送此类消息 详见部门启用消息推送
department_disable 部门 薪人薪事部门停用,推送此类消息 详见部门停用消息推送
virtual_department_create 部门 薪人薪事虚拟部门创建,推送此类消息 详见虚拟部门创建推送
virtual_department_edit 部门 薪人薪事虚拟部门更新,推送此类消息 详见虚拟部门更新推送
virtual_department_delete 部门 薪人薪事虚拟部门删除,推送此类消息 详见虚拟部门删除推送
job_create 岗位 薪人薪事岗位创建,推送此类消息 详见岗位创建消息推送
job_update 岗位 薪人薪事岗位编辑,推送此类消息 详见岗位编辑消息推送
job_delete 岗位 薪人薪事岗位删除,推送此类消息 详见岗位删除消息推送
cost_center_create 成本中心 薪人薪事成本中心创建,推送此类消息 详见成本中心创建推送
cost_center_update 成本中心 薪人薪事成本中心更新,推送此类消息 详见成本中心更新推送
cost_center_delete 成本中心 薪人薪事成本中心删除,推送此类消息 详见成本中心删除推送

审批相关的消息

消息类型 所属类别 说明
flow_task 审批 薪人薪事审批处于异常状态时,推送此类消息 详见审批异常消息推送
flow_step 审批 薪人薪事审批处于待办状态时,推送此类消息 详见审批待办消息推送
flow_process 审批 薪人薪事审批处于终结状态时,推送此类消息 详见审批结束消息推送
flow_node_operate 审批 薪人薪事操作审批节点时,推送此类消息 详见审批节点操作消息推送
dismiss_handover 离职交接 薪人薪事中的离职交接,通过此消息推送 详见离职交接消息推送
handover_node_operate 离职交接 薪人薪事离职交接审批人节点操作,通过此消息推送 详见离职交接审批人节点操作推送

招聘相关的消息

消息类型 所属类别 说明
recruiment_interview_add 招聘 当新安排招聘面试时,推送此类消息 详见安排招聘面试推送
recruiment_interview_update 招聘 当修改招聘面试时,推送此类消息 详见招聘面试更新推送
recruiment_interview_cancel 招聘 当招聘面试撤销时,推送此类消息 详见招聘面试撤销推送
recruiment_interview_feedback 招聘 当招聘面试有人反馈时,推送此类消息 详见招聘面试反馈推送
recruiment_recommend_add 招聘 当推荐简历时,推送此类消息 详见简历推荐创建推送
recruiment_recommend_feedback 招聘 当简历推荐有人反馈时,推送此类消息 详见简历推荐反馈推送
recruiment_pre_entry_eliminate 招聘 当待入职员工的简历淘汰时,推送此类消息 详见待入职员工简历淘汰

绩效相关的消息

消息类型 所属类别 说明
appraisal_todo 绩效 当绩效触发待办时,推送此类消息 详见绩效业务待办推送
apprisal_kpi_complete_value 绩效 当绩效处于完成值阶段时,点击批量同步按钮时,推送此类消息 详见绩效完成值录入消息推送
apprisal_kpi_result_confirm 绩效 当绩效确认最后结果时,推送此类消息 详见绩效结果确认消息推送

通知相关的消息

消息类型 所属类别 说明
notify 通知 薪人薪事中的消息通知,通过此消息推送 详见消息通知

工资相关的消息

消息类型 所属类别 说明
payroll_create_ledger 工资 当新建工资报表时,推送此类消息 详见新建工资报表推送

3.3 签名验证

为防止订阅的消息被篡改,推送消息时,会对消息数据进行签名计算

签名信息以链接参数(链接问号后面的参数)的形式传递,消息数据以消息体的形式传递

  • 推送url样例:
     例如配置的消息推送的地址是 http://ip:端口/message
     则推送的url为 http://ip:端口/message?sign=123MJIB*%1231
    

一致性校验

接收到消息之后,需要对请求验签,即对消息进行签名计算。签名计算的结果如果与收到的签名值一致,则表示消息没有被篡改。

签名计算方式

  • 假设需要消息为content
  • 对content使用HmacSHA1算法进行加密。加密密钥为应用appSecret
  • 将加密结果通过base64编码转换为加密后的字符串。

Java版demo

    /**
     * 薪人薪事消息签名计算
     *
     * @param content   签名明文
     * @param appSecret 应用密钥
     * @return 签名信息
     * @throws Exception
     */
    public static String hmacSha1Encrypt(String content, String appSecret) throws Exception {
        byte[] keyBytes = appSecret.getBytes(StandardCharsets.UTF_8);
        SecretKeySpec localSecretKeySpec = new SecretKeySpec(keyBytes, "HmacSHA1");
        Mac localMac = Mac.getInstance("HmacSHA1");
        localMac.init(localSecretKeySpec);
        byte[] contentBytes = content.getBytes(StandardCharsets.UTF_8);
        localMac.update(contentBytes);
        return Base64.encodeBase64String(localMac.doFinal());
    }
2024 © 企家有道网络技术(北京)有限公司版权所有@京ICP备15035315号 all right reserved,powered by Gitbookupdate by: 2024-06-12 15:52:40

results matching ""

    No results matching ""