天天看點

JAVA微信推送到首頁-公衆号

有關于公衆号的推送

1.推送的servlet的方法

protected void openMsg(HttpServletRequest request, HttpServletResponse response, JSONObject result)
      throws ServletException, IOException {
    L.i(TAG, "post  openMsg  start"); 

    String openId =  result.getString("openid");    
    if(StringUtils.isBlank(openId)){
      result.put("message", "未擷取微信賬戶資訊");
      super.out(response, result.toString());
      return;
    }
    L.i(TAG, "openId=" + openId);       
    String roomNo = result.getString("roomNo"); 
    String[] roomNozto = roomNo.split("-");
    int re = result.getInt("result"); 

    if(re==1){
      roomNo = roomNozto[1]  +"開門成功";
    }else{
      roomNo = roomNozto[1]  +"開門失敗";
    }   
    WeixinKFUtil.sendText(MainConst.getToken(), openId,roomNo);     

  }//。。。      

 2.擷取二維碼的憑證

/**
     * 擷取二維碼的憑證
     */
    private static AccessToken token;

    public static String getToken(){
        if (token == null || !token.isAvailable()) {//如果沒有擷取過Token或者Token逾時則重新取Token
            token =WeixinUtil.getAccessToken(MainConst.getWXAppID(), MainConst.getWXAppKey()); 
        }
        if (token == null) {
            return "";
        }
         return token.getToken(); 
    }      

3.根據appid和appsecret進行擷取秘鑰

/** 
     * 擷取access_token 
     *  
     * @param appid 憑證 
     * @param appsecret 密鑰 
     * @return 
     */  
    public static AccessToken getAccessToken(String appid, String appsecret) {  
        AccessToken accessToken = null;  

        String requestUrl = access_token_url.replace("APPID", appid).replace("APPSECRET", appsecret);  
        JSONObject jsonObject = httpRequest(requestUrl, "GET", null);  
        // 如果請求成功  
        if (null != jsonObject) {  
            try {  
                accessToken = new AccessToken();  
                accessToken.setToken(jsonObject.getString("access_token"));  
                accessToken.setExpiresIn(jsonObject.getInt("expires_in"));

                accessToken.setTimeNow();  //

                L.i(TAG,"getAccessToken=" + accessToken.getToken() );
                L.i(TAG,"getExpiresIn=" + accessToken.getExpiresIn() );

            } catch (JSONException e) {  
                accessToken = null;  
                // 擷取token失敗  

                L.e(TAG,"Fail to get tocken !");
            }  
        }  
        return accessToken;  
    }  //..      

4.根據去openid+發的資訊+token發送資訊到這個openid

/**
   * 客服接口發送資訊 
   * 
   * @param accessToken
   * @param openID
   * @param content
   * @return
   */
  public static ENUM_STATUS sendText(String accessToken,String openID,String content){
    String requestUrl = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN";
    requestUrl = requestUrl.replace("ACCESS_TOKEN", accessToken);

    JSONObject send = new JSONObject();
    send.put("touser", openID);
    send.put("msgtype", "text");
    JSONObject contentJ = new JSONObject();
    contentJ.put("content", content);
    send.put("text", contentJ);

    JSONObject jsonObject = CommonUtil.httpsRequest(requestUrl, "POST", send.toString());
    int status = jsonObject.getInt("errcode");
    //String msg = jsonObject.getString("errmsg");

    if (status == 0) {
      return ENUM_STATUS.MSG_SUCCESS;
    }


    L.e(TAG, "客服發送消息錯誤!發送包:" + send.toString() + "  接收包: " + jsonObject.toString());
    return ENUM_STATUS.MSG_ERR_KF_SEND_FAILED;

  }