Java版微信公共号开发之分组管理接口

开发者可以使用接口,对公众平台的分组进行查询、创建、修改操作,也可以使用接口在需要时移动用户到某个分组。


创建分组

一个公众账号,最多支持创建500个分组。

接口调用请求说明

http请求方式: POST(请使用https协议)
https://api.weixin.qq.com/cgi-bin/groups/create?access_token=ACCESS_TOKEN
POST数据格式:json
POST数据例子:{"group":{"name":"test"}}

参数说明

参数 说明
access_token 调用接口凭证
name 分组名字(30个字符以内)

返回说明 正常时的返回JSON数据包示例:

{
    "group": {
        "id": 107,
        "name": "test"
    }
}

参数说明

参数 说明
id 分组id,由微信分配
name 分组名字,UTF8编码

错误时的JSON数据包示例(该示例为AppID无效错误):

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

创建分组程序Java实现代码:

/**
     * 创建群组
     * @param appId
     * @param appSecret
     * @param groupName 群组名称
     * @return 如{"group": { "id": 107, "name": "test" } }
     */
    public static JSONObject createGroup(String appId, String appSecret, String groupName){
        String accessToken = getAccessToken(appId, appSecret); //本地方法,获取accessToken
        String url = "https://api.weixin.qq.com/cgi-bin/groups/create?access_token=" + accessToken;

        JSONObject j = new JSONObject();
        try {
            j.put("group", new JSONObject().put("name",groupName));
        } catch (JSONException e) {
            e.printStackTrace();
        }

        String rtn = weixinRequest(url, j.toString(), "POST");//本地方法,根据url提交json内容

        System.out.println("WeixinManager.createGroup()"+rtn);
        JSONObject json;
        try {
            json = new JSONObject(rtn);
        } catch (JSONException e) {
            throw new RuntimeException(e.getMessage(),e);
        }
        return json;
    }

查询所有分组

接口调用请求说明

http请求方式: GET(请使用https协议)
https://api.weixin.qq.com/cgi-bin/groups/get?access_token=ACCESS_TOKEN

参数说明

参数 说明
access_token 调用接口凭证

返回说明 正常时的返回JSON数据包示例:

{
    "groups": [
        {
            "id": 0,
            "name": "未分组",
            "count": 72596
        },
        {
            "id": 1,
            "name": "黑名单",
            "count": 36
        },
        {
            "id": 2,
            "name": "星标组",
            "count": 8
        },
        {
            "id": 104,
            "name": "华东媒",
            "count": 4
        },
        {
            "id": 106,
            "name": "★不测试组★",
            "count": 1
        }
    ]
}

参数说明

参数 说明
groups 公众平台分组信息列表
id 分组id,由微信分配
name 分组名字,UTF8编码
count 分组内用户数量

错误时的JSON数据包示例(该示例为AppID无效错误):

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

查询所有分组程序Java实现代码:

/**
     * 查询所有分组
     * @param appId
     * @param appSecret
     * @return
     */
    public static JSONObject getAllGroups(String appId, String appSecret){
        String accessToken = getAccessToken(appId, appSecret);
        String url = "https://api.weixin.qq.com/cgi-bin/groups/get?access_token=" + accessToken;

        String rtn = weixinRequest(url, null, "GET");
        System.out.println("WeixinManager.getAllGroups()"+rtn);
        JSONObject json;
        try {
            json = new JSONObject(rtn);
        } catch (JSONException e) {
            throw new RuntimeException(e.getMessage(),e);
        }
        return json;
    }

查询用户所在分组

通过用户的OpenID查询其所在的GroupID。

接口调用请求说明

http请求方式: POST(请使用https协议)
https://api.weixin.qq.com/cgi-bin/groups/getid?access_token=ACCESS_TOKEN
POST数据格式:json
POST数据例子:{"openid":"od8XIjsmk6QdVTETa9jLtGWA6KBc"}

参数说明

参数 说明
access_token 调用接口凭证
openid 用户的OpenID

返回说明 正常时的返回JSON数据包示例:

{
    "groupid": 102
}

参数说明

参数 说明
groupid 用户所属的groupid

错误时的JSON数据包示例(该示例为OpenID无效错误):

{"errcode":40003,"errmsg":"invalid openid"}

查询用户所在分组程序Java实现代码:

