Ir para conteúdo
  • Cadastre-se

dev botao

Escolher Certificado Corretamente.


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

Recommended Posts

Olá pessoal do ACBR.

 

Estou com uma situação meio chata aqui na aplicação.

 

Quando inicio a tela de emissão de NF_e, eu solicito que o usuário escolha seu certificado digital, estou utilizando o seguinte comando.

ACBrNFe1.Configuracoes.Certificados.SelecionarCertificado;

Quando vou transmitir a nota ele fica solicitando o certificado varias vezes no mesmo procedimento.
Isso também acontece em cancelar, consultar status etc. Onde necessitar do certificado digital ele fica solicitando o certificado várias mesma no mesmo procedimento.

 

Gostaria de selecionar o certificado uma vez e enquanto o usuário estiver na tela não solicitar novamente.

 

Oque eu tenho que fazer pra conseguir fazer isso?

 

Desde já obrigado pela colaboração de todos.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Boa tarde, tem alguns certificados que ficam realmente pedindo toda hora a senha. Tenho um cliente que possui um certificado assim. Vai consultar serviço pede senha, vai assinar xml pede senha, vai enviar lote pede senha. Eu creio que deva ser algo na configuração do dispositivo (token ou cartão) onde alguma opção foi habilitada para sempre requisitar autenticação.

 

Agora como contornar isso, só vendo com o fabricante do dispositivo se há alguma configuração desse tipo e se tem como muda-la. Alguns permitem apenas quando reinicializa o dispositivo (formata), o que não pode ser feito enquanto o certificado está dentro do prazo de validade.

Cleber C. Ferreira
Analista de Sistemas e Consultor
Email e
Skype: [email protected]
Formiga-MG

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Olá pessoal do ACBR.

 

Estou com uma situação meio chata aqui na aplicação.

 

Quando inicio a tela de emissão de NF_e, eu solicito que o usuário escolha seu certificado digital, estou utilizando o seguinte comando.

ACBrNFe1.Configuracoes.Certificados.SelecionarCertificado;
Quando vou transmitir a nota ele fica solicitando o certificado varias vezes no mesmo procedimento.

Isso também acontece em cancelar, consultar status etc. Onde necessitar do certificado digital ele fica solicitando o certificado várias mesma no mesmo procedimento.

 

Gostaria de selecionar o certificado uma vez e enquanto o usuário estiver na tela não solicitar novamente.

 

Oque eu tenho que fazer pra conseguir fazer isso?

 

Desde já obrigado pela colaboração de todos.

Qual o tipo do certificado? A1 ou A3? Com o demo ocorre o mesmo problema?
djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

Marcos,

 

Acredito que essa situação seja decorrente de uma escolha feita durante a instalação do certificado,

 

Já respondi a um pedido de ajuda a esse respeito aqui mesmo no fórum, mas o solicitante não voltou para comentar a solução proposta ou encontrada, contribuindo assim para o enriquecimento da nossa base de conhecimento.

 

 

A imagem que usei à época já não está mais disponível, este é um link atualizado

 

https://www.dropbox.com/s/jl2xcmd32layfq5/2014-10-25%2008_54_46-Assistente%20para%20Importa%C3%A7%C3%A3o%20de%20Certificados.jpg?dl=0

 

Acredito que a opção destacada deva ser deixada desmarcada. Talvez o apelo por "ativar proteção de chaves privadas fortes" leve alguns usuários a marcá-la e, consequentemente, fazendo com que a senha seja pedida a cada vez que o certificado é usado.

 

Cordialmente,

Carlos Tré

 

Link para o comentário
Compartilhar em outros sites

Qual o tipo do certificado? A1 ou A3? Com o demo ocorre o mesmo problema?

Olá amigo.

Estou utilizando o certificado A1.

Mais ele não pede senha, pede pra selecionar novamente o certificado. 

Única lógica que pensei foi verificar se o componente já selecionou o certificado, mais não sei como fazer isso.

Com o Demo não rodei, pois não tenho o Rave instalado em minha versão do Delphi, nem tentei corrigí-lo.

