小白教程:laravel結合easywechat發送公眾號模板消息

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

最近接到新需求,需要給關注服務號的用戶發送模板消息,寫個博客記錄一下完成此次需求走過的路,擴展包使用的是easywechatlaravel結合easywechat發送公眾號模板消息詳細說明,感謝easywechat作者,對新手來說可太好用了!因為我們情況比較特殊,小程序綁定的公眾號和要推送的公眾號不是同一個,這個就涉及到union_Id可能不一致的情況,因此需要將兩個公眾號都綁定到微信開放平臺,如果沒有,就去注冊綁定微信開放平臺文檔

小白教程:laravel結合easywechat發送公眾號模板消息

因為我這邊是一個全新的公眾號,所以步驟會比較小白

配置JS安全域名

小白教程:laravel結合easywechat發送公眾號模板消息

生成secret(主要要保存好,后續重置會影響已上線的業務)

小白教程:laravel結合easywechat發送公眾號模板消息

填寫并啟用服務器配置

小白教程:laravel結合easywechat發送公眾號模板消息
這里填寫的服務器地址會用于后續收到公眾號的各種事件回調,比如關注取消
本地調試需要做內網穿透,具體教程自己去搜吧我也不會

修改配置微信這邊會驗證填寫的服務器地址是否能正常接收,所以會走一次驗證需要接口給出正確返回參數
接入文檔鏈接參考
因為微信的驗證和后續的回調都會走這一個路由,驗證為GET請求,后續的事件回調之類是post請求,因此需要將路由設為any類型

Route::any('official/notify', 'WechatController@officialNotify');

easywechat作者安正超老師為我們考慮了服務器驗證消息的接收與回復在一個鏈接的兼容,所以直接按照文檔使用即可

public function officialNotify()     {         Log::channel('wechat')->info("公眾號回調!!!!!1" );         $body = file_get_contents('php://input');         Log::channel('wechat')->info($body);         $config = [             'app_id'  => config('wechat.yueliu_official_account.app_id'),             'secret'  => config('wechat.yueliu_official_account.secret'),             'token'   => config('wechat.yueliu_official_account.token'),//            'aes_key' => config('wechat.yueliu_official_account.aes_key'), // 明文模式請勿填寫 EncodingAESKey             'aes_key' => '', // 明文模式請勿填寫 EncodingAESKey             'log'    => [                 'level' => 'error',                 'file'  => storage_path('logs/wechat.log'),             ],             'response_type' => 'array'         ];         $app = Factory::officialAccount($config);         $app->server->push(function ($message) {             Log::channel('wechat')->info($message);             switch ($message['MsgType']) {                 case 'Event':                     return '收到事件消息';                     break;                 case 'text':                     return '收到文本消息';                     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;             }         });         // 在 laravel 中:         $response = $app->server->serve();         // $response 為 `SymfonyComponentHttpFoundationResponse` 實例         // 對于需要直接輸出響應的框架,或者原生 PHP 環境下         $response->send();         // 而 laravel 中直接返回即可:         return $response;     }

我這邊的業務需要,在用戶關注后需要發送可以跳轉小程序的消息給用戶,這里需要在收到event消息后,判斷是否是關注事件,然后將return的消息改為下面的代碼即可,這里的a鏈接點擊后可直接打開小程序,不會在問用戶是否確認之類的提示
需要注意的是:關注公眾號通過[$app->user->get($openId);]可以拿到unionid和一些基本信息,取消關注只能拿到openid

case 'event':       return '歡迎關注音視頻資產管理與協同交付平臺「laravel」官方微信。 <a data-miniprogram-appid="小程序的appid" data-miniprogram-path="小程序路徑" href="備用網址" data-miniprogram-type="text">點擊跳轉</a> 網頁版請至: https://learnku.com';       break;

效果圖

小白教程:laravel結合easywechat發送公眾號模板消息

微信公眾號的關注回調事件會將用戶的基本信息和unionid也一并發送,一定要將公眾號的openid和unionid存起來,后續發送模板消息會根據公眾號的openid進行發送

在微信公眾平臺申請開通模板消息,在右側菜單最下邊“+新功能”找到模板消息,點擊申請開通,大概需要1-3個工作日。我這邊是1天就通過了

小白教程:laravel結合easywechat發送公眾號模板消息

開通后,選擇行業,選擇模板類型,如果微信提供的模板庫找不到和你業務一樣的,那就需要自己去提交申請了,但是這個時間比較久,大概需要7-15天,建議還是用模板庫的

小白教程:laravel結合easywechat發送公眾號模板消息
這里的模板id要存在代碼里,后續發送模板消息需要用到

下面就是根據業務需要,給用戶發送模板消息了,代碼如下

$openId = '公眾號的openid';     $config = [         'app_id'  => config('wechat.yueliu_official_account.app_id'),         'secret'  => config('wechat.yueliu_official_account.secret'),         'token'   => config('wechat.yueliu_official_account.token'),         //            'aes_key' => config('wechat.yueliu_official_account.aes_key'), // 明文模式請勿填寫 EncodingAESKey         'aes_key' => '', // 明文模式請勿填寫 EncodingAESKey         'log'    => [             'level' => 'error',             'file'  => storage_path('logs/wechat.log'),         ],         'response_type' => 'array'     ];      $app = Factory::officialAccount($config);//    $user = $app->user->get($openId);//    dd($user);     // 發送模板消息      $app->template_message->send([         'touser' => $openId,         'template_id' => '模板id',         'url' => 'http://www.網站.cn',         'miniprogram' => [ // 跳轉到小程序,和上面的url同時存在的話,則優先顯示小程序             'appid' => '小程序的id',             'pagepath' => '小程序頁面地址',         ],         'data' => [             'first' => [                 'value' => '趙師傅已加入群組演示項目',                 'color' => '#888888'             ],             'keyword1' => [                 'value' => '加入項目'             ],             'keyword2' => [                 'value' => '加入成功'             ],             'keyword3' => [                 'value' => '2021-12-10 14:21:05'             ],             'remark' => [                 'value' => '點擊打開小程序'             ],         ],     ]);

效果圖

小白教程:laravel結合easywechat發送公眾號模板消息

以上就是laravel結合easywechat發送公眾號模板消息的全部過程,完畢!

相關推薦:最新的五個Laravel視頻教程

以上就是小白教程:

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享