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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-10-2020
juramisa juramisa is offline
Miembro
 
Registrado: abr 2007
Posts: 54
Poder: 18
juramisa Va por buen camino
Petición al servicio

Buenas tardes,

Os pido ayuda para el envío del fichero LROE, siempre me da error desconocido.
Estoy usando los componente TNetHTTPRequest y TNetHTTPClient, pero si alguien me da otra opción más sencilla y que funcione, estoy dispuesto a cambiar.

Os expongo el código a ver si alguien puede ayudarme, que hago mal.

en TNetHTTPClient cargo el cerificado:

Código Delphi [-]
procedure TfrmEnvelm.NetHTTPClient1NeedClientCertificate(const Sender: TObject; const ARequest: TURLRequest; const ACertificateList: TCertificateList; var AnIndex: Integer);
var
  i: Integer;
begin
  for i := 0 to ACertificateList.Count - 1 do
  begin

    if SameText(ACertificateList[i].Subject, mi_certificado.Caption) then
    begin
      AnIndex := i;
      break;
    end;
  end;
end;

Genero el fichero XML y lo comprimo en formato gzip.

Código Delphi [-]
    

function TfrmEnvelm.f_cabecera_LROE(mi_con, mi_apa, mi_nif, mi_nrs, mi_ap1, mi_ap2, mi_mode, mi_eje : string): string;
begin
  result := Format('{"con": "%s", "apa": "%s", "inte": {"nif": "%s","nrs": "%s","ap1": "%s","ap2": "%s"},"drs": {"mode": "%s","ejer": "%s"}}', [mi_con, mi_apa, mi_nif, mi_nrs, mi_ap1, mi_ap2, mi_mode, mi_eje]);
end;


var
  Src, Dst: TFileStream;
  ResponseContent: TMemoryStream;
  Encoding: TEncoding;
  ss: TStringStream;
....
    SaveAsUTF8(DMBatu.CDSEnvc.FieldByName('EN050').AsString, el_xml.XML);
    Src := TFileStream.Create(DMBatu.CDSEnvc.FieldByName('EN050').AsString, fmOpenRead);
    try
      Dst := TFileStream.Create(DMBatu.CDSEnvc.FieldByName('EN050').AsString + '.gz', fmCreate);
      try
        MakeGZ(Src, Dst);
      finally
        Dst.Free;
      end;
    finally
      Src.Free;
    end;

Cargo cabecera y cuerpo de https, y realizo la llamada.

Código Delphi [-]
   
      if FileExists(DMBatu.CDSEnvc.FieldByName('EN050').AsString + '.gz') then
      begin
        NetHTTPRequest1.CustomHeaders['Accept-Encoding'] := el_accept_Encoding;
        NetHTTPRequest1.CustomHeaders['Content-Encoding'] := el_Content_Encoding;
        NetHTTPRequest1.CustomHeaders['Content-Type'] := el_Content_Type;
        NetHTTPRequest1.CustomHeaders['eus-bizkaia-n3-version'] := el_eus_bizkaia_n3_version;
        NetHTTPRequest1.CustomHeaders['eus-bizkaia-n3-content-type'] := el_eus_bizkaia_n3_content_type;
        el_eus_bizkaia_n3_data :=  f_cabecera_LROE(el_concepto,
                                                   el_subcapitulo,
                                                   DMBatu.CDSPres.FieldByName('PR020').AsString,
                                                   DMBatu.CDSPres.FieldByName('PR040').AsString,
                                                   DMBatu.CDSPres.FieldByName('PR090').AsString,
                                                   DMBatu.CDSPres.FieldByName('PR100').AsString,
                                                   DMBatu.CDSPres.FieldByName('PR080').AsString,
                                                   txtEjer.Text);
        NetHTTPRequest1.CustomHeaders['eus-bizkaia-n3-data'] := el_eus_bizkaia_n3_data;
        ss := TStringStream.Create('', TEncoding.UTF8);
        ss.Position := 0;
        ss.LoadFromFile(DMBatu.CDSEnvc.FieldByName('EN050').AsString + '.gz');

        NetHTTPRequest1.MethodString := 'POST';
        Memo1.Text := NetHTTPClient1.Post(la_url, ss).ContentAsString(tencoding.UTF8);

