@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;
}
@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;
}