环境选择
laravel版本 => 5.8
php => 7.3
esayWechat => 5.0
1. 安装EasyWechat
composer require "overtrue/laravel-wechat:~5.0"
2. 配置laravel应用
2.1 在config/app.php里面注册easywechat的provider和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
对应到config/wechat.php中official_account当中去
#根据公众号配置获得
WECHAT_OFFICIAL_ACCOUNT_APPID = XXXXX
WECHAT_OFFICIAL_ACCOUNT_SECRET = XXXXX
WECHAT_OFFICIAL_ACCOUNT_TOKEN = XXXXX
WECHAT_OFFICIAL_ACCOUNT_AES_KEY = XXXXX
AES_KEY如果是个人测试公众号可以不需要,获取方式从公众号平台基本配置里面获得
EncodingAESKey
3. 使用easywechat
创建一个普通消息
php artisan make:controller WeChatController
路由:
Route::any(‘/wechat’, ‘WeChatController@serve’);
注意:这里一定要用any,因为微信认证是通过GET方式,接收用户消息而是POST。
路由注册完后,我们需要在中间件App\Http\Middleware\VerifyCsrfToken中排除该微信路由的csrf验证
protected $except = [
// 跳过csrf
'wechat',
];
以上步骤完成后,对控制器进行编辑
<?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 "欢迎关注 鱼鱼鱼芙!";
});
return $app->server->serve();
}
}
当当当!一个基本的公众号基本接收就搭建完成了,如果要实际运行需要在微信公众平台进行配置,以下用测试平台进行举例。
如果您的域名为XXXX.com那么请登录微信公众平台测试平台中的接口配置信息进行修改(本地内网穿透方式同样使用 )
4. 如要发送图文或者模板
将WeChatController中的server改为如下
message接收的类型有
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[image]]></MsgType>
<Image>
<MediaId><![CDATA[media_id]]></MediaId>
</Image>
</xml>
public function serve(){
Log::info('request arrived.');
$app = app('wechat.official_account');
$app->server->push(function($message)use ($app){
switch($message['MsgType']){
case 'event':
//subscribe为订阅事件
if ($message['Event'] == 'subscribe') {
return '欢迎关注 caoxinxin公众号!';
}
break;
case 'text':
//发送图文
return '这是文本';
break;
case 'image':
return '这是图片';
case 'voice':
return '这是语音';
}
});
return $app->server->serve();
}
基本的图文发送可以从文档中获取。
如要需要自动发送模板信息,可以通过定时任务进行
最后附上EaseWechat文档和git地址
https://easywechat.com/
https://github.com/w7corp/easywechat