Cita:
Empezado por keys
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;