Java集成企业微信的消息推送

文章目录


前言

企业微信开放了消息发送接口,企业可以使用这些接口让自定义应用与企业微信后台或用户间进行双向通信。

一、登录企业微信后台管理创建应用

1. 登录企业微信后台管理页面,在应用管理里,创建一个应用,我自己是创建了一个“测试通知”的应用。

2.粘贴自己创建的 应用的   这两个信息  AgentId Secret ,留着有用

3.设置接受消息的服务器配置信息 

url  :用来响应企业的微信验证URL的请求 (如果已经有地址,直接填,

没有的可以参考  第一篇文章 (Java设置接收企业微信消息服务器URL)   Java设置接收企业微信消息服务器URL-CSDN博客

token 和 EncodingAESKey   都可以点随机获取

二、参考企业微信开发者api测试获取token和发送消息

发送应用消息 - 接口文档 - 企业微信开发者中心

https://developer.work.weixin.qq.com/document/path/90236

1.获取token

private static final String CORP_ID = "XXXXXXXX";//企业id 
private static final String CORP_SECRET = "XXXXXXXX";//密钥 建应用时 Secret

private static String getAccessToken() throws IOException {
        String url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + CORP_ID + "&corpsecret=" + CORP_SECRET;
        HttpPost httpPost = new HttpPost(url);
        try (CloseableHttpClient httpClient = HttpClients.createDefault();
             CloseableHttpResponse response = httpClient.execute(httpPost)) {
            HttpEntity entity = response.getEntity();
            String responseBody = EntityUtils.toString(entity);
            JSONObject jsonObject = JSON.parseObject(responseBody);
            return jsonObject.getString("access_token");
        }
 }

//测试类获取token
public static void main(String[] args) {
  try {
  // 获取access_token
  String accessToken = getAccessToken();
  System.out.println("accessToken===: " + accessToken);
  }
}

2.发送消息

代码如下(示例):

private static final String CORP_ID = "XXXXX";//企业id 
private static final String CORP_SECRET = "XXXXX";//密钥
private static final String USER_ID = "XXXXX";//目标用户ID
private static final String MESSAGE = "Hello, 这是一个测试消息";
private static final String AGENT_ID = "XXXXX";

//发送消息的方法
private static void sendMessage(String accessToken, String messageContent) throws IOException {
        log.info("Message sentContent: " + messageContent);
        String url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + accessToken;
        HttpPost httpPost = new HttpPost(url);
        httpPost.setEntity(new StringEntity(messageContent,"utf-8"));
        httpPost.setHeader("Content-Type", "application/json");

        try (CloseableHttpClient httpClient = HttpClients.createDefault();
             CloseableHttpResponse response = httpClient.execute(httpPost)) {
            HttpEntity entity = response.getEntity();
            String responseBody = EntityUtils.toString(entity);
            log.info("Message sent: " + responseBody);
            //System.out.println("Message sent: " + responseBody);
        }
    }


//测试发送
public static void main(String[] args) {
        try {
            // 获取access_token
            String accessToken = getAccessToken();
            System.out.println("accessToken===: " + accessToken);
            // 构建消息内容
            JSONObject messageContent = new JSONObject();
            messageContent.put("touser", USER_ID);//touser 指定接收消息的成员,成员ID列表(多个接收者用‘|’分隔,最多支持1000个)。 特殊情况:指定为"@all",则向该企业应用的全部成员发送
            messageContent.put("agentid", AGENT_ID);//AgentId   
            messageContent.put("msgtype", "text");//msgtype 消息类型
            JSONObject textContent = new JSONObject();
            textContent.put("content", new String(MESSAGE.getBytes(),"UTF-8"));
            messageContent.put("text", textContent);//text 发送内容

            // 发送消息
            sendMessage(accessToken, messageContent.toJSONString());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

3.错误码

  上面方法如果返回errcode

https://developer.work.weixin.qq.com/devtool/query?e=40001

去官方查原因

登录 - 企业微信开发者中心icon-default.png?t=N7T8https://developer.work.weixin.qq.com/devtool/query?e=40001

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
集成微信公众号的消息推送功能,可以使用Spring Boot和WeChat SDK。以下是一些步骤: 1. 在微信公众平台上创建一个公众号,并获得AppID和AppSecret。 2. 在Spring Boot项目中添加WeChat SDK依赖项。 3. 创建一个Controller类来处理微信服务器发送过来的请求,比如验证URL有效性和处理用户消息。 4. 配置服务器URL和Token,并在微信公众平台上进行验证。 5. 使用SDK提供的方法实现消息的回复和推送。 以下是一个简单的代码示例: ```java @RestController @RequestMapping("/wechat") public class WeChatController { @Autowired private WxMpService wxMpService; @GetMapping(produces = "text/plain;charset=utf-8") public String validate(@RequestParam(name = "signature") String signature, @RequestParam(name = "timestamp") String timestamp, @RequestParam(name = "nonce") String nonce, @RequestParam(name = "echostr") String echostr) { if (wxMpService.checkSignature(timestamp, nonce, signature)) { return echostr; } return "error"; } @PostMapping(produces = "application/xml; charset=UTF-8") public String handleMessage(@RequestBody String requestBody, @RequestParam(name = "signature") String signature, @RequestParam(name = "timestamp") String timestamp, @RequestParam(name = "nonce") String nonce, @RequestParam(name = "openid") String openid) { // 处理用户发送的消息 WxMpXmlMessage wxMessage; try { wxMessage = WxMpXmlMessage.fromXml(requestBody); } catch (Exception e) { return "error"; } // 构造回复消息 WxMpXmlOutMessage outMessage = WxMpXmlOutMessage.TEXT() .content("你好,欢迎关注我的公众号!") .fromUser(wxMessage.getToUser()) .toUser(wxMessage.getFromUser()) .build(); return outMessage.toXml(); } } ``` 在上面的代码中,我们首先验证了微信服务器发送过来的请求是否有效。如果有效,我们返回echostr作为响应。接下来,我们处理用户发送的消息,并构造一个回复消息。最后,我们将回复消息作为响应返回给微信服务器。 请注意,我们使用了WxMpService类提供的方法来验证签名、解析消息和构造回复消息。要使用这个类,我们需要在Spring Boot项目的配置文件中添加以下内容: ``` # WeChat SDK wx.mp.appId=<your app ID> wx.mp.secret=<your app secret> wx.mp.token=<your token> wx.mp.aesKey=<your AES key> ``` 在上面的代码中,我们使用了WxMpXmlOutMessage.TEXT()方法来构造文本消息的回复。如果你需要回复其他类型的消息,比如图文消息或音频消息,请查看WeChat SDK的文档。 最后,我们需要在微信公众平台上配置服务器URL和Token。可以在公众号的基本配置页面中找到这些设置。在配置完成后,我们可以向公众号发送消息,然后观察是否收到了回复。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值