Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Colaboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-01-2021
Avatar de elcharlie
elcharlie elcharlie is offline
Miembro
 
Registrado: mar 2013
Ubicación: Bilbao
Posts: 193
Poder: 14
elcharlie Va por buen camino
Cita:
Se ha abierto la posibilidad de realizar envíos al entorno de pruebas mediante certificados de dispositivo.

Con carácter previo a la remisión de las anotaciones, se deberán comunicar los datos identificativos de el/los certificados de dispositivo mediante la cumplimentación del formulario electrónico al que se puede acceder en el siguiente enlace: https://www.ebizkaia.eus/es/catalogo...os?procID=1740.



En https://www.batuz.eus/es/documentacion-tecnica dispone de un manual para obtener el número de serie asociado al certificado de dispositivo.



Por otro lado, se ha habilitado igualmente en el entorno de pruebas la anulación de los siguientes subcapítulos:



1.1 - Ingresos con factura con Software garante del LROE de personas físicas y entidades sin personalidad jurídica (modelo 140).
1.1 - Facturas emitidas con Software garante del LROE de personas jurídicas y de contribuyentes no residentes con establecimiento permanente (modelo 240).



Las consultas o incidencias relacionadas con el entorno de pruebas se deben dirigir por escrito a [email protected].
Esto han enviado desde Batuz, por si alguien le interesa hacer las pruebas con los certificados de dispositivos.
Responder Con Cita
  #2  
Antiguo 28-01-2021
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 671
Poder: 18
espinete Va camino a la fama
Me respondo a mí mismo...

Las respuestas al envío de la petición REST vienen en el Header de la respuesta. Concretamente en estos valores:

Código Delphi [-]
    if AResponse.ContainsHeader('eus-bizkaia-n3-mensaje-respuesta') then
        memo2.Lines.Append(AResponse.HeaderValue['eus-bizkaia-n3-mensaje-respuesta']);

    if AResponse.ContainsHeader('eus-bizkaia-n3-codigo-respuesta') then
        memo2.Lines.Append(AResponse.HeaderValue['eus-bizkaia-n3-codigo-respuesta']);

    if AResponse.ContainsHeader('eus-bizkaia-n3-tipo-respuesta') then
        memo2.Lines.Append(AResponse.HeaderValue['eus-bizkaia-n3-tipo-respuesta']);

Ahora ya consigo ver los distintos motivos de error en los envíos.
Responder Con Cita
  #3  
Antiguo 28-01-2021
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 671
Poder: 18
espinete Va camino a la fama
Me devuelve "Error al descomprimir el fichero.Not in GZIP format", así que me temo que el algoritmo para comprimir en GZIP no es válido.

Buscando en StackOverflow encontré esta variante que parece que sí funciona:

Código Delphi [-]
procedure comprimir(origen,destino:string);
var LInput, LOutput: TFileStream;
    LZip: TZCompressionStream;
begin
    { Create the Input, Output, and Compressed streams. }
    LInput := TFileStream.Create(origen, fmOpenRead);
    LOutput := TFileStream.Create(destino, fmCreate);
    LZip := TZCompressionStream.Create(LOutput, zcDefault, 15 + 16);

    { Compress data. }
    LZip.CopyFrom(LInput, LInput.Size);

    { Free the streams. }
    LZip.Free;
    LInput.Free;
    LOutput.Free;
end;
Responder Con Cita
  #4  
Antiguo 28-01-2021
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 671
Poder: 18
espinete Va camino a la fama
Después de corregir otros errores en el envío (certificado, modelo, etc.) y de adaptar el envío tanto para el 140 como para el 240, etc. ahora obtengo el siguiente error

El XML no cumple el esquema.[Linea:1 Columna:180] Error:cvc-complex-type.2.4.a: Invalid content was found starting with element '{"https://www.batuz.eus/fitxategiak/batuz/LROE/esquemas/LROE_PJ_240_1_1_FacturasEmitidas_ConSG_AltaPeticion_V1_0_1.xsd":Cabecera}'. One of '{Cabecera}' is expected.

Si comparo los XML generados por mi aplicación, con los XML de ejemplo que proporciona Bizkaia, la única diferencia que veo es que los de Bizkaia empiezan así:

<lrpjfecsgap:LROEPJ240FacturasEmitidasConSGAltaPeticion xmlns:lrpjfecsgap="https://www.batuz.eus/fitxategiak/batuz/LROE/esquemas/LROE_PJ_240_1_1_FacturasEmitidas_ConSG_AltaPeticion_V1_0_1.xsd">
<Cabecera>
<Modelo>240</Modelo>
...

