参考博文1:企业微信回调验证、消息交互、审批状态回调及审批查询
参考博文2:企业微信通讯录回调模板-XML转JSON-让回调不再难!//主要参考实现XML转JSON
企业微信设置接收事件服务器url
微信官方提供的示例代码(工具)包:下载地址
其中的异常及:
1、java.security.InvalidKeyException:illegal Key Size
官方网站下载JCE无限制权限策略文件,oracle下载地址
如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件
如果安装了JDK,将两个jar文件放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件
2、java.lang.OutOfMemoryError:Java heap space
可略,设置默认vm参数:-Xms800m -Xmx800m
3、com.qq.weixin.mp.aes.AesException: 解密后得到的buffer非法
参考博文
解决方案:检查微信后台随机获取的Token和EncodingAESKey是否一致。
实现步骤:
1、验证url的有效性(必须GET方法)
controller层写个方法:
@Value("${corpId}")
private String corpId;//企业Id
//微信后台,随机获取的Token和EncodingAESKey,写死在配置文件中。
//注意:一定要跟微信后台配置的一样,否则会报解密后得到的buffer非法
@Value("${token}")
private String token;
@Value("${EncodingAESKey}")
private String encodingAESKey;
//企业微信回调验证
@RequestMapping(value = "callback",method = RequestMethod.GET)
public void connect(HttpServletRequest request, HttpServletResponse response){
// 微信加密签名
String msgSignature = request.getParameter("msg_signature");
// 时间戳
String timestamp = request.getParameter("timestamp");
// 随机数
String nonce = request.getParameter("nonce");
// 随机字符串
String echoStr = request.getParameter("echostr");
WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(token,encodingAESKey,corpId);
//回调key值