Bom dia,
Tenho um módulo no sistema Distribuição DFe, temos a versão Desktop e a versão Unigui.
Temos uma procedure que pega o certificado digital e grava o mesmo em uma tabela do banco de dados, no desktop não temos problemas.
Ocorre que no UNIGUI ao tentar ler o certificado para salvar no banco de dados o erro acontece:
Obs: Na maquina de desenvolvimento o erro não acontece, somente acontece no servidor após publicar o módulo.
a procedure:
TRY
MS := TMemoryStream.Create;
MS.CopyFrom(AStream, AStream.Size);
MS.SaveToFile(UniServerModule.LocalCachePath + 'cert.pfx');
ACBrNFe1.SSL.SSLCryptLib := cryWinCrypt;
ACBrNFe1.Configuracoes.Certificados.ArquivoPFX := UniServerModule.LocalCachePath + 'cert.pfx';
ACBrNFe1.Configuracoes.Certificados.Senha := vSenhaCertificado;
ACBrNFe1.SSL.CarregarCertificado;
IF (ACBrNFe1.SSL.CertificadoLido) THEN
BEGIN
edCertificado.Text:= ACBrNFe1.SSL.DadosCertificado.NumeroSerie;
edSenha.Text := vSenhaCertificado;
try
FDQuery:= TFDQuery.Create(Self);
FDQuery.Connection:= DtmDistribuicaoDFe.FDConnection1;
FDQuery.SQL.Text:= 'UPDATE OR INSERT INTO CERTIFICADOS_DFE (EMPRESA, CERT_ARQUIVO, CERT_ID, '+
'CERT_CERTIFICADORA, CERT_VENCIMENTO, CERT_SERIAL, CERT_RAZAOSOCIAL, CERT_CNPJ, CERT_SENHA) '+
'VALUES (:EMPRESA, :CERT_ARQUIVO, :CERT_ID, :CERT_CERTIFICADORA, :CERT_VENCIMENTO, :CERT_SERIAL, '+
':CERT_RAZAOSOCIAL, :CERT_CNPJ, :CERT_SENHA )';
FDQuery.ParamByName('EMPRESA').AsString:= vIDEmpresa;
FDQuery.ParamByName('CERT_ARQUIVO').LoadFromFile(UniServerModule.LocalCachePath + 'cert.pfx', ftblob );
FDQuery.ParamByName('CERT_ID').AsString := ACBrNFe1.SSL.DadosCertificado.ThumbPrint;
FDQuery.ParamByName('CERT_CERTIFICADORA').AsString := ACBrNFe1.SSL.DadosCertificado.Certificadora;
FDQuery.ParamByName('CERT_VENCIMENTO').AsDateTime := ACBrNFe1.SSL.DadosCertificado.DataVenc;
FDQuery.ParamByName('CERT_SERIAL').AsString := ACBrNFe1.SSL.DadosCertificado.NumeroSerie;
FDQuery.ParamByName('CERT_RAZAOSOCIAL').AsString := ACBrNFe1.SSL.DadosCertificado.RazaoSocial;
FDQuery.ParamByName('CERT_CNPJ').AsString := FormatarCNPJ(ACBrNFe1.SSL.DadosCertificado.CNPJ);
FDQuery.ParamByName('CERT_SENHA').AsString := dm.Crip.TextToCriptoHex(vSenhaCertificado);
FDQuery.ExecSQL;
finally
FDQuery.Free;
end;
END
ELSE
uniMENSAGEM('Arquivo do certificado está inválido ou a senha não está correta, tente novamente.', mtError);
FINALLY
MS.Free;
END;
Alguém já passou por isso, alguma dica?
Agradeço!!