企业微信回调验证、消息交互、审批状态回调及审批查询

本文详细介绍了企业微信的回调验证、消息交互、审批状态回调及查询审批状态的过程。在回调验证中,重点在于URL的有效性验证和消息解密。消息交互主要涉及POST请求的处理,包括消息结构体的解密和被动回复。审批状态回调事件需解析XML消息体以获取审批状态。查询审批状态则通过POST请求获取。
摘要由CSDN通过智能技术生成

审批接口调用总是伴随着状态回调的通知,设置接收消息,可以让自建应用和企业微信之间进行双向通信。

当然在此之前,我们需要确定,企业微信后台是否开启了审批状态通知。

 一. 企业微信回调验证

 二. 企业微信消息交互(重要)

 三. 审批状态回调

 四. 查询审批状态

 

注意: 想要成功接收到企业微信回调的信息 ,解密Encrypt,得到明文的消息结构体尤为重要,当然解密后得到的是xml格式文件,我们还需要解析xml文件,才能得到我们想要拿到的字段。

 

一. 企业微信回调验证

点击保存即会开始验证url的有效性。官方文档关于验证url有效性也是介绍的很仔细。(回想当时,一步一个坑!!!)

验证URL有效性

当点击“保存”提交以上信息时,企业微信会发送一条验证消息到填写的URL,发送方法为GET
企业的接收消息服务器接收到验证请求后,需要作出正确的响应才能通过URL验证。

企业在获取请求时需要做Urldecode处理,否则可能会验证不成功
你可以访问接口调试工具进行调试,依次选择 建立连接 > 接收消息。

假设接收消息地址设置为:http://api.3dept.com/,企业微信将向该地址发送如下验证请求:

请求方式:GET
请求地址:http://api.3dept.com/?msg_signature=ASDFQWEXZCVAQFASDFASDFSS&timestamp=13500001234&nonce=123412323&echostr=ENCRYPT_STR
参数说明

参数 必须 说明
msg_signature 企业微信加密签名,msg_signature结合了企业填写的token、请求中的timestamp、nonce参数、加密的消息体
timestamp 时间戳
nonce 随机数
echostr 加密的字符串。需要解密得到消息内容明文,解密后有random、msg_len、msg、receiveid四个字段,其中msg即为消息内容明文

企业后台收到请求后,需要做如下操作:

  1. 对收到的请求做Urldecode处理
  2. 通过参数msg_signature对请求进行校验,确认调用者的合法性。
  3. 解密echostr参数得到消息内容(即msg字段)
  4. 1秒内响应GET请求,响应内容为上一步得到的明文消息内容(不能加引号,不能带bom头,不能带换行符)

以上2~3步骤可以直接使用验证URL函数一步到位。
之后接入验证生效,接收消息开启成功。

(以上来自企业微信官方文档)

在后台编码中,我们需要先下载官方demo,demo里面封装了加密、解密算法,还用验证过程中需要用到对象类。(下载官方demohttps://work.weixin.qq.com/api/doc#90000/90138/90307

    //企业微信回调验证
    @RequestMapping(value = "callback",method = RequestMethod.GET)
    public void connect(HttpServletRequest request, HttpServletResponse response){

        //当你提交以上信息时,企业号将发送GET请求到填写的URL上,GET请求携带四个参数,企业在获取时需要做urldecode处理,否则会验证不成功

        // 微信加密签名
        String msg_signature = request.getParameter("msg_signature");
        // 时间戳
        String timestamp = request.getParameter("timestamp");
        // 随机数
        String nonce = request.getParameter("nonce");
        // 随机字符串
        String echoStr = request.getParameter("echostr");

        //回调key值
        String sEchoStr = null;

        String contacts_token = PropertiesUtil.getProperty("contacts_token");
        String contacts_encodingaeskey = 
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值