1. 程式人生 > 其它 >微信企業號開發

微信企業號開發

 

微信企業號開發

 

呼叫企業微信介面首先要有以下條件

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

  • 引數說明 
  引數 必須 企業Id
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 }

執行起來測試一下?