微信企业号开发

  

调用企业微信接口首先要有以下条件

1、有一个企业微信账户

2、请求api时需要带上AccessToken

3、组装企业微信规定的报文格式

 

第一,创建一个全新的企业账户

在企业微信中点击全新创建企业

补充完信息后点击创建

 

第一,获取token

登录企业微信网页版继续后面操作:https://work.weixin.qq.com/login

AccessToken是企业号的全局唯一票据,调用接口时需携带AccessToken。

AccessToken需要用CorpIDSecret来换取,不同的Secret会返回不同的AccessToken。正常情况下AccessToken有效期为7200秒,有效期内重复获取返回相同结果。access_token至少保留512字节的存储空间。


 corpid获取

在企业网页版找到“我的企业”,“企业信息”,下面的企业ID就是corpid

 

 

获取 corpsecret

在“应用管理”,“应用”,如图箭头指示的位置,新建一个应用

 

创建完成之后会看到Secret,点击查看,根据提示操作即可获取 corpsecret

 

有了corpid和corpsecret就可以获取token了

  • 请求说明

   Https请求方式: GET

           https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=id&corpsecret=secrect

  • 参数说明 
  参数 必须 说明
corpid 是  企业Id
corpsecret 管理组的凭证密钥

 

 
 
 
 
        权限说明

    每个secret代表了对应用、通讯录的不同权限;不同的管理组拥有不同的secret。

  • 返回说明

    a)正确的Json返回结果:

    {
       "access_token": "accesstoken000001",
       "expires_in": 7200
    }

参数 说明
access_token 获取到的凭证。长度为64至512个字节
expires_in 凭证的有效时间(秒)
 
 
 
 

    

  b)错误的Json返回示例:

    {
       "errcode": 43003,
       "errmsg": "require https"
    }

获取到token之后接下来就是组装请求报文

下面是官网给出的请求报文格式

 1 {
 2    "touser": "UserID1|UserID2|UserID3",
 3    "toparty": " PartyID1 | PartyID2 ",
 4    "totag": " TagID1 | TagID2 ",
 5    "msgtype": "text",
 6    "agentid": 1,
 7    "text": {
 8        "content": "Holiday Request For Pony(http://xxxxx)"
 9    },
10    "safe":0
11 }

备注:touser就是选择要发送的对象,如果管理员没有特别设置,一般就是用户的名字,如果是想全员分发,可以设置为 @all 即可,下面是我组装的一个测试报文

1 {
2    "touser" : "@all",
3    "msgtype" : "text",
4    "agentid" : 1000002,
5    "text" : {
6        "content" : "我就试一下"
7    },
8    "safe":0
9 }

下面就是具体实现的代码

 1 package com.spring.earlywarning.util;
 2 
 3 import net.sf.json.JSONObject;
 4 
 5 import javax.net.ssl.HttpsURLConnection;
 6 import java.io.BufferedReader;
 7 import java.io.InputStreamReader;
 8 import java.io.OutputStreamWriter;
 9 import java.io.PrintStream;
10 import java.net.HttpURLConnection;
11 import java.net.URL;
12 
13 /**
14  * @author liuwenlong
15  * @create 2022-03-16 00:47:16
16  */
17 @SuppressWarnings("all")
18 public class MyWeixin {
19 
20     public MyWeixin() {
21     }
22 
23     //接收消息接口
24     public void sendMessageToWinxin(String message) throws Exception {
25         message = message.trim();
26         message = message.replace("\r\n", ",");
27         message = message.replace("\n", ",");
28         String Json = "{\n" +
29                 "   \"touser\" : \"@all\",\n" +
30                 "   \"msgtype\" : \"text\",\n" +
31                 "   \"agentid\" : 1000002,\n" +
32                 "   \"text\" : {\n" +
33                 "       \"content\" : \" " + message + "\"\n" +
34                 "   },\n" +
35                 "   \"safe\":0\n" +
36                 "}";
37 
38         String getTokenUrl = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=你的corpid&corpsecret=你的corpsecret";
39         String token = getToken(getTokenUrl);
40         String urlPath = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + token;
41         doJsonPost(urlPath, Json);
42     }
43 
44     //获取token
45     public String getToken(String URL) {
46         try {
47             java.net.URL u = new URL(URL);
48             HttpsURLConnection huconn = (HttpsURLConnection) u.openConnection();
49             BufferedReader in = null;
50             StringBuilder result = new StringBuilder();
51             huconn.connect();
52             in = new BufferedReader(new InputStreamReader(huconn.getInputStream(), "UTF-8"));
53             String line;
54             while ((line = in.readLine()) != null) {
55                 result.append(line);
56             }
57             if (in != null) {
58                 in.close();
59             }
60             huconn.disconnect();
61 
62             JSONObject myJsonObject = new JSONObject();
63             myJsonObject = JSONObject.fromObject(result.toString());
64             String token = myJsonObject.getString("access_token");
65             return token;
66         } catch (Exception e) {
67             e.printStackTrace();
68         }
69         return "";
70     }
71 
72     //发送信息
73     public void doJsonPost(String urlPath, String Json) throws Exception {
74         String result = "";
75         BufferedReader reader = null;
76         URL url = new URL(urlPath);
77         HttpURLConnection conn = (HttpURLConnection) url.openConnection();
78         conn.setRequestMethod("POST");
79         conn.setDoOutput(true);
80         conn.setDoInput(true);
81         conn.setUseCaches(false);
82         conn.setRequestProperty("Encoding", "UTF-8");
83         conn.setRequestProperty("Connection", "Keep-Alive");
84         conn.setRequestProperty("Charset", "application/json;UTF-8");
85 
86         byte[] writebytes = Json.getBytes();
87         // 设置文件长度
88         conn.setRequestProperty("Content-Length", String.valueOf(writebytes.length));
89         OutputStreamWriter outwritestream = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
90         outwritestream.write(Json.toCharArray());
91         outwritestream.flush();
92 
93         System.out.println(conn.getResponseCode());
94         if (conn.getResponseCode() == 0) {
95             System.out.println(Json);
96         }
97     }
98 
99 }

运行起来测试一下?

然后可以绑定微信账户,在微信接收消息即可

 

 

posted @ 2022-03-16 13:37  勤快的懒羊羊  阅读(1916)  评论(0编辑  收藏  举报