Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Membros Pro
Postado

Olá a todos,

Possuo uma aplicação Delphi / Mysql onde minha base de dados está hospedada em um servidor CLOUD Win2008 da Locaweb. Funciona muito bem, e o cliente acessa de diversos computadores, para tal, basta ele ter apenas o executável + internet nas máquinas que quer usar.

Só que agora surgiu a necessidade de emitir NF-e nesse aplicativo. Até aí tudo bem, pois vou programar de forma que exija dele a existência do certificado digital na máquina cliente. Mas o mesmo usa certificado A1 e com isso me surgiu a seguinte dúvida.

Nesse meu cenário, posso instalar o certificado no servidor e fazer com que o componente (no executável do cliente) leia o certificado no servidor?

Desde já agradeço a atenção de todos

  • Membros Pro
Postado

Olá Juliomar, na verdade não estou usando não e para ser sincero eu nem conhecia esse termo antes de você falar.

Fazer a aplicação funcionar nas nuvens foi relativamente simples, pois uso o componente Zeos onde devo informar o IP da máquina que possui o Mysql para me conectar, e executo as rotinas normalmente. A única diferença é que ao rodar nas nuvens eu informo o IP do servidor cloud e tudo funciona.

Só daria para fazer o que eu quero em relação ao certificado usando esse DataSnap???

  • Moderadores
Postado
1 hora atrás, doidopb disse:

Olá Juliomar, na verdade não estou usando não e para ser sincero eu nem conhecia esse termo antes de você falar.

Fazer a aplicação funcionar nas nuvens foi relativamente simples, pois uso o componente Zeos onde devo informar o IP da máquina que possui o Mysql para me conectar, e executo as rotinas normalmente. A única diferença é que ao rodar nas nuvens eu informo o IP do servidor cloud e tudo funciona.

Só daria para fazer o que eu quero em relação ao certificado usando esse DataSnap???

Bom o André já respondeu!

mas no caso se usar datasnap e olhar no site da embarcadero verá as grandes facilidades que ele tem!

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

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

 

  • Membros Pro
Postado

Olá André... Grato pela dica, parece que é exatamente o que preciso.

Mas uma dúvida... Como salvo o mesmo no banco?

  • Membros Pro
Postado

Obrigado Juliomar...

Apesar de uma rápida pesquisa que fiz, não entendi muito bem como funciona o SavetoStream com o XML de forma a adapta-lo para o certificado, eu uso basicamente o LoadFromString em meus códigos. Mas achei em um post um conteúdo sobre Stream e fiz o seguinte, criei um campo BLOB para armazenar o certificado e preenchi o mesmo com o seguinte comando:

var
  stream: TMemoryStream;  
begin
  stream := TMemoryStream.Create;
  try
    stream.LoadFromFile('c:\reidosvidros.pfx');
    dtm_banco.z_nfeconf.Open;
    dtm_banco.z_nfeconf.Edit;
    dtm_banco.z_nfeconfcertificado.LoadFromStream(stream);
    dtm_banco.z_nfeconf.Post;
    dtm_banco.z_nfeconf.Close;
  finally
  stream.Free
  end; 

Com isso eu consegui preencher o conteúdo do campo, que ficou repleto de diversos caracteres que creio ser o certificado em si. Fiz da maneira correta?

Agora no ato do envio, fico recebo a mensagem que não possuo o certificado digital, mesmo atribuindo o seguinte comando:
 

    z_nfeconf.Open;
      ACBrNFe1.Configuracoes.Certificados.DadosPFX := z_nfeconfcertificado.AsVariant;
      NumeroSerie := DFe_Certificado;
      Senha := DFe_CertSenha;
      z_nfeconf.Close;

Onde estou errando?

 

 

  • Membros Pro
Postado
13 horas atrás, Juliomar Marchetti disse:

No caso a sugestão informada pelo André em salvar seria você ao baixar tem que criar um tstream e salvar o pfx local e apontar para o componente !

assim informa o arquivo !

Ah sim, entendi Juliomar... 

var
  stream: TMemoryStream;  
begin
  stream := TMemoryStream.Create;
  try
    stream.LoadFromFile('c:\reidosvidros.pfx');
    dtm_banco.z_nfeconf.Open;
    dtm_banco.z_nfeconf.Edit;
    dtm_banco.z_nfeconfcertificado.LoadFromStream(stream);
    dtm_banco.z_nfeconf.Post;
    dtm_banco.z_nfeconf.Close;
  finally
  stream.Free
  end; 

Então vamos lá, nunca usei esse método de Stream, estou salvando corretamente no banco? Pergunto pois estou com dificuldades em transformá-lo em *.pfx de volta.

Se sim, como faço agora para pegar isso via stream e transformá-lo em *.pfx dinovo?

Sei que tal dúvida não é pertinente ao componente, mas as tentativas que realizei aqui para transforma-lo em *.pfx de volta, dados as pesquisas que fiz, não deram certo. De qualquer forma já agradeço a ajuda prestada.

  • Membros Pro
Postado (editado)
Em 17/03/2016 at 13:36, André Ferreira de Moraes disse:

Se vc usa apenas certificados A1, salve o arquivo no Banco e carregue via Stream para o componente atribuindo o conteúdo do certificado a propriedade ACBrNFe1.Configuracoes.Certificados.DadosPFX.

André... Conforme o Juliomar orientou, via tstream eu salvei o arquivo *.pfx localmente na hora de enviar a nota.

Sendo que assim, não pegou quando apontei o arquivo via "ACBrNFe1.Configuracoes.Certificados.DadosPFX", só pegou com "ACBrNFe1.Configuracoes.Certificados.ArquivoPFX". 

Editado por doidopb
  • Moderadores
Postado
Em 20/03/2016 at 14:16, doidopb disse:

André... Conforme o Juliomar orientou, via tstream eu salvei o arquivo *.pfx localmente na hora de enviar a nota.

Sendo que assim, não pegou quando apontei o arquivo via "ACBrNFe1.Configuracoes.Certificados.DadosPFX", só pegou com "ACBrNFe1.Configuracoes.Certificados.ArquivoPFX". 

é isso mesmo doidopb

  • Curtir 1
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

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

 

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