/**
     * 通过用户的OpenID查询其所在的GroupID
     * @param appId
     * @param appSecret
     * @param openId 用户的OpenID
     * @return 如:{ "groupid": 102 }
     */
    public static JSONObject getUserGroup(String appId, String appSecret, String openId){
        String accessToken = getAccessToken(appId, appSecret);
        String url = "https://api.weixin.qq.com/cgi-bin/groups/getid?access_token=" + accessToken;
        JSONObject j = new JSONObject();
        try {
            j.put("openid", openId);
        } catch (JSONException e1) {
            e1.printStackTrace();
        }

        String rtn = weixinRequest(url, j.toString(), "POST");
        System.out.println("WeixinManager.createGroup()"+rtn);
        JSONObject json;
        try {
            json = new JSONObject(rtn);
        } catch (JSONException e) {
            throw new RuntimeException(e.getMessage(),e);
        }
        return json;
    }

修改分组名

接口调用请求说明

http请求方式: POST(请使用https协议)
https://api.weixin.qq.com/cgi-bin/groups/update?access_token=ACCESS_TOKEN
POST数据格式:json
POST数据例子:{"group":{"id":108,"name":"test2_modify2"}}

参数说明

参数 说明
access_token 调用接口凭证
id 分组id,由微信分配
name 分组名字(30个字符以内)

返回说明 正常时的返回JSON数据包示例:

{"errcode": 0, "errmsg": "ok"}

错误时的JSON数据包示例(该示例为AppID无效错误):

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

修改分组名程序Java实现代码:

/**
     * 修改分组名
     * @param appId
     * @param appSecret
     * @param groupId
     * @param newGroupName
     * @return 如 {"errcode": 0, "errmsg": "ok"}
     */
    public static JSONObject updateGroup(String appId, String appSecret, String groupId, String newGroupName){
        String accessToken = getAccessToken(appId, appSecret);
        String url = "https://api.weixin.qq.com/cgi-bin/groups/update?access_token=" + accessToken;
        JSONObject j = new JSONObject();
        JSONObject group = new JSONObject();
        try {
            j.put("id", groupId);
            j.put("name",newGroupName);
            group.put("group",j);
        } catch (JSONException e) {
            e.printStackTrace();
        }

        String rtn = weixinRequest(url, group.toString(), "POST");
        System.out.println("WeixinManager.createGroup()"+rtn);
        JSONObject json;
        try {
            json = new JSONObject(rtn);
        } catch (JSONException e) {
            throw new RuntimeException(e.getMessage(),e);
        }
        return json;
    }

移动用户分组

接口调用请求说明

http请求方式: POST(请使用https协议)
https://api.weixin.qq.com/cgi-bin/groups/members/update?access_token=ACCESS_TOKEN
POST数据格式:json
POST数据例子:{"openid":"oDF3iYx0ro3_7jD4HFRDfrjdCM58","to_groupid":108}

参数说明

参数 说明
access_token 调用接口凭证
openid 用户唯一标识符
to_groupid 分组id

返回说明 正常时的返回JSON数据包示例:

{"errcode": 0, "errmsg": "ok"}

错误时的JSON数据包示例(该示例为AppID无效错误):

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

移动用户分组程序Java实现代码:

/**
     * 移动用户分组
     * @param appId
     * @param appSecret
     * @param toGroupId 新分组的id
     * @param openId 用户id
     * @return 如 {"errcode": 0, "errmsg": "ok"}
     */
    public static JSONObject updateUserGroup(String appId, String appSecret, String toGroupId, String openId){
        String accessToken = getAccessToken(appId, appSecret);
        String url = "https://api.weixin.qq.com/cgi-bin/groups/update?access_token=" + accessToken;
        JSONObject j = new JSONObject();
        try {
            j.put("openid", openId);
            j.put("to_groupid", toGroupId);
        } catch (JSONException e) {
            e.printStackTrace();
        }

        String rtn = weixinRequest(url, j.toString(), "POST");
        System.out.println("WeixinManager.createGroup()"+rtn);
        JSONObject json;
        try {
            json = new JSONObject(rtn);
        } catch (JSONException e) {
            throw new RuntimeException(e.getMessage(),e);
        }
        return json;
    }

参考:

http://mp.weixin.qq.com/wiki/index.php?title=%E5%88%86%E7%BB%84%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3

时间: 2024-08-06 20:32:01

Java版微信公共号开发之分组管理接口的相关文章

带领技术小白入门——基于java的微信公众号开发(包括服务器配置、java web项目搭建、tomcat手动发布web项目、微信开发所需的url和token验证)

微信公众号对于每个人来说都不陌生,但是许多人都不清楚是怎么开发的.身为技术小白的我,在闲暇之余研究了一下基于java的微信公众号开发.下面就是我的实现步骤,写的略显粗糙,希望大家多多提议! 一.申请服务器 1.我购买的是阿里云服务器,购买后要设置一下服务器密码,默认用户名是administrator,购买好后如下: 2.申请好后,copy一下此服务器的IP地址(公有),在本地ping一下看看是否可用,j键盘Win+R,输入cmd,输入ping+IP回车,如下即为成功: 二.配置服务器 1.下载远

