authService=app('App\Services\Auth\AuthService'); $this->wechatService=app('App\Services\Common\WechatService'); } /** * @param mixed $payload * @return string * @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException */ public function handle($payload = null) { switch ($payload['Event']) { case 'subscribe': //关注公众号事件 return $this->wakeUp("App\\Wechat\\Official\\Event\\", "SubscribeEvent", $payload); break; case 'SCAN': //用户扫公众号生成的二维码事件 return $this->wakeUp("App\\Wechat\\Official\\Event\\Scan\\", $payload['EventKey'], $payload); break; case 'CLICK': //点击菜单拉取消息时的事件推送 return $this->wakeUp("App\\Wechat\\Official\\Event\\Click\\", $payload['EventKey'], $payload); break; case 'VIEW': //点击菜单跳转链接时的事件推送 // return $this->wakeUp("App\\Wechat\\Official\\Event\\View\\", $payload['EventKey'], $payload); break; case 'scancode_push': //菜单 扫码推事件的事件推送 return $this->wakeUp("App\\Wechat\\Official\\Event\\ScanCodePush\\", $payload['EventKey'], $payload); break; case 'scancode_waitmsg': //菜单 扫码推事件且弹出“消息接收中”提示框的事件推送 return $this->wakeUp("App\\Wechat\\Official\\Event\\ScanCodeWaitmsg\\", $payload['EventKey'], $payload); break; case 'pic_sysphoto': //菜单 弹出系统拍照发图的事件推送 return $this->wakeUp("App\\Wechat\\Official\\Event\\PicSysPhoto\\", $payload['EventKey'], $payload); break; case 'pic_photo_or_album': //菜单 弹出拍照或者相册发图的事件推送 return $this->wakeUp("App\\Wechat\\Official\\Event\\PicPhotoOrAlbum\\", $payload['EventKey'], $payload); break; case 'pic_weixin': //菜单 弹出微信相册发图器的事件推送 return $this->wakeUp("App\\Wechat\\Official\\Event\\PicWeixin\\", $payload['EventKey'], $payload); break; case 'location_select': //菜单 弹出地理位置选择器的事件推送 return $this->wakeUp("App\\Wechat\\Official\\Event\\LocationSelect\\", $payload['EventKey'], $payload); break; case 'view_miniprogram': //菜单 点击菜单跳转小程序的事件推送 // return $this->wakeUp("App\\Wechat\\Official\\Event\\ViewMiniProgram\\", $payload['EventKey'], $payload); break; } } private function wakeUp($namespace, $classname, $payload) { $official=$this->wechatService->getOfficialAccount(); $wechatUser=$official->user->get($payload['FromUserName']); $user=$this->authService->wechatCheck($wechatUser); $class =$namespace.$classname; if (!class_exists($class)) { return ""; } $class =app($class); return $class->handle($wechatUser, $user, $payload); } }