在回调模式下,企业可以接收企业邮下发的数据。接收的信息使用XML数据格式、UTF8编码,并以AES方式加密。
企业邮的部分应用有自己的回调模式开关。在管理端开启并设置好相关参数后,此应用的回调模式才生效。
针对加解密的处理,企业邮提供了各种语言的库,企业可以在附录中下载。
开启应用的回调模式
当你开启应用的回调模式时,企业邮会要求你填写应用的URL、Token、EncodingAESKey三个参数。
URL是企业应用接收企业邮推送请求的访问协议和地址,支持http或https协议。
Token可由企业任意填写,用于生成签名。
EncodingAESKey用于消息体的加密,是AES密钥的Base64编码。
验证URL、Token以及加密的详细处理请参考后续“接收消息时的加解密处理”的章节。
验证URL有效性
当你提交以上信息时,企业邮将发送GET请求到填写的URL上,GET请求携带四个参数,企业在获取时需要做urldecode处理,否则会验证不成功。
参数 | 描述 | 是否必带 |
---|---|---|
msg_signature | 企业邮加密签名,msg_signature结合了企业填写的token、请求中的timestamp、nonce参数、加密的消息体 | 是 |
timestamp | 时间戳 | 是 |
nonce | 随机数 | 是 |
echostr | 加密的随机字符串,以msg_encrypt格式提供。需要解密并返回echostr明文,解密后有random、msg_len、msg、CorpID四个字段,其中msg即为echostr明文 | 首次校验时必带 |
企业通过参数msg_signature对请求进行校验,如果确认此次GET请求来自企业邮,那么企业应该对echostr参数解密并原样返回echostr明文(不能加引号,不能带bom头,不能带换行符),则接入验证生效,回调模式才能开启。
后续回调企业时都会在请求URL中带上以上参数(echostr除外),校验方式与首次验证URL一致。
使用回调模式
企业邮在回调企业URL时,会对消息体本身做AES加密,以XML格式POST到企业应用的URL上。
企业邮服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。如果在调试中,发现成员无法收到响应的消息,可以检查是否消息处理超时。
当接收成功后,http头部返回200表示接收ok,其他错误码一律当做失败并发起重试 关于重试的消息排重,有MailID的消息推荐使用MailID排重 或者UserID + Time排重。
假设企业回调URL为http://api.3dept.com。
请求说明:
请求地址: http://api.3dept.com/?msg_signature=ASDFQWEXZCVAQFASDFASDFSS×tamp=13500001234&nonce=123412323
1、msg_encrypt为经过加密的密文
2、AppID为应用id,每个应用都有唯一的id
3、CorpID为企业邮的CorpID
企业需要对msg_signature进行校验,并解密msg_encrypt,得出msg的原文。