Laravel6+overtrue/Laravel-wechat 開發微信公眾號

phpervip發表於2020-06-12

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"
  1. 修改應用根目錄下的 config/wechat.php 中對應的引數即可。
  2. 每個模組基本都支援多賬號,預設為 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 協議》,轉載必須註明作者和本文連結

相關文章