需求场景:
将公众号与企业微信进行打通关联,平台通过用户OpenId间接的定位到企业微信中外部联系人,企业微信中外部联系人也能反向定位到微信公众号的具体用户(用户需关注对应公众号),实现精准客户跟踪服务。
步骤
Step1:获取公众号用户的OpenId(可在扫码关注时获取)
Step2:获取公众号用户OpenId对应微信平台唯一标识Unionid
Step3:获取企业微信员工列表
Step4:获取企业员工的联系客户ID列表
Step5:批量获取员工对应的外部联系信息(包括Unionid等基本微信用户信息)
关键部分实现
1.获取公众号用户的Unionid
String token="XXX";
String openId="o3bZiwl_XXXXX";
String _url="https://api.weixin.qq.com/cgi-bin/user/info?access_token="+token+"&openid="+openId+"&lang=zh_CN";
String data=OkHttpUtil.get(_url);
System.out.println("微信用户信息:"+data);
结果
{
"subscribe":1,
"openid":"o3bZiwl_XXXXX",
"nickname":"",
"sex":0,
"language":"zh_CN",
"city":"",
"province":"",
"country":"",
"headimgurl":"",
"subscribe_time":1646000000,
"unionid":"oIelzww0v9DVWEisgdqY******g",
"remark":"",
"groupid":0,
"tagid_list":[
],
"subscribe_scene":"ADD_SCENE_SEARCH",
"qr_scene":0,
"qr_scene_str":""
}
需要注意的是:如果公众号未绑定“微信开放平台”这里的unionid字段将不会被返回。开发平台绑定流程简单,登陆微信开发平台,找到“公众账号”输入账号密码即可绑定
微信开发平台
2.企业微信端获取客户外部联系微信用户unionid
//需要提前获取企业微信token
//1.获取企业员工列表
String wxErpToken="xxx";
String _url1="https://qyapi.weixin.qq.com/cgi-bin/externalcontact/get_follow_user_list?access_token="+wxErpToken;
String userList=OkHttpUtil.get(_url1);
JSONArray follow_users=JSON.parseObject(userList).getJSONArray("follow_user");
//2.批量获取员工的微信客户信息
String getUserDetailBatchUrl="https://qyapi.weixin.qq.com/cgi-bin/externalcontact/batch/get_by_user?access_token="+wxErpToken;
JSONObject getUserDetailParam=new JSONObject();
getUserDetailParam.put("userid_list",follow_users);
getUserDetailParam.put("cursor","");
getUserDetailParam.put("limit",50);
String userDetailResult= OkHttpUtil.post(getUserDetailBatchUrl,getUserDetailParam.toJSONString());
System.out.println("批量客户详情:"+userDetailResult);
结果
{
"errcode":0,
"errmsg":"ok",
"external_contact_list":[
{
"follow_info":{
"userid":"xxxxx",
"remark":"柚子",
"description":"",
"createtime":166100000,
"tag_id":[
],
"remark_mobiles":[
],
"add_way":6,
"oper_userid":"xxxxx"
},
"external_contact":{
"external_userid":"wm0x1VIgAAmFkEaXhvMXpUsI*****xQ",
"name":"柚子",
"type":1,
"avatar":"http://wx.qlogo.cn/mmhead/Q3auHgzwzM6fg7gUFa3H1TUGUz0DsZiaFFiaHGuibh9SssGyCR6pbEerg/0",
"gender":1,
"unionid":"oIelzww0v9DVWEisgdq*****VWg"
}
}
],
"next_cursor":""
}
需要注意的点:外部联系人在微信开放平台的唯一身份标识(微信unionid),通过此字段企业可将外部联系人与公众号/小程序用户关联起来。仅当联系人类型是微信用户,且企业绑定了微信开发者ID有此字段,查看绑定方法
至此通过公众号获取到的unionid即可和启用微信中外部微信客户的unionid绑定在一起,再实现其他的业务操作!