第一步:填写服务器配置
登录微信公众平台官网后,在公众平台官网的开发-基本设置页面,勾选协议成为开发者,点击“修改配置”按钮,填写服务器地址(URL)、Token和EncodingAESKey,其中URL是开发者用来接收微信消息和事件的接口URL。Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。同时,开发者可选择消息加解密方式:明文模式、兼容模式和安全模式。模式的选择与服务器配置在提交后都会立即生效,请开发者谨慎填写及选择。加解密方式的默认状态为明文模式,选择兼容模式和安全模式需要提前配置好相关加解密代码,详情请参考消息体签名及加解密部分的文档 。
@RequestMapping(value = "signature", method = RequestMethod.GET)
public void signature(HttpServletRequest request, HttpServletResponse response)throws ServletException,IOException{
String signature = request.getParameter("signature");
String timestamp = request.getParameter("timestamp");
String nonce = request.getParameter("nonce");
String echostr = request.getParameter("echostr");
PrintWriter out = response.getWriter();
if((signature!=null&×tamp!=null&&nonce!=null)&&CheckUtil.checkSignature(signature,timestamp,nonce)){
//如果校验成功,将得到的随机字符串原路返回
out.print(echostr);
}
}
public static boolean checkSignature(String signature,String timestamp,String nonce){
String[] arr = new String[]{
token,timestamp,nonce};
//排序
Arrays.sort(arr);
//生成字符串
StringBuffer content = new StringBuffer();
for (int i =0;i<arr.length;i++){
content.append(arr[i]);
}
//sh