本模块是依赖于 composer require overtrue/wechat:~5.0 -vvv,所以在安装模块之前需要执行composer安装。

小程序

小程序码

订阅消息

短链接

用户授权

公众号

jssdk

前端页面开发需要获取jssdk,获取到的jssdk配置可以直接给到前端使用。

  1. function getJssdk(RequestInterface $request, ResponseInterface $response)
  2. {
  3. $url = $request->input('url', $request->url());
  4. try {
  5. $office_service = new OfficeService();
  6. $res = $office_service->jssdk()
  7. ->getConfig($url);
  8. return $response->json($res);
  9. } catch (\Throwable $exception) {
  10. //请求数据失败
  11. return $exception->getMessage();
  12. }
  13. }

模板消息

服务号模板消息发送

    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_messagewechat_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();
        }
    }

企业微信