Ir para conteúdo
  • Cadastre-se

dev botao

ACBrNFSeX - erro "Lote não assinado" no provedor BHISS (POA/RS)


Ver Solução Respondido por Italo Giurizzato Junior,
  • Este tópico foi criado há 389 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Prezados, bom dia.

 

Ao tentar emitir NFSe em Porto Alegre/RS, usando o ACBrNFSeX com CAPICOM + MSXML, o webservice nos retorna o erro abaixo:

Código: E175
Descrição: Lote sem assinatura.

Como diz a mensagem, o problema está na assinatura do lote de RPS, que já contém um RPS assinado. O método TDFeSSLXmlSignMsXmlCapicom.Assinar() detecta que o XML já está assinado (por causa do RPS) e não assina o lote.

 

Corrigi esse problema, na unit ACBrDFeXsMsXmlCapicom.pas em anexo. Agora o método Assinar() busca pelo <Signature> no XML, com base no elemento pai da assinatura. E se não encontra, cria o template e recarrega o XML.

Testei com o provedor BHISS, e também com o SisPMJP, apesar do SisPMJP não assinar seu XML.

Poderiam validar a alteração e incorporar no trunk, por favor?

ACBrDFeXsMsXmlCapicom.pas

logoDW.png.043cb4b50e3275dc9614c728eb3fa617.png

Guilherme Costa

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde,

Porque você esta usando o Capicom?

Nós recomendamos que seja usado o WinCrypt ou OpenSSL.

  • Curtir 2
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Oi @Italo Giurizzato Junior, obrigado por responder rapidamente.

Usamos OpenSSL+LIBXML2 na maioria dos clientes, quando podemos carregar o arquivo do certificado digital.

Essa combinação de CAPICOM+MSXML é usada em alguns clientes que ainda tem certificado digital em dongle USB ou smartcard, e precisa instalá-lo na certstore do Windows, para ser obtido pelo número de série.

logoDW.png.043cb4b50e3275dc9614c728eb3fa617.png

Guilherme Costa

 

Link para o comentário
Compartilhar em outros sites

  • Consultores
  • Solution

Guilherme,

Para quem usa certificado A3 no formato cartão ou token, configure: WinCrypt + LibXml2.

  • Curtir 2
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Italo, após configurar WinCrypt + LibXml2, e configurar o certificado digital pelo seu número de série, quando chamo o método ACBrNFSeX.Emitir(), ele dispara duas Exception seguidas com a mensagem "CryptExportKey - len", e em seguida dispara o erro abaixo.

Quote

Erro na NFSe:

Código: X999
Descrição: Erro de Conexão: Erro Interno: 12175
Erro HTTP: 0
URL: https://nfse-hom.procempa.com.br/bhiss-ws/nfse
Erro: 12175 - Um ou mais erros foram encontrados no certificado Secure Sockets Layer (SSL) enviado pelo servidor
Falha ao Receber Resposta. Erro: 12175 - Um ou mais erros foram encontrados no certificado Secure Sockets Layer (SSL) enviado pelo servidor

Com CAPICOM não temos esse erro, somente o problema de assinar XML que já contenha um campo <Signature> interno. Já corrigimos esse problema no arquivo anexado.

Poderiam reconsiderar nossa proposta de alteração?

logoDW.png.043cb4b50e3275dc9614c728eb3fa617.png

Guilherme Costa

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Obrigado pela ajuda Juliomar! As DLL libeay32.dll e ssleay32.dll está na versão 1.0.2.21.

Configurei as libs de acordo com as configurações padrão do ACBrNFSeX_Exemplo, quando se altera a SSLLib para libWinCrypt:

ACBrNfseX1.Configuracoes.Geral.SSLLib := libWinCrypt;
ACBrNfseX1.Configuracoes.Geral.SSLCryptLib := cryWinCrypt;
ACBrNfseX1.Configuracoes.Geral.SSLHttpLib := httpWinHttp;
ACBrNfseX1.Configuracoes.Geral.SSLXmlSignLib := xsLibXml2;

Nenhum desses usa os *OpenSSL. Mesmo assim a versão do OpenSSL interfere?

logoDW.png.043cb4b50e3275dc9614c728eb3fa617.png

Guilherme Costa

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Pesquisei aqui no forum pelos erros que relatei neste tópico, relacionados ao uso da WinCrypt.

Encontrei um tópico recente onde o Italo passa algumas orientações de configuração:

 

Testei seguindo as orientações do Italo, e funcionou! 😃

Resumindo:

O erro "CryptExportKey - len" ocorre quando o certificado digital é instalado/importado no Windows, sem marcar o checkbox de "Marcar essa chave como exportável".

O erro "12175 - Um ou mais erros foram encontrados no certificado Secure Sockets Layer (SSL) enviado pelo servidor" foi resolvido configurando:

ACBrNfseX1.Configuracoes.WebServices.SSLType := LT_all;

Abandonaremos a CAPICOM e seguiremos com a WinCrypt + LibXml2.

Obrigado a todos pela ajuda!

logoDW.png.043cb4b50e3275dc9614c728eb3fa617.png

Guilherme Costa

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 389 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.