企业微信加密消息体_用企业微信小程序发送消息
在企業(yè)開發(fā)中,經(jīng)常會碰到一些消息要及時推送到企業(yè)員工的手中。so 下面來說怎么向企業(yè)微信中的員工發(fā)消息。
本人只是記錄下開發(fā)過程,詳細參考https://work.weixin.qq.com/api/
1.準備
注冊企業(yè)微信公司
獲取企業(yè)ID
新開企業(yè)微信應(yīng)用
獲取應(yīng)用的Agentid,Secret
參考:https://work.weixin.qq.com/api/doc/90000/90135/90665
2.開發(fā)
應(yīng)用支持推送文本、圖片、視頻、文件、圖文等類型。以下以推送文本為例。
1)獲取access_token
請求方式:GET(HTTPS)
請求地址:https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET
ID :企業(yè)id
SECRET:應(yīng)用的憑證密鑰(Secret)
返回結(jié)果如下,我們需要記錄access_token
{ "errcode": 0, "errmsg": "ok", "access_token": "3YY3ZRP-nl3s25idin-Qay5bOL5503uzqz45OKFtd7R1E8AE40I3paB8v7wzeWucH8nS9y-95eJzivzEbRKHgBurmAwPZ6AkU4mDuiXSSl5S8v6Keal3_MRF5BxheLRfEThR5LFBFOE9PZluB4Z_JvdRUluNfWKKCqMUL0xwAnJ1bs2OuDVsdLeMiO5hQcl94diHsENz2O1T3_C5WRvp1w", "expires_in": 7200}注:access_token的有效期大概2小時左右。每天獲取access_token的次數(shù)也是有限的(大概200次左右)
所以下面可以寫個公共類
WechatService.java
@Servicepublic class WechatService{ private static org.apache.log4j.Logger logger = Logger.getLogger(WechatService.class); RestTemplate client = new RestTemplate(); private RestTemplate restTemplate = RestTemplateUtil.getInstance(); private static AccessToken at ; @Value("${appId}") private String appId; @Value("${appSecret}") private String appSecret; //向外暴露獲取accessToken public String getAccessToken() { if(at==null||at.isExpired()){ getToken(); } if(at!=null){ return at.getAccessToken(); } return null; } //私有 private void getToken(){ String accessTokenUrl = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid="+appId+ "&corpsecret="+appSecret; logger.debug("URL for getting accessToken accessTokenUrl="+accessTokenUrl); Map rtnMap = restTemplate.getForObject(accessTokenUrl, Map.class); if(rtnMap!=null){ Integer errcode = (Integer)rtnMap.get("errcode"); logger.debug("GETToken errcode:"+errcode); if(errcode==0){ String accessToken = (String)rtnMap.get("access_token"); logger.debug("accessToken:"+accessToken); Integer expiresIn = (Integer)rtnMap.get("expires_in"); //創(chuàng)建token對象,并保存 at = new AccessToken(accessToken, expiresIn); } } }}RestTemplateUtil.java
public class RestTemplateUtil { public static RestTemplate getInstance() { RestTemplate restTemplate = new RestTemplate(); restTemplate.getMessageConverters().add(new WxConverter()); return restTemplate; }}WxConverter.java
public class WxConverter extends MappingJackson2HttpMessageConverter { public WxConverter(){ List mediaTypes = new ArrayList<>(); mediaTypes.add(MediaType.TEXT_PLAIN); mediaTypes.add(MediaType.TEXT_HTML); setSupportedMediaTypes(mediaTypes); }}AccessToken.java
public class AccessToken { private String accessToken;//token private Long expiresTime;//過期時間 時間戳 public String getAccessToken() { return accessToken; } public void setAccessToken(String accessToken) { this.accessToken = accessToken; } public Long getExpiresTime() { return expiresTime; } public void setExpiresTime(Long expiresTime) { this.expiresTime = expiresTime; } public AccessToken(String accessToken,Integer expiresIn){ super(); this.accessToken = accessToken; this.expiresTime = System.currentTimeMillis()+expiresIn*1000; } /** * 判斷當前token是否過期 * @return */ public Boolean isExpired(){ return System.currentTimeMillis()>expiresTime; }}以上的代碼本人認為是比較麻煩的,so 全部記錄下來了
2)發(fā)送消息正文
請求方式:POST(HTTPS)
請求地址:https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN
ACCESS_TOKEN是上面GET請求得到的
請求示例
{ "touser" : "UserID1|UserID2|UserID3", "toparty" : "PartyID1|PartyID2", "totag" : "TagID1 | TagID2", "msgtype" : "text", "agentid" : 1, "text" : { "content" : "第一次發(fā)送成功啦!" }, "safe":0, "enable_id_trans": 0, "enable_duplicate_check": 0}touser:發(fā)送的人,可多個
msgtype:類型
content:主題內(nèi)容
......
其他不是必填字段,可以自己去看官方文檔吧。
返回示例
{ "errcode" : 0, "errmsg" : "ok", "invaliduser" : "userid1|userid2", "invalidparty" : "partyid1|partyid2", "invalidtag": "tagid1|tagid2" }errcode:0 代表發(fā)送成功了
有些地方不是很詳細,作為自己以后工作參考用。。。
還是建議大家多去官網(wǎng)看看API
文采不好,請多包涵
總結(jié)
以上是生活随笔為你收集整理的企业微信加密消息体_用企业微信小程序发送消息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 恭喜!清华大学,再添院士!
- 下一篇: 距离,原来还有这么多类