Skip to content

Integração do programa da RPsystem com webservice da prefeitura de Atibaia para emissão e cancelamento de Nota Fiscal de Serviço eletrônica

Notifications You must be signed in to change notification settings

rks-0110/Integracao-webservice-Atibaia

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 

Repository files navigation

Integração Emissão de NFSe Atibaia | JK

English | Português-BR


Sumário


Objetivos

  • Enviar arquivo .xml para emissão de Nota Fiscal de Serviço Eletrônica (NFSe);
  • Receber .xml de retorno e código de verificação da nota;
  • Enviar .xml para cancelamento da NFSe

Voltar ao topo


Recursos

  • A linguagem utilizada foi Java, para integração mais fácil com o sistema da empresa. (NetBeans IDE 16).
  • Para efeito de testes de requisição foi usilizado também o PostMan.
  • O WebService utilizado é próprio da prefeitura http://ws.prefeituradeatibaia.com.br/WSNfses/nfseresources/ws/v2/emissao.
  • O WebService utilizado é próprio da prefeitura http://ws.prefeituradeatibaia.com.br/WSNfses/nfseresources/ws/v2/cancela.

Voltar ao topo


Prefeitura

A prefeitura disponibiliza algums manuais e tutoriais para a implementação com o WebService.

Links úteis

Voltar ao topo


WebService

Aparentemente não é muito estável, podem ocorrer quedas ou passar por manutenções que podem durar bastante tempo.
Como observado no dia 14/03/2023 onde com um teste às 08:22 houve um retorno positivo, porém ao longo do dia passou a retornar somente o seguinte erro:

Exception in thread "main" java.io.IOException: Server returned HTTP response code: 500 for URL: http://ws.prefeituradeatibaia.com.br/WSNfses/nfseresources/ws/v2/emissao/simula

Funções / Endpoints

  • indica que pode ser acessado pelo browser
  • indica que NÃO pode ser acessado pelo browser

Serviços que não requerem autorização

Serviços que requerem autorização

Voltar ao topo


Código

Enviar NFSe

Método "salvaXml"

Variáveis

filePath = caminho onde será salvo o retorno do XML

Contexto

Recebe como parâmetro o conteúdo do xml response, cria novo arquivo .txt especificado em filePath, o conteúdo é escrito no arquivo, há duas situações de 'System.out.println' que retornam se foi ou não possível salvar o arquivo.

Método "main"

Variáveis

conteudoRetorno = String responsável por passar o conteúdo do xml para que seja salvo pelo método salvaXml.

xmlFilePath = camilnho do xml de envio ("J:\RP-GRF\NFSE-Jk\ESTAB-101\RETORNO\RETORNO.txt").

xmlBody = esta variável irá armazenar o conteúdo do xml passado non parâmetro anterior.

url = armazena o valor da url que será usada para fazer uma requisição no webservice.

status = armazena o http status de uma requisição (200 == ok | outros == falha ou erro).

Contexto

Inicia tentando conexão com a url, especifica o método 'POST', passa as autorizações (inscrição municipal e token de acesso), especifica o tipo do conteúdo 'application/xml'.
Lê o retorno e o transfere para xmlBody, recebe o http status e o armazena em status, então o conteudo do xmlBody é passado como 'String' para conteudoRetorno. Por fim retorna o status com 'System.out.println' e então chama o método salvaXml.

Cancelar NFSe

Método "salvaXml"

Variáveis

filePath = caminho onde será salvo o retorno do XML

Contexto

Recebe como parâmetro o conteúdo do xml response, cria novo arquivo .txt especificado em filePath, o conteúdo é escrito no arquivo, há duas situações de 'System.out.println' que retornam se foi ou não possível salvar o arquivo.

Método "main"

Variáveis

conteudoRetorno = String responsável por passar o conteúdo do xml para que seja salvo pelo método salvaXml.

xmlFilePath = camilnho do xml de envio ("J:\RP-GRF\NFSE-Jk\ESTAB-101\RETORNO\RETORNO.txt").

xmlBody = esta variável irá armazenar o conteúdo do xml passado non parâmetro anterior.

url = armazena o valor da url que será usada para fazer uma requisição no webservice.

status = armazena o http status de uma requisição (200 == ok | outros == falha ou erro).

Contexto

Inicia tentando conexão com a url, especifica o método 'POST', passa as autorizações (inscrição municipal e token de acesso), especifica o tipo do conteúdo 'application/xml'.
Lê o retorno e o transfere para xmlBody, recebe o http status e o armazena em status, então o conteudo do xmlBody é passado como 'String' para conteudoRetorno. Por fim retorna o status com 'System.out.println' e então chama o método salvaXml.

Obs

O projeto visa tratar um xml por vez, ou seja não armazena xmls de NFSes anteriores, o mesmo vale para os xmls de retorno, que são sempre substituídos para salvar espaço de armazenamento.

Voltar ao topo


Caminhos

  • xml de envio: J:\RP-GRF\NFSE-JK\ESTAB-101\XML
  • xml de retorno: J:\RP-GRF\NFSE-JK\ESTAB-101\RETORNO

Atualizações

Anterior

Seguindo o material disponível no site da prefeitura e dentro do sistema, inicialmente foram feitos testes de requisição no Postman, em seguida tentou-se explorar a possibilidade de se fazer a integração com Python.

07/03/2023

Iniciou-se o desenvolvimento do projeto em java devido a maior facilidade que seria implementar com o sistema.
Utilizando NetBeans IDE.
Em testes subsequentes foi comum enfrentar alguns erros recorrentes.

10/03/2023

Projeto de envio de NFSe funcionando.

13/03/2023

Problemas ao tentar implementar o cancelamento de NFSe.

14/03/2023

Projeto separado em duas aplicações java diferentes Enviar e Cancelar.
Após 08:22 (último teste bem sucedido) o webservice ficou em provavel manutenção pelo resto do dia.

15/03/2023

Retorno do suporte do provedor informando que uma correção havia sido efetuada.
Projeto foi concluído, compilação bem sucedida e teste com conexão remota no cliente também com resultados positivos.

Voltar ao topo

About

Integração do programa da RPsystem com webservice da prefeitura de Atibaia para emissão e cancelamento de Nota Fiscal de Serviço eletrônica

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published