微信二次开发之带参数二维码和用户标签的结合

这次说的是通过生成一个二维码,用户进行扫码之后对用户打标签分成若干个组,方便对用户的管理。

首先了解下二维码的类型:

1、临时二维码,是有过期时间的,最长二维码生成后的30天(即2592000秒)后过期,能够生成较多数量。临时二维码主要用于帐号绑定等不要求二维码永久保存的业务场景。

2、永久二维码,是无过期时间的,但数量较少(目前为最多10万个)。永久二维码主要用于适用于帐号绑定、用户来源统计等场景。

用户扫描带场景值二维码时,可能推送以下两种事件:

如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。

如果用户已经关注公众号,在用户扫描后会自动进入会话,微信也会将带场景值扫描事件推送给开发者。

接下来获取带参数的二维码的过程包括两步,首先创建二维码ticket,然后凭借ticket到指定URL换取二维码。(部分代码)

public function qrcodeAdd()
	{	
			$mp = $this->mp;//获取正在使用的公众号id
			$data = I('post.');

			$data['mp_id'] = $mp['id'];

			$id = M('qrcode')->add($data);//表单中的信息获取之后插入数据表
			$this->createTag($data['scene_str']);//调用创建标签(createTag())方法
			include APP_PATH . 'LaneWeChat/lanewechat.php';//调用lanewechat框架
			$ret = \LaneWeChat\Core\popularize::createTicket($data['qr_type'],$data['expire'],$data['scene_str']);//获取到接口中的信息

			if (isset($ret['ticket'])) {判断ticket是否存在
				$qrcodename = \LaneWeChat\Core\popularize::getQrcode($ret['ticket']);//凭借ticket换取二维码
 				
				$ret['src'] = $qrcodename;//存入数据库
				$ret['create_time'] = time();
				$result = M('qrcode')->where("id=$id")->save($ret);
				if ($result) {
					$this->ajaxReturn(array('msg'=>'生成成功'));
				}else{
					$this->ajaxReturn(array('msg'=>'生成失败'));
				}
		    }
	}

二维码生成成功之后创建标签,下面是部分代码:

public function createTag($tagname='')//$data['scene_str']的值给了$tagname
	{
		$mp = $this->mp;

		$where['mp_id'] = $mp['id'];
		$where['tag'] = $tagname;

		$data = M('tags')->where($where)->find();//根据条件查询
		if (empty($data)) {
			$api = "https://api.weixin.qq.com/cgi-bin/tags/create?access_token=" . getAccess_token();//创建标签的接口
			$arr = array();
			$arr['tag']['name'] = $tagname;
			$json = json_encode($arr,JSON_UNESCAPED_UNICODE);//获取josn数据

			include APP_PATH . 'LaneWeChat/lanewechat.php';
			$ret = Curl::callWebServer($api,$json,'POST');//lanewechat框架执行接口

			if ($ret['tag']) {//存入信息
				$row['mp_id'] = $mp['id'];
				$row['tag_id'] = $ret['tag']['id'];
				$row['tag'] = $ret['tag']['name'];

				M('tags')->add($row);
			}
		}
	}

最后就是和微信的连接(部分代码):

 private static function fansGroup($openid,$tagname){//获取到$openid和$ragname
        
        include APP_PATH . 'LaneWeChat/lanewechat.php';
        $id = $_GET['id'];

        $where['mp_id']=$id;
        $where['tag'] = $tagname;
        $data = M("tags")->where($where)->find();//根据条件获取数据库信息
        if(!empty($data)){
            $api = "https://api.weixin.qq.com/cgi-bin/tags/members/batchtagging?access_token=".getAccess_token();
             $arr = array();
             $arr = ['openid_list'=>array($openid),'tagid'=>(int)$data['tag_id']];//将数据进行处理
             $json = json_encode($arr);

             $ret=\LaneWeChat\Core\Curl::callWebServer($api,$json,'POST');

             if(isset($ret['errcode']) && $ret['errcode']==0){
                return true;
             }else{
                return $ret;
             }
        }else{
            return '无此标签' . $tagname;
        }
    }

现在基本就能实现功能了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值