本模块是依赖于 composer require overtrue/wechat:~5.0 -vvv
,所以在安装模块之前需要执行composer安装。
小程序
小程序码
订阅消息
短链接
用户授权
公众号
jssdk
前端页面开发需要获取jssdk,获取到的jssdk配置可以直接给到前端使用。
function getJssdk(RequestInterface $request, ResponseInterface $response)
{
$url = $request->input('url', $request->url());
try {
$office_service = new OfficeService();
$res = $office_service->jssdk()
->getConfig($url);
return $response->json($res);
} catch (\Throwable $exception) {
//请求数据失败
return $exception->getMessage();
}
}
模板消息
服务号模板消息发送
function template()
{
try {
// 如果是多个公众号可以加入app_key作为可选参数
$office_service = new OfficeService();
$open_id = 'open_id';
$template_id = 'template_id';
$data = ['a' => 'x', 'd' => time()];
$url = 'url';
$mini_program_appid = 'mini_program_appid';
$res = $office_service->template()
->sendTemplateMsg($open_id, $template_id, $data, $url, $mini_program_appid);
return $res ? 'success' : 'failed';
} catch (\Throwable $exception) {
return $exception->getMessage();
}
}
二维码
获取服务号参数二维码,扫描二维码可以关注/打开服务号
- forever 获取永久参数二维码,数量有限
- temporary 获取临时参数二维码,有时间限制
�
function qrcode()
{
try {
// 如果是多个公众号可以加入app_key作为可选参数
$office_service = new OfficeService();
$res = $office_service->qrcode()
->temporary("OK_" . time());
return $res ? 'success' : 'failed';
} catch (\Throwable $exception) {
return $exception->getMessage();
}
}
消息
这里指的接收和处理微信事件消息,在message()->push()
中会对反馈消息和事件消息创建记录,然后触发相应的事件。开发者可以定义不同的事件监听来处理不同的消息内容。
接收到的信息都会被存储入 wechat_office_message
和 wechat_office_event_message
两张表中,开发者可在问题排查的时候查看这张表的记录,
function officeMessage(ResponseInterface $response, string $app_key = '')
{
try {
// 如果是多个公众号可以加入app_key作为可选参数
$office_service = new OfficeService($app_key);
return $response->write($office_service->message()
->push());
} catch (\Throwable $exception) {
return $response->write($exception->getMessage());
}
}
用户授权
创建用户授权地址 和用户授权回调后处理。每个用户授权成功之后,回调操作都会在 wechat_office_user
做好记录,开发者可以根据需要与该表建立关联关系。
function officeAuth(ResponseInterface $response)
{
$redirect_url = url('wechat/index/path="auth/callback', [], true);
$office_service = new OfficeService();
// snsapi_base 静默授权、snsapi_userinfo显示授权页面
$oauth_url = $office_service->user()
->getOauthUrl($redirect_url, 'snsapi_base');
return $response->redirect($oauth_url);
}
function officeAuthCallBack(RequestInterface $request)
{
$office_service = new OfficeService();
try {
$office_user = $office_service->user()
->oauth($request->input('code'));
//TODO 这里拿到用户的model,下面就可以开发自己的业务
return "success";
} catch (\Throwable $exception) {
//请求数据失败
return $exception->getMessage();
}
}