Ir para conteúdo
  • Cadastre-se

dev botao

[Contribuição] Obter e selecionar certificado Capicom


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

Recommended Posts

Amigos eu realizei uma pequena implementação de uma rotina para Capturar e definir o certificado Digital via Capicom. Com ela, na minha aplicação será possível selecionar o certificado Capicom de uma forma mais simples. Isto é útil quando ocorre por exemplo a compra de um novo certificado digital A3. Caso a mesma seja útil, peço para que seja analisada e inserida ao projeto. Abaixo a rotina implementada e em anexo o arquivo .PAS completo:

//* Permite selecionar e definir um certificado Capicom, retornando o número de série.
//* Útil para uso com várias empresas e renovação de certificados
//*
//* selecionarcertificadocapicom([atualizacomponentes], [senhacertificado])
//* [atualizacomponentes] - Se informado 1, irá definir o certificado selecionado para os componentes (Opicional)
//* [senhacertificado] - Se informado, irá gravar definir a senha do do certificado selecionado (Opicional)
//* Ex: selecionarcertificadocampicom(1, '1234')
else if Cmd.Metodo = 'selecionarcertificadocapicom' then
 try
   ACBrNFe1.Configuracoes.Geral.SSLLib := libCapicom;
   ACBrNFe1.SSL.SelecionarCertificado;

   if ACBrNFe1.SSL.NumeroSerie <> '' then
    begin
      Cmd.Resposta := 'Serie=' + ACBrNFe1.SSL.NumeroSerie;

      //Caso seja 1 indica que deve ser atualizado o número de série nos componentes
      if Cmd.Params(0) = '1' then
       begin
         ACBrNFe1.Configuracoes.Certificados.NumeroSerie  := ACBrNFe1.SSL.NumeroSerie;
         ACBrCTe1.Configuracoes.Certificados.NumeroSerie  := ACBrNFe1.SSL.NumeroSerie;
         ACBrMDFe1.Configuracoes.Certificados.NumeroSerie := ACBrNFe1.SSL.NumeroSerie;
         ACBrGNRE1.Configuracoes.Certificados.NumeroSerie := ACBrNFe1.SSL.NumeroSerie;
         edtNumeroSerie.Text := ACBrNFe1.SSL.NumeroSerie;

         //Caso a senha tenha sido informada, atualiza
         if cmd.Params(1) <> '' then
          begin
            ACBrNFe1.Configuracoes.Certificados.Senha  := Cmd.Params(1);
            ACBrCTe1.Configuracoes.Certificados.Senha  := Cmd.Params(1);
            ACBrMDFe1.Configuracoes.Certificados.Senha := Cmd.Params(1);
            ACBrGNRE1.Configuracoes.Certificados.Senha := Cmd.Params(1);
            edtSenha.Text := Cmd.Params(1);
          end;

         rgVersaoSSL.ItemIndex := 1;  //Define como CAPICOM
         SalvarIni;
       end;
    end;
 except
   on E: Exception do
    begin
      raise Exception.Create('Falha ao selecionar o certificado digital');
    end;
 end

 

DoACBrNFeUnit.pas

Link para o comentário
Compartilhar em outros sites

Olá André.

Com a função setcertificado eu tenho que ter o número de série em "algum lugar" (No caso de A3 ou Token) e passar este como parâmetro. No meu sistema quando é adicionada uma nova empresa que será emissora de NF-e ou  quando um novo certificado é comprado, eu tenho que obter o número de série e salvar isso no sistema. O usuário final tem dificuldades de encontrar e pegar esta informação. Usando minha função eu seleciono o certificado e obtenho o número de série e posso já gravar em uma tabela para posterior uso. Daí sim posso usar o setcertificado.

[]´s

 

Link para o comentário
Compartilhar em outros sites

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

The popup will be closed in 10 segundos...