corpid(corpid是什么意思)

在企业开发中,经常会碰到一些消息要及时推送到企业员工的手中。so 下面来说怎么向企业微信中的员工发消息。

本人只是记录下开发过程,详细参考https://work.weixin.qq.com/api/

1.准备

注册企业微信公司

获取企业ID

新开企业微信应用

获取应用的Agentid,Secret

参考:https://work.weixin.qq.com/api/doc/90000/90135/90665

2.开发

应用支持推送文本、图片、视频、文件、图文等类型。以下以推送文本为例。

1)获取access_token

请求方式:GET(HTTPS)
请求地址:https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET

ID :企业id

SECRET:应用的凭证密钥(Secret)

返回结果如下,我们需要记录access_token

{   "errcode": 0,   "errmsg": "ok",   "access_token": "3YY3ZRP-nl3s25idin-Qay5bOL5503uzqz45OKFtd7R1E8AE40I3paB8v7wzeWucH8nS9y-95eJzivzEbRKHgBurmAwPZ6AkU4mDuiXSSl5S8v6Keal3_MRF5BxheLRfEThR5LFBFOE9PZluB4Z_JvdRUluNfWKKCqMUL0xwAnJ1bs2OuDVsdLeMiO5hQcl94diHsENz2O1T3_C5WRvp1w",   "expires_in": 7200}

注:access_token的有效期大概2小时左右。每天获取access_token的次数也是有限的(大概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<String, Object> 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");                //创建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<MediaType> 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)发送消息正文

请求方式: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" : "第一次发送成功啦!"   },   "safe":0,   "enable_id_trans": 0,   "enable_duplicate_check": 0}

touser:发送的人,可多个

msgtype:类型

content:主题内容

......

其他不是必填字段,可以自己去看官方文档吧。

返回示例

 {   "errcode" : 0,   "errmsg" : "ok",   "invaliduser" : "userid1|userid2",   "invalidparty" : "partyid1|partyid2",   "invalidtag": "tagid1|tagid2" }

errcode:0 代表发送成功了


有些地方不是很详细,作为自己以后工作参考用。。。

还是建议大家多去官网看看API

文采不好,请多包涵

用企业微信小程序发送消息

上一篇: 信托资金回款(信托回报)
下一篇: 大额投资市场(大额投资收益)
《corpid(corpid是什么意思)》文档下载: PDF DOC TXT

猜你喜欢