|
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 [1 是权客的ID]
$config = WechatConfigs::where(['id'=>['eq'=>$id]])->first()->toArray();
$config['response_type'] = 'array';
$config['oauth']= [
'scopes' => 'snsapi_base',
'callback' => 'subauth',
];
// 使用配置来初始化一个公众号应用实例。
$app = Factory:fficialAccount($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;
}
}
|
|