easyswoole - 基于swoole扩展实现的一款高性能php框架

代授權方實現業務

授權方已經把公眾號、小程序授權給你的開放平臺第三方平臺了,接下來的代授權方實現業務只需一行代碼即可獲得授權方實例。

實例化

<?php
$config = [
    // 開放平臺第三方平臺 APPID
    'appId' => 'wxefe41fdeexxxxxx', 

    // 開放平臺第三方平臺 Token
    'token' => 'dczmnau31ea9nzcnxxxxxxxxx',

    // 開放平臺第三方平臺 AES Key
    'aesKey' => 'easyswoole',

    // 開放平臺第三方平臺 Secret
    'secret' => 'your-AppSecret'
];

// 開放平臺
$openPlatform = \EasySwoole\WeChat\Factory::openPlatform($config);

獲取授權方實例

// 代公眾號實現業務
$officialAccount = $openPlatform->officialAccount(string $appId, string $refreshToken);

// 代小程序實現業務
$miniProgram = $openPlatform->miniProgram(string $appId, string $refreshToken);
  • $appId 為授權方公眾號 APPID,非開放平臺第三方平臺 APPID
  • $refreshToken 為授權方的 refresh_token,可通過 獲取授權方授權信息 接口獲得。

幫助授權方管理開放平臺賬號

<?php
// 代公眾號實現業務
$account = $officialAccount->account;

// 代小程序實現業務
$account = $miniProgram->account;

// 創建開放平臺賬號
// 并綁定公眾號或小程序
$result = $account->create();

// 將公眾號或小程序綁定到指定開放平臺帳號下
$result = $account->bindTo($openAppId);

// 將公眾號/小程序從開放平臺帳號下解綁
$result = $account->unbindFrom($openAppid);

// 獲取公眾號/小程序所綁定的開放平臺帳號
$result = $account->getBinding();

授權第三方平臺注冊的開放平臺帳號只可用于獲取用戶 unionid 實現用戶身份打通。第三方平臺不可操作(包括綁定/解綁)通過 open.weixin.qq.com 線上流程注冊的開放平臺帳號。公眾號只可將此權限集授權給一個第三方平臺,授權互斥。

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

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

示例代碼如下:

<?php
namespace App\HttpController;

use EasySwoole\Http\AbstractInterface\AbstractRouter;
use EasySwoole\Http\Request;
use EasySwoole\Http\Response;
use FastRoute\RouteCollector;

class Router extends AbstractRouter
{
    function initialize(RouteCollector $routeCollector)
    {
        // 假設你的公眾號消息與事件接收 URL 為:https://easyswoole.wechat.com/callback?appId=Xxxx ...
        $routeCollector->post('/callback', function (Request $request, Response $response) {

            $appId = $request->getQueryParam('appId');

            // $openPlatform 為你實例化的開放平臺對象,此處省略實例化步驟
            $officialAccount = $openPlatform->officialAccount($appId);

            // 這里的 server 為授權方的 server,而不是開放平臺的 server,請注意!!!
            $server = $officialAccount->server;

            $server->push(function (\EasySwoole\WeChat\Kernel\Contracts\MessageInterface $message) {
                return new \EasySwoole\WeChat\Kernel\Messages\Text('Welcome!');
            });

            // $psr7esponse 是一個顯式實現了 PSR-7 的對象,用戶只需要處理該對象即可正確響應給微信
            $psr7Response = $server->serve($request); // Done!

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

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

            return false;
        });

        // 調用授權方業務例子
        $routeCollector->get('/how-to-use', function (Request $request, Response $response) {

            $officialAccount = $openPlatform->officialAccount('已授權的公眾號 APPID', 'Refresh-token');

            // 獲取用戶列表:
            $officialAccount->user->list();

            $miniProgram = $openPlatform->miniProgram('已授權的小程序 APPID', 'Refresh-token');

            // 根據 code 獲取 session
            $miniProgram->auth->session('js-code');

            // 其他同理

            return false;
        });
    }
}

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

