黄p网站_在线看中文字幕_亚洲电影免费观看_成人激情视频_欧美成视频_中国av在线

服務(wù)端

第三方平臺(tái)推送事件

公眾號(hào)第三方平臺(tái)推送的有四個(gè)事件:

如已經(jīng)授權(quán)的公眾號(hào)、小程序再次進(jìn)行授權(quán),而未修改已授權(quán)的權(quán)限的話,是沒(méi)有相關(guān)事件推送的。

授權(quán)成功 authorized

?授權(quán)更新 updateauthorized

?授權(quán)取消 unauthorized

?VerifyTicket component_verify_ticket

SDK 默認(rèn)會(huì)處理事件 component_verify_ticket ,并會(huì)緩存 verify_ticket 所以如果你暫時(shí)不需要處理其他事件,直接這樣使用即可:

EasySwoole 框架中配置服務(wù)端驗(yàn)證,示例代碼如下:

<?php
namespace App\HttpController;

use EasySwoole\Http\AbstractInterface\Controller;
use EasySwoole\WeChat\Factory;

class Index extends Controller
{
    public function index()
    {
        $config = [
            // 開(kāi)放平臺(tái)第三方平臺(tái) APPID
            'appId' => 'wxefe41fdeexxxxxx', 

            // 開(kāi)放平臺(tái)第三方平臺(tái) Token
            'token' => 'dczmnau31ea9nzcnxxxxxxxxx',

            // 開(kāi)放平臺(tái)第三方平臺(tái) AES Key
            'aesKey' => 'easyswoole',

            // 開(kāi)放平臺(tái)第三方平臺(tái) Secret
            'secret' => 'your-AppSecret'
        ];

        // 開(kāi)放平臺(tái)
        $openPlatform = Factory::openPlatform($config);

        $server = $openPlatform->server;

        /** @var \Psr\Http\Message\ServerRequestInterface $psr7Request */
        $psr7Request = $this->request();

        // $psr7esponse 是一個(gè)顯式實(shí)現(xiàn)了 PSR-7 的對(duì)象,用戶只需要處理該對(duì)象即可正確響應(yīng)給微信
        $psr7Response = $server->serve($psr7Request);

        $this->response()->withStatus($psr7Response->getStatusCode());

        // PSR-7 的 Header 并不是單純的 k => v 結(jié)構(gòu)
        foreach ($psr7Response->getHeaders() as $name => $values) {
            $this->response()->withHeader($name, implode(", ", $values));
        }
        $this->response()->write($psr7Response->getBody()->__toString());
    }
}

使用原生 Swoole 配置服務(wù)端驗(yàn)證,示例代碼如下:

server.php 的實(shí)現(xiàn)形式下面就以原生 Swoolehttp_server 來(lái)啟動(dòng)一個(gè)服務(wù),偽代碼內(nèi)容如下:

<?php

use EasySwoole\WeChat\Factory;

require_once __DIR__ . '/vendor/autoload.php';

$http = new Swoole\Http\Server('0.0.0.0', 9501);

$http->on('request', function (\Swoole\Http\Request $request, \Swoole\Http\Response $response) {

    $config = [
        // 開(kāi)放平臺(tái)第三方平臺(tái) APPID
        'appId' => 'wxefe41fdeexxxxxx', 

        // 開(kāi)放平臺(tái)第三方平臺(tái) Token
        'token' => 'dczmnau31ea9nzcnxxxxxxxxx',

        // 開(kāi)放平臺(tái)第三方平臺(tái) AES Key
        'aesKey' => 'easyswoole',

        // 開(kāi)放平臺(tái)第三方平臺(tái) Secret
        'secret' => 'your-AppSecret'
    ];

    // 開(kāi)放平臺(tái)
    $openPlatform = \EasySwoole\WeChat\Factory::openPlatform($config);

    $server = $openPlatform->server;

    // 此處為實(shí)現(xiàn)了 \Psr\Http\Message\ServerRequestInterface 的 request 對(duì)象
    /** @var \Psr\Http\Message\ServerRequestInterface $psr7Request  */
    $psr7Request = new XxxReuest($request); // 偽代碼

    /**
     * @var \Psr\Http\Message\ResponseInterface $psr7Response
     * forceValidate() 表示啟用請(qǐng)求驗(yàn)證,以確保請(qǐng)求來(lái)自微信發(fā)送。默認(rèn)不啟用驗(yàn)證
     * serve() 會(huì)解析本次請(qǐng)求后回調(diào)之前注冊(cè)的事件(包括 AES 解密和解析 XML)
     * serve() 接受一個(gè)顯式實(shí)現(xiàn)了 \Psr\Http\Message\ServerRequestInterface 的 request 對(duì)象
     */
    $psr7Response = $server->serve($psr7Request);

    /**
     * $replyResponse 是一個(gè)顯式實(shí)現(xiàn)了 PSR-7 的對(duì)象,用戶只需要處理該對(duì)象即可正確響應(yīng)給微信
     * 下面是一個(gè)原生 swoole 的響應(yīng)方法
     */
    $response->status($psr7Response->getStatusCode());

    /**
     * PSR-7 的 Header 并不是單純的 k => v 結(jié)構(gòu)
     */
    foreach ($psr7Response->getHeaders() as $name => $values) {
        $response->header($name, implode(", ", $values));
    }

    // 將響應(yīng)輸出到客戶端
    $response->write($psr7Response->getBody()->__toString());
});

$http->start();

自定義消息處理器

消息處理器詳細(xì)說(shuō)明見(jiàn) 公眾號(hào)開(kāi)發(fā) - 服務(wù)端章節(jié)

<?php

use EasySwoole\WeChat\OpenPlatform\Server\Guard;
use EasySwoole\WeChat\Kernel\Messages\Message;

$server = $openPlatform->server;

// 處理授權(quán)成功事件
$server->push(function (\EasySwoole\WeChat\Kernel\Contracts\MessageInterface $message) {
    // ...
}, Guard::EVENT_AUTHORIZED);

// 處理授權(quán)更新事件
$server->push(function (\EasySwoole\WeChat\Kernel\Contracts\MessageInterface $message) {
    // ...
}, Guard::EVENT_UPDATE_AUTHORIZED);

// 處理授權(quán)取消事件
$server->push(function (\EasySwoole\WeChat\Kernel\Contracts\MessageInterface $message) {
    // ...
}, Guard::EVENT_UNAUTHORIZED);

使用示例(在 EasySwoole 框架中使用)

使用示例 1:在 App\HttpController\Router.php (即路由)中使用:

示例代碼如下:

<?php
namespace App\HttpController;

use EasySwoole\Http\AbstractInterface\AbstractRouter;
use EasySwoole\Http\Request;
use EasySwoole\Http\Response;
use EasySwoole\WeChat\OpenPlatform\Server\Guard;
use FastRoute\RouteCollector;

class Router extends AbstractRouter
{
    function initialize(RouteCollector $routeCollector)
    {
        // 假設(shè)你的開(kāi)放平臺(tái)第三方平臺(tái)設(shè)置的授權(quán)事件接收 URL 為: https://easyswoole.wechat.com/openPlatform (其他事件推送同樣會(huì)推送到這個(gè) URL)
        $routeCollector->post('/openPlatform', function (Request $request, Response $response) {

            // $openPlatform 為你實(shí)例化的開(kāi)放平臺(tái)對(duì)象,此處省略實(shí)例化步驟
            // $psr7esponse 是一個(gè)顯式實(shí)現(xiàn)了 PSR-7 的對(duì)象,用戶只需要處理該對(duì)象即可正確響應(yīng)給微信
            $psr7Response = $openPlatform->server->serve($request); // Done!

            $response->withStatus($psr7Response->getStatusCode());

            // PSR-7 的 Header 并不是單純的 k => v 結(jié)構(gòu)
            foreach ($psr7Response->getHeaders() as $name => $values) {
                $response->withHeader($name, implode(", ", $values));
            }
            $response->write($psr7Response->getBody()->__toString());

            return false;
        });

        // 處理事件
        $routeCollector->post('/openPlatform', function (Request $request, Response $response) {

            // $openPlatform 為你實(shí)例化的開(kāi)放平臺(tái)對(duì)象,此處省略實(shí)例化步驟
            $server = $openPlatform->server;

            // 處理授權(quán)成功事件,其他事件同理
            $server->push(function (\EasySwoole\WeChat\Kernel\Contracts\MessageInterface $message) {
                // $message 為微信推送的通知內(nèi)容,不同事件不同內(nèi)容,詳看微信官方文檔
                // 獲取授權(quán)公眾號(hào) AppId: $message['AuthorizerAppid']
                // 獲取 AuthCode:$message['AuthorizationCode']
                // 然后進(jìn)行業(yè)務(wù)處理,如存數(shù)據(jù)庫(kù)等...
            }, Guard::EVENT_AUTHORIZED);

            // $psr7esponse 是一個(gè)顯式實(shí)現(xiàn)了 PSR-7 的對(duì)象,用戶只需要處理該對(duì)象即可正確響應(yīng)給微信
            $psr7Response = $server->serve($request); // Done!

            $response->withStatus($psr7Response->getStatusCode());

            // PSR-7 的 Header 并不是單純的 k => v 結(jié)構(gòu)
            foreach ($psr7Response->getHeaders() as $name => $values) {
                $response->withHeader($name, implode(", ", $values));
            }
            $response->write($psr7Response->getBody()->__toString());

            return false;
        });
    }
}

