对用户进行打标签
通常,在做一项活动时,我们会让用户关注官方微信,以便后期做服务的推广。那么对于一些大型企业来说,活动形式各样,不可能每次都是同一个二维码,更不可能每次都换一个微信公众号来让用户关注。
那么,此时,我们可以针对不同的活动,来对用户进行管理,比如,可以针对不同活动对用户打不同的标签。这就要求我们要生成带参数的二维码。
带参数的二维码分为两种:(1)临时二维码,是有过期时间的,最长可以设置为在二维码生成后的30天(即2592000秒)后过期,但能够生成较多数量。临时二维码主要用于帐号绑定等不要求二维码永久保存的业务场景。(2)永久二维码,是无过期时间的,但数量较少(目前为最多10万个)。永久二维码主要用于适用于帐号绑定、用户来源统计等场景。
在这里,我们以临时二维码为例:
首先创建二维码调用laneWechat的里面的createTicket
public static function createTicket($type, $expireSeconds, $sceneStr){
$accessToken=getAccess_token();
$queryUrl = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token='.$accessToken;
$queryAction = 'POST';
$template = array();
if($type == 1){
//临时
$template['expire_seconds'] = $expireSeconds;
$template['action_name'] = 'QR_STR_SCENE';
}else{
//永久
$template['action_name'] = 'QR_LIMIT_STR_SCENE';
}
$template['action_info']['scene']['scene_str'] = $sceneStr;
$template = json_encode($template,JSON_UNESCAPED_UNICODE);
return Curl::callWebServer($queryUrl, $template, $queryAction);
}
/**
* 生成带参数的二维码 - 第二步 通过ticket换取二维码
* @param $ticket Popularize::createTicket()获得的
* @param $filename String 文件路径,如果不为空,则会创建一个图片文件,二维码文件为jpg格式,保存到指定的路径
* @return 直接echo本函数的返回值,并在调用页面添加header('Content-type: image/jpg');,将会展示出一个二维码的图片。
*/
public static function getQrcode($ticket){
$queryUrl = 'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket='.urlencode($ticket);
$queryAction = 'GET';
$result = Curl::callWebServer($queryUrl, '', $queryAction, 0);
$filename = './Public/qrcode/'.time().'.jpg';
file_put_contents($filename, $result);
return $filename;
}
//对二维码的路径进行处理
public function qrcode(){
$mp=getCurrentMp();
$mp_id = $mp['id'];
$data=M('qrcode')->where("mp_id='$mp_id'")->select();
// print_r($data);
// exit;
foreach ($data as $value) {
$value['src']=str_replace("./", "", $value['src']);
$ret[]=$value;
// print_r($ret);
// exit;
}
$this->assign('data',$data);
$this->display();
}
//添加二维码
public function qrcodeAdd(){
if(IS_GET){
$this->display('qrcode_add');
}else{
$arr=I('post.');
// print_r($arr);
// exit;
$data=$arr['scene_str'];
// print_r($data);
// exit;
$mp=getCurrentMp();
$arr['mp_id'] = $mp['id'];
$id=M('qrcode')->add($arr);
include APP_PATH . 'LaneWeChat/lanewechat.php';
$ret=Popularize::createTicket($arr['type'],$arr['expire'],$arr['scene_str']);
// print_r($ret['ticket']);
// exit;
if(isset($ret['ticket'])){
$qrcodefile=$this->downqrcode($ret['ticket']);
$ret['src']=$qrcodefile;
$ret['create_time']=time();
M('qrcode')->where("id=$id")->save($ret);
$this->ajaxReturn(array('status'=>1,'msg'=>'ok','url'=>U('qrcode')));
}else{
$this->ajaxReturn(array('status'=>0,'msg'=>$ret));
}
}
}
public function downqrcode($ticket){
//获取二维码图片
include APP_PATH . 'LaneWeChat/lanewechat.php';
$ret = $ret=Popularize::getQrcode($ticket);
return $ret;
}
//创建标签
public function createTag(){
$tagname="11";
$mp=getCurrentMp();
$mp_id=$mp['id'];
// print_r($mp_id);
$accessToken=getAccess_token();
$data=M('tags')->where("mp_id='$mp_id'")->select();
// dump($data);
// if(empty($data)){
$url="https://api.weixin.qq.com/cgi-bin/tags/create?access_token=$accessToken";
$arr=array();
$arr['tag']['name']=$tagname;
$json=json_encode($arr,JSON_UNESCAPED_UNICODE);
// echo $json;
// exit;
include APP_PATH . 'LaneWeChat/lanewechat.php';
$ret=Curl::callWebServer($url,$json,'POST');
// print_r($ret);//存着ID和name;
// exit;
if($ret['tag']){
$row['mp_id']=$mp_id;
$row['tag_id']=$ret['tag']['id'];
$row['tag']=$ret['tag']['name'];
}
$data = M('tags')->add($row);
// print_r($data);
// }
}
//为粉丝打标签
public function OpenidTag(){
$openid="ogIZP1tzDJee-smh6FzJCVaO6QmY";
$accessToken=getAccess_token();
$url="https://api.weixin.qq.com/cgi-bin/tags/members/batchtagging?access_token=$accessToken";
$arr['openid_list'] = array($openid);
$arr['tagid']=106;
$json=json_encode($arr);
// echo $json;
// exit;
include APP_PATH . 'LaneWeChat/lanewechat.php';
$ret=Curl::callWebServer($url,$json,'POST');
print_r($ret);
}