配置選單按鈕掃一掃

李日興發表於2019-03-28

剛好這段時間都在做公眾號,所有和大家講講怎麼配置公眾號選單。一般有公眾號自帶的和,自定義的選單配置

   /** 
     * 組裝選單資料 
     *  
     * @return 
     */  
    private static Menu getMenu() {  
    	//生成授權頁面資訊
    	
//    	String  StrURL = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID"
//    			+ "&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect";// 	
//    	String strAutoURLuft8 = "";
//    	String strOpenID = MainConst.getWXAppID();
//    	String strScope = "snsapi_userinfo";//    	
//    	CommonUtil urlUti = new CommonUtil();    	
//    	String requestUrl = StrURL.replace("APPID", strOpenID).replace("REDIRECT_URI", strAutoURLuft8).replace("SCOPE", strScope);  
    	    		   	
    	
    	Button mainBtn1 = null;
    	mainBtn1 = new ViewButton();  
            ((ViewButton)mainBtn1).setName("管理員");  
            ((ViewButton)mainBtn1).setType("view");  
            ((ViewButton)mainBtn1).setUrl(OauthUtil.MycreateOauth(MainConst.getDomain_boss() + "index.html")); 
                    
            
//        Button btn21 = null;
//            	btn21= new ViewButton();  
//            	((ViewButton)btn21).setName("客房預訂");  
//            	((ViewButton)btn21).setType("view"); 
//            	((ViewButton)btn21).setUrl(OauthUtil.MycreateOauth(MainConst.getDomain_pages() + "bookroom.jsp"));
            	            	
//        Button btn22 = null;
//  			btn22= new ViewButton();  
//        	((ViewButton)btn22).setName("我的房間");  
//        	((ViewButton)btn22).setType("view"); 
//        	((ViewButton)btn22).setUrl(OauthUtil.MycreateOauth(MainConst.getDomain_pages() + "myroom.jsp"));            	
    	

//       Button btn23 = null;
//       			btn23= new ViewButton();  
//            	((ViewButton)btn23).setName("我的訂單");  
//            	((ViewButton)btn23).setType("view");             	
//            	((ViewButton)btn23).setUrl(OauthUtil.MycreateOauth(MainConst.getDomain_pages() + "queryOrders.jsp?nav_mode=0"));     	
        	
            	
            	
//        Button btn24 = null;
//   			btn24= new ViewButton();  
//        	((ViewButton)btn24).setName("我的分享鎖");  
//        	((ViewButton)btn24).setType("view"); 
//        	((ViewButton)btn24).setUrl(OauthUtil.MycreateOauth(MainConst.getDomain_pages() + "myshare.jsp")); 
        	       	  	
                        		
            Button btn31 = null;
        	btn31= new ViewButton();  
        	((ViewButton)btn31).setName("門禁開門");  
        	((ViewButton)btn31).setType("view"); 
        	((ViewButton)btn31).setUrl(OauthUtil.MycreateOauth(MainConst.getDomain_rentclient() + "rc/index.htmlJINGHAO/keyword"));
	
        	Button btn32 = null;
  			btn32= new ViewButton();  
        	((ViewButton)btn32).setName("房間開門");  
        	((ViewButton)btn32).setType("view"); 
        	((ViewButton)btn32).setUrl(OauthUtil.MycreateOauth(MainConst.getDomain_rentclient() + "rc/index.htmlJINGHAO/keyroom"));    
        		
            
            /*   	   
            	
       Button btn33 = null;
       			btn33= new ViewButton();  
            	((ViewButton)btn33).setName("設定開門密碼");  
            	((ViewButton)btn33).setType("view"); 
            	((ViewButton)btn33).setUrl(OauthUtil.MycreateOauth(MainConst.getDomain_rentclient() + "setpass.html")); 
            	            	            	
       Button btn34 = null;
       			btn34= new ViewButton();  
            	((ViewButton)btn34).setName("設定分享");  
            	((ViewButton)btn34).setType("view"); 
            	((ViewButton)btn34).setUrl(OauthUtil.MycreateOauth(MainConst.getDomain_rentclient() + "shareopen.html")); 
            	                       	
       Button btn35 = null;
       			btn35= new ViewButton();  
            	((ViewButton)btn35).setName("水電費");  
            	((ViewButton)btn35).setType("view"); 
            	((ViewButton)btn35).setUrl(OauthUtil.MycreateOauth(MainConst.getDomain_rentclient() + "feelist.html")); 
                 	
           */	
            	     
//       Button btn35 = null;
//        btn35=new CommonButton();  
//        btn35.setName("一鍵開門");  
//       ((CommonButton)btn35).setType("click");  
//       ((CommonButton)btn35).setKey("35");
                                
//        ComplexButton mainBtn2 = new ComplexButton();  
//        mainBtn2.setName("線上預訂");  
//        mainBtn2.setSub_button(new Button[] { btn21, btn22,btn23,btn24});  
         
        ComplexButton mainBtn2 = new ComplexButton();  
        mainBtn2.setName("開門");  
//        mainBtn2.setSub_button(new Button[] { btn31, btn32, btn33, btn34,  btn35 }); 
        mainBtn2.setSub_button(new Button[] { btn31, btn32}); 
        
        Button mainBtn35 = null;
    	mainBtn35 = new ViewButton();  
            ((ViewButton)mainBtn35).setName("登入");  
            ((ViewButton)mainBtn35).setType("view");  
            ((ViewButton)mainBtn35).setUrl(OauthUtil.MycreateOauth(MainConst.getDomain_rentclient() + "rc/index.html"));
           	
      CommonButton btn34 = new CommonButton();  
       btn34.setName("掃一掃");  
      btn34.setType("scancode_push");  
      btn34.setKey("34");
      ComplexButton mainBtn3 = new ComplexButton();  
      mainBtn3.setName("使用者");  
//      mainBtn2.setSub_button(new Button[] { btn31, btn32, btn33, btn34,  btn35 }); 
      mainBtn3.setSub_button(new Button[] { btn34,mainBtn35}); 
      
        /** 
         * 這是公眾號xiaoqrobot目前的選單結構,每個一級選單都有二級選單項<br> 
         *  
         * 在某個一級選單下沒有二級選單的情況,menu該如何定義呢?<br> 
         * 比如,第三個一級選單項不是“更多體驗”,而直接是“幽默笑話”,那麼menu應該這樣定義:<br> 
         * menu.setButton(new Button[] { mainBtn1, mainBtn2, btn33 }); 
         */  
        Menu menu = new Menu();  
        menu.setButton(new Button[] { mainBtn1,  mainBtn2, mainBtn3 });  
  
        return menu;  
        
        
    } //...
    
    
    public static void initMenu(){
    	 // 呼叫介面獲取access_token  
        	L.i("開始配置微信選單"); 
         
            // 呼叫介面建立選單  
            int result = WeixinUtil.createMenu(getMenu(), MainConst.getToken());  
  
            // 判斷選單建立結果  
            if (0 == result)  
            {                
                L.i("成功配置微信選單.");
            }
            else  
            {            	              
                L.v("配置微信選單失敗!");
            }
      }//...
    

 上面的是建立選單的,還有進入選單時,我們要微信授權,所有觸發選單的頁面,也要微信授權,才能拿的到openid

