tp框架获取票据(基于‘’tp框架下获取AccessToken‘’)

// 获取JSSDK票据
function getJsApiTicket(){
    $info = M('WxToken')->find(1);
    if ($info['ticket_time'] < time()) {
        $token=getAccessToken();
        if($token==='error') return 'error';
        else{
            $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$token."&type=jsapi";
            $tmp = CURLSend($url); //json格式
            $obj = json_decode($tmp); 
            if($obj->errmsg==='ok'){
                $data = array('ticket' => $obj->ticket,'ticket_time' => (time() + $obj->expires_in));
                M('WxToken')->where('id=1')->save($data);
                return $obj->ticket;
            }else return 'error';
        }
    }else return $info['ticket'];
}
//  这是获取AccessToken 和票据 的整合方法(1) 当不传参数表示获取token,传表获取票据
// 该方法可以减少(请求数据库) 1次或2次 
function token_ticket($ticket=''){
    $info = M('WxToken')->find(1);
    if(empty($ticket)){
        if ($info['expires_in'] < time()) {
            $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$info['appid'].'&secret='.$info['secret'];
            $tmp = CURLSend($url); //json格式
            $obj = json_decode($tmp);
            if($obj->access_token !=null){
                $data = array('access_token' => $obj->access_token, 'expires_in' => (time() + $obj->expires_in));
                M('WxToken')->where('id=1')->save($data);
                return $obj->access_token;
            }else return 'error';
        } else return $info['access_token'];
    }else{
        if ($info['ticket_time'] < time()) {
            $token = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$info['appid'].'&secret='.$info['secret'];
            $token_tmp = CURLSend($token); //json格式
            $token_obj = json_decode($token_tmp);
            if($token_obj->access_token !=null){
                $ticket= "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$token_obj->access_token."&type=jsapi";
                $ticket_tmp = CURLSend($ticket); //json格式
                $ticket_obj = json_decode($ticket_tmp);
                if($ticket_obj->errmsg==='ok'){
                    $data = array(
                        'access_token' =>$token_obj->access_token, 
                        'expires_in' => (time() +$token_obj->expires_in),
                        'ticket' =>$ticket_obj->ticket,
                        'ticket_time' => (time()+$ticket_obj->expires_in)
                        );
                    M('WxToken')->where('id=1')->save($data);
                    return $ticket_obj->ticket;
                }else return 'error';
                
            }else return 'error';
        }else return $info['ticket'];
    }
}

你可能感兴趣的:(tp框架获取票据(基于‘’tp框架下获取AccessToken‘’))