...y el mío empieza así...

<LROEPJ240FacturasEmitidasConSGAltaPeticion xmlns="https://www.batuz.eus/fitxategiak/batuz/LROE/esquemas/LROE_PJ_240_1_1_FacturasEmitidas_ConSG_AltaPeticion_V1_0_1.xsd">
<Cabecera>
<Modelo>240</Modelo>
...

¿Alguien más ha tenido este problema? Si la causa es esa... ¿hay forma de forzar a añadir ese prefijo en los XML o hay que hacerlo manualmente modificando directamente los strings antes de guardar el xml?
Responder Con Cita
  #5  
Antiguo 28-01-2021
Avatar de elcharlie
elcharlie elcharlie is offline
Miembro
 
Registrado: mar 2013
Ubicación: Bilbao
Posts: 193
Poder: 14
elcharlie Va por buen camino
Cita:
Empezado por espinete Ver Mensaje
Me devuelve "Error al descomprimir el fichero.Not in GZIP format", así que me temo que el algoritmo para comprimir en GZIP no es válido.

Buscando en StackOverflow encontré esta variante que parece que sí funciona:

Código Delphi [-]
procedure comprimir(origen,destino:string);
var LInput, LOutput: TFileStream;
    LZip: TZCompressionStream;
begin
    { Create the Input, Output, and Compressed streams. }
    LInput := TFileStream.Create(origen, fmOpenRead);
    LOutput := TFileStream.Create(destino, fmCreate);
    LZip := TZCompressionStream.Create(LOutput, zcDefault, 15 + 16);

    { Compress data. }
    LZip.CopyFrom(LInput, LInput.Size);

    { Free the streams. }
    LZip.Free;
    LInput.Free;
    LOutput.Free;
end;
Yo creo que lo estas haciendo bien, asi lo hago yo.
Responder Con Cita
  #6  
Antiguo 29-01-2021
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 671
Poder: 18
espinete Va camino a la fama
Hola, sí, eso ya estaba resuelto. El problema que tengo ahora es el del mensaje posterior:

El XML no cumple el esquema.[Linea:1 Columna:180] Error:cvc-complex-type.2.4.a: Invalid content was found starting with element '{"https://www.batuz.eus/fitxategiak/batuz/LROE/esquemas/LROE_PJ_240_1_1_FacturasEmitidas_ConSG_AltaPeticion_V1_0_1.xsd":Cabecera}'. One of '{Cabecera}' is expected.

No entiendo por qué dice que no tiene Cabecera si el XML es idéntico, salvo que el XML "original" incluye el prefijo "lrpjfecsgap"
Responder Con Cita
  #7  
Antiguo 29-01-2021
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.238
Poder: 25
keys Va por buen camino
Es por que delphi no genera las cabeceras como tiene que ser o no he encontrado la forma de hacerlo.

Antes de enviar hay que rehacer el fichero.

Código:
 Para el 140

FicheroCorregir := TStringList.Create;
      FicheroCorregir.LoadFromFile(FicheroDestino);

      FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text, '<LROEPF140IngresosConFacturaConSGAltaPeticion xmlns="https://www.batuz.eus/fitxategiak/batuz/LROE/esquemas/LROE_PF_140_1_1_Ingresos_ConfacturaConSG_AltaPeticion_V1_0_1.xsd">', '<lrpficfcsgap:LROEPF140IngresosConFacturaConSGAltaPeticion xmlns:lrpficfcsgap="https://www.batuz.eus/fitxategiak/batuz/LROE/esquemas/LROE_PF_140_1_1_Ingresos_ConfacturaConSG_AltaPeticion_V1_0_1.xsd">');
      FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text, '</LROEPF140IngresosConFacturaConSGAltaPeticion>', '</lrpficfcsgap:LROEPF140IngresosConFacturaConSGAltaPeticion>');
     
      System.SysUtils.DeleteFile(FicheroDestino);
     
      FicheroCorregir.SaveToFile(FicheroDestino);
Código:
Para el 240 
FicheroCorregir := TStringList.Create;
      FicheroCorregir.LoadFromFile(FicheroDestino);
      FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text, '<LROEPJ240FacturasEmitidasConSGAltaPeticion xmlns="https://www.batuz.eus/fitxategiak/batuz/LROE/esquemas/LROE_PJ_240_1_1_FacturasEmitidas_ConSG_AltaPeticion_V1_0_1.xsd">','<lrpjfecsgap:LROEPJ240FacturasEmitidasConSGAltaPeticion xmlns:lrpjfecsgap="https://www.batuz.eus/fitxategiak/batuz/LROE/esquemas/LROE_PJ_240_1_1_FacturasEmitidas_ConSG_AltaPeticion_V1_0_1.xsd">');
      FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text, '</LROEPJ240FacturasEmitidasConSGAltaPeticion>','</lrpjfecsgap:LROEPJ240FacturasEmitidasConSGAltaPeticion>');
      
      System.SysUtils.DeleteFile(FicheroDestino);
      
      FicheroCorregir.SaveToFile(FicheroDestino);
