企业公众号回调URL及密钥的配置
简要介绍企业公众号回调URL及密钥配置
企业公众号和企业应用之间的连接
有以下三种方式:
- 企业应用调用企业号提供的接口,管理或查询企业号后台所管理的资源、或给成员发送消息等,称为
主动调用模式
。 - 企业号把用户发送的消息或用户触发的事件推送给企业应用,由企业应用处理,称为
回调模式
- 用户在微信中阅读企业应用下发的H5页面,该页面可以调用微信提供的原生接口,使用微信开放的终端能力,称为
JSAPI模式
开启应用的回调模式
当你开启应用的回调模式时,企业号会要求你填写应用的URL
、Token
、EncodingAESKey
三个参数。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();
}
}