✏️ 正在编辑: ConsultaPlus.php
路径:
/srv/systems_dir/yuppiecred/library/Core/Service/ConsultaPlus.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Core_Service_ConsultaPlus extends Core_Service_ConsultaConsignado { private $_chave; private $_url = "http://ws.inss.contatoplus.com/api/cadastro/"; protected function getConfigData() { $options = array(); $config = new Zend_Config_Ini( CLIENT_PATH . '/configs/application.ini', APPLICATION_ENV); if($config->consultaplus){ if( is_object($config->consultaplus->key) && $config->consultaplus->key->count() > 1 ){ $keys = $config->consultaplus->key->toArray(); $options = array( 'key' => $keys[$this->_indiceKey] ); }else{ $options = $config->consultaplus->toArray(); } } else { $msgErro = 'ConsultaPlus não está configurado em seu sistema.'; throw new Core_Exception($msgErro); } return $options; } public function setOptions(array $options) { $this->_chave = $options['key']; return $this; } public function getConsignadoPorCpf($cpf) { if( !$cpf ) return; $this->setCpf($this->formatarCpf($cpf)); $url = $this->_url . $this->getCpf() . "?apiKey={$this->_chave}"; try{ $json = $this->getResponse($url, array()); }catch (Exception $e){ return; } if( empty($json) ){ throw new Core_Exception("Sem retorno do webservice!"); } if( is_string($json) ){ throw new Core_Exception("ConsultaPlus: " . $json); } return $this->extractBeneficios($json); } public function getResponse($url, $params) { $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => true, CURLOPT_URL => $url, CURLOPT_POSTFIELDS => $params, CURLOPT_POST => false, CURLOPT_ENCODING => "UTF-8" ) ); $json = json_decode(curl_exec($curl)); curl_close($curl); return $json; } protected function extractBeneficios($json) { $dados = array(); $ns = new Zend_Session_Namespace("consulta_inss"); if( !empty($ns->consulta_inss) ){ $ns->unsetAll(); } foreach( $json as $registro ){ $ns->consulta_inss[$registro->NB] = $registro; $dados[] = array( 'cpf' => current($registro->CPF), 'beneficio' => $registro->NB, 'nome' => $registro->NOME, 'data_nascimento' => $registro->DT_NASCIMENTO ?? null, 'especie' => $registro->ESP ?? null, 'dib' => null, 'cidade' => $registro->CIDADE ?? null, 'uf' => $registro->UF ?? null, ); } return $dados; } public function getConsignadoPorBeneficio($nb) { $url = "http://ws.inss.contatoplus.com/api/hiscre/{$nb}?apiKey={$this->_chave}"; try{ $json = $this->getResponse($url, array()); }catch(Exception $e){ return; } if( empty($json) ){ throw new Core_Exception("ConsultaPlus não retornou informações."); } if( is_string($json) ){ throw new Core_Exception("ConsultaPlus: " . $json); } $result = $this->extractDados($nb, $json); return $result; } protected function extractDados($nb, $json) { $dados = array( 'origem' => 'ConsultaPlus', 'orgao_consulta' => 'INSS', 'cpf' => $this->getCpf() ); $this->_inicializaDados($dados); $dados['beneficio'] = $nb; $ns = new Zend_Session_Namespace("consulta_inss"); if( empty($ns->consulta_inss) ){ $this->getConsignadoPorCpf($json->CPF); } if( !empty($ns->consulta_inss) ){ $informacoesBeneficio = (object) array_merge((array) $json, (array)$ns->consulta_inss[$json->NB]); } $dados['cpf'] = current($informacoesBeneficio->CPF); $dados['nome'] = $informacoesBeneficio->NOME; $dados['nascto'] = $informacoesBeneficio->DT_NASCIMENTO; $dados['banco_pagto'] = $informacoesBeneficio->HISCRE->BANCO_PAGTO; $dados['agencia_pagto'] = $informacoesBeneficio->HISCRE->COD_AGENCIA_PAGTO . " - " . $informacoesBeneficio->HISCRE->AGENCIA_PAGTO; $dados['conta_pagto'] = null; $dados['orgao_pagador'] = null; $dados['tipo_pagto'] = $informacoesBeneficio->HISCRE->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->CIDADE, 'uf' => $informacoesBeneficio->UF ); $dados['itens']['enderecos'] = array_values(array_filter($dados['itens']['enderecos'], function($value) { return array_filter($value); })); $dados['especie'] = $informacoesBeneficio->ESP; $dados['especie_descricao'] = $informacoesBeneficio->ESP_DESC; $dados['tipo'] = $informacoesBeneficio->ESP; $dados['dib'] = null; $dados['cessado'] = "NÃO"; $dados['obito'] = "NÃO"; $dados['rep_legal'] = 0; $dados['data_consulta'] = $informacoesBeneficio->DATA_INFORMACAO; $this->_getContratos($informacoesBeneficio, $dados); $this->_getMargem($informacoesBeneficio, $dados); $this->getDetalhamentoDataprev($json, $dados); // $this->_getTelefones($nb, $dados); return $dados; } protected function _getContratos($json, &$dados) { $consignacoes = !empty($json->RESUMO_FINANCEIRO->CONTRATOS) ? $json->RESUMO_FINANCEIRO->CONTRATOS : null; if(!empty($consignacoes)){ $totalConsignado = 0; $totalCartao = 0; foreach( $consignacoes as $registro ){ if( $registro->TIPO_EMP == 98 ){ $valorParcela = $registro->VALOR_PARCELA; $dtInicio = new Zend_Date($registro->DT_INI_DESCONTO); $dtFim = new Zend_Date($registro->DT_FIM_DESCONTO); $bancoId = $registro->ID_BANCO_EMP; $bancoNome = $registro->NOME_BANCO_EMP; $dados['itens']['emprestimos'][] = array( 'situacao' => null, 'tipo' => "EMPRESTIMO", 'banco' => $bancoId, 'nome_banco' => $bancoNome, 'contrato' => ltrim($registro->ID_CONTRATO_EMP, "0"), 'vlremprestimo' => $registro->VALOR_EMP, 'inicio_contrato' => $dtInicio->get('MM/yyyy'), 'fim_contrato' => $dtFim->get('MM/yyyy'), 'prazo' => $registro->QUANTIDADE_PARCELAS, 'qtypagas' => $registro->QUANTIDADE_PARCELAS_PAGAS, 'mes' => null, 'ano' => null, 'valor_parcela' => $valorParcela, 'quitacao' => $registro->VALOR_QUITACAO, 'tipo_emprestimo' => $registro->TIPO_EMP, 'dt_averbacao' => $registro->DT_INI_DESCONTO, ); $totalConsignado += $valorParcela; } if( $registro->TIPO_EMP == 76 ){ $valorReservado = $registro->VALOR_EMP; $dados['itens']['reserva_cartao'][] = array( 'situacao' => null, 'tipo' => 'RESERVA CARTAO', 'banco' => $bancoId, 'contrato' => $registro->ID_CONTRATO_EMP, 'nome_banco' => $bancoNome, 'limite_cartao' => 0.00, 'data_inclusao' => null, 'valor_reservado' => $valorReservado, ); $totalCartao += $valorReservado; } } $dados['total_consignado'] = $totalConsignado; $dados['total_cartao'] = $totalCartao; } } protected function _getMargem($json, &$dados) { if ($json->RESUMO_FINANCEIRO != null){ $dadosBeneficio = $json; $dados['situacao'] = !empty($dadosBeneficio->SITUACAO) ? $dadosBeneficio->SITUACAO : null; $dados['cessado'] = $dados['situacao'] == "SUSPENSO/CESSADO" ? "SIM" : "NÃO"; $dados['rep_legal'] = null; $dados['bloq_emp'] = null; $dados['base_calculo'] = $dadosBeneficio->VALOR_MR; $dados['margem'] = $dadosBeneficio->RESUMO_FINANCEIRO->MARGEM_DISPONIVEL_EMP; $dados['mr'] = $dadosBeneficio->VALOR_MR; $dados['especie'] = $dadosBeneficio->ESP; $dados['especie_descricao'] = $dadosBeneficio->ESP_DESC; $dados['perc_consig'] = 0; $dados['margem_cartao'] = $dadosBeneficio->RESUMO_FINANCEIRO->MARGEM_DISPONIVEL_RMC; $dados['perc_cartao'] = 0; $dados['parcela_suspensa'] = null; $dados['margem_cartao_rmc'] = null; $dados['complemento_acompanhamento'] = 0; $dados['descontos'] = 0; $dados['imposto_renda_retido'] = 0; $dados['contribuicao_contag'] = 0; } } public function getDetalhamentoDataprev($json, &$dados) { $dados['detalhamento'] = $json->HTML ?? null; } public function getSiape($matricula, $cpf) { $param = $matricula ? $matricula : $cpf; $this->_url = "http://ws.siape.contatoplus.com/api/cadastro/{$param}?apiKey={$this->_chave}"; try{ $json = $this->getResponse($this->_url, array()); }catch(Exception $e){ return; } if( empty($json) ){ throw new Core_Exception("ConsultaPlus não retornou informações."); } if( is_string($json) ){ throw new Core_Exception("ConsultaPlus: " . $json); } $result = $this->extractSiape($json); return $result; } protected function extractSiape($json) { $informacoes = $json[0]; $dados['beneficio'] = NULL; $dados['matricula'] = $informacoes->MATRICULA; $dados['tipo'] = $informacoes->MATRICULA; $dados['nome'] = $informacoes->NOME; $dados['cpf'] = $informacoes->CPF; $dados['nascto'] = $informacoes->DT_NASCIMENTO; $dados['itens']['enderecos'][] = array( 'logradouro' => $informacoes->ENDERECO, 'numero' => '', 'complemento' => '', 'bairro' => $informacoes->BAIRRO, 'cep' => $informacoes->CEP, 'cidade' => $informacoes->CIDADE, 'uf' => $informacoes->UF ); // $dados['itens']['telefones'][] = current($informacoes->TELEFONE); // $dados['emails'] = current($informacoes->EMAIL); // $dados['rg'] = current($informacoes->RG); $dados['orgao_pagador'] = $informacoes->COD_ORGAO; // $dados['mae'] = current($informacoes->NOME_MAE); // $dados['data_inicio_pensao'] = current($informacoes->DATA_INI_PENSAO); $dados['banco_pagto'] = $informacoes->COD_BANCO_PAGTO; $dados['agencia_pagto'] = $informacoes->COD_AGENCIA; $dados['conta_pagto'] = $informacoes->CONTA_CORRENTE; $resumoFinanceiro = $informacoes->RESUMO_FINANCEIRO; $dados['margem'] = $resumoFinanceiro->MARGEM_DISPONIVEL_EMP; $consignacoes = $resumoFinanceiro->CONTRATOS; $dados['itens']['emprestimos'] = array(); foreach ( $consignacoes as $registro ) { $dados['itens']['emprestimos'][] = array( 'banco' => $registro->ID_BANCO_EMP, 'nome_banco' => !empty($registro->NOME_BANCO_EMP) ? $registro->NOME_BANCO_EMP : null, 'tipo' => $registro->TIPO_EMP == 98 ? 'EMPRESTIMO' : 'RESERVA CARTAO', 'contrato' => $registro->ID_CONTRATO_EMP, 'fim_contrato' => !empty($registro->DT_FIM_DESCONTO) ? $registro->DT_FIM_DESCONTO : null, 'prazo' => 0, 'valor_parcela' => $registro->VALOR_PARCELA, 'quitacao' => !empty($registro->VALOR_QUITACAO) ? $registro->VALOR_QUITACAO : 0, 'vlremprestimo' => 0, 'mes' => null, 'ano' => null, 'qtypagas' => 0, 'valor_reservado' => 0, 'parcelas_restantes' => !empty($registro->QUANTIDADE_PARCELAS_REST) ? $registro->QUANTIDADE_PARCELAS_REST : null, ); } $dados['origem'] = 'ConsultaPlus'; $dados['orgao_consulta'] = 'SIAPE'; $dados['mr'] = $informacoes->VALOR_SALARIO; $dados['margem_cartao'] = $resumoFinanceiro->MARGEM_DISPONIVEL_RMC; $dados['margem_cartao_rmc'] = 0; $competencia = new Zend_Date($resumoFinanceiro->DT_COMPETENCIA); $dados['competencia'] = $competencia->get('MM/yyyy'); $dados['situacao'] = NULL; $dados['especie'] = NULL; $dados['tipo_pagto'] = NULL; $dados['margem_rmc'] = 0; $dados['obito'] = "NÃO"; $dados['rep_legal'] = 0; return $dados; } }
💾 保存文件
← 返回文件管理器