微信公共号开发人员中心(JAVA)【token失败解决的方法】

在开发微信公共平台一些新手通常都会遇到的问题(ps:我就是那个新手) 我这里仅仅讲自己遇到的问题.遇到了token失败的问题,首先查阅资料,具体了解各个字段的具体含义,并验证代码sha1验证是否正确.看看失败的原因,依据文档提示,2个字符串假设不匹配的话,肯定是验证失败了.依据我个人想法,我是来把加密后的字符串.微信发送的字符串(signature).提取出来.来比对推断究竟是哪里错了. 我这里用的一个非常蠢的办法,就是在H盘里面生成一个,文件,文件名称各自是2个字符串.[或者写入txt文档](

Java版微信公众平台开发视频教程

课程学习地址:http://www.xuetuwuyou.com/course/30 课程目录: 第1课.开篇 第2课.开发概述 第3课.微信服务器接口验证 第4课.接收普通消息文本消息 第5课.获取报文 第6课.解析报文 第7课.接收普通消息构造函数 第8课.接收普通消息图片消息 第9课.接收普通消息语音消息 第10课.接收普通消息视频消息 第11课.接收普通消息小视频消息 第12课.接收普通消息地理位置消息 第13课.接收普通消息链接消息 第14课.被动回复用户消息文本消息 第15课.被动回

微信公共号开发

1.进入这个链接 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 2.编写微信授权请求 /** * 微信接入首页(授权页) * @return * @throws IOException */ @RequestMapping("index") public void wxIndex(HttpServletRequest request,HttpServletResponse response,String si

微信公共号的PHP开发(基础篇)——玩一下

最近没事儿开了个微信号,写点东西给家人啊什么的看,你们想看的话就这个嘛: 然后就意外的看到imooc上的微信公众号开发相关了.每天科研的累累的,做点这个不是很累的东西吧. 微信公共号开发 一.基础 1.1 数据交互流程 用户<————>微信服务器<————>第三方服务器: 且,由左向右都是request,由右向左都是response: 1.2 API --配置 接入API 输入这两个——所以,要事先准备好服务器,我用的是腾讯的,反正都是一家的,更方便一点吧. $timestamp=

CabloyJS的微信API对接模块:当前支持微信公共号和微信小程序

Cabloy-微信是什么 Cabloy-微信是基于CabloyJS全栈业务开发框架开发的微信接口模块,当前整合了微信公共号和微信小程序的接口,达到开箱即用的使用效果.在Cabloy-微信的基础上,可以很方便的开发各类微信业务系统 特性 基于CabloyJS全栈框架提供的便利性和灵活性,Cabloy-微信主要有如下特性: 1. 一站式整合 当前整合了微信公共号和微信小程序的接口,具体如下: 场景 名称 说明 微信公共号 消息系统 自动完成接口对接,并自动进行用户注册 微信公共号 网页登录 自动跳转

微信公众号开发工具包,封装常用接口等

微信公众号开发套件 涵盖微信提供的大多数常用接口,具体实现功能如下: 一.消息管理 1.模板消息.支持单个用户发送和批量发送,支持同步发送和一步发送. 2.一次性订阅消息. 3.客服消息.包括下发文本.图片等. 二.菜单管理 1.自定义菜单创建.查询.删除.个性化菜单配置等功能. 三.素材管理 1.获取临时素材 2.获取永久素材 3.删除素材 4.获取素材总数 5.获取素材列表 四.账号管理 1.生成带参数的二维码 2.长连接转短连接 五.用户管理 1.用户标签管理 2.设置用户备注名称 3.获

基于java的微信公众号二次开发视频教程

详情请交流  QQ  709639943 00.基于java的微信公众号二次开发视频教程 00.leetcode 算法 面试 00.北风网 零基础到数据(大数据)分析专家-首席分析师 00.快速上手JMeter 00.Jmeter 00.2017年Java web开发工程师成长之路 00.R语言速成实战 00.R语言数据分析实战 00.Python+Django+Ansible Playbook自动化运维项目实战 00.Java深入微服务原理改造房产销售平台 00.Python3入门机器学习 经

《初识Java微信公众号开发》 学习中遇到的困难

前一段时间无聊的时候,在慕课网上自学了一点点微信公众号开发(受学姐威胁). 慕课网教程的地址:http://www.imooc.com/learn/368 毕竟是免费的课程,不可能讲的那么详细.所以我吧我遇到的问题跟大家分享一下. 这是我照着课程敲的代码(IDE是Eclipse): https://github.com/Zuosy/WeiXin 发到github上面了. 为了这个,我还专门到廖大的网站上学了一遍Git. 廖大的Git教程传送们:https://www.liaoxuefeng.co