美文网首页
thinkphp/laravel 使用overtrue/wech

thinkphp/laravel 使用overtrue/wech

作者: 张清柏 | 来源:发表于2020-05-02 17:58 被阅读0次

先贴出官方文档

  • 本文意在怎么快速使用easywechat,完成公众号的开发,并没有遵从严格的代码规范和封装,需要你自己按照你们的代码风格(如果有)进行编写(可能比较罗嗦,适合小白)
  1. composer 安装,安装过程参考官方文档
  2. 在网站根目录执行 $ composer require overtrue/wechat:~4.0 -vvv
  3. 安装成功之后,去定义一个路由,一会用于微信服务器认证


    定义路由

    别忘了测试一下自己的路由是否可用

4.自定义微信的配置文件,写在根目录下config文件夹下面,aes_key,如果是如果微信配置的是明文就不要写了


image.png
  1. 在控制器中写入方法,看路由就知道了。我写的路由对应的是application/home/controller/Wechat.php,贴出代码,记得引入命名空间
use EasyWeChat\Factory; #命名空间,你知道的写在哪

    public function run()
    {

        $config = config('wechat.wechat');
        $app = Factory::officialAccount($config);
        $response = $app->server->serve();
        $response->send();
        exit;

    }


  1. 至此,你可以去微信设置自己的服务器了,


    image.png

    微信给你发送的所有请求,都会通过服务器地址发送给你的服务器,此时,你应该知道,服务器记录请求日志的重要性,后面你调试也会用的,接下来,我们写入对消息处理的代码

  public function run()
    {

        $config = config('wechat.wechat');
        $app = Factory::officialAccount($config);
        $app->server->push(function ($message) {
            switch ($message['MsgType']) {
                case 'event':
                    Log::info('收到事件消息');
                    //接收事件推送: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140454
                    switch ($message['Event']) {
                        case 'subscribe':  //关注事件, 扫描带参数二维码事件(用户未关注时,进行关注后的事件推送)
                            return "欢迎关注老A技术联盟,更多精彩请访问<a href='" . env('app_url') . "'>蜜桃网</a>!";
                            break;
                        case 'unsubscribe':  //取消关注事件

                            break;
                        case 'SCAN':  //扫描带参数二维码事件(用户已关注时的事件推送)
                            return "欢迎关注老A技术联盟,更多精彩请访问<a href='" . env('app_url') . "'>蜜桃网</a>!";
                            break;
                        case 'LOCATION':  //上报地理位置事件
                            return "经度: " . $message['Longitude'] . "\n纬度: " . $message['Latitude'] . "\n精度: " . $message['Precision'];
                            break;
                        case 'CLICK':  //自定义菜单事件(点击菜单拉取消息时的事件推送)
                            return $this->service()->click($message);
                            break;
                            break;
                        case 'VIEW':  //自定义菜单事件(点击菜单拉取消息时的事件推送)
                            return "跳转URL: " . $message['EventKey'];
                            break;
                        case 'ShakearoundUserShake':
                            Log::info('摇一摇周边事件');
                            //摇一摇事件通知: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1443448066
                            return 'ChosenBeacon\n' . 'Uuid: ' . $message['ChosenBeacon']['Uuid'] . 'Major: ' . $message['ChosenBeacon']['Major'] . 'Minor: ' . $message['ChosenBeacon']['Minor'] . 'Distance: ' . $message['ChosenBeacon']['Distance'];
                            break;
                        default:
                            return $message['Event'];
                            break;
                    }
                    break;
                //接收普通消息: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453
                case 'text':
                    Log::info('收到文字消息');
                    //获取到用户发送的文本内容
                    $content = $message['Content'];
                    //把内容发给用户
                    return "欢迎关注老A技术联盟,更多精彩请访问<a href='" . env('app_url') . "'>蜜桃网</a>!";
                    break;

                    ///////////////////////////
                    return "Content: " . $message['Content'];
                    break;
                case 'image':
                    Log::info('收到图片消息');
                    return "MediaId: " . $message['MediaId'] . "\nPicUrl: " . $message['PicUrl'];
                    break;
                case 'voice':
                    Log::info('收到语音消息');
                    return "MediaId: " . $message['MediaId'] . "\nFormat: " . $message['Format'] . "\nRecognition: " . $message['Recognition'];
                    break;
                case 'video':
                    Log::info('收到视频消息');
                    return "MediaId: " . $message['MediaId'] . "\nThumbMediaId: " . $message['ThumbMediaId'];
                    break;
                case 'shortvideo':
                    Log::info('收到小视频消息');
                    return "MediaId: " . $message['MediaId'] . "\nThumbMediaId: " . $message['ThumbMediaId'];
                    break;
                case 'location':
                    return "Location_X: " . $message['Location_X'] . "\nLocation_Y: " . $message['Location_Y'] . "\nScale: " . $message['Scale'] . "\nLabel: " . $message['Label'];
                    Log::info('收到坐标消息');
                    break;
                case 'link':
                    Log::info('收到链接消息');
                    return "Title: " . $message['Title'] . "\nDescription: " . $message['Description'] . "\nUrl: " . $message['Url'];
                    break;
                default:
                    Log::info('收到其它消息');
                    return $message['MsgType'];
                    break;
            }
        });
        $response = $app->server->serve();
        $response->send();
        exit;

    }

此时你给微信公众号发送消息,就会得到对应的回应,里面还有很多其他的接口,你会了一个,你就应该会其他的,因为我的哲学老师告诉我,一个知行合一的人,如果他知道怎么炒菜,他就知道怎么盖房子。所以,学以致用吧。

相关文章

网友评论

      本文标题:thinkphp/laravel 使用overtrue/wech

      本文链接:https://www.haomeiwen.com/subject/fftlghtx.html