有關于公衆号的推送
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;
}