vance-page / laravel-notification-wechat
Laravel Wechat Notifications Driver
v1.2.2
2022-06-28 03:13 UTC
Requires
- php: ^7.4 || ^8.0
- ext-json: *
- ext-simplexml: *
- guzzlehttp/guzzle: ^7.0
- illuminate/notifications: ^6.0 || ^7.0 || ^7.0 || ^9.0
- illuminate/support: ^6.0 || ^7.0 || ^7.0 || ^9.0
Requires (Dev)
- phpunit/phpunit: ^6.2
README
基于 laravel 的消息通知开发过微信的模板消息通知
运行环境
- PHP 5.6+
- composer
安装
-
composer
composer require vance-page/laravel-notification-wechat
-
注册 serviceprovider ( < laravel 5.5 )
Vance\NotificationChannels\WechatServiceProvider::class
使用
例子
<?php namespace App\Notifications; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Notifications\Notification; use Vance\NotificationChannels\WechatChannel; use Vance\NotificationChannels\WechatMessage; class WechatNotification extends Notification { use Queueable; public function __construct() { // } public function via($notifiable) { return [WechatChannel::class]; } public function toWechat($notifiable) { $accessToken = "n2McCJoqWKRi7hJbKFOqftgtU_EX6u2ZOvIi1lpx0fZJ3YW5Oo4iIPZEpi0ecct2lHMagK84xGF5rEm_DSMKrZFfCEZiYw1yZN3nZXzFSlHM-y88sIi5-dYeeCWx9S1iHXWaAJAMCB"; $data = [ 'first' => 'Test First', 'keyword1' => 'keyword1', 'keyword2' => 'keyword2', 'keyword3' => ['keyword3', '#000000'], 'remark' => ['Test remark', '#fdfdfd'], ]; return WechatMessage::create($accessToken) ->to('oeTKvwYyc3PPAo3As3VRUBGppC0s') ->template("0qUpCTpgeYMFbjEKQ4W_D3ZNx5zUzQIfgasgqYX53mg") ->url('http://github.com/yansongda') ->data($data); } }
支持的 WechatMessage 方法
to(string $openid)
: 设置模板消息接收人的 openIDtemplate(string $templateID)
: 设置模板消息的模板 IDurl(string $url)
: 设置点击模板消息后跳转 url,选填miniprogram(string $appid, string $pagepath)
: 设置点击模板消息后跳转的小程序,选填data(array $data)
: 设置模板消息数据
关于微信 AccessToken
微信发送模板消息时需要传递 accesstoken ,这里有三种方法去处理,方便与您现有的微信开发框架所集成。
- 直接传递 accesstoken 值到
WechatMessage::create($accesstoken)
方法中,如上例所示; - 传递一个
Vance\LaravelNotificatinoWechat\Contracts\AccessTokenInterface
类到WechatMessage::create($CredentialClass)
方法; - 直接在 config 文件夹中的 services.php 中添加
'wechat' => ['appid' => 'xxx', 'appsecret' => 'xxx']
,系统将自动获取 accesstoken 并缓存,缓存的 key 为wechatAccessToken您的APPID
您可以直接通过 laravel 的 Cache Facade 获取缓存的 accesstoken,当然,最保险的方案是通过(new Yansongda\LaravelNotificationWechat\Credential($appid, $appsecret))->getAccessToken()
去获取 accesstoken。 - 若使用EasyWechat(laravel包)且正常通信后,
WechatMessage::create()
参数留空即可
具体可查看源码。
说明
- 如果
miniprogram
与url
同时存在,则优先使用小程序跳转,详情请参考官方文档 data()
方法接收一个数组,其key
为模板消息中的关键字,value
可以为字符串或数组。如果为字符串,则默认颜色为#173177
;如果为数组,则第一个参数为显示的数据,第二个参数为字体颜色
代码贡献
欢迎 Fork 并提交 PR!
LICENSE
MIT