1.获取accesstoken
private $appId="wxcf....."; //微信企业号的appid
public function getAccessToken() { //获取AccessToken的方法
$data = json_decode(file_get_contents("AccessToken.json"));//获取存在AccessToken.json
//$access_token=$data->access_token;
if ($data->expire_time < time()) { //如果AccessToken过期则重新获取AccessToken
// $config = C('WX_CONFIG');
$url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=wxcf.....&corpsecret=2ASy1p9hBT_AGhaSeJEHMbXiXY........";//获取AccessToken的url及参数。
$res =$this->https_request($url);//调用https请求方法
$res = json_decode($res); //把$res设置为对象
$access_token = $res->access_token; //获取结果集中的access_token
if ($access_token) {
$data->expire_time = time() + 7000; //上一次获取access_token的时间加上两小时,access_token的有效时间为两小时,超过两小时则重新获取。也可以每次使用时都重新获取,但是有获取次数限制。
$data->access_token = $access_token;
$fp = fopen("AccessToken.json", "w"); //打开AccessToken.json文件,“W”表示写入(Write)
fwrite($fp, json_encode($data));//获取到的结果写入
fclose($fp);//关闭文件
}
} else {
$access_token = $data->access_token; //未过期情况下直接读取文件里的access_token
}
return $access_token;
}
2.https 请求方法
//https请求(支持GET和POST)
public function https_request($url, $data = null){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
3.发送消息
//请假时发送消息给上级审批
public function sendMSG($superior,$name,$meet,$id){
$access_token=$this->getAccessToken();//调用getAccessToken方法获取access_token
$arr=array(
'touser'=>$superior, //消息接收者工号
"msgtype"=> "text",
"agentid"=>8,
"text"=> array(
"content"=>'<a href="http://....../qyhdev/index.php?s=/weixin/Bublic/index/id/'.$id.'/name/'.$name.'/meet/'.$meet.'">收到'.$name.''.$meet.'请假申请,请点击查看</a>' //发送的消息内容
)
);
$arr=json_encode($arr,JSON_UNESCAPED_UNICODE); //利用json_encode把$arr变为json形式,“JSON_UNESCAPED_UNICODE”参数把中文变为json形式。
$url="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=".$access_token;
$res=$this->https_request($url, $arr); //调用https请求方法发送消息。
}
4.调用sendMSG方法
public function leave(){
$this->sendMSG($superior,$name,$meetname,$id); //调用sendMSG方法
}