Las variables siguientes, se leen de un fichero de configuración:

Código Delphi [-]
    la_url := 'https://sarrerak.bizkaia.eus/aurkezpena';
    el_accept_Encoding := 'gzip';
    el_Content_Encoding := 'gzip';
    el_Content_Type := 'application/octet-stream';
    el_eus_bizkaia_n3_version := '1.0';
    el_eus_bizkaia_n3_content_type := 'application/xml';
    el_Concepto := 'LROE';
   el_subcapitulo := '1.1';
Tengo dudas si el cuerpo debe de estar en hexadecimal.

Estoy abierto a todo, ya no se por donde seguir,
Gracias
Responder Con Cita
  #2  
Antiguo 21-10-2020
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.054
Poder: 22
keys Va por buen camino
Hola a todos.

No te he revisado todo pero vas por buen camino.

El problemaes es que en Bizkaia no han empezado el periodo de prueba de los envíos. Site fijas en la url https://sarrerak.bizkaia.eus/aurkezpena y pinchas te dice que el servidor no esta disponible.

Esa es la dirección de producción, es decir la definitiva. Tienen que publicar la dirección del entorno de pruebas que me imagino que será distinta.

Si tienes que hacer también Gipuzkoa, puedes empezar por ellos que ya tienen el periodo de pruebas de envíos en marcha y es más sencillo.

Un Saludo.
Responder Con Cita
  #3  
Antiguo 21-10-2020
juramisa juramisa is offline
Miembro
 
Registrado: abr 2007
Posts: 54
Poder: 18
juramisa Va por buen camino
Gracias,

Me quitas un gran peso de encima. Estoy mirando Gipuzkoa, no se me da el caso, y es totalmente distinto. En esta hacienda mandan directamente el XML del ticketbai. De todas formas sabes si Bizkaia, ¿ va a habilitar portal de pruebas?. Si no les pongo una consulta, a ver que responden.

Saludos
Responder Con Cita
  #4  
Antiguo 21-10-2020
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.054
Poder: 22
keys Va por buen camino
Si van a habilitar entorno de pruebas. Se supone que en unos días.
Responder Con Cita
  #5  
Antiguo 22-10-2020
juramisa juramisa is offline
Miembro
 
Registrado: abr 2007
Posts: 54
Poder: 18
juramisa Va por buen camino
Buenos días hice la consulta en relación al entorno de pruebas antes de que me respondiera keys, y esta es la respuesta:

Cita:
Kaixo,

A partir de 01/01/2022, las empresas y autónomos sujetos a la normativa de Bizkaia estarán obligadas a la llevanza del libro registro de operaciones económicas (en adelante, LROE) a través de la sede electrónica de la Diputación Foral de Bizkaia, mediante el suministro electrónico de las anotaciones que lo componen.

El suministro electrónico de las anotaciones que componen el LROE se realizará mediante servicios web o, en su caso, a través de los correspondientes formularios electrónicos, todo ello conforme a las especificaciones técnicas y funcionales que se aprueben por Orden Foral del diputado foral de Hacienda y Finanzas.

En el mes de noviembre de 2020 se habilitará el entorno de pruebas de los servicios web del LROE.

Para realizar estas pruebas, no es necesario que la empresa de software se inscriba en el registro de software garante TicketBAI.

Los datos que se reciban dentro de este entorno tendrán exclusivamente el tratamiento de datos de prueba.

El detalle de las condiciones para realizar las pruebas se publicará próximamente en el apartado Documentación técnica de la página web www.batuz.eus.

Les avisaremos de dicha publicación mediante aviso en el apartado Novedades de la página web www.batuz.eus y correo a través de este buzón.
Responder Con Cita
  #6  
