/**
   * 功能:授权后的回调请求处理
   *
   * @throws Exception
   */
  @RequestMapping(value = "/wechat/oAuth")
  public String oAuth(Signer signer, HttpServletRequest request, HttpServletResponse response)
      throws Exception {
    // 防止中文乱码
    request.setCharacterEncoding("UTF-8");
    response.setCharacterEncoding("UTF-8");

    // 用户同意授权后,能获取到code
    String code = signer.getCode();

    Signer signInfo = SignUtil.getSignInfo(signer);
    String appId = signInfo.getAppid();
    String appSecret = signInfo.getAppsecret();

    // 用户同意授权
    if (!"authdeny".equals(code)) {
      // 获取网页授权acess_token
      WeixinOauth2Token weixinOauth2Token =
          AdvancedUtil.getOauth2AccessToken(appId, appSecret, code);
      // 网页授权接口访问凭证
      String accessToken = weixinOauth2Token.getAccessToken();
      // 用户标识openId
      String openId = weixinOauth2Token.getOpenId();
      // 获取用户信息
      SNSUserInfo snsUserInfo = AdvancedUtil.getSNSUserInfo(accessToken, openId);
      // 设置要传递参数
      request.setAttribute("snsUserInfo", snsUserInfo);
    }
    // 跳转到oAuth.jsp
    return "oAuth";
  }
  /**
   * 功能:微信首页
   *
   * @throws Exception
   */
  @RequestMapping(value = "/wechat/home")
  public void home(Signer signer, HttpServletRequest request, HttpServletResponse response)
      throws Exception {

    // 防止中文乱码
    request.setCharacterEncoding("UTF-8");
    response.setCharacterEncoding("UTF-8");
    // 随机字符串
    String echostr = signer.getEchostr();
    // 初始化用于判断微信请求方法GET/POST
    String method = request.getMethod();

    PrintWriter out = null;
    try {
      out = response.getWriter();
      if (SignUtil.checkSignature(signer)) {
        if ("GET".equals(method)) {
          out.print(echostr);
        } else {
          // 调用核心服务类接收处理请求
          String respXml = wechatService.processRequest(request);
          out.print(respXml);
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      out.close();
      out = null;
    }
  }