Laravel6+overtrue/Laravel-wechat 开发微信公众号
1. 安装 laravel-wechat
composer require "overtrue/laravel-wechat:~5.0"
2.配置 Laravel 应用
2.1.在 config/app.php
注册 ServiceProvider 和 Facade
'providers' => [
// ...
Overtrue\LaravelWeChat\ServiceProvider::class,
],
'aliases' => [
// ...
'EasyWeChat' => Overtrue\LaravelWeChat\Facade::class,
],
2.2.创建配置文件:
php artisan vendor:publish --provider="Overtrue\LaravelWeChat\ServiceProvider"
- 修改应用根目录下的
config/wechat.php
中对应的参数即可。 - 每个模块基本都支持多账号,默认为
default
。
2.3 修改.env
添加:赋值
WECHAT_OFFICIAL_ACCOUNT_APPID = XXXXX
WECHAT_OFFICIAL_ACCOUNT_SECRET = XXXXX
WECHAT_OFFICIAL_ACCOUNT_TOKEN = XXXXX
WECHAT_OFFICIAL_ACCOUNT_AES_KEY = XXXXX
同时添加:.env.example 不赋值。
3.使用
在中间件 App\Http\Middleware\VerifyCsrfToken
排除微信相关的路由,
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
/**
* Indicates whether the XSRF-TOKEN cookie should be set on the response.
*
* @var bool
*/
protected $addHttpCookie = true;
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
// 跳过csrf
'wechat',
];
}
微信公众平台配置:
假设您的域名为
overtrue.me
那么请登录微信公众平台 “开发者中心” 修改 “URL(服务器配置)” 为:http://overtrue.me/wechat
。
如果用测试公众号,用内网穿透的方法(Ngrok)本地调试,比如填URL为:
http://49a412c56a2d.ngrok.io/wechat
。 注意 一定要关闭底部调试,关闭底部 Debugbar 。否则,配置失败。
路由:
Route::any(‘/wechat’, ‘WeChatController@serve’);
注意:一定是
Route::any
, 因为微信服务端认证的时候是GET
, 接收用户消息时是POST
!
创建控制器:
下面以接收普通消息为例写一个例子:
php artisan make:controller WeChatController
<?php
namespace App\Http\Controllers;
use Log;
class WeChatController extends Controller
{
/**
* 处理微信的请求消息
*
* @return string
*/
public function serve()
{
Log::info('request arrived.'); # 注意:Log 为 Laravel 组件,所以它记的日志去 Laravel 日志看,而不是 EasyWeChat 日志
$app = app('wechat.official_account');
$app->server->push(function($message){
return "欢迎关注 overtrue!";
});
return $app->server->serve();
}
}
更多使用说明请看:github.com/overtrue/laravel-wechat
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: