首先使用composer下载对应的合适easywechat,easywechat针对主流框架有对应的版本文件。我先直接继承的overtrue/wechat这个,在linux服务器会报500错误,具体原因暂不知,然后我重新继承官方列出的对应版本库,
在linux上运行正常,
使用的话基本是复制官方的例子简单测试了一下,具体代码如下
protected $wx=''; //Factory::officialAccount 得到的实例
public function __construct()
{
$config = [
'app_id' => 'xxx',
'secret' => 'xxx',
'token' => 'xxx',
'response_type' => 'array',
'log' => [
'default' => 'dev', // 默认使用的 channel,生产环境可以改为下面的 prod
'channels' => [
// 测试环境
'dev' => [
'driver' => 'single',
'path' => '/tmp/easywechat.log',
'level' => 'debug',
],
// 生产环境
'prod' => [
'driver' => 'daily',
'path' => '/tmp/easywechat.log',
'level' => 'info',
],
],
],
//...
];
$this->wx= Factory::officialAccount($config);
}
/**
* 全局消息处理
* @throws \EasyWeChat\Kernel\Exceptions\BadRequestException
* @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException
* @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException
* @throws \ReflectionException
*/
public function wx()
{
$this->wx->server->push(function ($message) {
switch ($message['MsgType']) {
case 'event':
return '收到事件消息';
break;
case 'text':
return $this->send_msg();
break;
case 'image':
return '收到图片消息';
break;
case 'voice':
return '收到语音消息';
break;
case 'video':
return '收到视频消息';
break;
case 'location':
return '收到坐标消息';
break;
case 'link':
return '收到链接消息';
break;
case 'file':
return '收到文件消息';
// ... 其它消息
default:
return '收到其它消息';
break;
}
});
$response = $this->wx->server->serve();
// 将响应输出
$response->send();exit; // Laravel 里请使用:return $response;
}
/**
* 模板消息测试
* @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException
*/
public function send_msg(){
$this->wx->template_message->send([
'touser' => '', //用户openid
'template_id' => '', //模板消息ID
'url' => 'https://www.mrtanyi.cn/', //模板消息点击跳转链接
'data' => [
'first'=>[
'value'=>'你好,恭喜购买成功',
'color'=>'#173177'
],
'keynote1'=>[
'value'=>'闪电slr',
'color'=>'#173177'
],
'keynote2'=>[
'value'=>'18000',
'color'=>'#173177'
]
],
]);
}
测试结果