Esse projeto foi desenvolvido em Laravel na versão 5.7 abrangendo os seguintes modulos de NF-e: Emissão, consulta, cancelamento, devolução e validação de certificado. Também incorpora um modulo para consulta de CEP, ambos utilizando a REST API disponibilizado WebManiaBR .
Está sendo utilizado o banco de dados sqlite para armazenar os dados de NF-e emitida pelo sistema web, menos os dados de resposta da API, como chave e xml devido a restrição de acesso a REST API.
Os metodos da NF-e estão inseridas no controlador NfeController, nele está toda a lógica de comunicação com a REST API NF-e utilizando a biblioteca Guzzle. Também existe o controlador CepController responsavel pela comunicação com a REST API CEP.
As validações dos dados informados no formulário estão sendo tratados em uma classe request, localizado no diretório app/Http/Requests.
As mensagens de erros não estão sendo traduzidas permanecendo assim as respostas padrões do laravel. O campo CPF e CEP são validados utilizando a biblioteca LaravelLegends/pt-br-validator.
Nesse projeto existem 2 grupos de rotas definidas, que são
/nfee
/cep.
Grupo de rotas NF-e
- / - Redireciona para pagina index.
- /emitir_nfe – Redireciona para o formulário de emissão.
- /salvar_nfe – Redireciona para o controlador NfeController função salvar.
- /consulta – Redireciona para o formulário de consulta
- /consultar_nfe – Redireciona para o controlador NfeController função consultar_nfe
- /cancelamento_nfe - Redireciona para o formulário de cancelamento
- /cancelar_nfe - Redireciona para o controlador NfeController função cancelar_nfe
- /devolver_nfe - Redireciona para o formulário de devolução
- /devolucao_nfe - Redireciona para o controlador NfeController função devolucao_nfe
- /validacao_cert - Redireciona para o formulário de validação de certificado
- /validar_cert - Redireciona para o controlador NfeController função validar_cert
- /status_sefaz - Redireciona para o controlador NfeController função status_sefaz
Grupo de rotas CEP
- / – Redireciona para o formulário de consulta CEP.
- /consultar_cep – Redireciona para o controlador CepController função consultar_cep
Para execução do sistema é necessário ter instalado
- Composer.
- Contratação de um plano de NF-e.
- Para consulta de CEP é necessario apenas cadastrar um e-mail no site da WebmaniaBR para receber as chaves de acesso gratuitamente, para mais informações acessar a documentação.
Para comunicação com a API é preciso adicionar as chaves de acesso no cabeçalho das requisições, e para isso elas devem ser inseridas no construtor de cada controlador.
Exemplo construtor controlador NF-e:
public function __construct(){
/** URL Base */
$this->url = "https://webmaniabr.com/api/1/nfe/";
/** Header */
$this->client = new Client(['headers' =>
[
'Content-type' => 'application/json',
'X-Consumer-Key' => 'SEU_CONSUMER_KEY',
'X-Consumer-Secret' => 'SEU_CONSUMER_SECRET',
'X-Access-Token' => 'SEU_ACCESS_TOKEN',
'X-Access-Token-Secret' => 'SEU_ACCESS_TOKEN_SECRET'
]
]);
}
Exemplo construtor controlador CEP:
public function __construct(){
/** URL Base */
$this->url = "https://webmaniabr.com/api/1/cep/";
/** Credenciais de acesso */
$this->app_key = "sua_app_key";
$this->app_secret = "sua_secret_key";
/** Header */
$this->client = new Client(['headers' =>
[
'Content-type' => 'application/json'
]
]);
}
Inicialmente é necessário atualizar e instalar as dependências do framework, e para isso acontecer deve ser executado um comando no terminal. Navegue até a pasta do projeto utilizando um terminal e execute o seguinte comando:
composer update
Com o framework atualizado pode dar início a migração das tabelas para o banco de dados, e para isso é necessário executar:
php artisan migrate
Com isso, todas as tabelas já estão criadas no banco, sendo necessário agora apenas preencher algumas tabelas que servem para armazenar dados que são utilizados para preencher campos do formulário de emissão, como por exemplo a tabela Operação, onde está armazenado as opções 0 – Entrada 1 – Saída.
Para preencher essas tabelas executar o seguinte comando:
php artisan db:seed
Após os passos anteriores o projeto já está pronto para ser iniciado, e para isso falta apenas iniciar o servidor web do próprio laravel:
php artisan serve
Com isso será informado um link de acesso ao sistema, por padrão esse link disponibilizado é localhost:8000.
E dessa forma já se tem acesso ao sistema web podendo assim realizar os devidos testes.