123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- <?php
- /**
- * @Name
- * @Description
- * @Author 刘学玺
- * @Date 2024/1/23 15:55
- */
- namespace App\Http\Controllers\Admin\Wechat;
- use App\Http\Services\Admin\Wechat\OfficialAccountService;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Log;
- use Overtrue\LaravelWeChat\EasyWeChat;
- class OfficialAccountController
- {
- public function serve(Request $request)
- {
- Log::info('request arrived.'); # 注意:Log 为 Laravel 组件,所以它记的日志去 Laravel 日志看,而不是 EasyWeChat 日志
- $wechat = EasyWeChat::officialAccount();
- $server = $wechat->getServer();
- try {
- $server->addEventListener('subscribe', function ($message, \Closure $next) {
- Log::info('subscribe.' . $message['ToUserName']);
- // return [
- // 'MsgType' => 'text',
- // 'ToUserName' => $message['FromUserName'],
- // 'FromUserName' => $message['ToUserName'],
- // 'Content' => 'nihao',
- // 'CreateTime' => time(),
- // ];
- return '感谢您关注 EasyWeChat!';
- });
- } catch (\Throwable $e) {
- Log::info('subscribe error.');
- }
- $server->addEventListener('unsubscribe', function ($message, \Closure $next) {
- Log::info('unsubscribe.' . $message);
- $next($message);
- });
- try {
- $server->addMessageListener('text', function ($message) {
- Log::info('text.' . $message);
- // return 'text!';
- return [
- 'touser' => $message['FromUserName'],
- 'template_id' => 'PBaedliMneE_syJZDD1bhpEKlsKwk0WlUqSHZ8uG1c8',
- 'url' => 'https://easywechat.com',
- 'data' => [
- 'key1' => 'VALUE',
- 'key2' => 'VALUE2',
- 'key3' => 'VALUE3',
- 'key4' => 'VALUE4',
- 'key5' => 'VALUE5',
- ],
- ];
- });
- } catch (\Throwable $e) {
- Log::info('error.');
- }
- //
- // $server->setMessageHandler(function($message) use ($app){
- // if ($message->MsgType=='event') {
- // $user_openid = $message->FromUserName;
- // if ($message->Event=='subscribe') {
- // //下面是你点击关注时,进行的操作
- // $user_info['unionid'] = $message->ToUserName;
- // $user_info['openid'] = $user_openid;
- // $userService = $app->user;
- // $user = $userService->get($user_info['openid']);
- // $user_info['subscribe_time'] = $user['subscribe_time'];
- // $user_info['nickname'] = $user['nickname'];
- // $user_info['avatar'] = $user['headimgurl'];
- // $user_info['sex'] = $user['sex'];
- // $user_info['province'] = $user['province'];
- // $user_info['city'] = $user['city'];
- // $user_info['country'] = $user['country'];
- // $user_info['is_subscribe'] = 1;
- // //下面有些是WxStudent相关的方法,就是一些数据库的操作,由于数据库不同,要执行的操作也不一样,所以就只写了一个方法名
- // if (WxStudent::weixin_attention($user_info)) {
- // return '欢迎关注';
- // }else{
- // return '您的信息由于某种原因没有保存,请重新关注';
- // }
- // }else if ($message->Event=='unsubscribe') {
- // //取消关注时执行的操作,(注意下面返回的信息用户不会收到,因为你已经取消关注,但别的操作还是会执行的<如:取消关注的时候,要把记录该用户从记录微信用户信息的表中删掉>)
- // if (WxStudent::weixin_cancel_attention($user_openid)) {
- // return '已取消关注';
- // }
- // }
- // }
- //
- // });
- $response = $server->serve();
- Log::info('request arrived.');
- return response($response->getBody());
- }
- public function oauth(Request $request)
- {
- return (new OfficialAccountService())->oauth($request->only(['redirect_url','scopes']));
- }
- public function oauth_callback(Request $request)
- {
- return (new OfficialAccountService())->oauth_callback($request->only(['code']));
- }
-
- public function signature()
- {
- return (new OfficialAccountService())->signature();
- }
- }
|