You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

6.8 KiB

Integração Simples IP

Este projeto foi desenvolvida afim de padronizar e melhorar a forma de integrar sistemas de provedores de internet com a central Simples IP.

💻 Requisitos

Para rodar os scripts é necessário uma versão em execução da central Simples IP.

Projeto

O desenvolvimento da aplicação seguiu alguns princípios de arquitetura estabelicidos pelos desenvolvedores.

Estrutura do projeto

O projeto foi estruturado em algumas pastas e cada uma contém sua responsabilidade específica.

Estrutura do projeto

CONFIG

Começando pela pasta config, ela irá conter arquivos de configurações geral do projeto como constantes de valores, caminhos de arquivos entre outros.

Também, é encontrado o arquivo de instanciação das classes de providers.

Pasta config

CORE

Na pasta core, é encontrado as partes principais para o funcionamento da aplicação.

Pasta core

Classe de integração com banco (IntegracaoDatabase.php)

A Classe IntegracaoDatabase é responsável por:

  • Comunicação com o banco de dados Postgresql.

Classe de integração (Integracao.php)

A Classe Integracao é responsável por:

  • Realizar chamadas a outras classes como o banco de dados, AGI (Asterisk Gateway Interface) e CURL.

  • Fornece uma interface padronizada para a chamadas das classes auxiliares.

  • Fornecer métodos e funcionalidades comuns que podem ser estendidos por outras classes.

Classe de Provedores (Provedores.php)

A classe de Provedores é um componente fundamental do projeto que atua como um intermediador entre os scripts e os providers da aplicação. Ela é uma subclasse da classe "Integração", herdando funcionalidades importantes para o processo de integração.

  • Coordenar a comunicação entre os scripts e os providers da aplicação.

  • Gerenciar a execução dos scripts e a integração com os diferentes providers.

  • Fornecer uma interface padronizada para os scripts se comunicarem com os providers.

  • Manipular e transformar os dados entre os scripts e os providers, se necessário.

HELPERS

Na pasta helpers, é encontrado os arquivos auxiliares genéricos que podem ser usados no projeto.

Pasta helpers

Classe Helper (Helpers.php)

A classe Helpers é responsável por armazenar métodos genéricos de formatação de data, validação de algum dado ou transformação de dados, que podem facilitar o desenvolvimento.

INTERFACES

Na pasta de Interfaces, é encontrado os arquivos que definem interfaces do sistema.

Pasta interfaces

Interfacede provedores (IProvedores.php)

A interface de provedores é responsável por definir de forma obrigatória o que todas as classes providers devem possuir.

PROVIDERS

Na pasta de providers, é encontrado os arquivos de implementação da lógica de cada provedor de internet, no qual cada um é representado por um arquivo.

Pasta providers

Implementação Específica

Cada provedor tem liberdade para implementar suas funcionalidades de forma independente. Eles podem ter diferenças na forma como se comunicam com a aplicação e como lidam com as solicitações de integração. No entanto, todos os provedores devem seguir a interface padrão estabelecida pela inteface IProvedor para garantir a integração correta com o restante do sistema.

Substituição Fácil

A estrutura modular da pasta "Provedores" permite que novos provedores sejam adicionados ou provedores existentes sejam substituídos facilmente. Ao seguir a interface padrão, os provedores podem ser trocados sem afetar o restante do código, proporcionando maior flexibilidade e extensibilidade à aplicação.

Interface com a Classe CASE

A Classe CASE é responsável por intermediar a chamada de scripts com o restante da aplicação. Assim, Cada provedor é chamado pela Classe CASE usando os métodos apropriados para executar suas funcionalidades específicas.

SCRIPTS

A pasta scripts contém os scripts procedurais genéricos que atuam como intermediários entre a aplicação e os provedores de internet. Esses scripts recebem ordens e tomam decisões com base nos valores recebidos, redirecionando o usuário para ações específicas.

Cada script representa uma ação que irá acontecer.

Pasta scripts

Descrição

  • Receber comandos ou ordens de outras partes do sistema.
  • Redirecionar o usuário para ações específicas com base nos valores retornados.
  • Fazer uso da Classe CASE para coordenar a comunicação com os provedores de internet.

Exemplo de funcionamento

Primeiramente todos os scripts devem contem em seu topo a chamada do arquivo de configuração, e também do arquivo CASE.

require_once __DIR__.'/../config/config.php';
require_once CONF_RAIZ_PROJETO . '/core/Provedores.php';

Logo depois, devemos instanciar o provedor Case e também armazenar qual provedor estamos utilizando na integração.

Todo o processo de verificação e validação de qual provedor deverá ser utilizado é totalmente dinâmico e acontece dentro do CASE.

$provedorCase = new ProvedorCase($uid);
$provedor = $provedorCase->getProvedor();

Com isso, coletamos algumas variáveis que iremos utilizar no script. Nesse caso, necessitamos saber quais foram os números que o usuário digitou e a quantidade de tentativas.

$documento = $provedorCase->agi()->get_variable('URA', true);
$reg_pass = $provedorCase->agi()->get_variable("REG_PASS", true);

Então, temos a chamada da função de consultar documento que recebe um array associativo de params, que nesse script foi o CPF e a quantidade de tentativas

$result = $provedor->consultarDocumento(["documento" => $documento, "reg_pass" => $reg_pass]);

Nessa parte, temos a coleta da versão da integração que está sendo utilizada.

$data_sistema = $provedorCase->data()->getData();
$versao_integracao = $data["int_versao"];

Por fim, temos o encerramento do script onde ele faz o direcionamento do usuário depedendo do valor que foi retornado.

 if($result && $result !== "reg_pass"){
    $redirecionamento_dados = $provedorCase->db()->redirectUraDestino("REDIR_CONSULTA_CLIENTE", "SUCESSO", $versao_integracao);
}else if($result == "reg_pass"){
    $redirecionamento_dados = $provedorCase->db()->redirectUraDestino("REDIR_CONSULTA_CLIENTE", "ALTERNATIVO", $versao_integracao);
} else{
    $redirecionamento_dados = $provedorCase->db()->redirectUraDestino("REDIR_CONSULTA_CLIENTE", "FALHA", $versao_integracao);
}

$provedorCase->executarFluxo($redirecionamento_dados["TIPO"], $redirecionamento_dados["NOME"]);

Tecnologias

  • PHP
  • AGI
  • PHP Mailer
  • Postgresql