Club Delphi  
    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 10-11-2020
juramisa juramisa is offline
Miembro
 
Registrado: abr 2007
Posts: 54
Poder: 19
juramisa Va por buen camino
Es lo que he hecho, les he mandado el fichero, tiene que ser algo de las validaciones. Yo pensaba que en el fichero de respuesta vendrían los errores.
El ticketbai va como sigue:

- <Software>
<LicenciaTBAI>TBAIPRUEBA</LicenciaTBAI>
- <EntidadDesarrolladora>
<NIF>14xxxxxxxx</NIF>
</EntidadDesarrolladora>
<Nombre>FACT01</Nombre>
<Version>1.0.0.0</Version>
</Software>
El número de dispositivo no era ya obligatorio. De todas formas esperemos que me contestan. Ya os contaré.

Me entran dudas del GZip, si lo hago adecuadamente, que herramienta usaís?. A ver si es un problema del fichero enviado.

Gracias
Responder Con Cita
  #2  
Antiguo 10-11-2020
Avatar de elcharlie
elcharlie elcharlie is offline
Miembro
 
Registrado: mar 2013
Ubicación: Bilbao
Posts: 192
Poder: 13
elcharlie Va por buen camino
Cita:
Empezado por juramisa Ver Mensaje
Es lo que he hecho, les he mandado el fichero, tiene que ser algo de las validaciones. Yo pensaba que en el fichero de respuesta vendrían los errores.
El ticketbai va como sigue:

- <Software>
<LicenciaTBAI>TBAIPRUEBA</LicenciaTBAI>
- <EntidadDesarrolladora>
<NIF>14xxxxxxxx</NIF>
</EntidadDesarrolladora>
<Nombre>FACT01</Nombre>
<Version>1.0.0.0</Version>
</Software>
El número de dispositivo no era ya obligatorio. De todas formas esperemos que me contestan. Ya os contaré.

Me entran dudas del GZip, si lo hago adecuadamente, que herramienta usaís?. A ver si es un problema del fichero enviado.

Gracias

yo uso la ZLib
http://docwiki.embarcadero.com/CodeE...press_(Delphi))
Responder Con Cita
  #3  
Antiguo 10-11-2020
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.130
Poder: 23
keys Va por buen camino
Cita:
Empezado por juramisa Ver Mensaje
Es lo que he hecho, les he mandado el fichero, tiene que ser algo de las validaciones. Yo pensaba que en el fichero de respuesta vendrían los errores.
El ticketbai va como sigue:

- <Software>
<LicenciaTBAI>TBAIPRUEBA</LicenciaTBAI>
- <EntidadDesarrolladora>
<NIF>14xxxxxxxx</NIF>
</EntidadDesarrolladora>
<Nombre>FACT01</Nombre>
<Version>1.0.0.0</Version>
</Software>
El número de dispositivo no era ya obligatorio. De todas formas esperemos que me contestan. Ya os contaré.

Me entran dudas del GZip, si lo hago adecuadamente, que herramienta usaís?. A ver si es un problema del fichero enviado.

Gracias
El numero de dispositivo no es obligatorio, pero su sistema esta dando error si lo envías sin rellenar y además el error no lo retorna en el fichero de respuesta, sino que n o retorna nada.

Yo los comprimo conun componente de los secureblackbox TsbxArchiveWriter.

Un Saludo.
Responder Con Cita
  #4  
Antiguo 10-11-2020
juramisa juramisa is offline
Miembro
 
Registrado: abr 2007
Posts: 54
Poder: 19
juramisa Va por buen camino
Vale me han respondido lo siguiente

Hemos revisado el fichero que nos han adjuntado y hemos visto que en la codificación del TicketBAI en Base64 le sobran los primeros caracteres que indico con fondo amarillo:

<TicketBai>77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPFQ6VGlja2V0QmFpIHht

Muevo el fichero a "https://www.base64encode.org/" por ejemplo y me da lo mismo. Teneís alguna explicación a esto?.
Responder Con Cita
  #5  
