✏️ 正在编辑: AnaliseInfo.php
路径:
/srv/systems_dir/yuppiecred-lidernegocios/library/Core/Service/AnaliseInfo.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Core_Service_AnaliseInfo extends Core_Service_ConsultaConsignado { private $_usuario = null; private $_url = "http://api.analise.info/"; private $_indiceKey = 0; //usado para multiplos usuários function __construct(array $options = null) { if( !$this->_verificaPermissoes() ){ $msgErro = 'Você não possui créditos para realizar consultas.'; throw new Core_Exception($msgErro); } if( !$options ){ $options = $this->getConfigData(); } $this->setOptions($options); } protected function getConfigData() { $options = array(); $config = new Zend_Config_Ini( CLIENT_PATH . '/configs/application.ini', APPLICATION_ENV); if($config->analiseinfo){ if( is_object($config->analiseinfo->key) && $config->analiseinfo->key->count() > 1 ){ $keys = $config->analiseinfo->key->toArray(); $options = array( 'key' => $keys[$this->_indiceKey] ); }else{ $options = $config->analiseinfo->toArray(); } } else { $msgErro = 'AnaliseInfo não está configurado em seu sistema.'; throw new Core_Exception($msgErro); } return $options; } public function setOptions(array $options) { $this->_usuario = $options['key']; return $this; } protected function getUrl() { return $this->_url; } protected function extractDados($nb, $json) { $dados = array( 'origem' => 'Analise.info', 'orgao_consulta' => 'INSS', 'cpf' => $this->getCpf() ); $this->_inicializaDados($dados); $dados['beneficio'] = $nb; if( !empty($json->mensagem) && is_object($json->mensagem) ){ $informacoesBeneficio = $json->mensagem; if(!empty($informacoesBeneficio->dib)) { $dib = new Zend_Date($informacoesBeneficio->dib, "yyyy-MM-dd"); } $dados['cpf'] = $informacoesBeneficio->cpf; $dados['nome'] = $informacoesBeneficio->nome; $dados['nascto'] = $informacoesBeneficio->data_nasc; $dados['banco_pagto'] = $informacoesBeneficio->dados_bancarios->id_banco; $dados['agencia_pagto'] = $informacoesBeneficio->dados_bancarios->id_agencia_banco; $dados['conta_pagto'] = $informacoesBeneficio->cc; $dados['orgao_pagador'] = $informacoesBeneficio->dados_bancarios->id_orgao_pagador; $dados['tipo_pagto'] = $informacoesBeneficio->meio_pagto == "CONTA CORRENTE" ? "Conta Corrente" : "Cartão Magnético"; $dados['itens']['enderecos'][] = array( 'logradouro' => $informacoesBeneficio->endereco, 'numero' => '', 'complemento' => '', 'bairro' => $informacoesBeneficio->bairro, 'cep' => $informacoesBeneficio->cep, 'cidade' => $informacoesBeneficio->munic, 'uf' => $informacoesBeneficio->uf ); $dados['especie'] = substr($informacoesBeneficio->especie, 0, 2); $dados['especie_descricao'] = substr($informacoesBeneficio->especie, 2, strlen($informacoesBeneficio->especie)); $dados['tipo'] = $dados['especie']; $dados['dib'] = !empty($informacoesBeneficio->dib) ? $dib->get('dd/MM/yyyy') : null; $dados['cessado'] = Zend_Date::isDate($informacoesBeneficio->dcb, "dd/MM/yyyy") ? "SIM" : "NÃO"; $dados['obito'] = Zend_Date::isDate($informacoesBeneficio->dobito, "dd/MM/yyyy") ? "SIM" : "NÃO"; $dados['rep_legal'] = !empty($informacoesBeneficio->rep_legal) ? $informacoesBeneficio->rep_legal : 0; $dados['data_consulta'] = $informacoesBeneficio->data_consulta; $dt = new Zend_Date($informacoesBeneficio->data_consulta); $dados['competencia'] = $dt->get('MM/yyyy'); } $this->_getContratos($nb, $dados); $this->_getMargem($nb, $dados); $this->_getTelefones($nb, $dados); $this->getDetalhamentoDataprev($nb, $dados); return $dados; } protected function _getMargem($nb, &$dados) { $url = $this->_url."Api_contratos"; $params = http_build_query(array('nb' => $nb, 'chave' => $this->_usuario)); try{ $json = $this->getResponse($url, $params); }catch(Exception $e){ return; } if($json->status == 0){ throw new Core_Exception("Analise.info: " . $json->mensagem); } elseif ($json->mensagem->dados_beneficio != null){ $dadosBeneficio = $json->mensagem->dados_beneficio; $dados['situacao'] = !empty($dadosBeneficio->situacao) ? $dadosBeneficio->situacao : null; $dados['cessado'] = $dados['situacao'] == "SUSPENSO/CESSADO" ? "SIM" : "NÃO"; $dados['rep_legal'] = $dadosBeneficio->possuirepresentantelegal == "SIM" ? "SIM" : "NÃO"; $dados['bloq_emp'] = !empty($dadosBeneficio->bloqemp) ? $dadosBeneficio->bloqemp : null; $dados['base_calculo'] = str_replace(array( '.', ',' ), array( '', '.' ), !empty($dadosBeneficio->vlbasecalc) ? $dadosBeneficio->vlbasecalc : 0); $dados['margem'] = !empty($dadosBeneficio->margemdispemp) ? $this->setFloat($dadosBeneficio->margemdispemp) : 0; $dados['mr'] = $this->setFloat($dadosBeneficio->valormr); $dados['perc_consig'] = !empty($dadosBeneficio->percmargemconsig) ? $this->setFloat($dadosBeneficio->percmargemconsig) : 0; $dados['margem_cartao'] = !empty($dadosBeneficio->margemdispcartao) ? $this->setFloat($dadosBeneficio->margemdispcartao) : 0; $dados['perc_cartao'] = !empty($dadosBeneficio->percmargemcartao) ? $this->setFloat($dadosBeneficio->percmargemcartao) : 0; $dados['parcela_suspensa'] = !empty($dadosBeneficio->possui_contratos_suspensos) && !$dadosBeneficio->possui_contratos_suspensos == "SIM" ? "SIM" : "NÃO"; $dados['margem_cartao_rmc'] = null; $dados['complemento_acompanhamento'] = 0; $dados['descontos'] = 0; $dados['imposto_renda_retido'] = 0; $dados['contribuicao_contag'] = 0; if( empty($dados['nome']) ){ $dados['nome'] = $dadosBeneficio->nome; } if( empty($dados['especie']) ){ $especie = explode("-", $dadosBeneficio->especie); $dados['especie'] = $especie[0]; $dados['especie_descricao'] = $especie[1]; } } } protected function _getContratos($nb, &$dados) { $url = $this->_url. "Api_contratos"; $params = http_build_query(array('nb' => $nb, 'chave' => $this->_usuario)); try{ $json = $this->getResponse($url, $params); }catch(Exception $e){ return; } $consignacoes = !empty($json->mensagem->contratos) ? $json->mensagem->contratos : null; if(!empty($json)){ if($json->status == 0){ throw new Core_Exception("Analise.info: " . $json->mensagem); } elseif( $consignacoes ){ $totalConsignado = 0; $totalCartao = 0; foreach( $consignacoes as $registro ){ if( $registro->tipo_emprestimo == 98 ){ $valorParcela = $registro->vl_parcela; $dtInicio = new Zend_Date($registro->ini_desconto, 'yyyy-MM'); $banco = explode(" - ", $registro->banco); $bancoId = $banco[0]; $bancoNome = $banco[1]; $parcela = explode("/", $registro->parcela_total); $parcPaga = $parcela[0]; $prazo = $parcela[1]; $contrato = explode(" ", $registro->contrato); $dados['itens']['emprestimos'][] = array( 'situacao' => null, 'tipo' => "EMPRESTIMO", 'banco' => $bancoId, 'nome_banco' => $bancoNome, 'contrato' => $contrato[0], 'vlremprestimo' => $registro->vl_emprestado, 'inicio_contrato' => $dtInicio->get('MM/yyyy'), 'fim_contrato' => null, 'prazo' => $prazo, 'qtypagas' => $parcPaga, 'mes' => null, 'ano' => null, 'valor_parcela' => $valorParcela, 'quitacao' => $registro->quitacao, 'tipo_emprestimo' => $registro->tipo_emprestimo, 'dt_averbacao' => $registro->dt_inclusao, ); $totalConsignado += $valorParcela; } if( $registro->tipo_emprestimo == 76 ){ $valorReservado = $registro->vl_reservado; $dtAverbacao = new Zend_Date($registro->dt_inclusao); $dados['itens']['reserva_cartao'][] = array( 'situacao' => $registro->situacao, 'tipo' => 'RESERVA CARTAO', 'banco' => $bancoId, 'contrato' => $registro->contrato, 'nome_banco' => $bancoNome, 'limite_cartao' => $registro->limite_cartao, 'data_inclusao' => $dtAverbacao->get('dd/MM/yyyy'), 'valor_reservado' => $valorReservado, ); $totalCartao += $valorReservado; } } $dados['total_consignado'] = $totalConsignado; $dados['total_cartao'] = $totalCartao; } } } protected function _getTelefones($nb, &$dados) { $url = $this->_url. "Api_telefones"; $params = http_build_query(array('nb' => $nb, 'chave' => $this->_usuario)); try{ $response = $this->getResponse($url, $params); }catch(Exception $e){ return; } $json = $response->mensagem; if( $response->status == "0" ){ return; } if( $json ){ //código zero é encontrado $dados['mae'] = $json->pessoa->mae; $dados['sexo'] = $json->pessoa->sexo == 1 ? "M" : "F"; if( empty($dados['nascto']) ){ $dtNascimento = new Zend_Date($json->pessoa->dtnasc, "yyyyMMdd"); $dados['nascto'] = $dtNascimento->get('dd/MM/yyyy'); } if( isset($json->telefones) ){ $telefones = $json->telefones->telefone; if( count($telefones) > 1 ){ foreach( $telefones as $fone ){ $dados['itens']['telefones'][] = $fone->ddd . $fone->fone; } }else{ $dados['itens']['telefones'][] = $telefones->ddd . $telefones->fone; } } if( isset($json->enderecos) ){ $enderecos = $json->enderecos->endereco; if( count($enderecos) > 1 ){ foreach( $enderecos as $endereco ){ $dados['itens']['enderecos'][] = array( 'logradouro' => $endereco->logradouro, 'numero' => $endereco->numero, 'complemento' => $endereco->complemento, 'bairro' => $endereco->bairro, 'cep' => $endereco->cep, 'cidade' => $endereco->cidade, 'uf' => $endereco->uf ); } }else{ $dados['itens']['enderecos'][] = array( 'logradouro' => $enderecos->logradouro, 'numero' => $enderecos->numero, 'complemento' => $enderecos->complemento, 'bairro' => $enderecos->bairro, 'cep' => $enderecos->cep, 'cidade' => $enderecos->cidade, 'uf' => $enderecos->uf ); } } if( isset($json->emails) ){ $emails = $json->emails->emprego; if( count($emails) > 1 ){ foreach( $emails as $email ){ $dados['itens']['emails'][] = $email->empresa; } }else{ $dados['itens']['emails'][] = $emails->empresa; } } } } /** * Retorna um array com informações do cliente e do(s) empréstimo(s) * * @param string $cpf * @return array */ public function getConsignadoPorCpf($cpf) { if( !$cpf ) return; $this->setCpf($this->formatarCpf($cpf)); $url = $this->_url. "Api_pesqcpf"; $params = http_build_query(array('cpf' => $this->getCpf(), 'chave' => $this->_usuario)); try{ $json = $this->getResponse($url, $params); }catch (Exception $e){ return; } if( $json->status != 1 ){ throw new Core_Exception("Analise.info: " . $json->mensagem); } return $this->extractBeneficios($json->mensagem); } /** * @todo Ajustar para o layout do retorno do método ConsultaCpf do WS * @param string $xml * @return array */ protected function extractBeneficios($json) { $dados = array(); foreach( $json->contrato as $registro ){ $dtDib = null; if( Zend_Date::isDate($registro->dib, 'dd/MM/yyyy') ){ $dt = new Zend_Date($registro->dib, 'dd/MM/yyyy'); $dtDib = $dt->get('yyyy-MM-dd'); } $dados[] = array( 'cpf' => $this->getCpf(), 'beneficio' => $registro->nb, 'nome' => null, 'data_nascimento' => null, 'especie' => $registro->esp, 'dib' => $dtDib, //data de início do benefício dd/MM/yyyy 'cidade' => null, 'uf' => null, ); } return $dados; } /** * Retorna um array com informações do cliente e do(s) empréstimo(s) * * @param int $nBeneficio * @return array */ public function getConsignadoPorBeneficio($nb, $recursion = false) { $url = $this->_url."Api_cadastro"; $params = http_build_query(array('nb' => $nb, 'chave' => $this->_usuario)); try{ $json = $this->getResponse($url, $params); }catch(Exception $e){ return; } if( isset($json->mensagem)){ //status = 5, msg = Sem retorno das informações on-line. if($json->mensagem == 'Sem retorno das informações on-line.' && $recursion == false){ return $this->getConsignadoPorBeneficio($nb, true); }elseif($json->status == "0" && $json->mensagem == "Limite de consultas diarias atingida"){ //limite de consultas diárias atingido $this->_indiceKey++; $options = $this->getConfigData(); $this->setOptions($options); $this->getConsignadoPorBeneficio($nb, $recursion); } } $result = $this->extractDados($nb, $json); return $result; } public function getDetalhamentoDataprev($nb, &$dados) { $url = $this->_url."Api_detalhamento"; $params = http_build_query(array('nb' => $nb, 'chave' => $this->_usuario)); try{ $json = $this->getResponse($url, $params); }catch(Exception $e){ return; } $dados['detalhamento'] = $json->mensagem; } public function getSiape($cpf) { throw new Core_Exception("Funcionalidade ainda não disponível para este serviço."); $this->_url = "http://api.analise.info/Siape2?"; $params= array( "cpf={$cpf}", "type=json", "key={$this->_usuario}" ); $url = $this->_url; $url .= implode("&", $params); $xml = file_get_contents($url); pr($xml, 1); } public function getResponse($url, $params) { $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => true, CURLOPT_URL => $url, CURLOPT_POSTFIELDS => $params, CURLOPT_POST => true, CURLOPT_ENCODING => "UTF-8" ) ); $json = json_decode(curl_exec($curl)); curl_close($curl); return $json; } }
💾 保存文件
← 返回文件管理器