Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

Postado

Boa tarde, amigos

Antes da refatoração do componente usava a função abaixo

AcbrNfe1.SSL.CertificadoLido

para testar se o Certificado tipo A3 estava operacional:

Mas agora, não funciona, ora ela identifica a ausência, ora não,  pelo menos eu não estou sabendo fazer.

E muitos dos meus atendimentos é para esta chatice. Tem alguma forma de verificar isto?

A presença/funcionalidade do certificado no computador? 

 

 

  • Moderadores
Postado
11 minutos atrás, marcio-carneiro disse:

Boa tarde, amigos

Antes da refatoração do componente usava a função abaixo

AcbrNfe1.SSL.CertificadoLido

para testar se o Certificado tipo A3 estava operacional:

Mas agora, não funciona, ora ela identifica a ausência, ora não,  pelo menos eu não estou sabendo fazer.

E muitos dos meus atendimentos é para esta chatice. Tem alguma forma de verificar isto?

A presença/funcionalidade do certificado no computador? 

 

 

Boa tarde, marcio-carneiro.

O tópico abaixo é antigo, porém talvez possa te ajudar:

 

  • Curtir 1
Equipe ACBr

Felipe Eduardo Resende Mesquita

Ajude o Projeto ACBr crescer - Assine o SAC

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

 

 

 

  • Fundadores
Postado

Você pode usar o Ponteiro do Certificado PCCERT_CONTEXT, e manipular ele diretamente com a WinCrypt... Tente isso:


    if ACBrNFe1.SSL.SSLCryptClass is TDFeWinCrypt then
    begin
      try
        GetCertIsHardware(TDFeWinCrypt(ACBrNFe1.SSL.SSLCryptClass).Certificado);
        Ok := True;
      except
        Ok := False;
      end;
    end;

 

  • Curtir 3
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Postado

Obrigado pela atenção.

Daniel, não funcionou. Não encontra o certificado.

O token está presente e operacional, pois antes de entrar no módulo nfce testei no módulo nfe uma consulta ao webservice.

Mas quando entra, mesmo presente, não encontra.

Posso estar não preenchendo todos os dados, mas o componente AcbrNfe já está configurado, antes da pesquisa, com os dados do certificado, como número e senha.

Onde posso estar errando?  

Debugando no Delphi dá um erro de acess violation e não mostra nem a mensagem de erro.

 

  • Fundadores
Postado

Fiz um teste com nosso Certificado A3, modelo leitora de cartão... e o funcionamento foi plenamente satisfatório...

procedure TForm1.Button13Click(Sender: TObject);
begin
  if ACBrNFe1.SSL.SSLCryptClass is TDFeWinCrypt then
  begin
    try
      GetCertIsHardware(TDFeWinCrypt(ACBrNFe1.SSL.SSLCryptClass).Certificado);
      ShowMessage('PRESENTE');
    except
       ShowMessage('ERRO');
    end;
  end;
end;   

Remover o Cartão, ou o cabo USB do leitor de cartão, sempre acusou a mensagem ERRO... Após inserir o Cartão ou reconectar o cabo USB, a mensagem PRESENTE passou a ser exibida...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

  • Moderadores
  • Solution
Postado

Fiz teste com o demo, também tive o AV aqui com a mensagem de ERRO com esse método, com um token A3.

Percebi que se tentasse acessar as informações do certificado, como data de vencimento, depois disso o teste passava a retornar como presente.

Incluí a chamada ao CarregarCertificadoSeNecessario e passou a funcionar:

procedure TForm1.Button6Click(Sender: TObject);
begin

  if ACBrNFe1.SSL.SSLCryptClass is TDFeWinCrypt then
  begin
    try
      ACBrNFe1.SSL.CarregarCertificadoSeNecessario;
      GetCertIsHardware(TDFeWinCrypt(ACBrNFe1.SSL.SSLCryptClass).Certificado);
      ShowMessage('PRESENTE');
    except
       ShowMessage('ERRO');
    end;
  end;

end;

 

  • Curtir 3
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado

Obrigado novamente pela ajuda. 

Sem dúvida, o método CarregarCertificado funciona.

Mas tudo tem um porém: mesmo inserindo o token, após a apresentação da tela de solicitação de certificado digital, o botão OK continua inabilitado,

e apertando o botão cancelar que é a única opção habilitada, e mesmo com o cartão/token  inserido, ele emite a mensagem de erro, Mas a função do mestre Daniel Simões 

reconhece o certificado e retorna TRUE.

Não tem como a rotina que solicita o certIficado digital, quando notado a presença do certificado, liberar o OK?

  • Fundadores
Postado
13 minutos atrás, marcio-carneiro disse:

Não tem como a rotina que solicita o certIficado digital, quando notado a presença do certificado, liberar o OK?

Isso é feito pela API do hardware do certificado...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Postado

Obrigado pela atenção. 

É uma pena que não possa retonar o OK, pois ficava completo.

O A1 é muito melhor, mas os muquiranas dos clientes não compram.

Então, se muitas vezes, mesmo plugado o token/certificado ele não reconhece.

É somente tirar e colocar novamente, que ele retorna o funcionamento.

Mas a média dos operadores são muito fracos, ficam falando enquanto inicializam o módulo, e não percebem o funcionamento do software.

Quando deixei de usar a função -   AcbrNfe1.SSL.CertificadoLido, passei a usar esta, CarregarSeNecessário, mas travei nesta tela que pede para inserir um certificado, 

e eu, na minha santa ignorância, achava que estava faltando alguma coisa, pois o botão do OK não liberava.

E para o usuário, falar que tem que inserir o certificado e mesmo assim apertar o botão CANCELAR para avançar, era muito para a inteligência, infelizmente de muitos,

até mesmo entendo, pois cancelar significa que você não quer continuar, então a lógica fica confusa.

Com esta rotina que você caridosamente me ensinou, Daniel, já melhorou muito e o detalhe final do BigWings, acabou de arrematar, pois agora inabilito o botão de envio do cupom.

 

  • Curtir 1
  • Administradores
Postado

Obrigado por reportar.

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

  • Curtir 1
Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Este tópico foi criado há 2311 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...
The popup will be closed in 10 segundos...