Ir para conteúdo
  • Cadastre-se

dev botao

NFe 4.0 Erro ao enviar evento


CalixtoJB
  • Este tópico foi criado há 2103 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Bom dia a todos,

Baixei todos os fontes hoje e estou validando o ACBrNFe_demo, estou tentando utilizar a opção Manif. Dest. - Conf. Operação em ambiente de produção e esta retornando:

Erro Interno: 0
Erro HTTP: 500

Analisei os fontes e verifiquei o seguinte:

O início do problema ocorre na procedure TDFeWebService.InicializarServico;

Ao entrar na procedure TNFeEnvEvento.DefinirURL o código define a versão do serviço através da linha:
  VerServ  := VersaoDFToDbl(FPConfiguracoesNFe.Geral.VersaoDF);  (No caso v400)

Após isso ao entrar na procedure TACBrDFe.LerServicoChaveDeParams há o seguinte código:


  LerServicoChaveDeParams( Sessao, NomeServico, VersaoAchada, URL );
  LerDeParams( FPIniParams.ReadString(Sessao, 'WSDL', ''), NomeServico, VersaoAchada, Servico );
  LerDeParams( FPIniParams.ReadString(Sessao, 'SoapAction', ''), NomeServico, VersaoAchada, SoapAction );


Ao entrar na primeira linha LerServicoChaveDeParams( Sessao, NomeServico, VersaoAchada, URL )  é feito uma tentativa para buscar a versão do evento no resource ACBrNFeServicos.res com a chave [NFe_AN_P], porém como ainda não existe a versão 4.00 em produção é retornado a primeira encontrada no caso RecepcaoEvento_1.00 = https://www.nfe.fazenda.gov.br/RecepcaoEvento/RecepcaoEvento.asmx.

As proximas duas linhas retornam o Servico e o SoapAction vazios.

Até aqui tudo certo.

Porém ao voltar na procedure TDFeWebService.InicializarServico o código entra na proxima procedure DefinirServicoEAction;

Nela esta o seguinte:

procedure TNFeEnvEvento.DefinirServicoEAction;
begin
  if (FPConfiguracoesNFe.Geral.VersaoDF >= ve400) then
  begin
    if EstaVazio(FPServico) then
      FPServico := GetUrlWsd + 'NFeRecepcaoEvento4';
    if EstaVazio(FPSoapAction) then
      FPSoapAction := FPServico + '/nfeRecepcaoEvento';
  end
  else
  begin
    FPServico := GetUrlWsd + 'RecepcaoEvento';
    FPSoapAction := FPServico;
  end;
end;

Ai está o problema, pois a URL é da versão 1.00 achada no arquivo .res e agora é feito uma checagem pela versão configurada, sendo assim ao enviar a requisição ocorre erro.

Um pouco a frente no código também ocorre o mesmo problema pois cai na procedure TNFeWebService.InicializarServico;

procedure TNFeWebService.InicializarServico;
begin
  { Sobrescrever apenas se necessário }
  inherited InicializarServico;

  FOldSSLType := FPDFeOwner.SSL.SSLType;
  FOldHeaderElement := FPHeaderElement;

  { Caso seja versão 4.0, deve certificar que está usando TLS1.2 }
  if FPConfiguracoesNFe.Geral.VersaoDF >= ve400 then
  begin
   // FPDFeOwner.SSL.SSLType := LT_TLSv1_2;   // Servidor da BAHIA não está funcionando com esta configuração
    FPHeaderElement := ''; //Versão 4.00 não tem o elemento <soap12:Header>
  end;

  TACBrNFe(FPDFeOwner).SetStatus(FPStatus);
end;


Só que eu não sei qual seria a melhor solução, talvez mudar a configuração FPConfiguracoesNFe.Geral.VersaoDF temporariamente? Mas acho que não seria o ideal. 

O que vocês acham? Talvez ajustando esses pontos já solucione vários tópicos que vi a respeito de erro 500.

Grato.

Link para o comentário
Compartilhar em outros sites

  • Moderadores
9 horas atrás, CalixtoJB disse:

