✏️ 正在编辑: Zug.php
路径:
/srv/systems_dir/yuppiecred/library/Core/Service/Zug.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Core_Service_Zug extends Core_Service_ConsultaConsignado { private $_url = "https://api.consignadorapido.com/api/"; private $_username; private $_password; private $_token; protected function newToken() { $endPoint = 'auth'; $json = $this->getResponse($endPoint, [ 'username' => $this->_username, 'password' => $this->_password, ]); if (empty($json->token)) { throw new Core_Exception("ConsignadoRapido: Token não gerado."); } $this->_token = $json->token; } protected function getConfigData() { $config = new Zend_Config_Ini(CLIENT_PATH . '/configs/application.ini', APPLICATION_ENV); if (empty($config->zug->username) || empty($config->zug->password)) { $msgErro = 'ConsignadoRapido não está configurado em seu sistema.'; throw new Core_Exception($msgErro); } return $config->zug->toArray(); } public function setOptions(array $options) { $this->_username = $options['username']; $this->_password = $options['password']; if ($options['host']) { $this->_url = $options['host']; } return $this; } public function getConsignadoPorCpf($cpf) { $this->newToken(); if (empty($cpf)) { throw new Core_Exception("CPF não identificado!"); } $this->setCpf(String_Refatorar::formatarCpf($cpf)); try { $endPoint = "cpf?cpf={$this->getCpf()}"; $json = $this->getResponse($endPoint, [], [ "Token: {$this->_token}" ]); } catch (Exception $e){ return; } if (empty($json)) { throw new Core_Exception("ConsignadoRapido não retornou benefícios para este cpf."); } return $this->extractBeneficios($json); } public function getResponse($endPoint, $fields = [], $header = []) { $curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_URL => $this->_url . $endPoint, CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode($fields), CURLOPT_ENCODING => "UTF-8", CURLOPT_CONNECTTIMEOUT => 0, CURLOPT_TIMEOUT => 30, CURLOPT_HTTPHEADER => $header, ] ); // Yuppie_Log::write("Consulta ConsignadoRapido para => " . print_r($this->_url . $endPoint, true), $this); $response = curl_exec($curl); $json = json_decode($response); $info = curl_getinfo($curl); curl_close($curl); // Yuppie_Log::write("Result getResponse ConsignadoRapido => " . print_r($response, true), $this); if (empty($json)) { throw new Core_Exception("ConsignadoRapido não retornou informações para o benefício."); } if ($info['http_code'] != 200 && !empty($json->msg) ){ throw new Core_Exception("ConsignadoRapido: " . $json->msg); } return $json; } protected function extractBeneficios($json) { $dados = []; $ns = new Zend_Session_Namespace("consulta_inss"); if (!empty($ns->consulta_inss)) { $ns->unsetAll(); } $beneficios = $json->req; foreach ($beneficios as $registro) { $ns->consulta_inss[$registro->beneficio] = $registro; try { $dtNasc = new Zend_Date($registro->DataNascimento); } catch (Exception $e) { $dtNasc = null; } $dados[] = [ 'cpf' => $this->getCpf(), 'beneficio' => $registro->beneficio, 'mr' => $registro->VlrBeneficio, 'nome' => $registro->Nome, 'data_nascimento' => $dtNasc ? $dtNasc->get('dd/MM/yyyy') : null, 'especie' => $registro->especie, 'dib' => null, 'cidade' => null, 'uf' => null, 'telefone' => $registro->Telefone, 'cpf_representante_legal' => $registro->CpfRepresentanteLegal, 'nome_representante_legal' => $registro->NomeRepresentanteLegal ]; } return $dados; } public function getConsignadoPorBeneficio($nb) { $this->newToken(); $endPoint = "offline?nb={$nb}"; $json = $this->getResponse($endPoint, [], [ "Token: {$this->_token}" ]); return $this->extractDados($nb, $json); } protected function extractDados($nb, $json) { $dados = [ 'origem' => 'ConsignadoRapido', 'orgao_consulta' => 'INSS', 'cpf' => $this->getCpf() ?: String_Refatorar::formatarCpf($json->cpf) ]; try { $dtDib = new Zend_Date($json->dib); $dtNasc = new Zend_Date($json->dataNascimento); } catch (\Throwable $th) { $dtDib = null; $dtNasc = null; } try { $dtDdb = new Zend_Date($json->ddb); } catch (\Throwable $th) { $dtDdb = null; } $this->_inicializaDados($dados); $dados['beneficio'] = $nb; $dados['nome'] = $json->nome; $dados['rg'] = $json->Rg; $dados['ddb'] = $dtDdb ? $dtDdb->get('dd/MM/yyyy') : ""; $dados['mr'] = $json->valorBeneficio; $dados['nascto'] = $dtNasc ? $dtNasc->get('dd/MM/yyyy') : ""; $dados['nit'] = $json->nit; $dados['banco_pagto'] = $json->dadosBancarios->banco->codigo; $dados['agencia_pagto'] = ltrim($json->dadosBancarios->agencia->codigo, '0'); $dados['conta_pagto'] = ltrim($json->dadosBancarios->meioPagamento->numero, '0'); $dados['orgao_pagador'] = $json->dadosBancarios->agencia->orgaoPagador; $dados['tipo_pagto'] = $json->dadosBancarios->meioPagamento->tipo; $dados['itens']['enderecos'][] = [ 'logradouro' => $json->enderecoPessoal->endereco, 'numero' => '', 'complemento' => '', 'bairro' => $json->enderecoPessoal->bairro, 'cep' => $json->enderecoPessoal->cep, 'cidade' => $json->enderecoPessoal->cidade, 'uf' => $json->enderecoPessoal->uf ]; $dados['itens']['enderecos'] = array_values(array_filter($dados['itens']['enderecos'], function($value) { return array_filter($value); })); $dados['especie'] = $json->especie->codigo; $dados['especie_descricao'] = $json->especie->descricao; $dados['tipo'] = ''; $dados['dib'] = $dtDib ? $dtDib->get('dd/MM/yyyy') : ""; $dados['cessado'] = $json->situacaoBeneficio == 'ATIVO' ? "NÃO" : "SIM"; $dados['obito'] = "NÃO"; $dados['rep_legal'] = $json->possuiRepresentanteLegalProcurador ? "SIM" : "NÃO"; $dados['rep_legal_cpf'] = $json->CpfRepresentanteLegal ?: ""; $dados['rep_legal_nome'] = $json->NomeRepresentanteLegal ?: ""; $dados['data_consulta'] = $json->resultInfo->timestamp; $dados['nome_responsavel'] = ''; $dados['cpf_responsavel'] = ''; $this->_getContratos($dados, $json); $this->_getTelefones($dados, $json); return $dados; } protected function _getContratos(&$dados, $json) { $consignacoes = $json->contratosEmprestimo ?? []; $consignacoesCartao = $json->contratosCartao ?? []; $consignacoesRcc = $json->contratosRcc ?? []; if(!empty($consignacoes) || !empty($consignacoesCartao) || !empty($consignacoesRcc)){ $totalConsignado = 0; $totalCartao = 0; $totalRcc = 0; foreach ( $consignacoes as $registro ) { $bancoId = $registro->banco->codigo; $bancoNome = Model_DbTable_BancoFebraban::getByCodigo($bancoId); if (in_array($registro->tipoEmprestimo->codigo, [98, 75])) { $valorParcela = $registro->valorParcela; $dtInicio = new Zend_Date($registro->dataInicioContrato, 'yyyy-MM'); $dtFinal = new Zend_Date($registro->competenciaFimDesconto, 'yyyy-MM'); $dtAverbacao = new Zend_Date($registro->dataInclusao, 'yyyy-MM'); $dados['itens']['emprestimos'][] = array( 'situacao' => $registro->situacao, 'tipo' => "EMPRESTIMO", 'banco' => $bancoId, 'nome_banco' => $bancoNome, 'contrato' => ltrim($registro->contrato, "0"), 'vlremprestimo' => $registro->valorEmprestado, 'inicio_contrato' => $dtInicio->get('MM/yyyy'), 'fim_contrato' => $dtFinal->get('MM/yyyy'), 'prazo' => $registro->quantidadeParcelas, 'qtypagas' => $registro->quantidadeParcelas - $registro->quantidadeParcelasEmAberto, 'mes' => null, 'ano' => null, 'valor_parcela' => $valorParcela, 'quitacao' => $registro->saldoQuitacao, 'tipo_emprestimo' => $registro->tipoEmprestimo->codigo, 'dt_averbacao' => $dtAverbacao->get('MM/yyyy'), 'taxa' => $registro->TaxaCalculada ?: $this->calcularTaxaJuros($registro->valorEmprestado, $valorParcela, $registro->quantidadeParcelas), ); $totalConsignado += $valorParcela; } } foreach ( $consignacoesCartao as $registro ) { $bancoId = $registro->banco->codigo; $bancoNome = Model_DbTable_BancoFebraban::getByCodigo($bancoId); if ($registro->tipoEmprestimo->codigo == 76) { $valorReservado = $registro->valorReservado; $dtInclusao = ''; if (!empty($registro->dataInclusao)) { $dtInclusao = (new Zend_Date($registro->dataInclusao))->get('dd/MM/yyyy'); } $dados['itens']['reserva_cartao'][] = [ 'situacao' => $registro->situacao, 'tipo' => 'RESERVA CARTAO', 'banco' => $bancoId, 'contrato' => $registro->contrato, 'nome_banco' => $bancoNome, 'limite_cartao' => !empty($registro->limiteCartao) ? $registro->limiteCartao : 0.00, 'data_inclusao' => $dtInclusao, 'valor_reservado' => $valorReservado, ]; $totalCartao += $valorReservado; } } foreach ( $consignacoesRcc as $registro ) { $bancoId = $registro->banco->codigo; $bancoNome = Model_DbTable_BancoFebraban::getByCodigo($bancoId); if ($registro->tipoEmprestimo->codigo == 44) { $valorReservadoRcc = $registro->valorReservado; $dtInclusao = ''; if (!empty($registro->dataInclusao)) { $dtInclusao = (new Zend_Date($registro->dataInclusao))->get('dd/MM/yyyy'); } $dados['itens']['reserva_cartao'][] = [ 'situacao' => $registro->situacao, 'tipo' => 'RESERVA CARTAO', 'banco' => $bancoId, 'contrato' => $registro->contrato, 'nome_banco' => $bancoNome, 'limite_cartao' => !empty($registro->limiteCartao) ? $registro->limiteCartao : 0.00, 'data_inclusao' => $dtInclusao, 'valor_reservado' => $valorReservadoRcc, ]; $totalRcc += $valorReservadoRcc; } } $dados['total_consignado'] = $totalConsignado; $dados['total_cartao'] = $totalCartao; $dados['total_rcc'] = $totalRcc; } $this->_getMargem($dados, $json); } protected function _getMargem(&$dados, $json) { $margem = $json->margem; $dados['bloq_emp'] = !empty($json->bloqueioEmprestismo) ? "SIM" : "NÃO"; $dados['base_calculo'] = $margem->baseCalculoMargemConsignavel; $dados['margem'] = $margem->margemDisponivelEmprestimo; $dados['mr'] = $json->valorBeneficio; $dados['perc_consig'] = $margem->percentualMargemTotalEmprestimo; $dados['margem_cartao'] = $margem->margemDisponivelCartao; $dados['perc_cartao'] = $margem->percentualMargemTotalCartao; $dados['parcela_suspensa'] = null; $dados['margem_cartao_rmc'] = 0; $dados['complemento_acompanhamento'] = 0; $dados['descontos'] = 0; $dados['imposto_renda_retido'] = 0; $dados['contribuicao_contag'] = 0; $dados['margem_rcc'] = $margem->margemDisponivelRcc; } protected function _getTelefones(&$dados, $json) { $dados['mae'] = $json->nomeMae; $dados['sexo'] = $json->sexo == 'FEMININO' ? "F" : "M"; if (empty($dados['data_nasc'])) { $dados['nascto'] = (new Zend_Date($json->dataNascimento))->get('dd/MM/yyyy'); } if( isset($json->enderecoPessoal) ){ $endereco = $json->enderecoPessoal; $dados['itens']['enderecos'][] = [ 'logradouro' => $endereco->endereco, 'numero' => null, 'complemento' => null, 'bairro' => $endereco->bairro, 'cep' => $endereco->cep, 'cidade' => $endereco->cidade, 'uf' => $endereco->uf ]; } $ns = new Zend_Session_Namespace('consulta_inss'); if (!empty($ns->consulta_inss[$json->beneficio])) { $dados['itens']['telefones'][] = $ns->consulta_inss[$json->beneficio]->Telefone; } } }
💾 保存文件
← 返回文件管理器