sorry, 我一开始在你的视频底下发表评论,结果没通过审核貌似。
1.开发者和服务器里面的关于wechat_appid, token等都是一致的. laravel用的是最新版本,服务器部署是参照社区里的教程进行的。
路由只有两个,一个主页,一个是
Route::any('/wechat','WechatController@serve');
Controller中的代码:
class WechatController extends Controller
{
//
/**
* 处理微信的请求消息
*
* @return string
*/
public function serve()
{
Log::info('request arrived.');
$wechat = app('wechat');
$wechat->server->setMessageHandler(function($message){
return "欢迎关注 overtrue!";
});
Log::info('return response.');
return $wechat->server->serve();
}
}
我查看了easywechat
中的Guard.php
的源码,结合了storage/logs
中的laravel.log
和wechat.log
其中laravel.log中报错的信息是
BadRequestException in Guard.php line 296: Invalid request.
以下是注释部分我的一些看法,还望指正
public function serve()
{
Log::debug('Request received:', [
'Method' => $this->request->getMethod(),
'URI' => $this->request->getRequestUri(),
'Query' => $this->request->getQueryString(),
'Protocal' => $this->request->server->get('SERVER_PROTOCOL'),
'Content' => $this->request->getContent(),
]);
//// 在token认证的时候下面这段if里面的内容并没有被执行,我也输出了 $this->request->get('echostr')的结果,日志里显示为null
if ($str = $this->request->get('echostr')) {
Log::debug("Output 'echostr' is '$str'.");
return new Response($str);
}
//下面这段代码反而被执行,在wechat.log中getContent的结果为null,所以handleRequest()方法抛出了异常invalid request
$result = $this->handleRequest();
$response = $this->buildResponse($result['to'], $result['from'], $result['response']);
Log::debug('Server response created:', compact('response'));
return new Response($response);
}