Ir para conteúdo
  • Cadastre-se

dev botao

Problemas com uso do componente ACBrNFSeX fora de um ambiente de desenvolvimento


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

Recommended Posts

Postado

Boa tarde pessoal.

Estou utilizando o componente ACBrNFSeX para emitir notas fiscais de serviço na prefeitura de Uberlândia. Tive todo o processo de estudo do componente, através do exemplo de teste da acbr. Já consigo emitir nota (fazer o envio do lote de rps) e fazer as consultas.  Depois dessa etapa com o exemplo de teste, eu criei um protótipo (criei um projeto do zero) utilizando o componente ACBrNFSeX. Ele ficou quase um espelho do exemplo de teste porém, mais enxuto pois implementei apenas os recursos que estou utilizando para a emissão das notas. O protótipo também está funcionando tudo certinho (enviando lotes e fazendo consultas de nfses).

O problema começou quando iniciei os testes fora da minha máquina. Nesse outro computador, não tem Delphi e nem os componentes da acbr instalados (simulando o ambiente do cliente). Executei o programa, rodou sem erros, o problema é quando vou testar um recurso q eu considero o mais simples, que é o botão 'Gerar lote RPS'. Aparece o erro 'XmlNode não pode ser nulo' e não gera o arquivo xml assinado, na pasta log.

Junto com o exe do protótipo, eu copiei o arquivo de configuração (ini), os schemas do provedor ISSDSF (provedor da prefeitura de Uberlândia) e as dlls da LibXml2 (pois como uso Wincrypt não vi a necessidade de copiar outras dlls).

Preciso de ajuda para descobrir o que pode estar faltando.

Segue prints dos diretórios onde está o exe do meu protótipo e, print do erro citado acima.

 

 

 

Prot1.png

Prot2.png

Prot3.png

Prot4.png

Prot5.png

  • Consultores
  • Solution
Postado

Bom dia Felipe,

Se o certificado esta instalado na maquina você só informa o numero de série do certificado.

Agora se o certificado não esta instalado, você só informa o caminho + nome do PFX e a senha.

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Boa tarde Italo e Renato.

Infelizmente ainda não deu certo. Passei a usar só o certificado pfx mas ainda sim dá o msm erro 'XmlNode não pode ser nulo'.

Eu achei que podia ser diretório mas msm mudando de pasta ainda não deu certo.

Essa mensagem 'XmlNode não pode ser nulo' é algum valor das tags de assinatura digital que estão vazios? Prq como esse erro não dá na minha máquina de desenvolvimento, eu não consigo depurar.

Uma coisa que vou tentar amanhã, é trocar a biblioteca de wincrypt para opensll. Estou achando q pode ser o Windows.

Para usar a opensll é só copiar as duas dll para a pasta que está o executável, ou preciso de mais dlls?

  • Consultores
Postado

Boa noite,

Testa com o programa de exemplo neste seu cenário para ter certeza que não tem algum detalhe no seu exe.

Neste link tem informações sobre as dlls a distribuir para utilizar OpenSSL.

 

Postado

Bom dia Renato.

Vou testar o exe de exemplo na outra máquina. O exe do protótipo, teoricamente não deveria dar erro pois na minha máquina (ambiente dev) funciona perfeitamente.

Vou continuar fazendo testes aqui.

Mais tarde retorno.

Postado

Boa tarde.

Testei a mudança que mencionei de libWinCrypt para OpenSSL (carregando suas respectivas dlls para a mesma pasta onde está o executável do meu protótipo) e ainda sim dá o mesmo erro 'XMLNode' não pode ser nulo.

Testei em uma terceira máquina e dá o mesmo erro. Estou achando que falta algum arquivo externo. Prq na minha máquina (que tem toda a instalação da acbr) funciona mas em outras máquinas não funciona?

