目前有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 '失败';
}
}
}