生成二维码并给粉丝添加标签

新增二维码,实现用户扫描二维码关注时被打上标签

public function qrcodeAdd(){
		if(IS_GET){
			$this->display('qrcode_add');
		}else{
			$mp = $this->mp;
			$arr = I('post.');
			$arr['mp_id'] = $mp['id'];
			$id = M('qrcode')->add($arr);
			// print_r($id);
			// exit;

			//调用创建标签
			$this->createTag($arr['scene_str']);

			include APP_PATH . 'LaneWeChat/lanewechat.php';
            $ret = Popularize::createTicket($arr['qr_type'],$arr['expire'],$arr['scene_str']);

            if(isset($ret['ticket'])){
            	$qrcodefile = Popularize::getQrcode($ret['ticket']);
                // echo $qrcodefile;
            	// exit;
            	$ret['src'] = ltrim($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));
            }
		}
	}

调用事先写好的框架

生成带参数的二维码 - 第一步 创建二维码ticket
获取带参数的二维码的过程包括两步,首先创建二维码ticket,然后凭借ticket到指定URL换取二维码。

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 if($type == 2){
            //永久
            $template['action_name'] = 'QR_LIMIT_STR_SCENE';
        }
        $template['action_info']['scene']['scene_str'] = $sceneStr;
        $template = json_encode($template);
        // echo $template;
        // exit;
        return Curl::callWebServer($queryUrl, $template, $queryAction);
    }
第二步  通过ticket换取二维码


 /**
     * 生成带参数的二维码 - 第二步 通过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);
        // if(!empty($filename)){
        //     file_put_contents($filename, $result);
        // }
        return $filename;
    }

创建标签

//创建标签
	public function createTag($tagname=''){
		$mp = $this->mp;
		// $tagname = '上课';
		//查询数据库中是否有$tagname,没有则创建并将tag和tag_id写入数据库中
		$where['mp_id'] = $mp['id'];
		$where['tag'] = $tagname;
		$data = M('tags')->where($where)->find();
		if(empty($data)){
			$accessToken = getAccess_token();
			$api = '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 = \LaneWeChat\Core\Curl::callWebServer($api,$json,'POST');
			// print_r($ret);
			// exit;
            if($ret['tag']){
            	$row['mp_id'] = $mp['id'];
            	$row['tag_id'] = $ret['tag']['id'];
            	$row['tag'] = $ret['tag']['name'];
            	M('tags')->add($row);
            }else{
            	echo '失败';
            }
		}
	}


猜你喜欢

转载自blog.csdn.net/ssh456/article/details/80097194