6.8.2 创建分组

一个公众账号最多支持创建500个分组,分组名称允许重复。

1.接口描述

创建分组接口的请求地址如下:

  1. https://api.weixin.qq.com/cgi-bin/groups/create?access_token=ACCESS_TOKEN

创建分组时需要POST如下格式的JSON数据包:

  1. {"group" : {"name" : "test"}}

上述JSON数据包表示创建一个名称为"test"的分组。其中,参数name表示分组名称,长度要求小于30个字符。接口调用成功时返回的JSON结果如下:

  1. {
  2. "group": {
  3. "id": 107,
  4. "name": "test"
  5. }
  6. }

上述结果表示成功创建名称为"test"的分组,并且分组id为107。

接口调用失败时返回的JSON结果示例如下:

  1. {"errcode":40013,"errmsg":"invalid appid"}

2.方法封装

笔者将创建分组的操作封装成createGroup()方法,该方法的实现如下:

  1. /**
  2. * 创建分组
  3. *
  4. * @param accessToken 接口访问凭证
  5. * @param groupName 分组名称
  6. * @return
  7. */
  8. public static WeixinGroup createGroup(String accessToken, String groupName) {
  9. WeixinGroup weixinGroup = null;
  10. // 拼接请求地址
  11. String requestUrl = "https://api.weixin.qq.com/cgi-bin/
  12. groups/create?access_token=ACCESS_TOKEN";
  13. requestUrl = requestUrl.replace("ACCESS_TOKEN", accessToken);
  14. // 需要提交的JSOT数据
  15. String jsonData = "{\"group\" : {\"name\" : \"%s\"}}";
  16. // 创建分组
  17. JSONObject jsonObject = CommonUtil.httpsRequest(requestUrl, "POST",
  18. String.format(jsonData, groupName));
  19.  
  20. if (null != jsonObject) {
  21. try {
  22. weixinGroup = new WeixinGroup();
  23. weixinGroup.setId(jsonObject.getJSONObject("group").getInt("id"));
  24. weixinGroup.setName(jsonObject.getJSONObject("group").getString("name"));
  25. } catch (JSONException e) {
  26. weixinGroup = null;
  27. int errorCode = jsonObject.getInt("errcode");
  28. String errorMsg = jsonObject.getString("errmsg");
  29. log.error("创建分组失败 errcode:{} errmsg:{}", errorCode, errorMsg);
  30. }
  31. }
  32. return weixinGroup;
  33. }

createGroup()方法的返回值是一个WeixinGroup对象,用于封装创建分组接口返回的参数,在6.8.1节中封装查询分组方法时介绍过该类的定义。

3.案例:创建分组

下面是调用createGroup()方法创建分组的案例。

  1. public static void main(String args[]) {
  2. // 获取接口访问凭证
  3. String accessToken = CommonUtil.getToken("APPID", "APPSECRET").getAccessToken();
  4. // 创建分组
  5. WeixinGroup group = createGroup(accessToken, "公司员工");
  6. System.out.println(String.format("成功创建分组:%s id:%d", group.getName(),group.getId()));
  7. }

上面案例的运行结果为“成功创建分组:公司员工id:100”。需要注意的是,分组名称允许重复,如果多次运行上面的示例将会创建多个名称为“公司员工”的分组,但是分组id不同。对于开发者自定义的分组,分组id从100开始递增,每次加1。