美文网首页
laravel接管公众号的消息系统时公众号无法转发消息的处理

laravel接管公众号的消息系统时公众号无法转发消息的处理

作者: houxin | 来源:发表于2020-05-21 14:23 被阅读0次

    laravel接管公众号的消息系统
    公众号没有转发消息的处理

    一、插件包安装

    这里使用的插件包是laravel-wechat。安装方式如下。

    composer require overtrue/laravel-wechat
    

    二、令牌(Token)认证配置

    配置后台的服务器地址的时候,需要认证token。除了按照要求配置token外,还要满足,公众号的token的认证。
    认证的时候,也很简单。注意是返回echostr的值就行了
    我的服务器的消息地址是:

    http://bridge.4s2sda.cn/wechat/message
    

    我的认证函数的内容为:

    class MessageController extends Controller
    {
        // 接受消息处理
        public function index(){
        
            return $_GET["echostr"];
        }
    }
    

    这样,在你提交的时候,才能保存成功。认证完成后,就不需要这个代码了,可以改动index主题了,完成消息的发送。

    三、网站url配置

    公众号在发送消息的时候,是以post的形式给你的xml数据。
    所有你要到以下的两个点。

    • 保证消息链接支持post
    • csrf保护的中间件中,要排除消息的路由。

    否则的话,公众号那边没法成功的把消息投递你的服务器的。

    1. 保证消息链接支持post
      设置url的时候,注意使用any,允许getpost两种方式的访问。
      // 接受微信服务器的消息
      Route::any('/wechat/message', ['as'=>'wechat.message', 'uses'=>'Wechat\MessageController@index']);
      
      或者,你在提交服务器配置的时候,使用GET,提交成功后。再改回POST也是可以的。因为后期的消息推送也只有post请求。
    2. csrf中排除该路由。
      csrf的排除是具体的链接wechat/message,下面是我的代码
      class VerifyCsrfToken extends Middleware
      {
          /**
           * The URIs that should be excluded from CSRF verification.
           *
           * @var array
           */
          protected $except = [
              'wechat/message'
          ];
      }
      
      注意,排除的时候,wechat/messagewechat/message/*是不一样的。
      wechat/message/*不包含当前的url。

    四、发送消息

    这是我使用EasyWeChatlaravel扩展的发送,普通文本消息。
    代码如下:

    class MessageController extends Controller
    {
       // 接受消息处理
       public function index(){
           $officialAccount = \EasyWeChat::officialAccount(); // 公众号
    
           $officialAccount->server->push(function ($message) {
               $text = new Text('您好!overtrue。');
               return $text;
           });
           return $officialAccount->server->serve();
       }
    }
    

    此时,跟公众号有互动的时候,就会自动回复你您好!overtrue。消息了。
    这样写的,是任何操作,都会回复该消息。无论是关注,还是点击,还是给公众号发消息。

    插件官方文档,如有更多需求,请移步官方文档学习使用。

    相关文章

      网友评论

          本文标题:laravel接管公众号的消息系统时公众号无法转发消息的处理

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