企业内部开发
基础
连接微信
办公
会议
会议统计管理
企业内部开发
服务端API
消息接收与发送
智能机器人
回调和回复的加解密方案
回调和回复的加解密方案
最后更新:2025/07/23

目录

  • 验证URL有效性
  • 接收回调解密
  • 加密与被动回复
  • 验证URL有效性

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

    获取请求参数时需要做Urldecode处理,否则会验证不成功

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

    请求方式:GET

    请求地址:https://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三个字段,其中msg即为消息内容明文

    智能机器人后台收到请求后,需要做如下操作:

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

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

    企业内部智能机器人场景中,ReceiveId为""

    接收回调解密

    智能机器人的回调格式为json,参考接收数据格式说明。开发者可以直接使用企业微信为应用提供的加解密库(目前已有c++/python/php/java/c#等语言版本)解密encrypt字段,获取事件明文json报文。需要注意的是,加解密库要求传 receiveid 参数,企业自建智能机器人的使用场景里,receiveid直接传空字符串即可;

    加密数据格式 :

    {
    	"encrypt": "msg_encrypt"
    }

    参数说明

    参数是否必填说明
    encrypt消息结构体加密后的字符串

    加密与被动回复

    开发者解密数据得到用户消息内容后,可以选择直接回复空包,也可以在响应本次请求的时候直接回复消息。回复的消息需要先按明文协议构造json数据包,然后对明文消息进行加密,然后填充到下述协议中的encrypt字段中,之后再回复最终的密文json数据包。加密过程参见“明文msg的加密过程”。

    加密数据格式:

    {
    	"encrypt": "msg_encrypt",
    	"msgsignature": "msg_signaturet",
    	"timestamp": 1641002400,
    	"nonce": "nonce"
    }

    参数说明:

    参数是否必须说明
    encrypt加密后的消息内容
    msgsignature消息签名
    timestamp时间戳,要求为秒级别的
    nonce随机数,需要用回调url中的nonce
    上一篇模板卡片类型
    下一篇主动回复消息
      本节内容
    服务端API
    基础
    连接微信
    办公
    会议
    会议统计管理
    客户端API
    小程序
    基础
    连接微信
    办公
    JS-SDK
    基础
    连接微信
    办公
    消息推送(原“群机器人”)
    更新日志
    联系我们