Jump to content

Assista tectoy.png

chamada diadoacbr

Pegar Lista De Certificado Sem Abrir Tela De Seleção.


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

Recommended Posts

Galera eu uso o metodo

myVariavel := dtmServidor.ACBrNFe.Configuracoes.Certificados.SelecionarCertificado;

 

mas este metodo abre uma lista para selecionar o certificado, eu gostaria de saber se tem como pegar uma lista de certificados sem precisar mostrar a lista,

 

Finalidade: Quero colocar o certificado no servidor, mas quando eu pesquisar quero passar a lista para o client para ser celecionado la, e nao quero que abra a tela de listar certificado no servidor.

 

 

 

Link to comment
Share on other sites

Finalidade: Quero colocar o certificado no servidor, mas quando eu pesquisar quero passar a lista para o client para ser celecionado la, e nao quero que abra a tela de listar certificado no servidor.

 

Se entendi , essa finalidade que vc quer se for para assinar documentos com o certificado que esta instalado no servidor utiliza-lo pela rede (clients) , isso não da ! É isso ?

 

Com certificados A1 vc consegue instalar em utilizalos em todas as maquinas que quizer independentemente , A3 não ! 

Link to comment
Share on other sites

Na Verdade estou tentando fazer o seguinte:

Vou usar Delphi com DataSnap, portanto a ideia inicial e manter o certificado no servidor, e quando da emissao da nota fiscal eu pretendo enviar do client os dados para emissao da nota fiscal, os dados sera recebido pelo servidor e o servidor vai assinar e enviar para a sefaz, tambem vai receber e gerar a nota em pdf e enviar o pdf pronto para o cliente,  portanto todas as operacoes da nota fiscal ficara no servidor. 

porque estou tentando fazer esta chamada, pois eu quero do cliente escolher qual certificado vou usar, sendo assim gostaria de criar um metodo no servidor "getCertificado" e este metodo retornar uma lista dos certificados que enviarei para o client para ele escolher,

 

porem se eu fazer o metodo desejado no servidor quando o client executa o metodo o servidor vai parar pois vai abrir a tela de seleção de certificado coisa que nao quero que aconteça.

 

porem  com esta ideia posso ter varios certificados no servidor e cada filial utiliza o seu proprio. 

Link to comment
Share on other sites

Nesse caso ,

 

1- Vc vai ter que ter um Cadastro de Emitentes , quando for cadastrar o Emitente vc utiliza o metodo "SelecionarCertificado" , onde vc vincula o Número de Série do Certificado selecionado neste Emitente (somente quando cadastrar) , e nos Client's quando precisar desta informação do emitente é só dar um Select na tabela de Emitentes .

 

2- Quando chegar a informação no Servidor , vc seta o Emitente setado pelo Client antes de qualquer emissão , assim :

 

ACBrNFe.Configuracoes.Certificados.NumeroSerie := Query.Field.....Numero de Série vindo do Client .

ACBrNFe.Configuracoes.Certificados.GetCertificado ;

Edited by marcelo_sp
Link to comment
Share on other sites

  • Moderadores

Veja a function TCertificadosConf.GetCertificado: ICertificate2; da unit ACBrNFeConfiguracoes.pas e crie uma conforme a sua necessidade.

Nesta função é aberto o repositório de certificados do windows e feito um FOR pra encontrar o certificado desejado, basta vc alterar para ele criar uma lista com as informações q vc desejar do certificado e retornar pra vc.

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 to comment
Share on other sites

Achei a resposta do 

marcelo_sp e do anfm as duas opções são otimas vou aplicar a ideia do marcelo, visto que achei mais viavel para o momento.

 

e respondendo a pergunta do Danilo

-- a Ideia e usar um certificado só, mas pelo que vi para cada filial tenho que ter um certificado portanto  se a empresa usar o certificado de arquivo poderia dar certo pra mim bastaria instalar o certificado em todas as maquinas, mas se o cliente usa o A1 fica complicado

 

entao a ideia é: mesmo que o cliente use qualquer certificado vou usar somente uma instalação do servidor ai independente do tipo de caso ele venha a vencer nao precisarei sair reinstalando em tudo que é client.

 

 

entao cada filial vai acessar seu devido certificado que vai estar no servidor... 

Link to comment
Share on other sites

  • 5 months later...

