企业微信开发文档接口API获取accesstoken和读取成员内部员工
<?php
/**
* 企业微信 API
*/
namespace app\common;
use think\Config;
use think\Log;
use think\Cache;
class WechatqiyeApi
{
public $corpid = '';
public $corpsecret = '';
public function __construct($corpid='', $corpsecret='')
{
if(!$corpid) $corpid = Config::get('corpid');
if(!$corpsecret) $corpsecret = Config::get('corpsecret');
$this->corpid = $corpid;
$this->corpsecret = $corpsecret;
return $this;
}
/**
* 企业微信 获取access_token
* https://developer.work.weixin.qq.com/document/path/91039
* @param bool $refresh
* @return mixed
*/
public function getAccessToken($refresh = false)
{
$corpid = $this->corpid;
$corpsecret = $this->corpsecret;
$cacheKey = "wechatqiye_getAccessToken:" . $corpid;
$access_token = Cache::get($cacheKey);
if (!$access_token || $refresh) {
$url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={$corpid}&corpsecret={$corpsecret}";
$res = json_decode($this->curlGet($url));
Log::info($url);
Log::info($res);
if ($res) {
$access_token = $res->access_token;
if ($access_token) {
Cache::set($cacheKey, $access_token, $res->expires_in-100);
}
}
}
return $access_token;
}
/**
* 企业微信 读取成员(单个)
* https://developer.work.weixin.qq.com/document/path/90196
* @param bool $refresh
* @return mixed
*/
public function getUserone($userid, $refresh = false)
{
$cacheKey = "wechatqiye_getUserone:" . $userid;
$userInfo = Cache::get($cacheKey);
if (!$userInfo || $refresh) {
$access_token = $this->getAccessToken();
$url = "https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token={$access_token}&userid={$userid}";
$res = json_decode($this->curlGet($url));
Log::info($url);
Log::info($res);
if ($res) {
$userInfo = $res;
if ($res) {
Cache::set($cacheKey, $res);
}
}
}
return $userInfo;
}
public function curlGet($url)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
// 为保证第三方服务器与微信服务器之间数据传输的安全性,所有微信接口采用https方式调用,必须使用下面2行代码打开ssl安全校验。
// 如果在部署过程中代码在此处验证失败,请到 http://curl.haxx.se/ca/cacert.pem 下载新的证书判别文件。
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($curl, CURLOPT_URL, $url);
$res = curl_exec($curl);
if (!$res) {
Log::error(curl_error($curl));
}
curl_close($curl);
return $res;
}
}
结束,谢谢!