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 16-07-2021
ARPE1 ARPE1 is offline
Miembro
 
Registrado: nov 2012
Posts: 43
Poder: 0
ARPE1 Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Nosotros hemos tenido este error.
Es debido (al menos en nuetro caso) a problemas en la codificación.
Normalmente en el paso entre la firma del XML y el envío.

Revisad si el contenido de lo que habéis firmado (justo después de firmar) es lo mismo que estáis enviando. Sobre todo revisad si en la razón social o en alguno de las cadenas que enviáis hay caracteres extraños (con acentos, tildes,...).

A veces el resultado del envío lo grabamos en fichero o trabajamos con Streams y sin darnos cuenta la codificación cambia. Revisad entre UTF8, UTF8 BOM y ANSI.

Revisad por ejemplo si estáis utilizando Streams, que la clase TStream en la creación posee opciones de codificación.

Al final nosotros acabamos comparando el contenido en cada paso (Editor Hexadecimal) y nos dimos cuenta de que el character Ó (de la razón social) al realizar la firma con los SBB se estaba cambiando (cofidicación implícita).

NOTA: Ahora estoy probando con esta empresa... .
Hola, estamos intentando enviar el fichero a Guipúzcoa y no hay manera. La factura la graba en el sistema, ya que si volvemos a enviar el mismo fichero nos devuelve que ya está registrada. Pero la primera vez nos retorna error con el siguiente mensaje: "El mensaje ha sido modificado en tránsito o la firma no está bien realizada -- Reference URI="" failed to verify. [src/xml2signatureobj.cpp(315)] - (10606)"
Toda la pinta tiene que es por lo que indicas arriba ya que si enviamos el mismo fichero con la aplicación SOAPUI todo es correcto. Usamos los componentes INDY (versión 10.6) que trae delphi (versión 10.2) para hacer el envío. Al final ¿con qué componentes o de qué manera haces el envío para que no modifique el fichero en el proceso?

Gracias de antemano
Responder Con Cita
  #2  
Antiguo 16-07-2021
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por ARPE1 Ver Mensaje
¿con qué componentes o de qué manera haces el envío para que no modifique el fichero en el proceso?
Aunque el mensaje diga eso, no te fies, no es que los componentes modifiquen el fichero en el envío.
Lo normal es que en algún punto del proceso, desde que generamos el fichero y lo firmamos, hasta que lo enviamos, sin querer estamos modficando la codificación.
A veces simplemente es al usar TStreams o grabar en disco y recuperar.

Revisad los pasos que estáis haciendo desde la firma hasta el envío y si en algún punto la codificación cambia, no porque lo hagáis expresamente, sino porque se esté haciendo sin daros cuenta.

En cuanto a los envíos en los mensajes del foro puedes ver que hay varios componentes que se están utilizando. En este mensaje tienes (en la parte inferior) un resumen de los diferentes componenetes que se usa para enviar:
https://www.clubdelphi.com/foros/sho...&postcount=436

* Opcion1: TNetHTTPClient
* Opción2: TRESTClient + TRESTRequest + TRESTResponse
* Opcion3: TsbxHTTPClient (SecureBlackBox)
* Opción4: Utilizando commandos CURL
* Opción5: Utilizando las Indy + OpenSSL
* ...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 16-07-2021 a las 11:51:10.
Responder Con Cita
  #3  
Antiguo 16-07-2021
skatologiko skatologiko is offline
Miembro
 
Registrado: jul 2021
Posts: 27
Poder: 0
skatologiko Va por buen camino
¿Alguien puede poner un ejemplo de algún archivo XML de anulación?
Responder Con Cita
  #4  
Antiguo 16-07-2021
tejano tejano is offline
Miembro
 
Registrado: dic 2020
Posts: 129
Poder: 4
tejano Va por buen camino
Cita:
Empezado por skatologiko Ver Mensaje
¿Alguien puede poner un ejemplo de algún archivo XML de anulación?
Es un proceso algo similar a la emisión, crear la cabecera, codificar el xml del archivo ticketbai de la emisión en base 64, comprimirlo en gz y enviar la anulación.
Responder Con Cita
  #5  
Antiguo 16-07-2021
tejano tejano is offline
Miembro
 