Mais acredito que seja alguma configuração mesmo.

Link para o comentário
Compartilhar em outros sites

Marcos,

 

Acredito que essa situação seja decorrente de uma escolha feita durante a instalação do certificado,

 

Já respondi a um pedido de ajuda a esse respeito aqui mesmo no fórum, mas o solicitante não voltou para comentar a solução proposta ou encontrada, contribuindo assim para o enriquecimento da nossa base de conhecimento.

 

 

A imagem que usei à época já não está mais disponível, este é um link atualizado

 

https://www.dropbox.com/s/jl2xcmd32layfq5/2014-10-25%2008_54_46-Assistente%20para%20Importa%C3%A7%C3%A3o%20de%20Certificados.jpg?dl=0

 

Acredito que a opção destacada deva ser deixada desmarcada. Talvez o apelo por "ativar proteção de chaves privadas fortes" leve alguns usuários a marcá-la e, consequentemente, fazendo com que a senha seja pedida a cada vez que o certificado é usado.

 

Cordialmente,

Carlos Tré

Olá amigo, obrigado pela resposta.

 

Então, na verdade ele não pede senha, sempre pede pra selecionar novamente o certificado.

Estou usando o certificado modelo A1.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Olá amigo, obrigado pela resposta.

 

Então, na verdade ele não pede senha, sempre pede pra selecionar novamente o certificado.

Estou usando o certificado modelo A1.

Onde vc deixa o componente NFe? Num form ou em um datamodule?
djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Boa noite André, no ACBrNFeMonitor tem este comando de selecionar qual certificado?

 

Obrigado,

Ricardo.

No ACBrNFeMonitor existe o comando NFe.SetCertificado(NumSerie,Senha)
  • Curtir 1
djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

Olá amigo, obrigado pela resposta.

 

Então, na verdade ele não pede senha, sempre pede pra selecionar novamente o certificado.

Estou usando o certificado modelo A1.

 

Marcos,

 

Minha desatenção, desculpe-me. O que eu faço, e funciona, é guardar o número do certificado em um arquivo INI que é lido na carga do sistema emissor, e atribuído ao certificado dinamicamente:

 

  nfe_ACBr.Configuracoes.Certificados.NumeroSerie :=
    FEmisNFePrefs.NotaFiscal.NumeroCertificado;

[...]
 
  FNumrCrtf := AIniFile.ReadString(
    SNFEmCfg_Sctn_NFe,
    SNFEmCfg_NFe_Key_Certificado,
    SNFEmCfg_NFe_Val_Certificado
  );
 

 

Nada impede que você selecione o certificado a cada vez que o sistema seja executado, mas para evitar que o processo se repita a cada vez que for utilizado o componente, você deverá guardar o número do certificado em memória e certificar-se de que o componente seja configurado automaticamente antes de usar qualquer uma de suas funcionalidades que exija o certificado.

 

Cordialmente,

Carlos

 

 

 

 

Link para o comentário
Compartilhar em outros sites

 

Marcos,

 

Minha desatenção, desculpe-me. O que eu faço, e funciona, é guardar o número do certificado em um arquivo INI que é lido na carga do sistema emissor, e atribuído ao certificado dinamicamente:

 

  nfe_ACBr.Configuracoes.Certificados.NumeroSerie :=
    FEmisNFePrefs.NotaFiscal.NumeroCertificado;

[...]
 
  FNumrCrtf := AIniFile.ReadString(
    SNFEmCfg_Sctn_NFe,
    SNFEmCfg_NFe_Key_Certificado,
    SNFEmCfg_NFe_Val_Certificado
  );
 

 

Nada impede que você selecione o certificado a cada vez que o sistema seja executado, mas para evitar que o processo se repita a cada vez que for utilizado o componente, você deverá guardar o número do certificado em memória e certificar-se de que o componente seja configurado automaticamente antes de usar qualquer uma de suas funcionalidades que exija o certificado.

 

Cordialmente,

Carlos

 

 

 

 

 

Olá Carlos, obrigado pela ajuda.