Antiguo 11-11-2020
juramisa juramisa is offline
Miembro
 
Registrado: abr 2007
Posts: 54
Poder: 19
juramisa Va por buen camino
Buenos días,

Ayer lo sospechaba, y hoy me lo han confirmado.

Hemos visto que el fichero xml, que está dentro del fichero gz que nos han enviado, tiene la codificación UTF-8 con BOM cuando debería ser UTF-8:


Y claro esos caracteres iniciales al convertir el TicketBai a base64 son por lo mismo. ¿Vosotros como realizáis la grabación de los XML en UTF-8 solamente? sin BOM.

Gracias
Responder Con Cita
  #6  
Antiguo 11-11-2020
juramisa juramisa is offline
Miembro
 
Registrado: abr 2007
Posts: 54
Poder: 19
juramisa Va por buen camino
Buenos días

Ya está todo solucionado, hasta la siguiente.

Si alguien más tiene el mismo problema os cuento como lo he solucionado. Rebuscando por internet he encontrado este código.

Código Delphi [-]
interface

  procedure SaveAsUTF8(const Fichero: string; Data: TStrings);

type
  TUTF8NoBOMEncoding = class(TUTF8Encoding)
  public
    function GetPreamble: TBytes; override;
  end;

implementation

function TUTF8NoBOMEncoding.GetPreamble: TBytes;
begin
  SetLength(Result, 0);
end;

  procedure SaveAsUTF8(const Fichero: string; Data: TStrings);
  var
    fs: TFileStream;
    vStreamWriter: TStreamWriter;
    Enc : TUTF8NoBOMEncoding;
  begin
    fs := TFileStream.Create(Fichero, fmCreate);
    try
      Enc := TUTF8NoBOMEncoding.Create;
//      vStreamWriter := TStreamWriter.Create(fs, TEncoding.UTF8);
      vStreamWriter := TStreamWriter.Create(fs, Enc);
      try
        vStreamWriter.Write(Data.Text);
      finally
        vStreamWriter.Free;
      end;
    finally
      fs.free;
      Enc.Free;
    end;

  end;

En el caso del TicketBai tras la firma lo vuelvo a cargar, y lo vuelvo a guardar.

Código Delphi [-]
      result := LoadXMLDocument(mi_fichero);
   // result: IXMLDocument

      SaveAsUTF8(mi_fichero, result.XML);

En el caso del LROE lo guardo antes de generar el GZip.

Código Delphi [-]
      
      SaveAsUTF8(mi_fichero, result.XML);

Resultado, envío correcto.

Muchas gracias a todos por vuestra ayuda.
Responder Con Cita
  #7  
Antiguo 11-11-2020
juramisa juramisa is offline
Miembro
 
Registrado: abr 2007
Posts: 54
Poder: 19
juramisa Va por buen camino
Alternativa NetHttpClient

Buenos días

Os presento una alternativa a NetHttpClient, quien tiene los componentes de SecureBlackBox 2020 DE.

Código Delphi [-]
var
  CertificateStorage: TsbxCertificateStorage;
  cert : TsbxCertificate;
  otros_parametros : string;
  encontrado : Boolean;
  Cuerpo_Mensaje : TFileStream;

  Entry: TSBxArchivedFile;



