欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

laravel中使用easywechat配置公眾號(hào) - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開發(fā)/軟件開發(fā)

知識(shí)

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營(yíng)銷的便利,運(yùn)營(yíng)的高效,讓網(wǎng)站成為營(yíng)銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!

您當(dāng)前位置>首頁(yè) » 新聞資訊 » 公眾號(hào)相關(guān) >

laravel中使用easywechat配置公眾號(hào)

發(fā)表時(shí)間:2020-10-19

發(fā)布人:葵宇科技

瀏覽次數(shù):190

安裝插件

# Laravel < 5.8
composer require "overtrue/laravel-wechat:~4.0"

# Laravel >= 5.8
composer require "overtrue/laravel-wechat:~5.0"

push配置

php artisan vendor:publish --provider="Overtrue\LaravelWeChat\ServiceProvider"

增加.env配置公眾號(hào)設(shè)置

WECHAT_OFFICIAL_ACCOUNT_APPID=wx78ae5bb2XXXX
WECHAT_OFFICIAL_ACCOUNT_SECRET=214f1ce332XXXX
WECHAT_OFFICIAL_ACCOUNT_TOKEN=yishXXX
WECHAT_OFFICIAL_ACCOUNT_AES_KEY=6lwDoXXXXXFDFEEEEEEEEE

過濾CSRF

比如你的配置訪問地址是
http://www.heibaiketang.com/api/weixin/server
那么就需要配置VerifyCsrfToken.php文件如下

api/weixin/*

定義路由

一定要定義get,post,因?yàn)樗麄凃?yàn)證get,post消息

Route::any('api/weixin/server', 'WeiXinController@server')->name('server');

簡(jiǎn)單例子

<?php

namespace App\Http\Controllers\Api;

use App\Services\weixin\ImageMessageHandler;
use App\Services\weixin\TextMessageHandler;
use EasyWeChat\Kernel\Messages\Message;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Log;
use EasyWeChat\Factory;

class WeiXinController extends BaseController
{
    //微信接口服務(wù)
    //https://www.yishanseo.com/api/h5/weixin/server?echostr=1410480958785089387&nonce=134704537&signature=7e6f50565319edc86585d06df0fb8539df46f305&timestamp=1557556841
    public function server()
    {
        Log::info('request arrived.'); # 注意:Log 為 Laravel 組件,所以它記的日志去 Laravel 日志看,而不是 EasyWeChat 日志
        $config = config('wechat.official_account.default');
        $app = Factory::officialAccount($config);
       
       $app->server->push(function ($message) {
            // $message['FromUserName'] // 用戶的 openid
            // $message['MsgType'] // 消息類型:event, text....
            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 '收到坐標(biāo)消息';
                    break;
                case 'link':
                    return '收到鏈接消息';
                    break;
                case 'file':
                    return '收到文件消息';
                // ... 其它消息
                default:
                    return '收到其它消息';
                    break;
            }
        });
        $response = $app->server->serve();
        return $response;
    }
}

上面為SDK寫法,laravel寫法還可以這樣

public function serve()
    {
        Log::info('request arrived.'); # 注意:Log 為 Laravel 組件,所以它記的日志去 Laravel 日志看,而不是 EasyWeChat 日志

        $app = app('wechat.official_account');
        $app->server->push(function($message){
            return "歡迎關(guān)注 overtrue!";
        });

        return $app->server->serve();
    }

這樣就搞定了。
其他寫法

$officialAccount = EasyWeChat::officialAccount(); // 公眾號(hào)
  $work = EasyWeChat::work(); // 企業(yè)微信
  $payment = EasyWeChat::payment(); // 微信支付
  $openPlatform = EasyWeChat::openPlatform(); // 開放平臺(tái)
  $miniProgram = EasyWeChat::miniProgram(); // 小程序
  
  // 均支持傳入配置賬號(hào)名稱
  EasyWeChat::officialAccount('foo'); // `foo` 為配置文件中的名稱,默認(rèn)為 `default`
  //...

如果你有多個(gè)公眾號(hào),需要單獨(dú)分開。那么修改下剛才那個(gè)配置引入

第一種是$config修改就可以切換不同的公眾號(hào)
第二種就設(shè)置officialAccount(配置名字)

把用戶發(fā)過來消息服務(wù)單獨(dú)文件出來

比如我現(xiàn)在要單獨(dú)文本和圖片

 public function server()
    {
        Log::info('request arrived.'); # 注意:Log 為 Laravel 組件,所以它記的日志去 Laravel 日志看,而不是 EasyWeChat 日志
        $config = config('wechat.official_account.default');
        $app = Factory::officialAccount($config);
       $app->server->push(ImageMessageHandler::class, Message::IMAGE); // 圖片消息
        $app->server->push(TextMessageHandler::class, Message::TEXT); // 文本消息
        $response = $app->server->serve();
        return $response;
    }

文本

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2019/5/11
 * Time: 14:56
 */

namespace App\Services\weixin;

use \EasyWeChat\Kernel\Contracts\EventHandlerInterface;
class TextMessageHandler implements  EventHandlerInterface
{
    public $message;

    public function handle($payload = null)
    {
        $this->message=$payload;
        // TODO: Implement handle() method.
        return $this->message['Content'].'TXT消息';
    }

}

以上所有的單獨(dú)文件需要繼承 \EasyWeChat\Kernel\Contracts\EventHandlerInterface;這個(gè)接口。
實(shí)現(xiàn)方法handle(payload),payload表示傳遞過來的對(duì)象消息。。
每個(gè)消息必須返回的消息有

ToUserName 接收方帳號(hào)(該公眾號(hào) ID)
FromUserName 發(fā)送方帳號(hào)(OpenID, 代表用戶的唯一標(biāo)識(shí))
CreateTime 消息創(chuàng)建時(shí)間(時(shí)間戳)
MsgId 消息 ID(64位整型)
微信公眾號(hào)的菜單設(shè)置:
 /**
     * 添加菜單
     */
//    public  function  menu_add(){
//        $app = app('wechat');
//        $menu = $app->menu;
//        $buttons = [
//            [
//                "type"=>"view",
//                "name"=>"進(jìn)入課堂",
//                "url"=>BASE_URL."/wx_student#/main"
//            ],
//        ];
//        $menu->add($buttons);
//    }


   /**
     * 刪除菜單
     */
//    public  function  menu_destroy(){
//        $app = app('wechat');
//        $menu = $app->menu;
//        $menu->destroy();
//    }

/**
 * 查看微信公眾號(hào)當(dāng)前的菜單
 */
public  function  menu_current(){
    $app = app('wechat');
    $menu = $app->menu;
    $menus = $menu->all();
    var_dump($menus);
}
這個(gè)具體文檔上面都有,將這些方法加到一個(gè)控制器中,注冊(cè)路由,上傳到云服務(wù)器上,然后使用瀏覽器訪問一下這些方法,就會(huì)出相應(yīng)的結(jié)果


微信網(wǎng)頁(yè)授權(quán):
注:使用微信網(wǎng)頁(yè)授權(quán)之前,一定要檢查一下你所使用的微信公眾號(hào)是否有網(wǎng)頁(yè)授權(quán)接口的權(quán)限
在laravel版的easywechat中自帶一個(gè)微信授權(quán)的中間件,使用非常簡(jiǎn)單
只需要在配置文件將有關(guān)授權(quán)的配置填寫完整,然后在laravel 

中注冊(cè)一下

然后在 路由中使用該中間件(注:使用web中間件是為了防止出現(xiàn)session不共享的情況)

例:

就可以在session中獲取授權(quán)用戶的信息

例:這是一個(gè)關(guān)于檢測(cè)登錄的中間件