Ao entrar na primeira linha LerServicoChaveDeParams( Sessao, NomeServico, VersaoAchada, URL )  é feito uma tentativa para buscar a versão do evento no resource ACBrNFeServicos.res com a chave [NFe_AN_P], porém como ainda não existe a versão 4.00 em produção é retornado a primeira encontrada no caso RecepcaoEvento_1.00 = https://www.nfe.fazenda.gov.br/RecepcaoEvento/RecepcaoEvento.asmx.

Ainda não existe uma URL de produção para recepção de evento específica para a versão 4.00 no ambiente nacional.

Não vai funcionar até que a URL esteja disponível.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

  • 5 meses depois ...

Bom dia, recentemente migramos para NFe 4.0 e tudo funcionou normalmente na emissão de NFe, e também na DistribuicaoDFe, porém quando vou enviar o evento de Confirmação é retornado Erro Interno: 0 Erro HTTP: 500 :(

Segue o log do meu Monitor:
 

16/05/2018 08:28:22 - NFe.EnviarEvento("[Evento] 
idLote=1214604
[Evento001]
chNFe=35180534274233016360550000007011431058465300
cOrgao=35
CNPJ=10945196000140
dhEvento=16/05/2018 08:28:22
tpEvento=210200
nSeqEvento=1
versaoEvento=4.00
descEvento=Confirmacao da Operacao ")
16/05/2018 08:28:22 - ERRO: 
Erro Interno: 0
Erro HTTP: 500

Pensei que seria os webservices, porém já conferi e aparentemente estão todos corretos. A parte que me intriga é funcionar com outros serviços, mas o da recepção de eventos não funcionar... 
segue anexado o meu arquivo ACBrNFeServicos.ini

Estou usando libWinCrypt, LT_TLSv1_2, cryWinCrypt, httpWinHttp e xsMsXml nas configuracoes SSL

ACBrNFeServicos.ini

Link para o comentário
Compartilhar em outros sites

  • Moderadores
7 minutos atrás, sossystem disse:

[Evento001] chNFe=35180534274233016360550000007011431058465300 cOrgao=35

Tente informar cOrgao = 91 para a manifestação.

Ao contrário dos outros eventos, a manifestação do destinatário é enviada ao ambiente nacional e não à SEFAZ do estado.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

Mesma coisa :(

Segue log

 

16/05/2018 08:56:48 - NFe.EnviarEvento("[Evento] 
idLote=1214604
[Evento001]
chNFe=35180534274233016360550000007011431058465300
cOrgao=91
CNPJ=10945196000140
dhEvento=16/05/2018 08:28:35
tpEvento=210200
nSeqEvento=1
versaoEvento=4.00
descEvento=Confirmacao da Operacao ")
16/05/2018 08:56:49 - ERRO: 
Erro Interno: 0
Erro HTTP: 500

 

Por ser em ambiente diferente é possivel que esteja recusando entao por algum motivo especifico dos webservices AN?
Tipo cadeia de certificado, sei la? Mas não estou usando CAPICOM entao nunca instalei cadeias de certificado, meu certificado é A1

Editado por sossystem
Link para o comentário
Compartilhar em outros sites

8 horas atrás, sossystem disse:

Testei com a OpenSSL e o monitor simplesmente nao dá resposta alguma (exclui o arquivo ENTNFE.txt e nao cria nenhum SAINFE.txt) e no log a mesma coisa :(

Nunca vi isso... Alguem ja viu?

abri um tópico aqui no fórum e resolvi meu problema la. da uma olhada e ve te ajuda em alguma coisa pro meu caso que muito parecido com o seu resolveu

  • Obrigado 1

 

 

Link para o comentário
Compartilhar em outros sites

Acho que descobri.
Antigamente o Monitor respondia o arquivo SAINFE com o mesmo sufixo que ENTNFE. Exemplo:
Arquivo ENTNFE001.txt gerava o SAINFE001.txt

Mas agora ele está respondendo apenas SAINFE.txt, mesmo quando lê um ENTNFE002.txt por exemplo

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...
  • Este tópico foi criado há 2103 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...