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;

	}

 

 

openid首页接收到去推送的消息 

 

posted @   码海兴辰  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示