O que me falta testar ainda é o exemplo da acbr nessas outras máquinas. Farei isso amanhã (pois as máquinas são de outros funcionários aqui ... para agilizar esses testes eu vou criar uma VM, acredito q vai ser mais produtivo e rápido de achar o que está faltando ou, o q tem de diferente nessas máquinas e na minha).

  • Consultores
Postado

Boa noite,

Testa o seu protótipo também na sua máquina que funciona, mas em outra pasta, assim como você configura na máquina sem Delphi, para ver se dá o erro, facilitará seus testes de ocorrer.

Pode ser só falta de arquivos mesmo ou outras dlls antigas conflitando com as que deveriam funcionar.

Testa executar como administrador também.

 

  • Curtir 1
Postado

Boa tarde.

Com o programa de exemplo dá o mesmo erro, nas máquinas de teste. Realmente não tem haver com o certificado ou as bibliotecas (wincrypt ou openssl).

Alguma outra dica?

Segue os prints do mesmo exe na máquina de teste e na máquina dev.

 

Erro - Maquina Cliente.PNG

Maquina Dev.PNG

Postado (editado)

Boa tarde Italo.

No caso do teste de hoje que fiz, na máquina de teste, utilizando o exemplo de acbr ficou assim ... segue prints.

Lembrando que estou usando o carregamento do certificado pelo arquivo pfx e, utilizando a biblioteca wincrypt.

 

 

Capturar1.PNG

Capturar1.PNG

Capturar3.PNG

Capturar4.PNG

Capturar5.PNG

Editado por FelipeMitt
  • Consultores
Postado
2 horas atrás, FelipeMitt disse:

 

Capturar1.PNG

Nessa imagem não constam as dlls junto ao executável.

Cola todas as dlls junto com o exe.

Obs: mesmo seu SO sendo 64, utilize as dlls x86, pois seu exe deve ser x86.

  • Curtir 1
Postado

Bom dia Renato e Italo.

Consegui criar a VM e pude fazer testes de forma mais precisa, utilizando o exe do meu protótipo. Consegui gerar o xml assinado e o envio do lote de rps (inclusive as consultas).

Estavam faltando as dlls como o Renato falou, porém elas estavam todas na pasta DLL, dentro do mesmo diretório onde estava o exe. Só quando eu tirei as dlls da pata DLL e coloquei elas exatamente no mesmo diretório do exe é que funcionou.

Somente 3 dlls foram o suficiente para realizar todos os procedimentos de assinatura e envio do lote. São elas: libiconv.dll e libxml2.dll (da pasta LibXml2/x86) e libssl-1_1.dll (da pasta OpenSLL/1.1.1.10/x86).

Agora, estranho é prq na minha máquina dev funciona sem eu ter q colocar essas dlls dentro da pasta onde estão os exes do exemplo do acbr e do meu protótipo?

Vou pedir para não trancar o post ainda pois, queria testar na VM o exe da acbr e testar, com as dlls, as duas máquinas que estava testando semana passada.

 

Segue prints de como ficou o diretório, do protótipo, na VM.

 

Capturar.PNG

Capturar2.PNG

  • Consultores
Postado

Bom dia Felipe, 

Se não me falha a memória na sua maquina de desenvolvimento no programa instalador (ACBrInstall_Trunk2 tem uma opção ativa que copia as DLL para a pasta do Windows.

Ao executar uma aplicação que depende de uma DLL, ela primeiro procura pela DLL dentro da pasta onde a aplicação se encontra, se não achar vai procurar dentro da pasta do Windows (System ou SysWOW64).

  • Curtir 2
Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Bom dia Italo e Renato.

Fiz novos testes nos dois computadores (dos meus primeiros testes) e em todos funcionou certinho quando adicionei as 3 dlls. Consegui assinar o lote e comunicar com a sefaz, enviando o lote e realizando consultas.

Gostaria de agradecer muito a ajuda e atenção de vocês.

Problema resolvido. Podem trancar o post.

Vlw!!!

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