✏️ 正在编辑: Inss.php
路径:
/srv/systems_dir/yuppiecred/library/Core/Banco/Service/Autocontratacao/Inss.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Core_Banco_Service_Autocontratacao_Inss { private $_dados; private $_clienteId; private $_pararConsulta = false; private $_api; private $_countRequest = 1; private $_notifica = true; private $_origemConsulta = null; public const PRODUTOS_FACTA = ['FGTS', 'INSS', 'APOSENTADO', 'PENSIONISTA', 'LOAS_BPC', 'AUXILIO BRASIL', 'CARTAO BENEFICIO'], PRODUTOS_BANRISUL = ['SIAPE', 'INSS', 'APOSENTADO', 'PENSIONISTA', 'LOAS_BPC'], PRODUTOS_PAN = ['FGTS', 'SIAPE', 'INSS', 'APOSENTADO', 'PENSIONISTA', 'LOAS BPC', 'AUXILIO BRASIL', 'CARTAO BENEFICIO', 'GOV BA'], PRODUTOS_BANCO_MASTER = ['FGTS', 'CREDCESTA', 'INSS'], PRODUTOS_DAYCOVAL = ['SIAPE', 'INSS', 'APOSENTADO', 'PENSIONISTA', 'LOAS_BPC', 'REFINANCIAMENTO'], PRODUTOS_C6BANK = ['FGTS', 'INSS']; public function getPararConsulta() { return $this->_pararConsulta; } public function getNotifica() { return $this->_notifica; } public function getApi() { return $this->_api; } public function getOrigemConsulta() { return $this->_origemConsulta; } public function setOrigemConsulta($origemConsulta) { $this->_origemConsulta = $origemConsulta; } public static function getBancoFromClass($banco) { $banco = ucwords(strtolower($banco)); $bancos = [ 'Pan' => 'Core_Banco_Service_Pan', 'Facta' => 'Core_Banco_Service_Facta_Digitacao', 'Banrisul' => 'Core_Banco_Service_Banrisul_Api', 'Banco Master' => 'Core_Banco_Service_Master_Api', 'Daycoval' => 'Core_Banco_Service_Daycoval_Api', 'C6 Bank' => 'Core_Banco_Service_C6_Api', ]; return $bancos[$banco] ? new $bancos[$banco](): null; } public static function getBancosHabilitados($produto) { $produto = $produto == 'auxilio' ? 'AUXILIO BRASIL' : str_replace('_', ' ', strtoupper($produto)); $bancos = []; $bancosCadastrados = Model_UsuariosApi::getArrayApisAutoContratacao(); if (in_array($produto, self::PRODUTOS_PAN) && !empty(service('config')->get()->bancos->pan->apikey) && !empty($bancosCadastrados['PAN']['usuario'])) { if (self::checkHabilitado('PAN')) { array_push($bancos, [ 'metodo' => '_consultarPan', 'banco' => 'PAN' ]); } } if (in_array(strtoupper($produto), self::PRODUTOS_FACTA) && !empty(service('config')->get()->bancos->facta->api) && !empty($bancosCadastrados['FACTA']['login_certificado'])) { if (self::checkHabilitado('Facta')) { array_push($bancos, [ 'metodo' => '_consultarFacta', 'banco' => 'Facta' ]); } } if (in_array($produto, self::PRODUTOS_BANRISUL) && !empty(service('config')->get()->bancos->banrisul->api) && !empty($bancosCadastrados['BANRISUL']['cpf_agente'])) { if (self::checkHabilitado('Banrisul')) { array_push($bancos, [ 'metodo' => '_consultarBanrisul', 'banco' => 'Banrisul' ]); } } if (in_array($produto, self::PRODUTOS_BANCO_MASTER) && !empty(service('config')->get()->bancos->banco_master->api) && !empty($bancosCadastrados['BANCO MASTER']['canal_venda'])) { if (self::checkHabilitado('Banco Master')) { array_push($bancos, [ 'metodo' => '_consultarMaster', 'banco' => 'Banco Master' ]); } } if (in_array($produto, self::PRODUTOS_DAYCOVAL) && !empty(service('config')->get()->bancos->daycoval->api) && !empty($bancosCadastrados['DAYCOVAL']['usuario'])) { if (self::checkHabilitado('Daycoval')) { array_push($bancos, [ 'metodo' => '_consultarDaycoval', 'banco' => 'Daycoval' ]); } } if (in_array($produto, self::PRODUTOS_C6BANK) && !empty(service('config')->get()->bancos->c6bank->api) && !empty($bancosCadastrados['C6 BANK']['codigo_digitador'])) { if (self::checkHabilitado('C6 Bank')) { array_push($bancos, [ 'metodo' => '_consultarC6bank', 'banco' => 'C6 Bank' ]); } } if (empty($bancos)) { throw new Core_Exception("Desculpe! Esse sistema ainda não possui nenhuma configuração de banco habilitada.", 0); } return $bancos; } public static function checkHabilitado($banco) { $bancoId = Model_Banco::bancoPorNome($banco); $modelBanco = new Model_Banco(); $banco = $modelBanco->exibir($bancoId); if (empty($banco->exibir_autocontratacao)) { return false; } return true; } public function consultar($dados, $clienteId) { $consulta = $dados['consulta_banco']; $this->_dados = $dados; $this->_clienteId = $clienteId; if (!empty($consulta)) { $response = $this->$consulta(); } if (empty($response)) { $response = $this->_consultarBancos(); } if (empty($response)) { throw new Core_Exception("Nenhuma informação foi retornada.", 0); } unset($dados['consulta_banco']); if (!empty($response->error)) { throw new Core_Exception($response->message, $response->code); } return $response; } private function _consultarBancos() { $configCallcenter = service('config_callcenter')->get(); if (empty($this->_dados['simular_direto']) && !empty($configCallcenter->consulta_beneficio_autocontratacao) && $configCallcenter->consulta_beneficio_autocontratacao == 1) { $sistemaConsulta = $configCallcenter->consulta_beneficio; if (empty($sistemaConsulta)) { return $this->_dados; } $serviceClass = 'Core_Service_' . $sistemaConsulta; $consulta = new $serviceClass; try { $dadosHiscon = $consulta->getMaiorMargem($this->_dados['cpf']); } catch (Core_Exception $erro) { Yuppie_Log::write("Erro ao consultar Hiscon! " . $erro->getMessage(), $this); return $this->_dados; } $simulacoes = null; if (empty($dadosHiscon)) { return $this->_dados; } $this->_popularDados($dadosHiscon); } $bancosHabilitados = $this->getBancosHabilitados($this->_dados['tipo']); foreach ($bancosHabilitados as $banco) { $consulta = $banco['metodo']; $result = $this->$consulta(); if (empty($result->condicoes_credito)) { continue; } $bancoSimulado = str_replace(" ", "", $banco['banco']); $condicaoCredito = current($result->condicoes_credito); $simulacoes[$bancoSimulado] = [ 'valor_liberado' => $condicaoCredito->valor_liquido, 'prazo' => $condicaoCredito->prazo, 'valor_parcela' => $condicaoCredito->valor_parcela ]; } $this->_dados['simulacoes'] = $simulacoes; return $this->_dados; } private function _popularDados($dadosHiscon) { $callcenterBase = new Model_CallcenterBase(); $callcenterBase->addBeneficios($dadosHiscon, $this->_dados['cpf'], $this->_clienteId); $callcenterBase->adicionarEmprestimos($dadosHiscon, $this->_clienteId); $callcenterBase->adicionarEmprestimos($dadosHiscon, $this->_clienteId, "EMPRESTIMO OCULTO"); $callcenterBase->adicionarEmprestimos($dadosHiscon, $this->_clienteId, "RESERVA CARTAO"); $margem = $dadosHiscon['margem']; if (!empty($this->_dados['margem_complementar'])) { $perc = in_array($dadosHiscon['especie'], [87, 88]) ? 30 : 35; $margem = 97 * ($perc / 100); } $dataNascimento = Core_Util::convertDate($dadosHiscon['nascto'], 'auto', 'd/m/Y'); $this->_dados['data_nascimento'] = $dataNascimento; $this->_dados['rg'] = $dadosHiscon['rg']; $this->_dados['uf_emissao_documento'] = $dadosHiscon['uf']; $this->_dados['orgao_emissor'] = 'SSP'; $this->_dados['numero_beneficio'] = $dadosHiscon['beneficio']; $this->_dados['especie'] = $dadosHiscon['especie']; $this->_dados['possui_representante_legal'] = $dadosHiscon['rep_legal'] == 'SIM' ? 1 : 0; $this->_dados['renda_valor'] = number_format($dadosHiscon['mr'], 2, ',', '.'); $this->_dados['valor_solicitado'] = number_format($margem, 2, ',', '.'); $this->_dados['sexo'] = $dadosHiscon['sexo']; $this->_dados['nome_mae'] = $dadosHiscon['mae']; $this->_dados['cep'] = $dadosHiscon['cep']; $this->_dados['endereco'] = $dadosHiscon['logradouro']; $this->_dados['bairro'] = $dadosHiscon['bairro']; $this->_dados['cidade'] = $dadosHiscon['cidade']; $this->_dados['uf'] = $dadosHiscon['uf']; $this->_dados['numero'] = $dadosHiscon['numero']; } private function _consultarPan() { try { $service = self::getBancoFromClass("PAN"); $retorno = $service->consultaConsignado($this->_dados); $service->tratarMensagemErro($this->_clienteId, $retorno, 'INSS'); if (!empty(current(current($retorno)->condicoes_credito)) && current(current($retorno)->condicoes_credito)->sucesso == true) { current($retorno)->condicoes_credito = [current(current($retorno)->condicoes_credito)]; current(current($retorno)->condicoes_credito)->login_certificado = $service->getUsuario(); } $this->_api = $service; } catch (\Core_Exception $e) { $this->_pararConsulta = $service ? $service->getPararConsulta() : false; $this->_notifica = $service ? $service->getNotifica() : false; return (object)['error' => true, 'message' => $e->getMessage(), 'code' => $e->getCode()]; } catch (\Exception $e) { return (object)['error' => true, 'message' => "Um erro aconteceu durante a consulta no banco", 'code' => 0]; } return current($retorno); } private function _consultarFacta() { if (!in_array($this->_dados['codigo_orgao'], $this::PRODUTOS_FACTA)) { return; } try { $service = self::getBancoFromClass("Facta"); $retorno = $service->consultaConsignado($this->_dados); $service->tratarMensagemErro($this->_clienteId, $retorno); $this->_api = $service; } catch (\Core_Exception $e) { $this->_pararConsulta = $service ? $service->getPararConsulta() : false; $this->_notifica = $service ? $service->getNotifica() : false; return (object)['error' => true, 'message' => $e->getMessage(), 'code' => $e->getCode()]; } catch (\Exception $e) { return (object)['error' => true, 'message' => "Um erro aconteceu durante a consulta no banco", 'code' => 0]; } return $retorno; } private function _consultarBanrisul() { if (!in_array($this->_dados['codigo_orgao'], $this::PRODUTOS_BANRISUL)) { return; } try { $service = self::getBancoFromClass("Banrisul"); $retorno = $service->consultaConsignado($this->_dados); $service->tratarMensagemErro($this->_clienteId, $retorno, 'INSS'); } catch (\Core_Exception $e) { $this->_pararConsulta = $service ? $service->getPararConsulta() : false; $this->_notifica = $service ? $service->getNotifica() : false; return (object)['error' => true, 'message' => $e->getMessage(), 'code' => $e->getCode()]; } catch (\Exception $e) { return (object)['error' => true, 'message' => "Um erro aconteceu durante a consulta no banco", 'code' => 0]; } return $retorno; } private function _consultarMaster() { if (!in_array($this->_dados['codigo_orgao'], $this::PRODUTOS_BANCO_MASTER)) { return; } try { $service = self::getBancoFromClass("Banco Master"); $retorno = $service->consultaConsignado($this->_dados); $service->tratarMensagemErro($this->_clienteId, $retorno); $this->_api = $service; } catch (\Core_Exception $e) { $this->_pararConsulta = $service ? $service->getPararConsulta() : false; $this->_notifica = $service ? $service->getNotifica() : false; return (object)['error' => true, 'message' => $e->getMessage(), 'code' => $e->getCode()]; } catch (\Exception $e) { return (object)['error' => true, 'message' => "Um erro aconteceu durante a consulta no banco", 'code' => 0]; } return $retorno; } private function _consultarDaycoval() { if (!in_array($this->_dados['codigo_orgao'], $this::PRODUTOS_DAYCOVAL)) { return; } try { $service = self::getBancoFromClass("Daycoval"); $retorno = $service->consultaConsignado($this->_dados); $service->tratarMensagemErro($retorno); $this->_api = $service; } catch (\Core_Exception $e) { $this->_pararConsulta = $service ? $service->getPararConsulta() : false; $this->_notifica = false; return (object)['error' => true, 'message' => $e->getMessage(), 'code' => $e->getCode()]; } catch (\Exception $e) { Yuppie_Log::write($e->getMessage() . "\n" . $e->getTraceAsString(), $this); return (object)['error' => true, 'message' => "Um erro aconteceu durante a consulta no banco", 'code' => 0]; } return $retorno; } private function _consultarC6bank() { if (!in_array($this->_dados['codigo_orgao'], $this::PRODUTOS_C6BANK)) { return; } try { $service = self::getBancoFromClass("C6 Bank"); $retorno = $service->consultaConsignado($this->_dados); $service->tratarMensagemErro($this->_clienteId, $retorno); $this->_api = $service; } catch (\Core_Exception $e) { $this->_pararConsulta = $service ? $service->getPararConsulta() : false; $this->_notifica = false; return (object)['error' => true, 'message' => $e->getMessage(), 'code' => $e->getCode()]; } catch (\Exception $e) { Yuppie_Log::write($e->getMessage() . "\n" . $e->getTraceAsString(), $this); return (object)['error' => true, 'message' => "Um erro aconteceu durante a consulta no banco", 'code' => 0]; } return $retorno; } public function _erroMessageTreatment($mensagem) { $mensagemLimpa = String_Refatorar::removerAcentuacao($mensagem); $mensagemRetorno = ["code" => 0, "message" => "", "stop" => false]; switch ($mensagem) { case !empty(stristr($mensagemLimpa, "Servico de autenticacao nao esta comunicando.")): $mensagemRetorno = [ 'code' => 0, 'message' => 'Falha na autenticação Banrisul.' ]; $this->_notifica = false; break; case !empty(stristr($mensagemLimpa, "Conveniada invalida.")): $mensagemRetorno = [ 'code' => 0, 'message' => 'Erro de comunicação com o Banrisul.' ]; $this->_notifica = false; break; case !empty(stristr($mensagemLimpa, "Deve ser enviado valor operacao ou prestacao.")): $mensagemRetorno = [ 'code' => 0, 'message' => 'Valor da margem não informado.' ]; $this->_notifica = false; break; case !empty(stristr($mensagemLimpa, "verifique o plano informado")): $mensagemRetorno = [ 'code' => 0, 'message' => 'Tabela não identificada.' ]; $this->_notifica = false; break; case !empty(stristr($mensagemLimpa, "Modelo de entrada de dados invalido")): $mensagemRetorno = [ 'code' => 0, 'message' => 'Falha na inclusão da proposta no banco.' ]; $this->_notifica = false; break; default: $mensagemRetorno = [ 'code' => 0, 'message' => $mensagem ]; break; } $mensagemRetorno['message'] = $this->getOrigemConsulta() . ": " . $mensagemRetorno['message']; return $mensagemRetorno; } }
💾 保存文件
← 返回文件管理器