Jump to content

Promoção de Natal SAC Mensal

Contrate e ganhe 1 Kit agenda + Caneta
Saiba mais

LANÇAMENTO
Curso Completo - Dominando o ACBrMonitor

Conheça o Curso

Balança SM100 performance surpreendente

Tecnologia Japonesa   Teclado e Visor resistentes a água
Consumo inteligente de etiquetas   Baixo custo de manutenção
Comunicação Ethernet e WIFI independentes

Saiba mais

Impressora de Etiquetas ELGIN - L42 PRO

Protocolos PPLA, PPLB, ZPL, EPL (automático)
Porta USB padrão Opcionais: Ethernet, Serial, Paralela
Sensor de Etiquetas Móvel Garantia de 18 meses

Saiba mais

Delcio

O mistério da exclusão dos certificados A3

Recommended Posts

Compreendo... apenas quis deixar bem claro, porque esse assunto "já deu pano pra manga"...

Se você usar SSL.SSLXmlSignLib := xsLibXml2, não usará a obsoleta MSXML, o que alguns nesse tópico acusam de ser a causa dos problemas

A MSXML tem os seguintes problemas, e seu uso deve ser descontinuado

  • Obsoleta
  • Não suporta 64 bits
  • Não suporta SHA256

Consultor SAC ACBr

Daniel Simões de Almeida
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Share this post


Link to post
Share on other sites

Bom dia,

Então, no caso, quando eu for utilizar AcbrNFe1.Configuracoes.Geral.SSLLib = libWinCrypt, o ideal é que eu tenha também AcbrNFe1.Configuracoes.Geral.SSLXmlSignLib = xsLibXml2, seria isso?

Se positivo, não seria interessante o próprio componente já fazer isso automaticamente, ou seja, quando eu atribuir SSLLib = libWinCrypt, o componente já mudar também SSLXmlSignLib = xsLibXml2 ?

Fiz um teste e, ao setar SSLLib = libWinCrypt, o componente seta automaticamente SSLXmlSignLib = xsMsXml.

 

Obrigado!

 


Valdir Dill

Rio de Janeiro - RJ

 

 

Share this post


Link to post
Share on other sites

Evite configurar usando AcbrNFe1.Configuracoes.Geral.SSLLib.

Ela foi criada apenas para manter compatibilidade com aplicações anteriores...

Veja esse vídeo sobre a DFeSSL, onde isso é explicado em detalhes...

 

  • Like 1

Consultor SAC ACBr

Daniel Simões de Almeida
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Share this post


Link to post
Share on other sites

Boa tarde,

Obrigado Daniel. Eu não visto o vídeo. Muito bom. Realmente ajudou bastante.

O vídeo também mostrou algo que eu ainda não conhecia e achei interessante. É a opção para guardar o certificado no banco de dados e depois alimentar a propriedade SSL.DadosPFX do componente.
Aí veio uma dúvida: como eu capturo os dados do arquivo .pfx para uma string para popular o campo do banco de dados? Poderia me dar uma dica de como fazer isso?

Obrigado.


Valdir Dill

Rio de Janeiro - RJ

 

 

Share this post


Link to post
Share on other sites

Existem várias maneiras... tente algo usando TMemoryStream ou TStringStream

var
  SS: TStringStream;
begin
  SS := TStringStream.Create('');
  try
    with sqlSuaTabela do
    begin
       Open;
       TBlobField(FieldByName('CERTIFICADO_PFX')).SaveToStream( SS );
       ACBrNFe1.Configuracoes.Certificados.DadosPFX := SS.DataString;
    end;
  finally
    SS.Free;
  end;
end;

 

  • Like 1

Consultor SAC ACBr

Daniel Simões de Almeida
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Share this post


Link to post
Share on other sites
16 horas atrás, Daniel Simoes disse:

Existem várias maneiras... tente algo usando TMemoryStream ou TStringStream

var
  SS: TStringStream;
begin
  SS := TStringStream.Create('');
  try
    with sqlSuaTabela do
    begin
       Open;
       TBlobField(FieldByName('CERTIFICADO_PFX')).SaveToStream( SS );
       ACBrNFe1.Configuracoes.Certificados.DadosPFX := SS.DataString;
    end;
  finally
    SS.Free;
  end;
end;

 

Bom dia,

Agradeço a dica,  mas essa seria a parte de popular o Acbr depois que o certificado já está gravado no banco de dados.

Minha dúvida seria mais relacionada a parte de alimentar o banco de dados, ou seja, colocar o certificado no banco de dados.

Eu abro o arquivo .pfx do certificado normal, como se fosse um .txt, por exemplo? E aí jogo esse  conteúdo no campo da tabela do meu BD? 

