微信 SDK for Hyperf, 基于 overtrue/wechat
composer require naixiaoxin/hyperf-wechat
- 发布配置文件
php ./bin/hyperf.php vendor:publish naixiaoxin/hyperf-wechat
- 修改应用根目录下的
config/autoload/wechat.php
中对应的参数即可。 - 每个模块基本都支持多账号,默认为
default
。
下面以接收普通消息为例写一个例子:
假设您的域名为
nxx.cloud
那么请登录微信公众平台 “开发者中心” 修改 “URL(服务器配置)” 为:http://nxx.cloud/wechat
。
路由:
Router::addRoute(['GET', 'POST', 'HEAD'], '/wechat', 'App\Controller\WeChatController@serve');
注意:一定是
Router::addRoute
, 因为微信服务端认证的时候是GET
, 接收用户消息时是POST
!
然后创建控制器 WeChatController
:
<?php
declare(strict_types=1);
namespace App\Controller;
use EasyWeChat\Kernel\Exceptions\BadRequestException;
use EasyWeChat\Kernel\Exceptions\InvalidArgumentException;
use EasyWeChat\Kernel\Exceptions\InvalidConfigException;
use Naixiaoxin\HyperfWechat\EasyWechat;
use Naixiaoxin\HyperfWechat\Helper;
use ReflectionException;
class WeChatController extends AbstractController
{
/**
* 处理微信的请求消息
*
* @return string
* @throws BadRequestException
* @throws InvalidArgumentException
* @throws InvalidConfigException
* @throws ReflectionException
*/
public function serve()
{
$app = EasyWechat::officialAccount();
$app->server->push(function ($message) {
return "欢迎关注 EasyWechat!";
});
// 一定要用Helper::Response去转换
return Helper::Response($app->server->serve());
}
}
上面例子里的 在return的时候必须调用
Naixiaoxin\HyperfWechat\Helper::Response
去转换,否则会报错。
use \Naixiaoxin\HyperfWechat\EasyWechat;
$officialAccount = EasyWechat::officialAccount(); // 公众号
$work = EasyWechat::work(); // 企业微信
$payment = EasyWechat::payment(); // 微信支付
$openPlatform = EasyWechat::openPlatform(); // 开放平台
$miniProgram = EasyWechat::miniProgram(); // 小程序
// 均支持传入配置账号名称以及配置
EasyWeChat::officialAccount('foo',[]); // `foo` 为配置文件中的名称,默认为 `default`。`[]` 可覆盖账号配置
//...
更多 SDK 的具体使用请参考:https://easywechat.com
MIT