Registrado: dic 2020
Posts: 129
Poder: 4
tejano Va por buen camino
Cita:
Empezado por tejano Ver Mensaje
Es un proceso algo similar a la emisión, crear la cabecera, codificar el xml del archivo ticketbai de la emisión en base 64, comprimirlo en gz y enviar la anulación.
Perdona, se me olvidaba el fichero de anulación, esta firmado, hay que firmarlo al igual que el de la emisión.
Archivos Adjuntos
Tipo de Archivo: rar Ejemplo_Anulacion_TicketBAI_79732487C_A2022_0399.rar (4,4 KB, 16 visitas)
Responder Con Cita
  #6  
Antiguo 16-07-2021
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por skatologiko Ver Mensaje
¿Alguien puede poner un ejemplo de algún archivo XML de anulación?

En los ejemplos de Batuz creo que tienes varios XML de anulación. Los ficheros enviados y las diferentes respuestas, tanto para TicketBAI como para Batuz.
https://www.batuz.eus/fitxategiak/Ba...os/Ejemplos.7z
Archivos Adjuntos
Tipo de Archivo: zip Ejemplos anulaciones TBi-BATUZ.zip (28,4 KB, 21 visitas)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 16-07-2021
ARPE1 ARPE1 is offline
Miembro
 
Registrado: nov 2012
Posts: 43
Poder: 0
ARPE1 Va por buen camino
¡Qué rapidez! Gracias.

Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Lo normal es que en algún punto del proceso, desde que generamos el fichero y lo firmamos, hasta que lo enviamos, sin querer estamos modficando la codificación.
A veces simplemente es al usar TStreams o grabar en disco y recuperar.

Revisad los pasos que estáis haciendo desde la firma hasta el envío y si en algún punto la codificación cambia, no porque lo hagáis expresamente, sino porque se esté haciendo sin daros cuenta.
Hemos probado a enviar el fichero firmado generado directamente con funciones como:
Código Delphi [-]
IdHTTP1.Post(URL, SourceFile, ResponseStream);
o esta
Código Delphi [-]
sbxHTTPClient1.PostFile(URL, FileName);

En teoría así evitamos lo que comentas de cambio de codificaciones al cargar el fichero con Streams y compañía. El resultado es el mismo. Lo sorprendente es que si ese fichero lo enviamos con el programa SoapUI lo acepta sin problemas. Hemos "intentado" crear un LOG con los datos que se envían y comparado byte a byte con el nuestro y son idénticos.

Cita:
En cuanto a los envíos en los mensajes del foro puedes ver que hay varios componentes que se están utilizando. En este mensaje tienes (en la parte inferior) un resumen de los diferentes componenetes que se usa para enviar:
https://www.clubdelphi.com/foros/sho...&postcount=436
Hemos probado todas las opciones y no hay manera, cada una nos falla en un punto diferente. Con la que más hemos conseguido es con las INDY del propio Delphi.

Gracias de nuevo de antemano.
Responder Con Cita
  #8  
Antiguo 16-07-2021
sEngine sEngine is offline
Miembro
 
Registrado: jul 2021
Posts: 53
Poder: 3
sEngine Va por buen camino
Asegurate de enviarlo asi



Código Delphi [-]
idhttp1.Request.ContentType := 'application/xml; charset=utf-8"';


Cita:
Empezado por ARPE1 Ver Mensaje
¡Qué rapidez! Gracias.


Hemos probado a enviar el fichero firmado generado directamente con funciones como:
Código Delphi [-]IdHTTP1.Post(URL, SourceFile, ResponseStream);

o esta
Código Delphi [-]sbxHTTPClient1.PostFile(URL, FileName);


En teoría así evitamos lo que comentas de cambio de codificaciones al cargar el fichero con Streams y compañía. El resultado es el mismo. Lo sorprendente es que si ese fichero lo enviamos con el programa SoapUI lo acepta sin problemas. Hemos "intentado" crear un LOG con los datos que se envían y comparado byte a byte con el nuestro y son idénticos.


Hemos probado todas las opciones y no hay manera, cada una nos falla en un punto diferente. Con la que más hemos conseguido es con las INDY del propio Delphi.

