# EasyWechat [EasyWeChat](https://www.easywechat.com/) 是一个开源的微信 SDK (非微信官方 SDK)。 > 因为组件默认使用 `Curl`,所以我们需要修改对应的 `GuzzleClient` 为协程客户端,或者修改常量 `SWOOLE_HOOK_FLAGS` 为 `SWOOLE_HOOK_ALL | SWOOLE_HOOK_CURL` ## 替换 `Handler` 以下以小程序为例, ```php get('http', []); $config['handler'] = $container->get(HandlerStackFactory::class)->create(); $app->rebind('http_client', new Client($config)); // 重写 Handler $app['guzzle_handler'] = new CoroutineHandler(); // 设置 OAuth 授权的 Guzzle 配置 AbstractProvider::setGuzzleOptions([ 'http_errors' => false, 'handler' => HandlerStack::create(new CoroutineHandler()), ]); ``` ## 修改 `SWOOLE_HOOK_FLAGS` 修改入口文件 `bin/hyperf.php`,以下忽略不需要修改的代码。 ```php request->getBody()->getContents(); ``` 2. 将 XML 数据放到 `EasyWeChat` 的 `Request` 中。 ```php request->getQueryParams(); $post = $this->request->getParsedBody(); $cookie = $this->request->getCookieParams(); $files = $this->request->getUploadedFiles(); $server = $this->request->getServerParams(); $xml = $this->request->getBody()->getContents(); $app['request'] = new Request($get,$post,[],$cookie,$files,$server,$xml); // Do something... ``` ## 如何替换缓存 `EasyWeChat` 默认使用 `文件缓存`,而现实场景是 `Redis` 缓存居多,所以这里可以替换成 `Hyperf` 提供的 `hyperf/cache` 缓存组件,如您当前没有安装该组件,请执行 `composer require hyperf/cache` 引入,使用示例如下: ```php get(CacheInterface::class); ```