Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #11  
Antiguo 29-05-2017
afxe afxe is offline
Miembro
 
Registrado: jul 2004
Ubicación: Malaga-España
Posts: 273
Poder: 20
afxe Va por buen camino
Sobre error de las 13 facturas

Saludos a todos.
Como otros, he tenido el problema del fallo de falta de certificado cuando se envía más de 12 facturas... he releído varias veces este hilo (uffff) y la verdad es que está empezando a ser poco aclaratorio remitirse aquí para encontrar soluciones... Pero he encontrado algo que os puede ser de ayuda. El método que se posteó al principio, y del cual casi todos hemos empezado a tirar, proponía:
Código Delphi [-]
procedure TFrmMain.HTTPRIO_EMIHTTPWebNode1BeforePost(
  const HTTPReqResp: THTTPReqResp; Data: Pointer);
var
  Store : IStore;
  Certs : ICertificates;
  Cert : ICertificate2;
  CertContext : ICertContext;
  PCertContext : PCCERT_CONTEXT;
  V : OleVariant;
  Certificado : String;
const
  INTERNET_OPTION_CLIENT_CERT_CONTEXT = 84;
begin
  V := BUSCAR_CERTIFICADO(cbCertificados.text); // subject del certificado instalado: Nombre de la empresa, no el HASH
  Store := CoStore.Create;
  Store.Open(CAPICOM_CURRENT_USER_STORE, 'MY', CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED );
  Certs := Store.Certificates.Find(CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME, V, False ); // Buscar certificado por nombre
  if Certs.Count > 0 then begin
    Cert := IInterface(Certs.Item[1]) as ICertificate2;
    CertContext := Cert as ICertContext;
    CertContext.Get_CertContext(Integer(PCertContext));
    if InternetSetOption(Data, INTERNET_OPTION_CLIENT_CERT_CONTEXT, PCertContext, Sizeof(CERT_CONTEXT)) = False then
    begin
      ShowMessage( 'Certificado SSL. Algo ha fallado.' );
    end;
  end;
end;

la función BUSCA_CERTIFICADO pasando como parámetro el nombre del certificado te devolvía el GetCertSerialNumber de dicho certificado, el cual hay que usar en otro sitio, pero no aquí, ya que hay que hacer el Store.Certificates.Find pasando el "nombre del certificado" no su SerialNumber, por lo cual debería ser
Código Delphi [-]
V := cbCertificados.Text;
Así se traga todas las facturas que le eches. Esto lo he sacado también de algún ejemplo que han posteado en este hilo, por lo cual quien haya tirado de ese ejemplo estaría trabajando sin problemas, y los estamos tirando desde el inicio, y no habíamos vuelto a repasar esa parte, a la de 13 facturas.... Curiosamente, si enviabas las facturas en bloques de 10, o una a una, todo funcionaba sin problemas, a pesar de que realmente, no estábamos cargando en la Api el certificado. ¿?¿?¿?

No sé si cuando dejemos de estar en pruebas cascará el programa si no cargamos el certificado correctamente.
__________________
Amar al mundo apasionadamente.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TICKET BAI (TicketBAI); Nuevo sistema de la Agencia Tributaria del Pais Vasco keys Internet 4192 Hace 2 Días 16:28:07
AEAT envio de datos vía Webservice problemas con WSDL CelsoO Internet 11 09-10-2019 20:03:41
webService Soap de la Administración Digital Española notific@ apicito Internet 3 31-01-2017 11:25:28
Error en Webservice funcion envio de sms webmasterplc Delphi para la web 5 25-07-2013 20:10:29
Problemas con envío de XML a un WebService davidvamo Internet 1 13-02-2007 15:49:20


La franja horaria es GMT +2. Ahora son las 17:44:37.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi