企业微信

# 企业微信

# 开发说明

多客怪兽企业微信平台实现了一个企业,按需部署或开发多个不同应用,满足不同的应用场景,并且实现了企业内部开发自建应用 以及第三方应用开发对接。 企业微信所有的Application都是采用EasyWeChatApplication 对象,调用方式统一为:

namespace addons\XXX\controller;
use hiduoke\services\WorkWechatService;

class Index extends AddonsController
{
    public function index()
    {
        // 获取客服的Application
        $app = (new WorkWechatService())->getKfApp();
        // 获取自建应用的Application
        $app = (new WorkWechatService())->getAppsApp();
        // 获取客户联系的Application
        $app = (new WorkWechatService())->getCustomerApp();
        // 未完待续...
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 第三方应用开发

系统创始人可以在后台系统设置-基础设置-企微服务商 进行配置,点击查看如何配置

如果要获取企业微信服务商的Application对象,可以通过以下方式获取:

namespace addons\XXX\controller;

use hiduoke\services\workWechat\WorkWechatOpen;

class Index extends AddonsController
{
    public function index()
    {
        // 获取企业微信服务商的Application
        $app = (new WorkWechatOpen())->getOpenApp();
    }
}
1
2
3
4
5
6
7
8
9
10
11
12

# 自建应用

自建应用的Application对象可以通过getAppsApp 方法获取,需要注意的是,后台自建应用是可以创建多个的,用户可以指定平台下应用默认使用哪个自建应用,同时也可以默认平台全局使用哪个自建应用,并且开发者也可以传入参数进去指定使用哪个自建应用。

提示

优先级:开发者传入应用ID > 平台应用指定的自建应用 > 平台全局指定的自建应用

    /**
     * 获取自建应用Application
     * @param $app_id int 自建应用ID
     * @param $config array 自建应用配置
     * @return \EasyWeChat\Work\Application|null
     * @throws Exception
     */
    public function getAppsApp($app_id = 0, $config = [])
    {
        if ($this->AppsApp) {
            return $this->AppsApp;
        }
        if (!$config) {
            $this->AppsConfig = $this->getAppsConfig($app_id);
        } else {
            $this->AppsConfig = $config;
        }
        $this->AppsApp = Factory::work($this->AppsConfig);
        return $this->AppsApp;
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 微信客服

微信客服的Application自动判断当前的授权方式得到的对象,由于自建应用和第三方应用服务商模式的权限级别不同,得到的数据也不尽相同,需要开发者注意。

    /**
     * 获取客服APP
     * @param $config array 配置
     * @return \EasyWeChat\OpenWork\Work\Application|\EasyWeChat\Work\Application|null
     */
    public function getKfApp($config = [])
    {
        if ($this->auth_type == 'open') {
            // 服务商授权获取App
            $this->openApp = (new WorkWechatOpen())->getOpenApp();
            return $this->openApp->work($this->corp_id, $this->platform['config']['permanent_code']);
        } else {
            // 手动配置
            if ($this->kfApp) {
                return $this->kfApp;
            }
            if (!$config) {
                $this->kfConfig = $this->getKfConfig();
            } else {
                $this->kfConfig = $config;
            }
            $this->kfApp = Factory::work($this->kfConfig);
            return $this->kfApp;
        }
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

# 客户联系

同上


    /**
     * 获取客户联系Application
     * @param $config array 配置
     * @return \EasyWeChat\OpenWork\Work\Application|\EasyWeChat\Work\Application|null
     */
    public function getCustomerApp($config = [])
    {
        if ($this->auth_type == 'open') {
            // 服务商授权获取App
            $this->openApp = (new WorkWechatOpen())->getOpenApp();
            return $this->openApp->work($this->corp_id, $this->platform['config']['permanent_code']);
        } else {
            // 手动配置
            if ($this->customerApp) {
                return $this->customerApp;
            }
            if (!$config) {
                $this->customerConfig = $this->getCustomerConfig();
            } else {
                $this->customerConfig = $config;
            }
            $this->customerApp = Factory::work($this->customerConfig);
            return $this->customerApp;
        }
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

# 用户授权登录

多客怪兽系统的企微平台内置了用户授权登录的功能,需要做复杂的开发即可得到员工/用户授权的身份信息。但是由于用户可以使用企业内部开发和第三方服务商授权,因为二者权限不同,导致得到的结果会不相同。

# 使用方法如下:

namespace addons\XXX\controller\h5;
use hiduoke\services\WorkWechatService;
class Test extends H5BaseController
{
    public function index()
    {
        // 获取用户授权登录的信息,如果没有授权则跳转到授权页面
        $user = (new WorkWechatService())->getUser();
        dump($user);
    }
}
1
2
3
4
5
6
7
8
9
10
11

# 函数介绍

    /**
     * 获取用户企业微信授权信息
     * @param $force_oauth bool 是否强制授权,如果为false则未得到用户信息时返回false,不会强制拉取授权
     * @param $userinfo bool 是否获取用户信息,如果为true表示获取用户敏感信息,否则为静默授权
     * @return false|mixed|string
     * @throws \Exception
     */
    public function getUser($force_oauth = true, $userinfo = true){}
1
2
3
4
5
6
7
8

# 企业内部开发数据

企业内部应用开发的敏感权限最高,开发者需要根据实际情况判断。当前可以得到用户真实姓名,电话号码,地址,邮箱等敏感信息。

# 服务商授权数据

服务商授权的企业微信平台得到数据较少,只能得到用户的二维码和头像,并且企业ID(corpid),用户ID(userid)等信息都为加密信息,但不影响使用。