jul
31
2014

Gerar um XML de Envio passo-a-passo – Antigo

31 de julho de 2014

Índice

-

Última atualização em: 01 de agosto, 2014

 

Segurança dos Web Services

O InvoiCy NFS-e trabalha com um sistema de segurança em cada web service, trata-se de uma chave de segurança de 128 bits.

Cada nova empresa cadastrada no sistema recebe uma chave de acesso que, no momento de envio de algum XML será concatenada com o conteúdo do XML e criptografada em MD5, gerando a CK (chave de comunicação) que será enviada dentro da tag “<EmpCK>”. Para mais informações sobre a chave de acesso consulte o artigo Verificando a chave de acesso da empresa.

Cada cliente do InvoiCy NFS-e recebe uma PK (chave de parceiro) que deve ser enviada em todos os XML dentro da tag “<EmpPK>” , essa chave é a mesma usada para solicitar licenças e fará parte do processo de segurança do InvoiCy NFS-e.
A chave de parceiro é gerada por nosso Sistema de Gestão no momento que a sua empresa é cadastrada como nosso parceiro. A mesma será enviada por e-mail e utilizada para controlar as empresas de clientes finais que utilizarão licenças adquiridas pela sua empresa.

Exemplo do cabeçalho de um XML contendo a chave de comunicação e a chave de parceiro.

cabecalho_xmlCabeçalho com CK e PK

Para gerar a CK concatena-se a chave de acesso com o XML linearizado (remover quebras de linhas e espaços entre as tags). Nesse processo o cabeçalho do XML não é usado, apenas o conteúdo após a tag “</Cabecalho>”. Segue o exemplo para cada web service:

  • Recepção RPS é chave de acesso + <Lista>… </Lista> (sempre com todo o conteúdo da tag)
  • Consulta, Cancelamento e Download Espelho RPS é chave de acesso + <ListaRPS>…</ListaRPS>
  • Download XML é chave de acesso + <FaixaConsulta>… </FaixaConsulta>
  • Cadastro do prestador não utiliza a CK.

Após calcular o hash MD5 dessa string e o resultado será a CK. No caso de dúvidas ver o artigo Como gerar o código Hash MD5.

Gerar um XML passo-a-passo

De uma forma simplificada, a empresa precisa seguir os passos abaixo para criar um XML válido:

1. Gerar o XML a ser comunicado (sem o cabeçalho);

2. Linearizar o XML (remover quebras de linhas e espaços entre as tags);

3. Gerar a CK;

4. Montar o cabeçalho e inserir após o mesmo o XML gerado nos passos 1 e 2.

5. Todo esse XML deve ser convertido para texto, substituindo os caracteres “<”, “>” e “ “ ” (aspas) por “&lt;”, “&gt;” e “&quot;” respectivamente, de acordo com a tabela da W3C: http://www.w3schools.com/html/html_entities.asp. Nos casos em que for usada uma ferramenta RAD para consumo do Web Service através de componente nativo, por exemplo Visual Studio utilizando Web Reference, a conversão do XML para texto irá ocorrer de forma automática.

6. Substituir os caracteres especiais/símbolos pela Entity number correspondente, por exemplo: “ç = ç”, “Ç = Ç”. Para mais informações consultar o artigo Entity number.

7. Incluir esse XML dentro da tag “EntradaXML” do SOAP.
Exemplo prático

Para facilitar o entendimento, segue um exemplo prático da criação de um XML:

1. Chave de acesso: JnL6wcTDt+hT42gROCYho6F4VTMCx0

2. XML de Recepção linearizado:

3. Chave de acesso e XML concatenado para geração da CK:

4. CK (Hash MD5) gerado sobre a string concatenada no passo 3: dd247a15c1e4fb3241f7e6f9de9cc38a

5. Cabeçalho gerado e concatenado com o XML:

Observe que a CK gerada foi incluída na tag <EmpCK>.

6. XML convertido para texto:

7. XML com os caracteres especiais/símbolos substituídos pela Entity number:

Observe a substituição destacada em vermelho na imagem e abaixo:
exemplo

 

8. XML inserido no pacote SOAP e pronto para envio ao InvoiCy NFS-e:

https://mostbetsitez.com, https://mostbetaz2.com, https://1xbet-az24.com, https://vulkanvegas-bonus.com, https://mostbetcasinoz.com, https://mostbet-azerbaycanda.com, https://mostbet-az24.com, https://vulkan-vegas-spielen.com, https://1winaz888.com, https://vulkan-vegas-24.com, https://1xbetaz3.com, https://1xbet-azerbaycanda.com, https://1xbetsitez.com, https://mostbet-royxatga-olish24.com, https://mostbet-azerbaycan-24.com, https://mostbet-uzbekistons.com, https://mostbet-azer.xyz, https://pinup-bet-aze.com, https://1xbet-azerbaycanda24.com, https://1xbet-az-casino2.com, https://1xbetaz777.com, https://mostbet-qeydiyyat24.com, https://mostbetuztop.com, https://1win-az-777.com, https://pinup-azerbaycanda24.com, https://1xbet-az-casino.com, https://mostbet-az.xyz, https://vulkanvegaskasino.com, https://mostbet-azerbaycanda24.com, https://pinup-qeydiyyat24.com, https://1win-qeydiyyat24.com, https://vulkan-vegas-888.com, https://mostbetuzbekiston.com, https://1xbetkz2.com, https://mostbet-ozbekistonda.com, https://mostbet-kirish777.com, https://mostbetsportuz.com, https://mostbettopz.com, https://vulkan-vegas-erfahrung.com, https://1xbetaz888.com, https://mostbet-oynash24.com, https://mostbetaz777.com, https://kingdom-con.com, https://1win-azerbaycanda24.com, https://mostbet-uz-24.com, https://vulkan-vegas-kasino.com, https://1x-bet-top.com, https://most-bet-top.com, https://mostbet-azerbaijan2.com, https://1winaz777.com, https://1xbetaz2.com, https://vulkan-vegas-casino2.com, https://vulkanvegasde2.com, https://vulkan-vegas-bonus.com, https://1xbetcasinoz.com, https://pinup-azerbaijan2.com, https://mostbetuzonline.com, https://1win-azerbaijan2.com, https://pinup-az24.com, https://1win-az24.com, https://1xbet-azerbaijan2.com, https://pinup-bet-aze1.com, https://1win-azerbaijan24.com, https://mostbet-az-24.com, https://mostbet-azerbaijan.xyz