使用示例 2:在 App\HttpController\Index.php (即控制器類)中使用,用戶可在自定義其他控制器中實(shí)現(xiàn):

假設(shè)你的開(kāi)放平臺(tái)第三方平臺(tái)設(shè)置的授權(quán)事件接收 URL 為: https://easyswoole.wechat.com/openPlatform (其他事件推送同樣會(huì)推送到這個(gè) URL

示例代碼如下:

首先在 App\HttpController\Router.php 中定義路由:

<?php
namespace App\HttpController;

use EasySwoole\Http\AbstractInterface\AbstractRouter;
use FastRoute\RouteCollector;
use EasySwoole\WeChat\OpenPlatform\Server\Guard;

class Router extends AbstractRouter
{
    function initialize(RouteCollector $routeCollector)
    {
        // 假設(shè)你的開(kāi)放平臺(tái)第三方平臺(tái)設(shè)置的授權(quán)事件接收 URL 為: https://easyswoole.wechat.com/openPlatform (其他事件推送同樣會(huì)推送到這個(gè) URL)
        $routeCollector->post('/openPlatform', '/Index/openPlatform');
    }
}

然后在 App\HttpController\Index.php 控制器中處理事件:

<?php
namespace App\HttpController;

use EasySwoole\Http\AbstractInterface\Controller;
use EasySwoole\WeChat\OpenPlatform\Server\Guard;

class Index extends Controller
{
    public function openPlatform()
    {
        // $openPlatform 為你實(shí)例化的開(kāi)放平臺(tái)對(duì)象,此處省略實(shí)例化步驟
        $server = $openPlatform->server;

        // 處理授權(quán)成功事件,其他事件同理
        $server->push(function (\EasySwoole\WeChat\Kernel\Contracts\MessageInterface $message) {
            // $message 為微信推送的通知內(nèi)容,不同事件不同內(nèi)容,詳看微信官方文檔
            // 獲取授權(quán)公眾號(hào) AppId: $message['AuthorizerAppid']
            // 獲取 AuthCode:$message['AuthorizationCode']
            // 然后進(jìn)行業(yè)務(wù)處理,如存數(shù)據(jù)庫(kù)等...
        }, Guard::EVENT_AUTHORIZED);

        /** @var \Psr\Http\Message\ServerRequestInterface $psr7Request */
        $psr7Request = $this->request();

        // $psr7esponse 是一個(gè)顯式實(shí)現(xiàn)了 PSR-7 的對(duì)象,用戶只需要處理該對(duì)象即可正確響應(yīng)給微信
        $psr7Response = $server->serve($psr7Request);

        $this->response()->withStatus($psr7Response->getStatusCode());

        // PSR-7 的 Header 并不是單純的 k => v 結(jié)構(gòu)
        foreach ($psr7Response->getHeaders() as $name => $values) {
            $this->response()->withHeader($name, implode(", ", $values));
        }
        $this->response()->write($psr7Response->getBody()->__toString());
    }
}
主站蜘蛛池模板: 精品综合久久久 | 欧美日韩中文 | 精品国产髙清在线看国产毛片 | 亚洲三级在线观看 | 精久久| 日韩国产高清在线 | 欧美高清视频一区二区三区 | 精品国产乱码久久久久久88av | 成人小视频在线观看 | 四虎视频 | 国产成人精品高清久久 | 久久久久国产精品免费免费搜索 | 亚洲色图3p | 久久一区二区三区四区 | 久久久久久久99精品免费观看 | 久久狠狠 | 成人午夜激情 | 国产毛片一区二区 | 一本一道久久a久久精品综合 | www..99热| 日韩一区二区三区av | 精久久 | 欧美日韩激情 | 日韩精品免费视频 | 日日夜夜av | 久一久久 | 国产一区二区三区在线看 | 暖暖av| av片在线观看 | 爱爱免费视频网站 | 黄在线看| 日韩精品一 | 亚洲综合无码一区二区 | 久久久国产精品x99av | 欧美国产视频 | av色伊人久久综合一区二区 | 成人 在线 | 黄色一级电影免费观看 | 一级黄色a视频 | 久久精品中文 | 一级毛片免费看 |