easyWechat 微信開發元件 (使用 EasyWecaht 為 3.0 版本)

Tao發表於2019-01-16
  • 執行 composer require "overtrue/laravel-wechat:~3.0"
    • 在 laravel 中註冊相關應用
    • 在 app/config.php 註冊 ServiceProvider 和 Facade
    • 'providers' => [
      Overtrue\LaravelWeChat\ServiceProvider::class,
      ],
    • 'aliases' => [
      'wechat' => Overtrue\LaravelWeChat\Facade::class,
      ],
  • 生成 config 配置檔案

    • 執行 php artisan vendor:publish 如有選項,請選擇生成 wechat.php 這項

    • 在 wechat.php 中填寫對應配置,在 env 檔案中填寫相關配置檔案

    • 註冊路由,路由定義方式一定要用 any,因為微信伺服器傳送過來的請求有 get 和 post

    • 在中介軟體中過濾掉該路由

    • 獲取使用者資訊,首先你的公眾號有獲取使用者的許可權,在介面許可權中可以檢視

    • 可以用測試介面,測試介面基本擁有所有許可權,下面程式碼都是用的測試介面。

    <?php

    namespace App\Http\Controllers;
    //該控制器對應的路由需用 any 方法,該路由就是你在微信伺服器上的 url 地址
    class WechatController extends Controller
    {
        public function server()
        {
            $app = app('wechat'); 
            $user = $app->user; //呼叫元件中 user 服務
        /*
        setMessagehandler 中已經包含了使用者返回的訊息,也可能是事件,
        當 $message->MsgType 為 event 時為事件,$message->Event 為事件型別,
        常見的 subscribe,是使用者關注公眾號的事件型別,如果不是事件型別,則直接返回文字
        */
        $app->server->setMessagehandler(function($message) use ($user) {
            if ($message->MsgType == 'event' && $message->Event == 'SCAN') {
                return '繫結微信,你的暱稱是' . $user->get($message->FromUserName)->nickname;
            } else {
                    return '歡迎關注楚樓網微信';
             }
            });
            return $app->server->serve();
        }
    }
   <?php

    namespace App\Http\Controllers;

    use EasyWeChat\Foundation\Application;

    class UserController extends Controller
    {
        private $wechat;

        //通過依賴注入,初始化配置,Application 引用了 EasyWecaht的Foundation\Application;
        public function __construct(Application $application)
        {
            $this->wechat = $application;
        }

        //獲取公眾號的使用者列表
        public function index()
        {
            $user = $this->wechat->user->lists();

            return $user;
        }

        //獲取單個使用者的資訊
        public function show($id)
        {
            $user = $this->wechat->user->get($id);

            return $user;
        }

        //修改某個使用者的備註
        public function create($id)
        {
            $this->wechat->user->remark($id, '大神級人物');

            return 'ok';
        }

        //群發訊息
        public function send()
        {
           $this->wechat->broadcast->sendText('內容', [$openid1, $openid2]);
           return 'ok';
        }

        //獲取全部模板訊息
        public function get()
        {
           $res = $this->wechat->notice->getPrivateTemplates();
           return $res;
        }

        //傳送模板訊息,如果需要傳送給多個使用者,可迴圈傳送
        模板樣例
        {{ first.DATA }}
        商品明細:
        名稱:{{ name.DATA }}
        價格:{{ price.DATA }}
        {{ remark.DATA }}
        public function sms()
        {
           $url = 'www.baidu.com';
          $data = array(
         "first"  => "恭喜你購買成功!",
         "name"   => "巧克力",
         "price"  => "39.8元",
         "remark" => "歡迎再次購買!",
        );
           $notice  = $this->wechat->notice;
           $messageId = $notice->to($openid)->uses($templateId)->andUrl($url)->data($data)->send();
          return 'ok';
        }
    }
  • 生成二維碼
    • $result = $this->wechat->qrcode->temporary(6 24 3600); 臨時二維碼
    • $result = $this->wechat->qrcode->forever(56); 生成永久二維碼
    • 頁面顯示二維碼 $url = $qrcode->url($result->ticket)
    • 獲取二維碼圖片 file_get_contents($url);

EasyWecha 4.0版本和3.0用法基本相似,詳情可以看官方文件

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章