利用easywechat和Larvel实现一个微分销商城

<?php


namespace App\Http\Controllers;


use Illuminate\Http\Request;
use EasyWeChat\Message\Text;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use EasyWeChat\Foundation\Application;
use App\User;
use DB;
class WxController extends Controller
{
    protected $app = null;
    //..获取用户信息及配置错误日志
    public function __construct(){
             $options = [
            'debug'     => true,
            'app_id'    => '微信id',
            'secret'    => '微信secret',
            'token'     => 'weixin',


            'log' => [
            'level' => 'debug',
            'file'  => 'D:\xampp\htdocs\fenxiao\public\tmp\easywechat.log',
            ],
            // ...解决php版本不匹配问题加选参数
            'guzzle'=>[
            'timeout'=>5.0,
            'verify'=>false,
            ]
          ];


        $this->app = new Application($options);
        // 从项目实例中得到服务端应用实例。


    }
    public function index(){


        $server = $this->app->server;
        $server->setMessageHandler(function ($message) {
            // $message->FromUserName // 用户的 openid
            // $message->MsgType // 消息类型:event, text....
            if ($message->MsgType=='event') {
                if ($message->Event=='subscribe') {
                return $this->subscribe($message);
                }elseif ($message->Event=='unsubscribe') {
                 $this->unsubscribe($message);
                }
            }


        });


        $response = $server->serve();
        // $response->send(); // Laravel 里请使用:
        return $response;
    }
    //关注事件
    public function subscribe($message){
         if ($message->MsgType=='event') {
            $openId=$message->FromUserName;
            $userService = $this->app->user;
            $user = $userService->get($openId);


            $usermodel = new User();
            //若用户关注过,取消后在关注,将status修改为1
            $select = $usermodel->where('openid',$openId)->first();
            if ($select && $select->status ==0) {
               $select->status = 1;
               $select->save();
               return "$user->nickname 欢迎再次关注本微信号";
            }else{
             //用户第一次关注,获取用户信息写入数据库
            $usermodel->openid= $openId;
            $usermodel->name= $user->nickname;
            $usermodel->sex= $user->sex;
            $usermodel->city= $user->city;
            $usermodel->province= $user->province;
            $usermodel->country= $user->country;
            $usermodel->subtime =time();
            //用户上下级关系
            if ($message->EventKey) {
                $key = str_replace('qrscene_','',$message->EventKey);
                $pid = $usermodel->where('uid',$key)->first();
                $usermodel->p1 = $key;
                $usermodel->p2 = $pid->p1;
                $usermodel->p3 = $pid->p2;
            }
            $usermodel->save();
            $this->qrcode($usermodel->uid);


            }


        }
             return "$user->nickname 欢迎关注本微信号!";
    }
    //取消关注事件,将状态改为0
    public function unsubscribe($message){
        $info = User::where('openid',$message->FromUserName)->first();
        if ($info) {
            $info->status=0;
            $info->save();
        }
    }
    //生成带参数的二维码
      public function qrcode($uid){
        $qrcode = $this->app->qrcode;
        $result = $qrcode->forever($uid);// 或者 $qrcode->forever("foo");
        $ticket = $result->ticket; // 或者 $result['ticket']
        //$url = $result->url;
        $url = $qrcode->url($ticket);
        $content = file_get_contents($url); // 得到二进制图片内容
        $path = $this->mkd().'/qr_'.$uid.'.jpg';
        file_put_contents(public_path().$path, $content); // 写入文件


    }
    //生成按日期月份存储的二维码目录
    protected function mkd(){
        $today = date('/Y/m');
        if (!is_dir(public_path().$today)) {
            mkdir(public_path().$today,0777,true);
        }
        return $today;
    }

}

绑定微信公众号,下面只差一个微信网页授权登录,做完这个授权登录后,我们就可以挣脱微信的束缚,进行自己的业务逻辑了,不必再去

看那一堆xml格式的错误信息.下一篇我会介绍如何用easywechat做一个微信网页授权登录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值