Antiguo 04-11-2020
juramisa juramisa is offline
Miembro
 
Registrado: abr 2007
Posts: 54
Poder: 18
juramisa Va por buen camino
Entorno de pruebas

Buenas tardes
Ya se ha puesto en marcha el entorno de pruebas LROE en Bizkaia, estoy probando, y en:

Código Delphi [-]
unit System.Net.HttpClient.Win;

procedure TWinHTTPClient.DoGetClientCertificates(const ARequest: THTTPRequest;
  const ACertificateList: TList);

la aplicación casca, da el terrorífico 'Access violation .....'. Uso uso Delphi 10 Seattle y los componentes TNetHTTPClient y TNetHTTPRequest.
La selección del certificado la realizo en el evento OnNeedClientCertificate,

Código Delphi [-]
procedure Tfrm140CTB.NetHTTPClient1NeedClientCertificate(const Sender: TObject; const ARequest: TURLRequest; const ACertificateList: TCertificateList; var AnIndex: Integer);
var
  i: Integer;
begin
  for i := 0 to ACertificateList.Count - 1 do
  begin

    if  (SameText(ACertificateList[i].Subject, mi_certificado.Caption)) then
    begin
      AnIndex := i;
      break;
    end;
  end;
end;

He puesto una traza al comienzo de este procedimiento, y ni siquiera llega
Si alguien utiliza este sistema, y le funciona, agradecido me eche una mano.
Responder Con Cita
  #7  
Antiguo 05-11-2020
Avatar de elcharlie
elcharlie elcharlie is offline
Miembro
 
Registrado: mar 2013
Ubicación: Bilbao
Posts: 174
Poder: 12
elcharlie Va por buen camino
Cita:
Empezado por juramisa Ver Mensaje
Buenas tardes
Ya se ha puesto en marcha el entorno de pruebas LROE en Bizkaia, estoy probando, y en:

Código Delphi [-]
unit System.Net.HttpClient.Win;

procedure TWinHTTPClient.DoGetClientCertificates(const ARequest: THTTPRequest;
  const ACertificateList: TList);

la aplicación casca, da el terrorífico 'Access violation .....'. Uso uso Delphi 10 Seattle y los componentes TNetHTTPClient y TNetHTTPRequest.
La selección del certificado la realizo en el evento OnNeedClientCertificate,

Código Delphi [-]
procedure Tfrm140CTB.NetHTTPClient1NeedClientCertificate(const Sender: TObject; const ARequest: TURLRequest; const ACertificateList: TCertificateList; var AnIndex: Integer);
var
  i: Integer;
begin
  for i := 0 to ACertificateList.Count - 1 do
  begin

    if  (SameText(ACertificateList[i].Subject, mi_certificado.Caption)) then
    begin
      AnIndex := i;
      break;
    end;
  end;
end;

He puesto una traza al comienzo de este procedimiento, y ni siquiera llega
Si alguien utiliza este sistema, y le funciona, agradecido me eche una mano.

Buenos dias!
yo lo hago mas o menos así, y de momento, ningún problema. No sé cual será tu problema, eso sí, lo estoy haciendo con Delphi 10.3 Rio. Pero yo creo que el problema no está en ese evento, tiene que ser en otra parte

Última edición por elcharlie fecha: 05-11-2020 a las 08:16:45.
Responder Con Cita
Respuesta



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
SII -Nuevo sistema de la Agencia Tributaria española de envío de datos vía Webservice newtron Internet 3565 Hace 1 Semana 11:04:13
Como utilizar la ayuda del nuevo Sistema Operativo gluglu Humor 3 24-09-2007 09:39:05
Aplicacion Agencia De Viajes ArdiIIa Varios 9 20-01-2007 16:49:53
El Vasco Aguirre Al González La Taberna 5 26-05-2006 09:22:28
Microsoft ha lanzado su nuevo sistema operativo DarkByte Humor 0 25-01-2004 09:21:14


La franja horaria es GMT +2. Ahora son las 19:37:30.


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