企业微信
刘泓宾
# 企业微信
# 开发说明
多客怪兽企业微信平台实现了一个企业,按需部署或开发多个不同应用,满足不同的应用场景,并且实现了企业内部开发、自建应用
以及第三方应用开发对接。
企业微信所有的Application
都是采用EasyWeChat
的 Application 对象
,调用方式统一为:
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
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
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
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
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
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
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
2
3
4
5
6
7
8
# 企业内部开发数据
企业内部应用开发的敏感权限最高,开发者需要根据实际情况判断。当前可以得到用户真实姓名,电话号码,地址,邮箱等敏感信息。
# 服务商授权数据
服务商授权的企业微信平台得到数据较少,只能得到用户的二维码和头像,并且企业ID(corpid),用户ID(userid)等信息都为加密信息,但不影响使用。