java公眾號基本配置獲取openId


需求是獲取用戶的openId和手機號,因為公眾號沒有提供方法獲取用戶手機號,所以是讓用戶輸入

1.登錄微信公眾號官網 微信公眾平台 (qq.com),配置基本配置

 

 

 

 

 

配置也就這么多,接下來是代碼

第一次會調get請求,

@RequestMapping(value="/publicBackUrl",method={RequestMethod.GET})
     public void doGet(HttpServletRequest request,HttpServletResponse response) {
    String signature = request.getParameter("signature");
    String timestamp = request.getParameter("timestamp");
    String nonce = request.getParameter("nonce");
    String echostr = request.getParameter("echostr");//直接返回這個參數即可,是驗證token的
    try {
          response.getWriter().print(echostr);
         } catch (IOException e) {
                e.printStackTrace();
         }
}

 

用戶關注公眾號或者發送消息給公眾號都會調用post接口,微信推送到我們服務器的參數都有openId=FromUserName

@RequestMapping(value="/publicBackUrl",method={RequestMethod.POST})
public void doPost(HttpServletRequest request,HttpServletResponse response){
  try {
        request.setCharacterEncoding("UTF-8");
      } catch (UnsupportedEncodingException e1) {
     logger.error("進來followBackUrl異常1=="+e1.getMessage(),e1);
      e1.printStackTrace();
    }

   //解決亂碼
    response.setContentType("text/html; charset=utf-8");
    String resultString="哈哈哈哈";
   try {
          TextMessageResp tResp=new TextMessageResp();
          Map<String, String> resultMap = MessageUtil.parseXml(request);

        //resultMap ={CreateTime=1630469013, EventKey=, Event=subscribe, ToUserName=ht_f152c9d859c, FromUserName=oyXJK5j57yuho2GZU81giutS8600, MsgType=event}
        //判斷是否關注
          if(MessageUtil.EVENT_TYPE_SUBSCRIBE.equals(resultMap.get("Event"))){
                 resultString="歡迎關注xxx公眾號,點擊<a href='https://域名:端口/wechatPublic/bindMoblie.html?fromUserName="+resultMap.get("FromUserName")+"'>綁定手機號</a>";
            }
          tResp.setContent(resultString);
          tResp.setCreateTime(System.currentTimeMillis());
          tResp.setFromUserName(resultMap.get("ToUserName"));
          tResp.setToUserName(resultMap.get("FromUserName"));
          tResp.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);

          //回復用戶信息

         //xml格式

       /**   

        <xml>
       <ToUserName><![CDATA[2222222]]></ToUserName>
       <FromUserName><![CDATA[333333]]></FromUserName>
         <CreateTime><![CDATA[1630561924933]]></CreateTime>
        <MsgType><![CDATA[text]]></MsgType>
       <Content><![CDATA[哈哈哈哈]]></Content>
      </xml>*/

          String resposeString=MessageUtil.textMessageToXml(tResp);

       response.getWriter().write(resposeString);
     } catch (Exception e) {
       e.printStackTrace();
    }
  }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM