FAQ WebService Elotech:
1- Para qual endereço eu tenho que encaminhar minhas requisições?
Todas as requisições do nosso webservice são encaminhadas para o mesmo endereço (terminado em nfseService) e a partir da principal tag que estiver no corpo da requisição o nosso sistema entende qual a operação desejada.
As operações disponíveis são:
- CancelarNfseEnvio
- ConsultarNfseFaixaEnvio
- ConsultarNfseServicoPrestadoEnvio
- ConsultarNfseServicoTomadoEnvio
- ConsultarLoteRpsEnvio
- EnviarLoteRpsEnvio
- EnviarLoteRpsSincronoEnvio
- SubstituirNfseEnvio
2- O que é o WSDL?
O WSDL (Web Services Description Language) funciona como um contrato entre quem está enviando o XML de requisição e quem está recebendo. Ou seja, o WSDL é um guia de como o XML deve ser montado antes de enviar ser enviada a requisição. É no WSDL que é possível verificar o tamanho máximo dos campos, tags obrigatórias e até mesmo a ordem da montagem das tags.
3- O que é o XSD?
O XSD também define as regras de validação do XML, mas diferente do WSDL ele só define as validações das tags como tamanho, tipo e obrigatoriedade. Já o WSDL define algumas coisas a mais como as operações SOAP que serão disponibilizadas.
4- Qual a diferença do padrão de assinatura escolhido pela Elotech para as outras?
A Elotech optou por um padrão internacional de assinatura digital chamado OASIS. A principal diferença do OASIS para o padrão utilizado por outras empresas é que no OASIS o que é assinado é a requisição SOAP e não apenas uma tag do XML como nos demais. É possível perceber isso olhando no WSDL que não define nenhuma tag de assinatura (Signature) ou equivalente e isso ocorre pois no SOAP a assinatura é feita dentro do Header da requisição.
5- É possível testar o envio de requisições utilizando softwares como o SoapUI?
Sim, é possível, porém como o padrão de assinatura é um pouco diferente do usual então é necessário fazer algumas configurações diferentes para funcionar. Nós recomendamos o SITS para testar pois ele já implementa toda a dificuldade da assinatura e faz o envio, deixando para a pessoa que está testando apenas a responsabilidade de entender as tags principais.
Segue um link com um tutorial para configurar a assinatura no SoapUI: https://www.soapui.org/soapui-projects/ws-security.html
Segue o link para download do SITS atualizado: https://atendimento.elotech.com.br/hc/pt-br/articles/360041566854-Sistema-de-Integra%C3%A7%C3%A3o-e-Transmiss%C3%A3o-SITS-vers%C3%A3o-2-03
Integração
Para fazer integração entre dois sistemas diferentes existem duas soluções que são mais utilizadas hoje em dia: as requisições SOAP e as requisições REST. Qual a diferença das duas?
A requisição REST é mais simples de implementar mas é chamada de "contractless", que significa sem contrato, ou seja, não existe uma definição do tipo do objeto que o endpoint espera. Nesse tipo de requisição, o cliente (nesse caso vamos pensar como cliente o sistema de terceiro que quer fazer integração com o nosso sistema) envia um objeto qualquer, geralmente em formato JSON, e esse objeto só é validado quando bate no nosso sistema. Vantagens: é mais fácil a implementação; Desvantagens: é mais suscetível a erros por não validar o objeto antes;
A implementação que temos no nosso webservice de notas é a SOAP que, ao contrário da anterior, exige um "contrato" entre as partes pra definir o que pode ou não ser enviado pra um determinado endpoint. Esse contrato é o WSDL (web service description language). Então, basicamente o WSDL é o que define o que pode e o que não pode ser enviado pro nosso endpoint e também COMO isso deve ser enviado. É nele que ficam definidas todas as operações que são aceitas (enviarloterps, cancelarnfse, etc) e também como o XML tem que chegar no nosso serviço ou então esse XML já é recusado antes mesmo de começar a ser validado pelo nosso sistema.
O XSD é um arquivo que define as validações que serão feitas nas tags do XML, é ele que define quais tags existem e quais os tipos de dado que vão na tag (texto, numérico, tamanho máximo, se é obrigatório ou não, etc). Então na prática a gente acaba fazendo duas validações, primeiro o XML montado pelo integrador tem que ser valido se confrontado com o XSD que foi definido naquela propriedade xmlns que a gente tem que por no começo do XML. Mas o XML ser válido de acordo só com o XSD não garante que ele foi montado do jeito que o endpoint espera, então ele passa pela validação do contrato que é o WSDL.
Então para resumir, como que um integrador deveria montar o XML dele: primeiro ele monta a partir do WSDL, ali ele já vai ter uma noção do que pode ou não ter no XML, a ordem das tags e quais as operações. Depois disso ele usa o XSD pra ver o que vai dentro das tags, se é numérico, se é texto, quantos caracteres e etc.