/**
	 * 通過Oauth獲得Base資訊(openID),再通過OauthServlet跳轉回url
	 * @param url
	 * @return 完整url
	 */
    public static  String MycreateInfoOauth(String url){
    	return createOAuth(MainConst.getWXAppID(), urlEncodeUTF8(MainConst.getDomain_weixin()+"oauthInfo"), "snsapi_userinfo", url);
    }
    
    
	/**
	 * 通過Oauth獲得Base資訊(openID),再通過OauthServlet跳轉回url
	 * 暫時沒用 
	 * @param url
	 * @return 完整url
	 */
//    public static  String MycreateBaseOauth(String url){
//    	return createOAuth(MainConst.getWXAppID(), urlEncodeUTF8(MainConst.getDomain_weixin()+"oauth"), "snsapi_base", url);
//    }
    
    //
    /**
     * 
     * @param appID
     * 
     * @param address 要UTF-8格式過。如 urlEncodeUTF8(url)
     * 
     * @param scope snsapi_base 直接可以獲取openID,不需要使用者點選授權。 snsapi_userinfo 需要使用者授權,可以獲得使用者的基本資料
     * 
     * @param state 在授權跳轉後,會帶上這個引數,  作為跳轉URL  我們可以在自己的後臺再獲取它  
     * 
     * @return
     */
    public static String createOAuth(String appID,String address,String scope,String state){
    	String url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+appID
    			+"&redirect_uri="+address +"&response_type=code&scope=" 
    			+ scope + "&state=" +state +  "#wechat_redirect";  	
    	
    	return url;
    }//...

 

appid是微信公眾號的配置appid,通過授權我們可以拿到openid

相關文章