Tem como eu pegar o numero e a senha do certificado diretamente do comando.

EX:

 

ACBrNFe1.Configuracoes.Certificados.NumeroSerie:= ACBrNFe1.Configuracoes.Certificados.SelecionarCertificado;

Tentei fazer isso aqui mais continua no mesmo.

Link para o comentário
Compartilhar em outros sites

  • 11 meses depois ...

Olá pessoal.

Vou continuar esse tópico porque ainda não consegui uma solução para o problema apresentado.

Vou explicar de novo o problema.

O que acontece é que toda vez que solicito um evento no componente ACBRNFe ele fica solicitando o certificado digital, não a senha, mais o certificado em si.

Mexendo aqui e debugando, percebi que toda vez que chamo um metodo do ACBR ele executa o evento OnActive do form, onde foi configurado para pegar o certificado. OU seja, é por esse motivo que a todo momento ele solicita o certificado, porque está passando por uma rotina que não deveria passar.

Aqui abaixo o código do método de consulta do status por exemplo.

procedure TFrmNFE.BitBtn20Click(Sender: TObject);
var
  Ambiente: string;
  Ok : Boolean;
begin
  try
    ACBrNFe1.WebServices.StatusServico.Executar;
    Memo1.Lines.Clear;
    Memo1.Lines.Text:= UTF8Encode(ACBrNFe1.WebServices.StatusServico.RetornoWS);
    if TpAmbToStr(ACBrNFe1.WebServices.StatusServico.tpAmb) = '1' then
      Ambiente:= 'Produção'
    else
      Ambiente:= 'Homologação';
    Application.MessageBox(PWideChar('Ambiente: ' + Ambiente + #13#10 +
                                     'Status: ' + ACBrNFe1.WebServices.StatusServico.xMotivo + #13#10 +
                                     'Estado: ' + ACBrNFe1.WebServices.StatusServico.verAplic), 'Status Servidor', MB_OK + MB_ICONINFORMATION);
    Memo1.Lines.SaveToFile(PathWithDelim(ExtractFilePath(Application.ExeName)) + '\NF_e\Temp\temp.xml');
  except
    on erro: Exception do begin
      if not TVerificaException.TrataExcception(erro) then begin
        Assert(False, '');
        TVerificaException.SalvarLog(erro);
        raise;
      end;
    end;
  end;
end;

Toda vez que clico nesse botão ele executa também o evento OnActive do Form que possui esse código.

//verifica se ja tem certificado
    if Banco.QryPrincEmpresa.FieldByName('NFECERTIFICADO').AsString <> '' then begin
      ACBrNFe1.Configuracoes.Certificados.NumeroSerie:= Banco.QryPrincEmpresa.FieldByName('NFECERTIFICADO').AsString;
      ACBrNFe1.Configuracoes.Certificados.Senha:= Banco.QryPrincEmpresa.FieldByName('NFECERTIFICADOSENHA').AsString;
      ACBrNFe1.Configuracoes.Certificados.GetCertificado;
    end
    else begin
      ACBrNFe1.Configuracoes.Certificados.SelecionarCertificado;
      ACBrNFe1.Configuracoes.Certificados.GetCertificado;
    end;

Alguém tem uma solução pra isso, saberia me dizer porque está executando uma evento que não estou solicitando no clique do botão?

 

Desde já agradeço a colaboração de todos.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Bom você está programando no local errado!

o onactiveform sempre vai executar quando pegar o foco do formulário!

exemplo dá um showmessage e retorna ao formulário ele será ativado!

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

Olá pessoal!

Estou guardando o número de série do certificado para não ficar pedindo que o usuário tenha que escolher o certificado a todo instante, porém, como eu faço para comparar o número de série que está guardado com o número de série do certificado que está em uso.

Imagine que o usuário está emitindo NFe com um certificado e ele troca de empresa e troca o certificado. Tudo diferente, porém, o número de série que está na memória é do certificado anterior.

Como faço para saber se o usuário trocou o certificado?

Obrigado,

Rogério.

Link para o comentário
Compartilhar em outros sites

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