企业微信,现在来讲应该是一个很常见了的功能了。下面,我就以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);}
在控制器中,写入以下代码
(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需要转成jsonvar_dump($res);}public function getBaseData(){$url = input('post.url') . $this->access_token;$res = sendRequest($url);return json_decode($res);}}
来源地址:https://blog.csdn.net/weixin_42371812/article/details/126895372