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

Posted houxin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel接管公众号的消息系统时公众号无法转发消息的处理相关的知识,希望对你有一定的参考价值。

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主题了,完成消息的发送。

三、消息发送

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

  1. 保证消息链接支持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‘
    ];
}

修改消息的发送的函数,测试代码如下:

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接管公众号的消息系统时公众号无法转发消息的处理的主要内容,如果未能解决你的问题,请参考以下文章

微信公众号(服务号订阅号企业号)的区别

微信公众号开发

微信公众号推送的图文消息里面的正文可以插入html标签吗?比如iframe a

如何获取微信公众号的URL地址 用于HTML网页的

微信公众号相关

微信公众平台测试号的申请与使用