ailtonbrc,

estou usando DataSnap, e também preciso centralizar o certificado digital A3 no servidor. Mas estou encontrando dificuldades para realizar uma simples consulta de Status do Serviço dentro da aplicação DataSnap (acbrNFE.WebServices.StatusServico.Executar). Ocorre erro "Certificado digital não encontrado". O certificado esta instalado e configurado corretamente, e tudo funciona perfeitamente fora da aplicação DataSnap. Alguém ou ailtonbrc passou por isso? Como conseguiu resolver?

 

Obs: DataSnap Delphi XE2

Link to comment
Share on other sites

  • 4 months later...
  • 1 month later...

Boa tarde,

 

Não sei como e se resolveram a situação de não encontrar o certificado, mas uma situação parecida que tive foi utilizando um módulo central como serviço, ele não conseguia ler o repositório de certificados. Ao configurar o serviço com um usuário autenticado que tivesse os certificados instalados no seu perfil funcionou.

 

Com relação à lista de certificados, fiz uma função para retornar um xml com os certificados encontrados na máquina. Segue, caso ajude:

 

*** units necessárias: ACBrCAPICOM_TLB, ACBrNFeConfiguracoes;

 

function CertificadosLista: string;
var
  Store: IStore3;
  Certs: ICertificates2;
  Cert : ICertificate2;
  i    : Integer;
begin
  Result := '';
 
  try
    Store := CoStore.Create;
    Store.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAME, CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
 
    Certs := Store.Certificates as ICertificates2;
  Except
    Result := 'Erro ao carregar lista de certificados';
    exit;
  end;
 
  Result := '<certificados>';
 
  for i:= 1 to Certs.Count do
  begin
    try
      Cert := IInterface(Certs.Item) as ICertificate2;
 
      Result := Result +
                '<cert' +           Copy(IntToStr(10000000 + i),5,4) +                 '>' +
                '<serialnumber>' +  Cert.SerialNumber +                                '</serialnumber>' +
                '<subjectname>' +   Cert.SubjectName +                                 '</subjectname>' +
                '<issuername>' +    Cert.IssuerName +                                  '</issuername>' +
                '<validfromdate>' + FormatDateTime('dd/mm/yyyy', Cert.ValidFromDate) + '</validfromdate>' +
                '<validtodate>' +   FormatDateTime('dd/mm/yyyy', Cert.ValidToDate) +   '</validtodate>' +
                '<message>' +       'ok' +                                             '</message>' +
                '</cert' +          Copy(IntToStr(10000000 + i),5,4) +                 '>';
    Except
      on E:Exception do
        Result := Result +
                  '<cert' +           Copy(IntToStr(10000000 + i),5,4) + '>' +
                  '<serialnumber>' +  'Erro' +                           '</serialnumber>' +
                  '<subjectname>' +   'Erro' +                           '</subjectname>' +
                  '<issuername>' +    'Erro' +                           '</issuername>' +
                  '<validfromdate>' + 'Erro' +                           '</validfromdate>' +
                  '<validtodate>' +   'Erro' +                           '</validtodate>' +
                  '<message>' +       E.Message +                        '</message>' +
                  '</cert' +          Copy(IntToStr(10000000 + i),5,4) + '>';
    end;
  end;
 
  Result := Result +
            '</certificados>';
end;
Link to comment
Share on other sites

  • Moderadores

Só para contribuir,

 

Minha Aplicação é DataSnap com o certificado A3 (Serasa) instalado no servidor de aplicação.

Como um colega ae em cima disse, cada empresa poderia ter o cadastro do numero de série no respectivo certificado, porém pra NFe como bem observado não precisa ter certificados diferentes.

 

De qualquer maneira, configurando a senha e o serial no componente, o componente se conecta perfeitamente a esta certificado.

Não tem necessidade de usar certificado A1.

Porém lembro que não são todos certificados A3 que conseguem se conectar automaticamente (sem interação do usuário) configurando serial  a senha, sei que Serasa e Certsign funcionam.

 

[]´s

João Henrique de Souza

 

Manual de como configurar o TortoiseSVN para não ficar mostrando a senha repetidas vezes (somente para commiters):

https://sourceforge.net/p/forge/community-docs/TortoiseSVN/

 

 

Link to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.