企业微信开发案例1
背景知识
由同一企业主体下的公众号,企业微信、小程序使用unionid来标识同一个用户对象,而openid只用于一种应用标识用户
Redis是一种基于key-value的数据库,一般用于缓存(cache)
PHP使用REDIS hGetAll 命令/方法/函数(PHP_Redis)-代潇瑞博客
1 设计目的
通过已知客户的unionid,来修改客户备注信息,手机号
2 实现方法
2.1 通过企业微信的第三方应用开发接口调用来实现
使用第三方应用开发接口来开发,需要注册第三方服务商的资质,目前无法注册第三方服务提供商。暂且不表。
2.2 通过企业微信的企业内部开发接口调用来实现
A 通过枚具备客户联系功能的企业成员(follow)得到一个follow_list,企业微信的API接口描述如下
B 通过批量获取客户详情功能,逐个的获取每个follow下的所有客户详情,主要需要的客户的(unionid, external_userid, remark_mobiles)
接口的描述如下
C 将获得到的一个follow下的所有客户信息,以hash方式放到redis中key为unionid, field value为一个多元组
D 需要修改remark mobile号的客户unionid给定在一个数组中,遍历之并查询redis,调用如下描述的修改客户备注信息接口来修改客户的remark mobile
3 项目源代码:
<?php
class JSSDK {
private $appId;
private $appSecret;
public function __construct($appId, $appSecret) {
$this->appId = $appId;
$this->appSecret = $appSecret;
}
public function api_notice_increment($url, $data){
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
if(stripos($url,"https://")!==FALSE){
curl_setopt($ch, CURLOPT_SSLVERSION, 1); //1 - CURL_SSLVERSION_TLSv1
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
} else {
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//严格校验
}
//设置header
curl_setopt($ch, CURLOPT_HEADER, FALSE);
//要求结果为字符串且输出到屏幕上
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
//post提交方式
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$tmpInfo = curl_exec($ch);
//var_dump($tmpInfo);
/*if (curl_errno($ch)) {
$tmpInfo = curl_exec($ch);
}*/
curl_close($ch);
return $tmpInfo;
}
public function httpGet($url) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 5);
curl_setopt($curl,