php接入企业微信

企业微信,现在来讲应该是一个很常见了的功能了。下面,我就以tp6来给大讲下接入企业微信的小demo吧。
首先,在common.php的公共方法里面写入下面两段代码

function sendRequest($url){ //用curl请求获取access_token
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	$output = curl_exec($ch);
	curl_close($ch);
	return json_decode($output, true);
}


function send($data,$access_token){ //企业微信各接口的接入方法,比如(文本、卡片等等)
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token='. $access_token);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    return curl_exec($ch);
}

2、在控制器中,写入以下代码
(1)、首先,需要获取基础信息,(包括用户ID,response_code(response_code用于卡片的接口的参数)等)。而对于获取这些数据,我们可以在前端去做处理。

(function(){
	$.ajax({
		url:'getBaseData',
		data:{url:'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token='}, //这个地址是固定写法
		dataType:'json',
		success:function(e){
			//这儿就把返回的数据,把需要的保存起来
			console.log(e)
		},
		error:function(err){
			console.error(err)
		}
	})
});

(2)、在后端的接口中,我们就需要对刚前端的ajax请求做处理,并返回数据给他

public function getBaseData(){
	$url = input('post.url') . $this->access_token;
	$res = sendRequest($url);
	return json_decode($res);
}
	//在控制器中的代码,直接运行 index的方法即可。下面的代码逻辑也相对比较简单【这个控制器的整个php代码】
	namespace app\php\controller\weixin;
	use app\BaseController;
	use think\facade\Cache;
	use think\facade\Db;

	class Index extends BaseController{
		//其实,像corpid appId corpsecret  这些都是可以写入数据库,或者写在在公共的弄成一个常量也可以。
		//同时,获取access_token的方法也可以独立封装成一个对象,在这儿我就直接拿来用了。
		private $corpid = '';
		private $appId = '';
		private $corpsecret = '';
		private $access_token = '';
		
		public function __construct(){
			$accessTokenData = Cache::get('accessTokenData');//获取缓存里面access_token的内容。因为我是把access_token存入缓存中的(它的有效期是2个小时)
			if($accessTokenData['errcode'] != 0 || $accessTokenData == null){//判断有没有拿到有效的值,如果没有拿到,那它就走一次获取access_token的方法。
				$this->getAccessToken(); //获取access_token的方法
			}
			$access_token = $accessTokenData['access_token'];
			$this->access_token = $access_token;
		}

		public function getAccessToken(){
			$url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid='. $this->corpid .'&corpsecret=' . $this->corpsecret;
			$accessTokenData = sendRequest($url);
			Cache::set('accessTokenData',$accessTokenData,7200);
		}


		public function index(){ //这儿是对接每个功能的。当然,这个也可以放到前端去弄。跟前面获取基础数据是一样的原理。
			$access_token = $this->access_token;
			$data = array(
				'touser'	=>	'@all',
				'msgtype'	=>	'text',
				'agentid'	=>	null,//企业应用ID INT
				'text' => array(
			        'content'	=>	'hello xiaobing'
			    ),
			    'enable_id_trans' => 0,
			    'enable_duplicate_check' => 0,
			    'duplicate_check_interval' => 1800
			);
			$res = send(json_encode($data),$access_token); //send调用的是在公共函数里的方法,注意data需要转成json
			var_dump($res);
		}
		
		public function getBaseData(){
			$url = input('post.url') . $this->access_token;
			$res = sendRequest($url);
			return json_decode($res);
		}
	}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值