使用wechat配置微信公众号报token验证失败
大家好!我看 github.com/overtrue/laravel-wechat
照着教程配置的。
1.在 config/app.php 注册 ServiceProvider 和 Facade
2.创建、修改应用根目录下的 config/wechat.php
这样写,
'official_account' => [
'default' => [
'app_id' => env('WECHAT_OFFICIAL_ACCOUNT_APPID', 'your-app-id'), // AppID
'secret' => env('WECHAT_OFFICIAL_ACCOUNT_SECRET', 'your-app-secret'), // AppSecret
'token' => env('WECHAT_OFFICIAL_ACCOUNT_TOKEN', 'your-token'), // Token
'aes_key' => env('WECHAT_OFFICIAL_ACCOUNT_AES_KEY', ''), // EncodingAESKey
]
3.然后,在.env填入对应的。
#wechat official account
WECHAT_OFFICIAL_ACCOUNT_APPID = XXXXX
WECHAT_OFFICIAL_ACCOUNT_SECRET = XXXXX
WECHAT_OFFICIAL_ACCOUNT_TOKEN = XXXXX
WECHAT_OFFICIAL_ACCOUNT_AES_KEY = XXXXX
4.修改路由:
Route::any(‘/wechat’, ‘WeChatController@serve’);
5.
在WeChatController控制器中写
public function serve()
{
Log::info('request arrived.'); # 注意:Log 为 Laravel 组件,所以它记的日志去 Laravel 日志看,而不是 EasyWeChat 日志
$app = app('wechat.official_account');
$app->server->push(function($message){
return "欢迎关注 ###!";
});
return $app->server->serve();
}
6.在中间件 App\Http\Middleware\VerifyCsrfToken 排除微信相关的路由
protected $except = [
"wechat"
];
7.然后到微信公众号(已认证的服务号):
服务器配置
修改配置:
服务器地址(URL), 我的域名/wechat
令牌(Token),
消息加解密密钥(EncodingAESKey),
兼容模式。
提交报错:
Token验证失败。
8.访问域名/wechat
<xml>
<MsgType>text</MsgType>
<Content>欢迎关注 ###!</Content>
<ToUserName></ToUserName>
<FromUserName></FromUserName>
<CreateTime>1606123633</CreateTime>
</xml>
我对照了,这几个和代码中的是一致的。
wechat.log 中:
[2020-11-23T17:07:53.246341+08:00] EasyWeChat.DEBUG: Request received: {"method":"GET","uri":"https://域名/wechat?echostr=1007693913554386937&nonce=1733004785&signature=b355201bc26f8db413994043ed141a8f72446df4×tamp=1606122473","content-type":null,"content":""}
[2020-11-23T17:07:53.247179+08:00] EasyWeChat.DEBUG: Server response created: {"content":"1007693913554386937"}
请教学长,这个怎么排错,解决呢?非常感谢!
博客:Laravel 配置微信公众平台验证 token 失败
可以参考一下这个,还有,配置微信相关的东西最好把debug关掉,很多意料之外的输出都会影响微信的token验证,一般debug关了就没事儿了 :joy: 要怪就怪wechat的参数接收和验证做的烂吧(小声哔哔 :sweat_smile:)