Esto antes de comprimir y enviarlo.
Responder Con Cita
  #8  
Antiguo 29-01-2021
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 671
Poder: 18
espinete Va camino a la fama
Gracias,. keys.

Estuve revisando el XML Data Binding a ver si había forma de que fuera automático, pero no. Haciendo el cambio manualmente ya no me da ese error.

Me dio otro error relacionado con el orden en el que van los campos en el XML. Al parecer si no están en el orden esperado (Modelo, Capítulo, Subcapitulo, Operacion...) dice que se ha encontrado un campo pero esperaba otro. Se pone tiquismiquis el señorito, pero bueno.

Después de colocarlo todo en el orden correcto, ahora obtengo un error que me hace mucha menos gracia que todos los anteriores:

B4_1000002 - Todos los registros incluidos en la petición son incorrectos.

Pues menuda gracia.

Me ocurre con el 240 y con el 140. Este es el código que utilizo para generar y firmar el XML:

Código Delphi [-]
    f := NewLROEPJ240FacturasEmitidasConSGAltaPeticion;

    f.Cabecera.Modelo:='240';
    f.Cabecera.Capitulo:='1';
    f.Cabecera.SubCapitulo:='1.1';
    f.Cabecera.Operacion:='A00';  //A00 = Alta / M00 = Modificación
    f.Cabecera.Version:='1.0';
    f.Cabecera.Ejercicio:=2021;

    f.Cabecera.ObligadoTributario.NIF:='XXXXXXXX';
    f.Cabecera.ObligadoTributario.ApellidosNombreRazonSocial:='XXXXXXXXXXXXXXXX';

    with f.FacturasEmitidas.Add do
    begin
        TicketBai := EncodeFileToBase64('firmado.xml');
    end;

    XMLDocument2.XML.Text:=f.XML;
    xmldocument2.Active:=True;
    xmldocument2.SaveToFile('lroe.xml');

    FicheroCorregir := TStringList.Create;
    FicheroCorregir.LoadFromFile('lroe.xml');
    FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text, '','');
    FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text, '','');
    FicheroCorregir.SaveToFile('lroe.xml');

    comprimir('lroe.xml','archivo.gz');

Y este el del envío:

Código Delphi [-]
    RequestBody := TFileStream.Create('archivo.gz', fmOpenRead);

    NetHTTPClient1.SecureProtocols := [THTTPSecureProtocol.TLS12];
    NetHTTPClient1.CustomHeaders['Accept-Encoding'] := 'gzip';
    NetHTTPClient1.CustomHeaders['Content-Encoding'] := 'gzip';
    NetHTTPClient1.CustomHeaders['Content-Type'] := 'application/octet-stream';
    NetHTTPClient1.CustomHeaders['eus-bizkaia-n3-version'] := '1.0';
    NetHTTPClient1.CustomHeaders['eus-bizkaia-n3-content-type'] := 'application/xml';

    //Formamos los parametros json de entrada
        json :=  f_cabecera_LROE('LROE', //concepto
                                 '1.1',  //apartado (1.1 = Ingreso con Facturas con Software Garante / 2 = Facturas Recibidas
                                 'XXXXXXXX',  //NIF
                                 'XXXXXXXXXXXXXXXXXX',   //Nombre o Razón Social
                                 '',   //Primer Apellido
                                 '',   //Segundo Apellido
                                 '240',   //140 o 240
                                 '2021'); //Ejercicio

    NetHTTPClient1.CustomHeaders['eus-bizkaia-n3-data'] := json;
    AResponse := NetHTTPClient1.Post('https://pruesarrerak.bizkaia.eus/N3B4000M/aurkezpena',RequestBody);


¿En serio? TODOS los registros incluidos en la petición son incorrectos???!?!?

Obviamente en el xml y en el envío no he puesto XXXXXXXX sino los datos correctos, que coinciden con el del certificado digital que estoy usando.

¿Alguien más ha tenido este problema? ¿A qué campos se refiere exactamente?
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 3716 19-01-2026 20:01:34
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 01:11:07.


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