假設你的開放平臺第三方平臺設置的授權事件接收 URL 為: https://easyswoole.wechat.com/openPlatform (其他事件推送同樣會推送到這個 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)
    {
        // 假設你的公眾號消息與事件接收 URL 為:https://easyswoole.wechat.com/callback?appId=Xxxx ...
        $routeCollector->post('/callback', '/Index/callback');

        // 調用授權方業務例子
        $routeCollector->get('/how-to-use', '/Index/how_to_use');
    }
}

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

<?php

namespace App\HttpController;

use EasySwoole\Http\AbstractInterface\Controller;
use EasySwoole\WeChat\Kernel\Messages\Message;

class Index extends Controller
{
    // 假設你的公眾號消息與事件接收 URL 為:https://easyswoole.wechat.com/callback?appId=Xxxx ...
    public function callback()
    {
        $appId = $this->request()->getQueryParam('appId');

        // $openPlatform 為你實例化的開放平臺對象,此處省略實例化步驟
        $officialAccount = $openPlatform->officialAccount($appId);

        // 這里的 server 為授權方的 server,而不是開放平臺的 server,請注意!!!
        $server = $officialAccount->server;

        $server->push(function (\EasySwoole\WeChat\Kernel\Contracts\MessageInterface $message) {
            return new \EasySwoole\WeChat\Kernel\Messages\Text('Welcome!');
        });

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

        // $psr7esponse 是一個顯式實現了 PSR-7 的對象,用戶只需要處理該對象即可正確響應給微信
        $psr7Response = $server->serve($psr7Request);

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

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

    // 調用授權方業務例子
    public function how_to_use()
    {
        $officialAccount = $openPlatform->officialAccount('已授權的公眾號 APPID', 'Refresh-token');

        // 獲取用戶列表:
        $officialAccount->user->list();

        $miniProgram = $openPlatform->miniProgram('已授權的小程序 APPID', 'Refresh-token');

        // 根據 code 獲取 session
        $miniProgram->auth->session('js-code');

        // 其他同理
    }
}
主站蜘蛛池模板: 喵走共享单车网 - 共享电动车_共享电单车骑行门户网站 倡导绿色出行 | 商城网站建设_商城系统_响应式商城_小程序商城_FwShop | 长春互联网运营值选星广传媒,长春短视频运营,长春新媒体运营,长春互联网运营,长春抖音运营,吉林视频号代运营,吉林快手代运营,短视频推广公司,公众号运营,微博运营,新媒体运营 | 慢直播摄像头厂家,监控直播摄像机厂家,景区慢直播设备,rtmp推流直播摄像头,实时摄像头监控直播-监控慢直播厂家:专注监控慢直播系统解决方案 | 深圳市鼎拓达机电有限公司_ 深圳市鼎拓达机电有限公司 | 浙江健朗-舒华跑步机|公园运动器材|商用健身设备|户外健身器材厂家 | 压力变送器,差压变送器,液位变送器,温度变送器生产厂家价格-西安仕乐克仪表科技有限公司 | 气体报警器,有毒气体报警器,可燃气体探测器,乙炔气体报警器,可燃气体检漏仪,便携式气体检测仪,气体报警控制器-山东如特安防设备有限公司 | 苏州新闻网_苏州最权威资讯 | 江西食用油批发_江西食用油厂家_菜籽油厂家-江西省家泰粮油科技有限公司 | 锦州龙威机械有限公司官网 ,锦州医药包装机,包装机,锦州包装机械,小袋颗粒装盒生产线,颗粒装盒生产线,软双铝装盒线,伺服颗粒 | 软化水设备_锅炉软水设备_全自动软化设备【安装维护、更换树脂】-青岛水处理设备厂家 | 金酱酒_金酱酒代理加盟招商_OEM贴牌企业定制! – 金酱酒代理加盟!茅台镇较早的酿酒烧坊,年产优质酱香白酒5000余吨,仁怀市十强白酒企业,主营主品:金酱酒、金酱陈香酒、酱香老酒等系列品牌产品 | 印刷公司,北京印刷厂,宣传画册手册印刷厂-和智印彩页设计 | 以物联网技术为核心专注于智能安防领域物联网服务的高新技术企业-北京欣智恒科技股份有限公司(官网) | 精品中文字幕在线观看,粉嫩av一区二区三区,最近中文字幕在线看免费视频,亚洲高清在线观看,日本一区二区视频手机免费看,国产黄色小视频,亚洲高清免费视频,国产精品一区二区欧美视频,亚洲人免费视频,亚洲视频在线观看免费,国产免费高清综合视频,中文字幕永久在线 | 软文营销推广-新闻稿发布-软文撰写-百科词条编辑-品牌全案策划推广网络营销传播-喜尚传媒 | 水性漆_水性漆厂家_水性涂料加盟代理_两只璧琥全漆定制官网 | 天津安检机-天津安检门-安检设备租赁-安检设备厂家-华创永信 | 泰安铭德机械有限公司,有机肥设备,山东有机肥设备厂家,铭德机械 泰安华特玻璃钢有限公司|泰安玻璃钢|泰安华特玻璃钢 | 聚氨酯碰头,聚氨酯托辊,聚氨酯地辊/地滚轮/地轮/托绳轮-济宁卓力聚氨酯制品有限公司 | 中国建材信息总网-中国建材行业权威的信息资讯平台 | 深圳办公室装修_办公室设计_写字楼装修设计_深圳市加洲建设集团有限公司 | 河南豫冀锅炉容器制造有限公司 | 微型电磁阀_隔膜泵_活塞泵_微型水泵_微型真空泵_微型气泵【东莞市宗旨电子科技有限公司】 | 水宜生-水宜生水杯价格-水宜生保温杯-【水宜生水杯官网】 | 碳化硅脱硫喷嘴,碳化硅烧嘴套,碳化硅耐磨衬套-潍坊致达特种陶瓷有限公司 | 红都服装官网-北京红都西服-红都西服定制-北京红都集团 | 洗车机-自动汽车洗车机-全自动洗车设备-全自动电脑洗车机-北京自然绿环境科技发展有限公司 | 仪器校准-计量检测-计量校准-中健计量检测(广东)有限公司 | 济南德固机械|膨化食品生产线|早餐谷物玉米片生产线|拉丝蛋白生产线|速食米饭生产线 | 真空机器人维修_晶圆机械手保养_半导体机械臂维修_面板机器人保养_AMHS改造-广州市广科智能技术有限公司 | 南通众诚数控机床有限公司-液压机,剪板机,折弯机,卷板机,液压冲床,路灯杆设备专业制造商 | 河北兴泓环保设备有限公司-冷却塔_废气净化塔_污水除臭设备 | 数字多媒体展厅设计,智慧科技互动企业展馆展厅设计公司-深圳炫之风 | 宿迁市华泰交通设施有限公司,上海第四代路名牌,天津仿罗马柱路名牌,标准路名牌,路名牌灯箱,公交站台,户外广告灯箱, 交通标志牌,社区阅报栏 | 轻型防化服|重型防化服|全封闭防化服|济南三安安全防护设备有限公司 | 十树品牌策划—品牌战略、品牌策划、品牌定位、品牌设计、包装设计、品牌营销-上海十树品牌管理咨询有限公司官网 | 潍坊劲昊磁电科技有限公司-电磁除铁器,永磁除铁器,管道式除铁器,金属探测仪,磁滚筒,输送设备,给料设备,破碎设备 | 商城网站建设_商城系统_响应式商城_小程序商城_FwShop | 内蒙古天奇生物科技有限公司——OEM代工|ODM定制|原料供应|骨肽|片剂|胶囊剂|口服液 |