本文共 1322 字,大约阅读时间需要 4 分钟。
@RequestMapping(value = "/weixin", method = { RequestMethod.POST, RequestMethod.GET }, headers = "Accept=application/xml") @ResponseBody public String doService(HttpServletRequest servletRequest, WebRequest webRequest, HttpServletResponse response, @RequestBody(required = false) String body, Model model) { // @RequestParam(value = "barId", required = false) // response.setContentType("text/html; charset=UTF-8"); LOGGER.info("微信通知"); LOGGER.info(servletRequest.getQueryString()); String signature = servletRequest.getParameter("signature"); String timestamp = servletRequest.getParameter("timestamp"); String nonce = servletRequest.getParameter("nonce"); String echostr = servletRequest.getParameter("echostr"); // 加密/校验流程: // 1. 将token、timestamp、nonce三个参数进行字典序排序 // 2. 将三个参数字符串拼接成一个字符串进行sha1加密 // 3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信 // StringBuilder signBuilder = new StringBuilder().append(nonce) // .append(timestamp).append(token); String[] arrStr = { token, timestamp, nonce }; Arrays.sort(arrStr); StringBuilder signBuilder = new StringBuilder().append(arrStr[0]).append(arrStr[1]).append(arrStr[2]); // DigestUtils.shaHex(signBuilder.toString()) if (DigestUtils.sha1Hex(signBuilder.toString()).equals(signature)) { // resp.getWriter().print(echostr); if (StringUtils.isNotBlank(body)) { } } return echostr; }转载地址:http://cihji.baihongyu.com/