微信中生成带参数的二维码

目前有2种类型的二维码:

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

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

临时二维码的请求:

URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN

永久二维码的请求:

URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN

首先,还是要先获取当前正在使用的公众号:

<?php
namespace Home\Controller;
use Think\Controller;
use LaneWeChat\Core\Curl;
use LaneWeChat\Core\Popularize;
class QrcodeController extends Controller{
//获取当前公众号
	private $mp;
	public function _initialize(){
        $mp = getCurrentMp();
		if(empty($mp)){
			$this->error('当前无使用公众号',U('mp/index'));
			exit;
		}else{
			$this->mp = $mp;
		}
	}

显示二维码页面,跟之前的显示页面是一样的方法:

//显示二维码页面
	public function qrcode(){
		$mp = $this->mp;
		$where['mp_id'] = $mp['id'];
		$data = M('qrcode')->where($where)->select();
		// dump($data);
		// exit;
		$this->assign('data',$data);
	    $this->display();	
	}

增加二维码,将其添加到数据库中:(获取的二维码ticket,凭借此ticket在有效时间内换取二维码。)

// 增加二维码
	public function qrcodeAdd(){
		if(IS_GET){
			$this->display();
		}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));
            }
		}
	}

创建标签:

//创建标签
	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 '失败';
            }
		}
	}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值