您的位置:首页 > 移动开发 > 微信开发

《四》判断二维码是否含有关注者信息

2017-05-28 16:58 295 查看
第三章的时候我们生成了关注者的二维码,接下来我们就需要判断其他用户在扫描二维码的时候是否含有关注者的信息了。


<?php namespace App\Http\Controllers\home;

use App\Http\Models\home\Users;
use App\Http\Requests;
use App\Http\Controllers\Controller;

use Overtrue\Wechat\Server;
use Overtrue\Wechat\User as WxUser;
use Overtrue\Wechat\QRCode;

class WelcomeController extends Controller {
public function index()
{
//$encodingAESKey 可以为空
$server =new Server(env('WX_APPID'),env('WX_TOKEN'));
// 只监听指定类型事件
$server->on('event', 'subscribe',[$this,'guanzhu']);
return $server->serve();
}
//@关注方法。
public function guanzhu($event)
{
$wxuser=new WxUser(env('WX_APPID'),env('WX_SEC'));
$wx_res=$wxuser->get($event->FromUserName);
//写入数据库
$user=new Users();
$user->openid=$event->FromUserName;
$user->name=$wx_res->nickname;
$user->subtime=time();
// 再判断,是否扫描的场景二维码
//EventKey><![CDATA[qrscene_??]]
if( $event->EventKey ) {
//下面的二维码操作我们可以看的出来,是根据用户的id生成的二维码。所以我们第8位开始截取获得的就是我们的 id。我们就可以知道他是根据那位关注者来关注的我们的公众号。
$puid = substr( $event->EventKey , 8 );
$row = Users::find($puid);
$user->pid = $row['uid'];
}
$user->save();
//二维码操作
$this->qr($user->uid);
//返回信息
return '感谢您的关注.';
}
//@二维码操作
public function qr($uid){
//file_get_contents https的网址,allow_url_include 要为 on
ini_set('allow_url_include','on');
//开始生成场景二维码
$qrcode = new QRCode(env('WX_APPID'),env('WX_SEC'));
$result = $qrcode->forever($uid);
$ticket = $result->ticket;
//下载二维码
$_path=$this->mkd().'/'.'qr_'.$uid.'.jpg';
$qrcode->download($ticket,$_path);
}
//@创建保存二维码目录
protected function mkd(){
$path=public_path().date('/Y/md');
if(!file_exists($path)){
mkdir($path,0777,true);
}
return $path;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息