参考连接: https://developer.work.weixin.qq.com/document/path/90239
1. 获取access_token
自己将appid和secret替换成自己的
public String getAccessToken () {
String accessTokenStr = HttpClientUtil.doGet("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + appid + "&corpsecret=" + secret);
JSONObject accessTokenJson = JSONObject.parseObject(accessTokenStr);
if (accessTokenJson.getInteger("errcode") == 0) {
// access_token 有请求次数限制,需要对请求的access_token和expires_in进行缓存
// 建议使用redis保存 ...
return accessTokenJson.getString("access_token");
}
}
2. 使用前端获取的code参数获取userId
传入上一步获取的accessToken
public String getUserid (String code) {
String accessToken = getAccessToken();
String result = HttpClientUtil.doGet("https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=" +accessToken + "&code=" + code);
JSONObject resultJson = JSONObject.parseObject(result);
if (resultJson.getInteger("errcode") == 0) {
return resultJson.getString("UserId");
}
return null;
}
3. 消息发送
userId为上一步获取,content为想要发送的内容
public boolean sendMessage (String userId, String content) {
String accessToken = getAccessToken();
String url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + accessToken;
Map<String, Object> params = new HashMap<>();
params.put("touser", userid);
params.put("msgtype", "text");
params.put("agentid", agentid);
Map<String, Object> contentMap = new HashMap<>();
contentMap.put("content", content);
params.put("text", contentMap);
String result = HttpClientUtil.doPostJson(url, JSONObject.toJSONString(params));
JSONObject resultJson = JSONObject.parseObject(result);
if (resultJson.getInteger("errcode") == 0 && resultJson.getString("errmsg").equals("ok")) {
return true;
}
return false;
}