简要介绍企业公众号回调URL及密钥配置

企业公众号和企业应用之间的连接

有以下三种方式:

  1. 企业应用调用企业号提供的接口,管理或查询企业号后台所管理的资源、或给成员发送消息等,称为主动调用模式
  2. 企业号把用户发送的消息或用户触发的事件推送给企业应用,由企业应用处理,称为回调模式
  3. 用户在微信中阅读企业应用下发的H5页面,该页面可以调用微信提供的原生接口,使用微信开放的终端能力,称为JSAPI模式

开启应用的回调模式

当你开启应用的回调模式时,企业号会要求你填写应用的URLTokenEncodingAESKey三个参数。
URL是企业应用接收企业号推送请求的访问协议和地址,支持http或https协议。
Token可由企业任意填写,用于生成签名。
EncodingAESKey用于消息体的加密,是AES密钥的Base64编码。

验证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明文 首次校验时必带

用Spring MVC实现的示例代码

//...
@Autowired
private WeixinProperties properties;
//...
@RequestMapping(value = "/app1", method = RequestMethod.GET)
public void verifyURL(HttpServletRequest request, HttpServletResponse response) throws Exception {
    try {
        WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(properties.getToken(), properties.getEncodingAESKey(), properties.getCorpID());
        String msg_signature = request.getParameter("msg_signature");
        String timestamp = request.getParameter("timestamp");
        String nonce = request.getParameter("nonce");
        String echostr = request.getParameter("echostr");
        String sEchoStr = wxcpt.VerifyURL(msg_signature, timestamp, nonce, echostr);
        System.out.println("verifyurl echostr: " + sEchoStr);
        response.getWriter().print(sEchoStr);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

参考文档

文章目录
  1. 1. 企业公众号和企业应用之间的连接
  2. 2. 开启应用的回调模式
  3. 3. 验证URL有效性
  4. 4. 用Spring MVC实现的示例代码
  5. 5. 参考文档