Login Registre-se
Esocial - Ocorrência 142 - Assinatura do evento inválida.  XML
Índice dos Fóruns » SPED / PAF-ECF / ESOCIAL / EFD_REINF
Autor Mensagem
ewertom_moraes

JavaC Membro

Membro desde: 19/07/2018 09:54:51
Mensagens: 1
Offline


Olá, pessoal. Sei que muitos já trouxeram este probema aqui pelo forum. Mas só decidi postar porque quem relatou este problema aqui, as soluções eu já verifiquei e estão ok, porém o erro continua.
Antes de mais nada, vou esclarecer alguns pontos da minha situação:

- Até o momento estou transmitindo para a a produção restrita.
- Estou transmitindo com sucesso o lote de eventos, com retorno 201.
- Estou utilizando a lib Java_Certificado do Samuel(moderador daqui do forum) para ler o certificado A3 e inicializar socket dinâmico.
- Peguei o método de assinatura mesclando soluções que encontrei por aqui e outros lugares na web(em anexo).
- Estou validando os Eventos individualmente com seus XSDs correspondentes.
- O cnpj do transmissor é de 14 digitos e igual ao do certificado.
- O cnpj nas tags ideEmpregador tanto do lote quanto dos eventos é o mesmo, com os 8 primeiros dígitos.
- O cnpj contido no atributo Id das tags 'evento' e de cada evento (evtXXXXX) está com os 8 primeiros digitos + 000000.
- as tags <evento> só ficam com um atributo "xmlns" no formato que todos conhecem.
- O método de assinatura recebe uma String "<eSocial>...</eSocial>".. ou seja todo o xml completo de cada evento. A tag signature é colocada no local correto pelo método, como tag filha de <eSocial> e irmã da tag <evtXXX>.
- O fluxo de montagem, meu é:
1 - Gero os eventos, um a um, com os valores da base de dados. Salvo eles em String;
2 - Assino Evento por evento. (Uma vez assinado, a aplicação garante que o String do evento não pode mais ser modificado);
3 - Adiciono os eventos (Lista de Strings) dentro do lote;
4 - Envelopo o Lote (soap);
5 - Converto o Lote (String) para OMElement.
6 - Transmito.

- Mais importante: já me certifiquei que o evento NÃO é modificado entre o momento após ser assinado até o momento final da transmissão. Para isso eu salvo em uma lista separada os eventos logo após serem assinados. Depois, na hora de transmitir, com o lote já em formato OMElement, eu comparo os conteúdos das tags evento. Não há alteração alguma(nem em case sensitive, espaços, tabulações, nada...).
Tudo é igual, exceto algumas tags dentro da assinatura. Isso porque a minha rotina que assina os eventos gera tags sem conteúdo , sem fechamento (exemplo: <nomeTag attr=".." />. Enquanto que o objeto OMElement faz o parseamento destas tags criando o fechamento delas.
As tags as quais me refiro são:



Com a conversão para OMElement ficam assim:


Essas são as ÚNICAS modificações nas tags de evento após assinar! Esse é o grande problema. Como não há modificações, não consigo compreender e encontrar onde está o problema.

Vou colocar em anexo alguns fragmentos de código mais importantes.

Obrigado pela ajuda, desde já!!



 Nome do arquivo esocial_fragmento_ewertom.xml [Disk] Download
 Descrição fragmentos xml relevantes pro problema relatado
 Tamanho 2 Kbytes
 Baixado:  29 vez(es)

 Nome do arquivo esocial_fragmento_ewertom.java [Disk] Download
 Descrição fragmentos java relevantes pro problema relatado
 Tamanho 4 Kbytes
 Baixado:  29 vez(es)

 
Índice dos Fóruns » SPED / PAF-ECF / ESOCIAL / EFD_REINF
Ir para:   
Powered by JForum 2.1.9 © JForum Team