周大胖子 发表于 2020-8-6 15:58:55

laravel-admin 假设多个公众号共享一个微信后台

                1. 多公众号接后台,设想一下, url中存放ID
               
                已解决;上代码
               WechatConfigs是微信处存放微信公众号的表

                       
                        路由:
                               
                                Route::any('WxServer/wxstart/{id?}', 'Wechart\WxServerController@wxstart')->name('myweichart');
                       
                        控制器:
                                <?php

                                namespace App\Http\Controllers\Wechart;

                                use Illuminate\Routing\Controller as BaseController;

                                use Illuminate\Http\Request;

                                use App\Model\WechatConfigs;

                                // 引入EasyWeChat的主项目工厂类。
                                use EasyWeChat\Factory;

                                // 引入事件处理类
                                use App\Http\Controllers\Wechart\WxEventController as Wxevent;

                                /**
                                * 主要是我的微信公众号
                                */
                                class WxServerController extends BaseController
                                {
                                  public function wxstart($id=1)
                                    {
                                      // 配置EasyWeChat
                                      // $config = config('quankewechart.qkwechart');
                                      // 如果传入ID 则为 代理机构微信公众号端 ,读取数据库信息 ,当没有时,选取默认值1
                                      $config = WechatConfigs::where(['id'=>['eq'=>$id]])->first()->toArray();

                                      $config['response_type'] = 'array';
                                      $config['oauth']= [
                                            'scopes'   => 'snsapi_base',
                                            'callback' => 'subauth',
                                        ];

                                      // 使用配置来初始化一个公众号应用实例。
                                      $app = Factory::officialAccount($config);

                                      $app->server->push(function ($message) use ($config,$app){
                                            // $message['FromUserName'] // 用户的 openid
                                        // $message['MsgType'] // 消息类型:event, text....
                                            switch ($message['MsgType']) {
                                              case 'event':                                       
                                                    // return '收到事件消息';
                                                    $wxEvent = new Wxevent();
                                                  return $wxEvent->handleEvent($message,$config);
                                                  // $m = $app->user->get($message['FromUserName']);
                                                  // 已知此处存储的值 为 正确的值
                                                  // return json_encode($m, JSON_FORCE_OBJECT);;
                                                  break;
                                              case 'text':
                                                  return '暂时没有回复哦,有啥事请联系客服';
                                                    break;
                                              case 'image':
                                                  return '咳咳 这图我看不懂 换一张';
                                                  break;
                                              case 'voice':
                                                  return '咳咳 语音我也听不见啊,联系客服吧';
                                                  break;
                                              case 'video':
                                                  return '有趣的视频不如有趣的灵魂来的有意思';
                                                  break;
                                              case 'location':
                                                  return '要不收个坐标信息意思意思吧';
                                                  break;
                                              case 'link':
                                                  return '给我发链接 我也不会点的 ,我是机器人 。';
                                                  break;
                                              case 'file':
                                                  return '发文件干啥?';
                                              // ... 其它消息
                                              // default:
                                              //   return '收到其它消息';
                                              //   break;
                                            }
                                      });


                                      // app->server->serve() 就是执行服务端业务了,那么它的返回值是一个 Symfony\Component\HttpFoundation\Response 实例
                                        $response = $app->server->serve();

                                        // 将响应输出
                                        return $response;
                                  }





                                }
                       
                       
                       

页: [1]
查看完整版本: laravel-admin 假设多个公众号共享一个微信后台