1,微信提供了批量获取用户信息以及union_id;

    文档请见 https://mp.weixin.qq.com/wiki/14/bb5031008f1494a59c6f71fa0f319c66.html 



    批量获取用户基本信息
    
    开发者可通过该接口来批量获取用户基本信息。最多支持一次拉取100条。
    
    接口调用请求说明
    
    http请求方式: POST
    https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token=ACCESS_TOKEN
    POST数据示例
    
    {
        "user_list": [
            {
                "openid": "otvxTs4dckWG7imySrJd6jSi0CWE", 
                "lang": "zh-CN"
            }, 
            {
                "openid": "otvxTs_JZ6SEiP0imdhpi50fuSZg", 
                "lang": "zh-CN"
            }
        ]
    }
    参数说明
    
    参数	是否必须	说明
    openid	是	用户的标识,对当前公众号唯一
    lang	否	国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语,默认为zh-CN
    返回说明
    
    正常情况下,微信会返回下述JSON数据包给公众号(示例中为一次性拉取了2个openid的用户基本信息,第一个是已关注的,第二个是未关注的):
    
    {
       "user_info_list": [
           {
               "subscribe": 1, 
               "openid": "otvxTs4dckWG7imySrJd6jSi0CWE", 
               "nickname": "iWithery", 
               "sex": 1, 
               "language": "zh_CN", 
               "city": "Jieyang", 
               "province": "Guangdong", 
               "country": "China", 
               "headimgurl": "http://wx.qlogo.cn/mmopen/xbIQx1GRqdvyqkMMhEaGOX802l1CyqMJNgUzKP8MeAeHFicRDSnZH7FY4XB7p8XHXIf6uJA2SCunTPicGKezDC4saKISzRj3nz/0", 
               "subscribe_time": 1434093047, 
               "unionid": "oR5GjjgEhCMJFyzaVZdrxZ2zRRF4", 
               "remark": "", 
               "groupid": 0
           }, 
           {
               "subscribe": 0, 
               "openid": "otvxTs_JZ6SEiP0imdhpi50fuSZg", 
               "unionid": "oR5GjjjrbqBZbrnPwwmSxFukE41U", 
           }
       ]
    }
    参数说明
    
    参数	说明
    subscribe	用户是否订阅该公众号标识,值为0时,代表此用户没有关注该公众号,拉取不到其余信息,只有openid和UnionID(在该公众号绑定到了微信开放平台账号时才有)。
    openid	用户的标识,对当前公众号唯一
    nickname	用户的昵称
    sex	用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
    city	用户所在城市
    country	用户所在国家
    province	用户所在省份
    language	用户的语言,简体中文为zh_CN
    headimgurl	用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。
    subscribe_time	用户关注时间,为时间戳。如果用户曾多次关注,则取最后关注时间
    unionid	只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。详见:获取用户个人信息(UnionID机制)
    remark	公众号运营者对粉丝的备注,公众号运营者可在微信公众平台用户管理界面对粉丝添加备注
    groupid	用户所在的分组ID
    错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):
    
    {"errcode":40013,"errmsg":"invalid appid"}

    实现代码要点:


    //微信批量定义每次最多100条记录,做循环获取。
    		    Page page = userService.findAllTMemBind(1, i, 100);
    		    while(page!=null && page.getResult()!=null && !page.getResult().isEmpty()){
    		    	count = count + page.getResult().size();
    		    	
    		    	//调用本地的方法,获取之前保存的access_token 此token也称为全局acess_token;区别于网页用户显示授权acess_token
    		    	String access_token = loadGZWXtoken();
    		    	
    		    	//具体拼接方法,并请求微信服务器,返回数据
    		    	batchupdate(page.getResult(),access_token);
    		    	
    		    	//处理完成以后,再次拉取。重复循环
    		    	page = userService.findAllTMemBind(1, i++, 100);
    		    }
    batchupdate 方法实现



    private void batchupdate(List<TMemBinduser> userlist,String access_token){
    		if(userlist ==null || userlist.isEmpty()) return ;
    		
    		JSONArray ary  =new JSONArray();
    		for(TMemBinduser user:userlist){
    			Map<String,String> openids = new HashMap<String,String>();
    			openids.put("openid",user.getBindid());
    			openids.put("lang","zh-CN");
    			ary.add(JSON.toJSON(openids));
    		}
    		Map<String,Object> ulist = new HashMap<String,Object>();
    		ulist.put("user_list",ary);
    		String url = PropertiesUtil.getValue("wx.gz.batchget");
    		url = url.replaceFirst("ACCESS_TOKEN", access_token);
    		String result = Posturl.postRequestJson(url, ulist, "", "");
    		//正确返回的
    		//{"user_info_list":[{"subscribe":1,"openid":"oPMQVwqVrRlrr6Pdmgxr-P3Zh6aI","nickname":"kingman","sex":1,"language":"zh_CN","city":"Shenzhen","province":"Guangdong","country":"China","headimgurl":"http:\/\/wx.qlogo.cn\/mmopen\/6gxkh8CsLWewtkLGib6vxW6NrkJMgChp8ibAIH8SEBEKHYeADeibuDAAv8G5EibjvXAYbjQBwedoJD5lrVKSsic25Qx4smSxRQSqib\/0","subscribe_time":1458718222,"unionid":"oIzlcwLjHriVyXG9KsqJ6i7ggbjg","remark":"","groupid":0,"tagid_list":[]},{"subscribe":1,"openid":"oPMQVwlPuNN0Dztus7oGi2UeFv14","nickname":"Bdb","sex":0,"language":"zh_CN","city":"","province":"","country":"","headimgurl":"http:\/\/wx.qlogo.cn\/mmopen\/Q3auHgzwzM7VtmYVicjQhxcLJGkefRWz6HJN4PNmYibyKicB231FgOwj8dlxQTcDXAbIGN2a1SOgDy4ROJwaHXOzQ\/0","subscribe_time":1459932319,"unionid":"oIzlcwGRoh8JDn8rP3AXvSjSGOy4","remark":"","groupid":0,"tagid_list":[]}]}
    		if(log.isInfoEnabled()){
    			log.debug("==微信通知-批量拉取用户id==="+result);
    		}
    	}



    联系QQ:343886028 --加QQ群 145315854