PFinal\Wechat\Kernel::handle PHP Method

handle() public static method

public static handle ( ) : string
return string
    public static function handle()
    {
        $api = self::getApi();
        $url = (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off' ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
        //验证token
        if (!$api->checkSignature()) {
            Log::error('signature error. url:' . $url);
            return 'signature error';
        }
        //公众号接入(微信平台修改服务器配置)
        if (isset($_GET['echostr'])) {
            Log::debug('echostr. url:' . $url);
            self::getDispatcher()->dispatch('echostr', new WechatEvent($api));
            return $_GET['echostr'];
        }
        $message = $api->getMessage();
        //事件名称与Message类中的常量对应
        $eventName = $message->MsgType;
        if ($message->MsgType === 'event') {
            $eventName = $eventName . '.' . $message->Event;
        }
        //派发事件
        Log::debug('dispatch event:' . $eventName);
        $event = self::getDispatcher()->dispatch($eventName, new WechatEvent($api));
        $reply = $event->getResponse();
        return (string) $api->buildReply($reply);
    }

Usage Example

Beispiel #1
0
    $event->stopPropagation();
}, 1);
*/
Kernel::register(Receive::TYPE_EVENT_SUBSCRIBE, function (WechatEvent $event) {
    $event->setResponse('你关注或是不关注,我都在这里,不悲不喜~~');
    $event->stopPropagation();
});
Kernel::register(Receive::TYPE_EVENT_UNSUBSCRIBE, function (WechatEvent $event) {
    $openid = $event->getMessage()->FromUserName;
    Log::debug($openid . '取消了关注');
});
Kernel::register(Receive::TYPE_SHORT_VIDEO, function (WechatEvent $event) {
    $event->setResponse('收到小视频');
    $event->stopPropagation();
});
Kernel::register(Receive::TYPE_VIDEO, function (WechatEvent $event) {
    $event->setResponse('收到视频');
    $event->stopPropagation();
});
Kernel::register(Receive::TYPE_EVENT_CLICK, function (WechatEvent $event) {
    $event->setResponse('点菜单' . $event->getMessage()->EventKey);
    $event->stopPropagation();
});
Kernel::register(Receive::TYPE_EVENT_SCAN, function (WechatEvent $event) {
    Log::debug('扫码', (array) $event->getMessage());
    $event->setResponse('扫码');
    $event->stopPropagation();
});
//处理微信服务器的请求
$response = Kernel::handle();
echo $response;