1.向企业微信发送消息
让用户订阅企业微信,从而用户的微信能收到发送的消息
1.1 注册企业微信
企业微信https://work.weixin.qq.com/wework_admin/register_wx?from=myhome
1.2 创建企业微信应用
1.3 创建Java项目(我用的jdk1.8)
1.3.1 导入依赖
<!-- 企业微信配置依赖-->
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-cp</artifactId>
<version>4.0.8.B</version>
</dependency>
<!-- redis依赖-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.6.0</version>
</dependency>
<!-- fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.76</version>
</dependency>
1.3.2 创建配置类
package com.linkwx.company;
import com.alibaba.fastjson.JSON;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.cp.api.WxCpService;
import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl;
import me.chanjar.weixin.cp.config.impl.WxCpDefaultConfigImpl;
import org.apache.commons.lang3.StringUtils;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
* 推送企业微信配置
* */
public class WxConfig {
private static Integer agentId=应用id;
private static String secret="应用密钥";
private static String corpId="企业微信id";
// 配置企业微信服务
public static WxCpService getWxCpService() {
WxCpService wxCpService=new WxCpServiceImpl();
WxCpDefaultConfigImpl config =new WxCpDefaultConfigImpl();
config.setAgentId(agentId);
config.setCorpSecret(secret);
config.setCorpId(corpId);
resetTokenAndJsApi(wxCpService,config);
return wxCpService;
}
// 重置token
public static void resetTokenAndJsApi(WxCpService wxCpService,WxCpDefaultConfigImpl wxCpDefaultConfig) {
// 配置redis
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(8);
jedisPoolConfig.setMaxTotal(18);
// redis启动后,默认启动的是6379端口,没有密码可以不要最后的参数
Jedis jedis =new JedisPool(jedisPoolConfig,"localhost",6379,5000,"111111").getResource();
wxCpService.setWxCpConfigStorage(wxCpDefaultConfig);
String wxAccessToken = "wx"+agentId;
String json=jedis.get(wxAccessToken);
if(!StringUtils.isEmpty(json)){
wxCpDefaultConfig = JSON.parseObject(json,WxCpDefaultConfigImpl.class);
}
if(wxCpDefaultConfig.isAccessTokenExpired()){
try {
String accessToken = null;
accessToken =wxCpService.getAccessToken(false);
wxCpDefaultConfig.setAccessToken(accessToken);
}catch (WxErrorException e){
e.printStackTrace();
}
}
if(wxCpDefaultConfig.isJsapiTicketExpired()){
String jsApi = null;
try {
jsApi = wxCpService.getJsapiTicket();
wxCpDefaultConfig.setJsapiTicket(jsApi);
} catch (WxErrorException e) {
e.printStackTrace();
}
}
jedis.set(wxAccessToken,JSON.toJSONString(wxCpDefaultConfig));
jedis.close();
}
}
1.3.3 创建发送消息的方法调用企业微信接口
package com.linkwx.company;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.cp.api.impl.WxCpMessageServiceImpl;
import me.chanjar.weixin.cp.bean.message.WxCpMessage;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 发送消息功能代码
* */
public class sendMessage {
public static void SendToWx(String user, String title, String message, String url)throws WxErrorException {
//微信消息对象
WxCpMessageServiceImpl wxCpMessageService = new WxCpMessageServiceImpl(WxConfig.getWxCpService());
WxCpMessage wxCpMessage = new WxCpMessage();
wxCpMessage.setSafe("0");
wxCpMessage.setMsgType("textcard");
//发送给用户:userid
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String time = format.format(new Date());
//设置发送用户
wxCpMessage.setToUser(user);
//设置发送标题
wxCpMessage.setTitle(title);
//设置发送内容
wxCpMessage.setDescription(message);
//设置跳转url
wxCpMessage.setUrl(url);
wxCpMessage.setBtnTxt("api");
wxCpMessageService.send(wxCpMessage);
}
}
1.4 总结
这个方法需要你服务器的ip是公网ip,然后需要在企业微信添加信任ip