《三》关注时生成关注者的永久二维码

来源:互联网 发布:程序员mysql 书籍推荐 编辑:程序博客网 时间:2024/05/29 19:12

参考文档:https://github.com/overtrue/wechat/wiki/%E4%BA%8C%E7%BB%B4%E7%A0%81

<?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 WxController extends Controller {    public function index()    {        //$encodingAESKey 可以为空        $server =new Server(env('WX_APPID'),env('WX_TOKEN'));        // 只监听指定类型事件        $server->on('event', 'subscribe',[$this,'guanzhu']);        //取消关注        $server->on('event', 'unsubscribe',[$this,'qxgz']);        //        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();        $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;    }    //@取消关注    public function qxgz($event)    {        //获得取消用户的 openid        $open_id=$event->FromUserName;        //取得用户信息        $user_one=Users::where('openid',$open_id)->first();        //拼接关注时的二维码路径        $_path=str_replace('\\','/',public_path()).date('/Y/md').'/'.'qr_'.$user_one->uid.'.jpg';        //判断并删除        if(file_exists($_path)){            unlink($_path);        }        //清空信息变量        unset($user_one);        //删除对应用户信息        Users::where('openid',$open_id)->delete();    }}

生成后保存在:

这里写图片描述

结束。