public function handle($request,Closure $next, $guard = null)
{
    if (empty(session("id"))){
        $user = session('wechat.oauth_user');
        $openid = $user['id'];
      //檢測(cè)數(shù)據(jù)庫(kù)中用戶賬號(hào)和微信號(hào)是否綁定
        $result = WxStudent::check_boundwechat($openid);
        if ($result=='200'){
            return $next($request);
        }else{
            return response("請(qǐng)登錄", 403)->header("X-CSRF-TOKEN", csrf_token());
        }
    } else if(!empty(session("id"))) {
        return $next($request);
    }
}


注:如果報(bào)redirect_uri錯(cuò)誤,這時(shí)候極有可能是網(wǎng)頁(yè)授權(quán)的鏈接沒有更改成現(xiàn)在需要授權(quán)的網(wǎng)址,這時(shí)候只需要去公眾號(hào)后臺(tái)改一下要授權(quán)的網(wǎng)址即可
例:

這樣授權(quán)部分的就介紹完了,下面來說一下微信公眾號(hào)向已關(guān)注的用戶推送模板消息

模板消息
ps:要先看一下微信公眾號(hào)是否支持模板消息接口,然后要先把該模板消息的摸板添加到你的微信公眾號(hào)上(通過公眾號(hào)后臺(tái)),然后要知道你要使用模板消息的模板id
如:$template_id = 'XQ3uJilYd5elz-TUHzkvKF4-nfB6Yu3WBm0B45dRtbY';
    
示例:    
      $app = app('wechat');
      $notice = $app->notice;
          $template_id = 'XQ3uJilYd5elz-TUHzkvKF4-nfB6Yu3WBm0B45dRtbY';  //消息模板的id

      $url = BASE_URL.'/wx_student#/bulletininfo/'.$course_id.'/'.$bu_id;   //點(diǎn)擊模板消息的跳轉(zhuǎn)的地址
            //循環(huán)給多個(gè)用戶發(fā)送消息
//                foreach ($users as $user){
//                    if ($user['openid']!=""&&$user['openid']!='0'&&!empty($user['openid'])){
//                        $open_id = $user['openid'];

//              注:不同的模板,$data的內(nèi)容可能不太一樣,具體要看你微信公眾號(hào)后臺(tái)所使用的模板,上面都有示例的
//                        $data = array(
//                            "first"=>$user['name']."同學(xué)你好,你的".$course_nam.'課教師'.$create_name.'發(fā)布了一個(gè)新的班級(jí)公告',
//                            "keyword1"=>'',
//                            "keyword2"=>'',
//                            "remark"=>'請(qǐng)及時(shí)查看班級(jí)公告',
//                        );
//                        $notice->uses($template_id)->withUrl($url)->andData($data)->andReceiver($open_id)->send();
//                    }
//                }
模板消息如果發(fā)不出去的話,你要檢查一下微信公眾號(hào)是否有該接口的權(quán)限,這個(gè)接口的調(diào)用次數(shù)好像是有限制


下面來說一下調(diào)用微信的掃碼接口
這個(gè)是微信的jssdk
后臺(tái)jssdk的域名不要填寫http://
直接寫就行。如ydjx.gm365.cc   要不然可能jssdk就無法調(diào)


1.先在html里面引入
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
    wx.config(<?php echo app('wechat')->js->config(array('scanQRCode'), false) ?>);
</script>
然后在js中加上這個(gè)方法
scan_code(){
    wx.scanQRCode({
        needResult: 1, // 默認(rèn)為0,掃描結(jié)果由微信處理,1則直接返回掃描結(jié)果,
        success: function (res) {
            var result = res.resultStr; // 當(dāng)needResult 為 1 時(shí),掃碼返回的結(jié)果

        }
    });
}

其他查看官方文檔文檔
https://www.easywechat.com/docs/4.1/official-account/server

相關(guān)案例查看更多