Gracias de nuevo de antemano.
Responder Con Cita
  #9  
Antiguo 16-07-2021
ARPE1 ARPE1 is offline
Miembro
 
Registrado: nov 2012
Posts: 43
Poder: 0
ARPE1 Va por buen camino
Sí, así lo tenemos pero no hay manera.

Código Delphi [-]
   ... 
    wXML := 'prueba.xsig';
    wURL := 'https://tbai-prep.egoitza.gipuzkoa.eus/WAS/HACI/HTBRecepcionFacturasWEB/rest/recepcionFacturas/alta';
    idhttp1.Request.ContentType := 'application/xml; charset=utf-8';
    IdHTTP1.Request.BasicAuthentication := False;
    wCer := 'CERT_TEST.pfx';
    IdSSLIOHandlerSocketOpenSSL1.SSLOptions.CertFile := wCer;
    IdSSLIOHandlerSocketOpenSSL1.SSLOptions.KeyFile  := wCer;

    IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode   := sslmClient;
    IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1_2; // sslvSSLv23; //sslvTLSv1_1;
    wML.Position := 0;
    Try
      IdHTTP1.Post(wURL, wXML, wMR);
      wMR.Position := 0;
      memo1.Lines.LoadFromStream(wMR, TEncoding.UTF8);
      label1.Caption := IntToStr(IdHTTP1.Response.ResponseCode) + ': ' + IdHTTP1.Response.ResponseText;
    Except
      On E:Exception do
        memo1.Lines.Add(E.Message);
    End;

Gracias por la respuesta.
Responder Con Cita
  #10  
Antiguo 19-07-2021
batuzail batuzail is offline
Miembro
 
Registrado: feb 2017
Posts: 57
Poder: 8
batuzail Va por buen camino
Cita:
Empezado por ARPE1 Ver Mensaje
Sí, así lo tenemos pero no hay manera.

Código Delphi [-] ... wXML := 'prueba.xsig'; wURL := 'https://tbai-prep.egoitza.gipuzkoa.eus/WAS/HACI/HTBRecepcionFacturasWEB/rest/recepcionFacturas/alta'; idhttp1.Request.ContentType := 'application/xml; charset=utf-8'; IdHTTP1.Request.BasicAuthentication := False; wCer := 'CERT_TEST.pfx'; IdSSLIOHandlerSocketOpenSSL1.SSLOptions.CertFile := wCer; IdSSLIOHandlerSocketOpenSSL1.SSLOptions.KeyFile := wCer; IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode := sslmClient; IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1_2; // sslvSSLv23; //sslvTLSv1_1; wML.Position := 0; Try IdHTTP1.Post(wURL, wXML, wMR); wMR.Position := 0; memo1.Lines.LoadFromStream(wMR, TEncoding.UTF8); label1.Caption := IntToStr(IdHTTP1.Response.ResponseCode) + ': ' + IdHTTP1.Response.ResponseText; Except On E:Exception do memo1.Lines.Add(E.Message); End;


Gracias por la respuesta.
Hola, a mi me pasaba lo mismo me volví loco con la codificación utf-8, al final el problema era que el nombre del cliente tenía un acento, limpia de carácteres un poco raros todos los strings y prueba, yo tras hacer eso puedo enviar sin problema.


Suerte
Responder Con Cita
  #11  
Antiguo 19-07-2021
ARPE1 ARPE1 is offline
Miembro
 
Registrado: nov 2012
Posts: 43
Poder: 0
ARPE1 Va por buen camino
Hola, ya hemos revisado eso también y efectivamente el acento lo tiene la propia firma ("CN=AC Representación") y no somos capaces de quitarlo ya que si lo hacemos entonces salta que el certificado ha sido modificado. Lo hemos intentado limpiar en el evento OnFormatText del componente TElXMLSigner de SecureBlackBox, sin resultado. De hecho por eso empezamos esta pregunta citando el caso de Neftali ya que no solo lo resolvió si no que está probando con una empresa llamada "áéíóúÁÉÍÓÚÜçÇñÑ€~#@". ¡Tela!

Un saludo y gracias por las respuestas.
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 3557 Hace 2 Semanas 17:42:47
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 14:08:35.


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