procedure....
      // Fichero LROE  GZip
      Cuerpo_Mensaje := TFileStream.Create(FicheroComprimido, fmOpenRead);
      // Cargar mensaje json
      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, IntToStr(ejercicio_presentacion.Value));
      // Selección del cerificado
      sbxHTTPClient1.TLSSettings.AutoValidateCertificates :=   True;
      CertificateStorage := TsbxCertificateStorage.Create(nil);
      if CertificateStorage.Opened then
         CertificateStorage.Close(True);
      CertificateStorage.Open('system://currentuser@localhost/?store=MY');
      encontrado := False;
      sbxHTTPClient1.ClientChain.Clear;
      for i := 0 to CertificateStorage.Certificates.Count - 1 do
      begin
        cert := CertificateStorage.Certificates[i];
        if bintostr(Cert.SerialNumber) = mi_certificadoID.Caption then
        begin
          sbxHTTPClient1.ClientChain.Add(cert);
          encontrado := True;
        end;
      end;
      if not encontrado then
      begin
        Application.MessageBox('Firma no encontrada',
          'Proceso de firma', MB_OK + MB_ICONWARNING
          + MB_DEFBUTTON2);
        Exit;
      end;
      // Carga parámetros cabecera   
      sbxHTTPClient1.RequestParameters.ContentType       := el_Content_Type;
      otros_parametros := 'Accept-Encoding: '             + el_accept_Encoding              + #13#10
                        + 'Content-Encoding: '            + el_Content_Encoding             + #13#10
                        + 'eus-bizkaia-n3-version: '      + el_eus_bizkaia_n3_version       + #13#10
                        + 'eus-bizkaia-n3-content-type: ' + el_eus_bizkaia_n3_content_type  + #13#10
                        + 'eus-bizkaia-n3-data: '         + el_eus_bizkaia_n3_data                  ;
      sbxHTTPClient1.RequestParameters.CustomHeaders := otros_parametros;
      // HTTP
      case rg_Entorno.ItemIndex of
        0: sbxHTTPClient1.PostStream(la_url_pruebas, Cuerpo_Mensaje);
        1: sbxHTTPClient1.PostStream(la_url, Cuerpo_Mensaje);
      end;
      // sbxHTTPClient1.OutputBytes nos devuelve el cuerpo respuesta
      // Guardo el fichero GZIP
      FicheroRespuesta := DMBatu.CDSEnvc.FieldByName('EN070').AsString +'.gz';
      GuardarRespuesta(FicheroRespuesta,sbxHTTPClient1.OutputBytes);
      // Descomprimo el fichero GZIP
      if sbxArchiveReader1.Opened then
         sbxArchiveReader1.Close;

      sbxArchiveReader1.Open(Integer(aftGzip), FicheroRespuesta);

      for i := 0 to sbxArchiveReader1.Files.Count - 1 do
      begin
        Entry := sbxArchiveReader1.Files[i];
        sbxArchiveReader1.Extract(Entry.Path, ExtractFilePath(DMBatu.CDSEnvc.FieldByName('EN070').AsString), false);
        Application.ProcessMessages;
        RenameFile(ExtractFilePath(DMBatu.CDSEnvc.FieldByName('EN070').AsString) + Entry.Path, DMBatu.CDSEnvc.FieldByName('EN070').AsString);
        Application.ProcessMessages;
      end;
      // Tratamiento de la respuesta
      XMLDocument1 := TXMLDocument.Create(nil);

      XMLDocument1.Active := False;
      XMLDocument1.XML.Clear;
      XMLDocument1.LoadFromFile(DMBatu.CDSEnvc.FieldByName('EN070').AsString);

      XMLDocument1.Active := True;
.......

      procedure GuardarRespuesta(const Fichero: String; Respuesta: TBytes);
      var
        stream: TBytesStream;
      begin
        stream := TBytesStream.Create(Respuesta);
        try
          stream.SaveToFile(Fichero);
        finally
          stream.Free;
        end;
      end;

Última edición por Casimiro Notevi fecha: 11-11-2020 a las 17:12:08.
Responder Con Cita
  #8  
Antiguo 12-11-2020
Avatar de elcharlie
elcharlie elcharlie is offline
Miembro
 
Registrado: mar 2013
Ubicación: Bilbao
Posts: 192
Poder: 13
elcharlie Va por buen camino
Cita:
Empezado por juramisa Ver Mensaje
Buenos días

Os presento una alternativa a NetHttpClient, quien tiene los componentes de SecureBlackBox 2020 DE.
Gracias por el aporte.
Un pregunta, de esta manera, ¿ya no te da el mensaje de "Error sending data: (12030) La conexión con el servidor finalizó anormalmente"?
Es por curiosidad...
Un saludo.
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 3706 Hace 2 Semanas 09:38:43
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:06:38.


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