Ver Mensaje Individual
  #1198  
Antiguo 24-05-2017
PepCat PepCat is offline
Miembro
 
Registrado: mar 2017
Posts: 96
Reputación: 8
PepCat Va por buen camino
Cita:
Empezado por keys Ver Mensaje
Los envíos a la hacienda los estoy realizando con CAPICOM y los objetos HTTPRIO, es decir el certificado se está indicando de esta forma. Si tienes un certificado que pide clave, el sistema pide clave por cada fichero que se envía.

¿Alguien conoce alguna forma de indicarle esa clave al sistema para que no la pida cada vez que se hace un envío?, es decir pedirle la clave al usuario y previamente a hacer el envío y así no se la pida el sistema cada vez.
Yo también utilizo CAPICOM pero el certificado lo cargo desde un fichero, de esta forma al usuario no se le pide nada, aparte de que tampo hace falta tener el certificado cargado en windows. Ejemplo:

Código Delphi [-]
procedure SetCertificate(const FileName, Password: string; var Data: Pointer);
var
  Cert : ICertificate2;
  CertContext : ICertContext;
  PCertContext : PCCERT_CONTEXT;
begin
  try
    Cert := CoCertificate.Create;
  except
    on E: EOleSysError  do
      raise Exception.Create('CAPICOM.DLL is not registered')
  end;

  Cert.Load(FileName, Password, CAPICOM_KEY_STORAGE_EXPORTABLE, CAPICOM_LOCAL_MACHINE_KEY);
  CertContext := Cert as ICertContext;
  CertContext.Get_CertContext(Integer(PCertContext));
  if InternetSetOption(Data, INTERNET_OPTION_CLIENT_CERT_CONTEXT, PCertContext, Sizeof(CERT_CONTEXT)) = False then
    raise Exception.Create ( 'Error setting "' + FileName + '" certificate in web service' )
end;

procedure TfEmitidas.emitidasHTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp; Data: Pointer);
begin
  SetCertificate('c:\certificados\certificado1.p12', '1234', Data);
end;
Responder Con Cita