Ir para conteúdo
  • Cadastre-se

dev botao

Selecionar Automaticamente o Certificado Digital com base no CNPJ


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

Recommended Posts

Implementei duas novas funções no ACBrDFeSSL.pas para que seja possível selecionar automaticamente o certificado digital passando como parâmetro o CNPJ.

A função LocalizarNumeroSerieCertificado vai listar os certificados digitais instalados e com base nos 8 primeiros dígitos irá retornar o número de série caso encontre.

A função LocalizarCertificado vai carregar o certificado, semelhante a função SelecionarCertificado mas sem exibir a janela de diálogo. Caso encontre será carregado e retornado o número de série, caso não encontre será disparado uma exceção que não encontrou certificado para aquele CNPJ.

A motivação para essa implementação é que muitos clientes já solicitaram para que esse procedimento seja extinto, uma vez que na maioria dos casos existe apenas 1 certificado digital instalado na máquina, e nos casos onde existem vários certificados é preciso ficar buscando pelo correto.

 

ACBrDFeSSL.pas

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • 3 meses depois ...
  • Fundadores

Só agora notei a contribuição...

(ainda não analisei o arquivo).

Aparentemente isso só funcionará com Wincrypt (para certificados que estão instalados no Windows)

Você verifica se o certificado instalado está válido ?

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.

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...
  • Fundadores
  • Solution

Analisei os fontes, e a implementação parece correta... mas decidi não incorporar aos fontes do SVN, pelos seguintes motivos:

- O método é exclusivo para a WinCrypt (e Capicom)... não funcionaria no OpenSSL ... Ok, isso também ocorre com o método "SelecionarCertificado", mas esse último método foi herdado do Trunk1
- O método é específico para CNPJ, e a ACBrDFeSSL também suporta Certificados com CPF
- A rotina pode ser facilmente implementada na própria aplicação (usando o método: "LerCertificadosStore", e um Loop, e conforme demonstrado abaixo)

Enfim... deixo aqui, trecho do código, onde o Loop é implementado, na sugestão proposta, para o caso de alguém tiver interesse de implementar o método na própria aplicação

function TForm1.LocalizarNumeroSerieCertificado(ACNPJ: String): String;
var
  I: Integer;
  ACNPJLocalizar, ACBPJCertificado: String;
begin
  Result := '';
  ACNPJLocalizar := OnlyNumber(ACNPJ);
  if (ACNPJLocalizar = '') then
    raise EACBrDFeException.Create('CNPJ não informado');
  if (Length(ACNPJLocalizar) <> 14) then
    raise EACBrDFeException.Create('Informar CNPJ com 14 digitos');

  ACBrNFe1.SSL.LerCertificadosStore;

  for I := 0 to ACBrNFe1.SSL.ListaCertificados.Count-1 do
  begin
    ACBPJCertificado := OnlyNumber(ACBrNFe1.SSL.ListaCertificados[I].CNPJ);
    if (ListaCertificados[I].DataVenc >= Date) then
      if (Copy(ACBPJCertificado, 1, 8) = Copy(ACNPJLocalizar, 1, 8))  then
        Result := ACBrNFe1.SSL.ListaCertificados[I].NumeroSerie;
  end;
end;

 

  • Curtir 5
  • Obrigado 2
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.

Link para o comentário
Compartilhar em outros sites

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.