Não precisa fazer alguma decodificação? Vi alguns artigos falando em codificação base64, mas não achei nada muito esclarecedor.

Se puder me dar alguma dica nessa parte...

Obrigado!


Valdir Dill

Rio de Janeiro - RJ

 

 

Share this post


Link to post
Share on other sites

Basta ler o PFX com um TFileStrem e salvar no BD em um Blob binário

  • Like 1

Consultor SAC ACBr

Daniel Simões de Almeida
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Share this post


Link to post
Share on other sites

Boa tarde,

Estou testando a seguinte configuração:

AcbrNFe1.Configuracoes.Geral.SSLCryptLib := cryWinCrypt;
AcbrNFe1.Configuracoes.Geral.SSLHttpLib := httpWinHttp;
AcbrNFe1.Configuracoes.Geral.SSLXmlSignLib := xsLibXml2;

Está funcionando beleza, desde que os schemas estejam na mesma máquina onde está rodando o sistema.
Como eu tenho a pasta \Schemas centralizada no computador servidor e todas as demais máquinas buscam os schemas nesse servidor, aí dá o erro abaixo

if (schema = nil) then
 begin
  MsgErro := ACBrStr('Erro: Schema inválido');  <-- ocorre esse erro. Esta é a linha 366 da ACBrDFeXsLibXml2.pas
  Exit;
end;

O path dos schemas fica assim \\SERVIDOR\NomeCompartilhamento\Schemas\NFe\.
O erro ocorre quando ele vai buscar o arquivo nfe_v3.10.xsd (string final = \\SERVIDOR\NomeCompartilhamento\Schemas\NFe\ nfe_v3.10.xsd).
Verifiquei a pasta no servidor está tudo certo, compartilhada e acessível pela rede. Inclusive acessei e copiei esse arquivo nfe_v3.10.xsd vai rede, ou seja, a rede está dando acesso normal ao arquivo.

A mesma rotina, porém colocando o path do schemas = C:\MeuSistema\Schemas\NFe\, aí tudo certo, sem erro.

O problema na verdade ocorre na instrução schema := xmlSchemaParse(parser_ctxt) (linha 362 da  ACBrDFeXsLibXml2.pas). Mas essa instrução não consigo debugar.

O que poderia ser? 
Alguma dica?

Obrigado


Valdir Dill

Rio de Janeiro - RJ

 

 

Share this post


Link to post
Share on other sites

Compartilhamentos de Rede do Windows são um terror para suporte... sempre morrem sem mais nem menos...

E nem todos os métodos e componentes do Delphi suportam a nomenclatura " \\SERVIDOR\NomeCompartilhamento\ ", para nomes de arquivos...

Sugiro mapear uma Unidade de Rede, como por exemplo Z:

  • Like 1

Consultor SAC ACBr

Daniel Simões de Almeida
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Share this post


Link to post
Share on other sites
47 minutos atrás, Daniel Simoes disse:

Compartilhamentos de Rede do Windows são um terror para suporte... sempre morrem sem mais nem menos...

E nem todos os métodos e componentes do Delphi suportam a nomenclatura " \\SERVIDOR\NomeCompartilhamento\ ", para nomes de arquivos...

Sugiro mapear uma Unidade de Rede, como por exemplo Z:

 

Perfeito, mudei para mapeamento e deu tudo certo.

Obrigado pela dica Daniel.

 


Valdir Dill

Rio de Janeiro - RJ

 

 

Share this post


Link to post
Share on other sites

Boa noite,

Vou postar nesse tópico porque acho que tem relação.

Estou com o "Erro: Falha ao localizar o nó de Assinatura". 

Estou usando o seguinte trio e o certificado é A3 com cartão.
AcbrNFe1.Configuracoes.Geral.SSLCryptLib := cryWinCrypt;
AcbrNFe1.Configuracoes.Geral.SSLHttpLib := httpWinHttp;
AcbrNFe1.Configuracoes.Geral.SSLXmlSignLib := xsLibXml2;


O erro acontece quando compila a seguinte rotina:
if (SignNode = nil) then //esta é a linha 557 da ACBrDFeXsLibXml2.pas. A sentença dessa linha é verdadeira, o que dispara o except abaixo.
    raise EACBrDFeException.Create(cErrFindSignNode);

Alguma sugestão?

Obrigado!


Valdir Dill

Rio de Janeiro - RJ

 

 

Share this post


Link to post
Share on other sites
25 minutos atrás, valdirdill disse:

Estou com o "Erro: Falha ao localizar o nó de Assinatura". 

Isso não é um erro é uma Exceção muda... observe que apenas em Debug ela ocorre... Basta configurar sua IDE para ignorar esse erro..

  • Like 1

Consultor SAC ACBr

Daniel Simões de Almeida
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×
×
  • Create New...