调用ACC_token以及jsapi_ticket 的一些简单笔记
必须试用的几个方法
/**
* HTTP_GET方法
* @param $url
* @return mixed
*/
function http_get($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
$res = curl_exec($ch);
curl_close($ch);
return $res;
}
/**
* HTTP_POST方法
* @param $url
* @param $data
* @return mixed
*/
function http_post($url, $data) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$res = curl_exec($ch);
curl_close($ch);
return $res;
}
jsapi_ticket 调用
//获取jsapi_ticket
function getJsapi_ticket($access_token){
$arr1=M('wx_jsapi_ticket')->where(['id'=>1])->select();
//判断是否为空,为空第一次添加jsapi_ticket
if(!$arr1){
//微信获取jsapi_ticket接口
$url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$access_token."&type=jsapi";
//get请求接口
$re=http_get($url);
//将返回的json转换成数组
$arr=json_decode($re,true);
$jsapi_ticket=$arr['ticket'];
//组装数组,添加到数据库(wx_jsapi_ticket表)
$data['jsapi_ticket']=$jsapi_ticket;
$data['time']=time();
M('wx_jsapi_ticket')->where(['id'=>1])->save($data);
}elseif($arr1[0]['time']+6000<time()){
//判断jsapi_ticket是否过期,过期重新请求
$url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$access_token."&type=jsapi";
$re=http_get($url);
$arr=json_decode($re,true);
$jsapi_ticket=$arr['ticket'];
$data['jsapi_ticket']=$jsapi_ticket;
$data['time']=time();
//更新数据库里面的access_token
M('wx_jsapi_ticket')->where(['id'=>1])->save($data);
}else{
//没有过期则用缓存起来的access_token
$jsapi_ticket=$arr1[0]['jsapi_ticket'];
}
return $jsapi_ticket;
}
调用ACC_TOKEN
/** Get提交获取数据
* @desc 获取access token
* @return String access_token
*/
function getAccessToken($appid,$secret){
//将access_token存在数据库中的方法
$token= M('wx_access_token');
$tokentime= $token->where('id=1')->find();
// var_dump($tokentime);
// var_dump(time());
//判断access_token是否
if($tokentime['access_token']==""||$tokentime['time']<time()){
//过期了
$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";
$res=json_decode(http_get($url));
$map['access_token']=$res->access_token;
$map['time']= time() + 200;
$token->where('id=1')->save($map);
$access_token = $map['access_token'];
}else{
//没有过期
$access_token = $token->where('id=1')->getField('access_token');
}
return $access_token;
}