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
  #1741  
Antiguo 04-10-2021
unomasmas unomasmas is offline
Miembro
 
Registrado: dic 2019
Posts: 112
Poder: 5
unomasmas Va por buen camino
Cita:
Empezado por sEngine Ver Mensaje
Os funciona bien Guipuzkoa? Porque me esta dando esta respuesta:

Código:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:TicketBaiResponse xmlns:ns2="urn:ticketbai:emision">
    <Salida>
        <IdentificadorTBAI>TBAI-XXXXXXX-011021-iUZNIGX8YcMeb-163</IdentificadorTBAI>
        <FechaRecepcion>01-10-2021 16:37:12</FechaRecepcion>
        <Estado>00</Estado>
        <Descripcion>Recibido</Descripcion>
        <Azalpena>Jasota</Azalpena>
        <ResultadosValidacion>
            <Codigo>008</Codigo>
            <Descripcion>org.apache.axis.InternalException: org.apache.axis.ConfigurationException: java.lang.NullPointerException
java.lang.NullPointerException

 ...
</Azalpena>
        </ResultadosValidacion>
        <CSV>TBAIc5c7f01a-7031-4d68-b8b7-3d6498dd5633</CSV>
    </Salida>
</ns2:TicketBaiResponse>
Se envía pero recibo ese cacho de error. Lo reduzco un poco porque era muy largo

008 es Error en verificación de firma. Se necesita corregir el problema para próximos envíos. Se acepta este envío. Tienen un error en el servidor; supongo que lo corregirán (si saben que está devolviendo este mensaje ¿Se lo has dicho?)
Responder Con Cita
  #1742  
Antiguo 04-10-2021
unomasmas unomasmas is offline
Miembro
 
Registrado: dic 2019
Posts: 112
Poder: 5
unomasmas Va por buen camino
Cita:
Empezado por Ramon88 Ver Mensaje
Me sabe fatal preguntar algo que ya está explicado en el foro, pero no logro entenderlo y no me sale.
Calcular el último CRC8...
He visto que si hay '+' '/' da problemas y que para ello hay que pasarlo a URI.


Os explico lo que hago aver si veis donde fallo, por que llevo todo el día dándole vueltas y seguramente lo tenga delante y ya no lo vea...

1- Calculo el primer CRC8 como siempre y me funcionaba.
2- Voy calculando todo y cuando tengo que calcular el ultimo CRC lo codifico a URI, y queda algo asi
Código:
https%3A%2F%2Ftbai.prep.....
Yo creo que sólo hay que codificar la parte del identificador TBAI, no la URL completa. Básicamente, con codificar la parte subrayada sería suficiente, aunque podrías hacerlo con toda la cadena negrita si te resulta más cómodo, pero no habría que incluir la parte inicial de la URL.
Código:
https://tbai.egoitza.gipuzkoa.eus/qr/?id=TBAI-12345678Z-290921-ViPV5QljO4BSh-103&s=R-2021&nf=0003&i=60.50&cr=255
No te fies de los valores. Los crc de este ejemplo son ficticios. Me he inventado una cadena que parece cierta para explicar cómo lo entiendo yo.
Responder Con Cita
  #1743  
Antiguo 04-10-2021
iMia iMia is offline
Miembro
 
Registrado: jul 2010
Posts: 141
Poder: 14
iMia Va por buen camino
Arrow

Cita:
Empezado por unomasmas Ver Mensaje
Yo creo que sólo hay que codificar la parte del identificador TBAI, no la URL completa. Básicamente, con codificar la parte subrayada sería suficiente, aunque podrías hacerlo con toda la cadena negrita si te resulta más cómodo, pero no habría que incluir la parte inicial de la URL.
Código:
https://tbai.egoitza.gipuzkoa.eus/qr/?id=TBAI-12345678Z-290921-ViPV5QljO4BSh-103&s=R-2021&nf=0003&i=60.50&cr=255
No te fies de los valores. Los crc de este ejemplo son ficticios. Me he inventado una cadena que parece cierta para explicar cómo lo entiendo yo.
Exacto, Sólo hay que pasar a URI el código TBAI y sin recalcular el CRC...

p.Ej.

h t t p s://tbai.egoitza.gipuzkoa.eus/qr/?id=TBAI-12345678Z-290921-ViP+5Qlj/4BSh-103&s=R-2021&nf=0003&i=60.50&cr=255

debería ser

h t t p s://tbai.egoitza.gipuzkoa.eus/qr/?id=TBAI-12345678Z-290921-ViP%2B5Qlj%2F4BSh-103&s=R-2021&nf=0003&i=60.50&cr=128

- Sólo se cambian los caracteres + y / del codigo TBAI
- El CRC del código TBAI -> 103, no varía
- El CRC de todo el valor de la dirección se calcula una vez se han cambiado los valores + y / del codigo TBAI

Código Delphi [-]
    strCodigoTBAI := 'TBAI-12345678Z-290921-ViP+5Qlj/4BSh-103';
    strUrlQR := 'https://tbai.egoitza.gipuzkoa.eus/qr/';
    strURI := strUrlQR + '?id=' + TbaiToURI(strCodigoTBAI) + '&s=' + strSerie + '&nf=' strNumeroFactura + '&i=' + strImporteFactura;
    strURI := strURI + '&cr=' + CRC8(strURI);
-
Responder Con Cita
  #1744  
Antiguo 04-10-2021
Noe277 Noe277 is offline
Miembro
 
Registrado: jul 2017
Posts: 72
Poder: 7
Noe277 Va por buen camino
Cita:
Empezado por ermendalenda Ver Mensaje
Lo prometiddo es deuda
Aquí os dejo los calculos de los cifs, españa, extranjero.
Aún me queda una duda, que no me he peleado mucho, pero ya veo codigo fuente flotando en el aire y es hora del descanso.

Resulta que para la comprobación del cif extranjeero se envia el cif dividido en 2 campos;
Por un lado el identificador del pais
Por otro Lado el resto del identificador.
He probado con el identificador del Pais de 2 caracteres, por que resulta que hay de 2 caracteres, de 3 y otro identificadorn úmerico (os mando la tabla de paises en una excell), los probaré todos el Lunes, si probais vosotros antes decidme.
Los Alpha 3 se usan para factura-e, para listados oficiales, modelos y SII Alpha 2


Y una pregunta el Zuzendu de Gipuzkoa sabemos algo de el ?

Última edición por Noe277 fecha: 04-10-2021 a las 09:17:34.
Responder Con Cita
  #1745  
Antiguo 04-10-2021
JoseLeeTo JoseLeeTo is offline
Miembro
 
Registrado: jun 2021
Posts: 65
Poder: 3
JoseLeeTo Va por buen camino
Cita:
Empezado por ermendalenda Ver Mensaje
Lo prometiddo es deuda
Aquí os dejo los calculos de los cifs, españa, extranjero.
Aún me queda una duda, que no me he peleado mucho, pero ya veo codigo fuente flotando en el aire y es hora del descanso.

Resulta que para la comprobación del cif extranjeero se envia el cif dividido en 2 campos;
Por un lado el identificador del pais
Por otro Lado el resto del identificador.
He probado con el identificador del Pais de 2 caracteres, por que resulta que hay de 2 caracteres, de 3 y otro identificadorn úmerico (os mando la tabla de paises en una excell), los probaré todos el Lunes, si probais vosotros antes decidme.

XML Petición ejemplo comproobacion nif ESPAÑA
Código:
<?xml version="1.0" encoding="utf-8"?>
<Spain:Envelope xmlns:Spain="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ELNIF="http://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/burt/jdit/ws/VNifV2Ent.xsd">
     <Spain:Header/>
     <Spain:Body>
         <ELNIF:VNifV2Ent>
             <ELNIF:Contribuyente>
                 <ELNIF:Nif>B63272603</ELNIF:Nif>
                 <ELNIF:Nombre>GOOGLE </ELNIF:Nombre>
             </ELNIF:Contribuyente>
         </ELNIF:VNifV2Ent>
     </Spain:Body>
</Spain:Envelope>
CURL CIF ESPAÑOL:
curl.exe --connect-timeout 60 -m 60 -S -L -d "@C:\[path donde esta ubicado]\EnvioNif.xml" -o C:\[path respuesta]\RespuestaNif.xml --cert-type P12 --cert c:\[path certificado]\Ciudadano.pfx:82388133 https://www1.agenciatributaria.gob.e.../ws/VNifV2SOAP



Ejemplo xml Petición Nif Extranjero
Código:
<?xml version="1.0" encoding="utf-8"?>
<Extranjero:Envelope xmlns:Extranjero='http://schemas.xmlsoap.org/soap/envelope/'>
     <Extranjero:Body>
         <Datos:checkVat xmlns:Datos='urn:ec.europa.eu:taxud:vies:services:checkVat:types'>
             <Datos:countryCode>FR</Datos:countryCode>
             <Datos:vatNumber>08353523418</Datos:vatNumber>
         </Datos:checkVat>
     </Extranjero:Body>
</Extranjero:Envelope>
Curl Extranjero:
curl.exe --connect-timeout 60 -m 60 -S -L -d "@C:\[path donde esta ubicado]\EnvioNif_extranjero.xml" -o C:\[path respuesta]\RespuestaNif_extranjero.xml http://ec.europa.eu/taxation_customs...heckVatService
Ojo: un cif extranjero no es el que empieza por X o Y, esos son cifs extranjeros adaptados a España y hay que comprobarlos según el Curl de España.

Muchísimas gracias por la aportación.
Responder Con Cita
  #1746  
Antiguo 04-10-2021
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 868
Poder: 3
ermendalenda Va por buen camino
Cita:
Empezado por Noe277 Ver Mensaje
Los Alpha 3 se usan para factura-e, para listados oficiales, modelos y SII Alpha 2


Y una pregunta el Zuzendu de Gipuzkoa sabemos algo de el ?
Gracias
Ni idea de Zuzendu
Responder Con Cita
  #1747  
Antiguo 04-10-2021
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 868
Poder: 3
ermendalenda Va por buen camino
Cita:
Empezado por JoseLeeTo Ver Mensaje
Muchísimas gracias por la aportación.
Nada. Es buenísimo. Para los cifs españoles no hace falta que mandes nada en el nombre, te lo devuelve. Y te devuelve el cif, si te equivocas de letra te devuelve la letra correcta.
Para los nifs y nie tienes que mandarle una parte del nombre aproximada y te lo devuelve completo, lo que tienen registrado.
Para los ESN se le quita El Es y se manda la consulta a la de España, son los no residentes (Extranjeros con un nif de alta en españa pero no están en el registro ROI), por ejemplo los chinos de Aliexpress, amazon, muchos laboratorios Europeos...



Para los extranjeros: En el primer campo, siempre los 2 caracteres del país, y en el segundo el código. Y te devuelve nombre y dirección, que además creo que la he conseguido formatear para sacar dirección, ciudad, población y cod. Postal(aunque es un algoritmo aprox creo que vale para la mayoría de los casos, ya que al devolver la dirección en un solo campo hay que hacer inventos. Ten en cta que como devuelve la dirección con saltos de líneas (asc(10)) se puede más o menos formatear.

Un consejo, cuando compreis productos chinos, normalmente el proveedor tiene un ESN o un VIES(Registro en el ROI), muchas veces falso, en ese caso no comprar nada, y podeis comprobarlo con estos CURLS.

Última edición por ermendalenda fecha: 04-10-2021 a las 10:03:32.
Responder Con Cita
  #1748  
Antiguo 04-10-2021
Ramon88 Ramon88 is offline
Miembro
 
Registrado: ago 2021
Posts: 125
Poder: 3
Ramon88 Va por buen camino
Cita:
Empezado por unomasmas Ver Mensaje
Yo creo que sólo hay que codificar la parte del identificador TBAI, no la URL completa. Básicamente, con codificar la parte subrayada sería suficiente, aunque podrías hacerlo con toda la cadena negrita si te resulta más cómodo, pero no habría que incluir la parte inicial de la URL.
Código:
https://tbai.egoitza.gipuzkoa.eus/qr/?id=TBAI-12345678Z-290921-ViPV5QljO4BSh-103&s=R-2021&nf=0003&i=60.50&cr=255
No te fies de los valores. Los crc de este ejemplo son ficticios. Me he inventado una cadena que parece cierta para explicar cómo lo entiendo yo.

He estado probándolo y si cambio los caracteres o lo convierto a uri no me funciona, sin embargo si lo dejo tal cual, si. No entiendo nada...


FUNCIONA:

https://tbai.prep.gipuzkoa.eus/qr/?i...&i=0.00&cr=046


NO FUNCIONA:
https://tbai.prep.gipuzkoa.eus/qr/?i...&i=0.00&cr=046
Responder Con Cita
  #1749  
Antiguo 04-10-2021
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 868
Poder: 3
ermendalenda Va por buen camino
Cita:
Empezado por Ramon88 Ver Mensaje
He estado probándolo y si cambio los caracteres o lo convierto a uri no me funciona, sin embargo si lo dejo tal cual, si. No entiendo nada...


FUNCIONA:

https://tbai.prep.gipuzkoa.eus/qr/?i...&i=0.00&cr=046


NO FUNCIONA:
https://tbai.prep.gipuzkoa.eus/qr/?i...&i=0.00&cr=046
El último crc del último caso está mal.
No puedes poner el mismo. Tienes que calcularlo según lo que has cambiado. Es lioso pero es así
Responder Con Cita
  #1750  
Antiguo 04-10-2021
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 233
Poder: 16
espinete Va camino a la fama
el mensaje ha sido modificado en tránsito o la firma no está bien realizada

Buenas...

Estoy haciendo pruebas con Gipuzkoa y, aunque la factura se envía, me devuelve el error "...el mensaje ha sido modificado en tránsito o la firma no está bien realizada...".

He leído en el foro y en las Preguntas Frecuentes de Gipuzkoa, que puede deberse a problemas en la codificación del archivo antes y después de firmar/enviar, pero he revisado todo y no encuentro dónde puede estar el problema.
Me he asegurado de que todo se guarda como UTF-8 (sin BOM) y el envío se realiza también en UTF-8 (sin BOM).
El nombre de la empresa no contiene ningún carácter especial, ni tildes, etc.

Estos son los pasos que sigo:

1. Creo el XML de la factura a partir del xml data binding:

Código Delphi [-]
        f:=ticketBaiV12.NewTicketBai;
        f.Cabecera.IDVersionTBAI := '1.2';
        .......

2. Cargo el contenido de "f" en un XMLDocument:

Código Delphi [-]
        XMLDocument1.XML.Text:=f.XML;
        xmldocument1.Active:=True;
        xmldocument1.SaveToFile('factura.xml');

3. Realizo las modificaciones de hay que hacer en el XML generado por Delphi, siguiendo los pasos encontrados en el foro:

Código Delphi [-]
        FicheroCorregir := TStringList.Create;
        FicheroCorregir.LoadFromFile('factura.xml');
        FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text, '','');
        FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text,'', '');

        FicheroCorregir.WriteBOM := false;
        FicheroCorregir.SaveToFile('factura.xml', TEncoding.UTF8);

4. Firmo la factura

Código Delphi [-]
    firmante.r_SigPolicyID := 'https://www.gipuzkoa.eus/ticketbai/sinadura';                        
    firmante.r_SigPolicyHash := 'e8daca026eb4a3bbbad85510c3365ec36e2b6b6bdef4f4506300b6d4033a227d';     //6NrKAm60o7u62FUQwzZew24ra2ve9PRQYwC21AM6In0= convertido a HEX 
    firmante.r_SigPolicyURI := 'https://www.gipuzkoa.eus/ticketbai/sinadura';

    FirmarXML('factura.xml',firmante);

5. Vuelvo a cargar el XML ya firmado en un XMLDocument:

Código Delphi [-]
    xmldocument1.Active:=false;
    xmldocument1.LoadFromFile('firmado.xml');
    xmldocument1.Active:=true;

6. Uso el código SaveAsUTF8 encontrado en el foro para guardar el archivo en UTF-8 SIN BOM

Código Delphi [-]
    SaveAsUTF8('firmado.xml', xmldocument1.XML);

7. Ya tenemos el archivo firmado. Ahora hago el envío:

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

    NetHTTPClient1.SecureProtocols := [THTTPSecureProtocol.TLS12];
    NetHTTPClient1.CustomHeaders['Content-Type'] := 'application/xml';
    NetHTTPClient1.CustomHeaders['Charset'] := 'UTF-8';

    AResponse := NetHTTPClient1.Post('https://tbai-prep.egoitza.gipuzkoa.eus/WAS/HACI/HTBRecepcionFacturasWEB/rest/recepcionFacturas/alta',RequestBody);

¿Dónde puede estar el problema? Las facturas se envían (en el entorno de pruebas). De hecho si intento reenviarla, me dice que ya ha sido enviada.

PD: aunque conste como enviada, si voy a la URL del TicketBAI obtenido...

Por ejemplo: https://tbai.prep.gipuzkoa.eus/qr/?i...=100.00&cr=112

...me devuelve "No se ha podido determinar el estado de la factura"
Responder Con Cita
  #1751  
Antiguo 04-10-2021
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 868
Poder: 3
ermendalenda Va por buen camino
Cita:
Empezado por espinete Ver Mensaje
Buenas...

Estoy haciendo pruebas con Gipuzkoa y, aunque la factura se envía, me devuelve el error "...el mensaje ha sido modificado en tránsito o la firma no está bien realizada...".

He leído en el foro y en las Preguntas Frecuentes de Gipuzkoa, que puede deberse a problemas en la codificación del archivo antes y después de firmar/enviar, pero he revisado todo y no encuentro dónde puede estar el problema.
Me he asegurado de que todo se guarda como UTF-8 (sin BOM) y el envío se realiza también en UTF-8 (sin BOM).
El nombre de la empresa no contiene ningún carácter especial, ni tildes, etc.

Estos son los pasos que sigo:

1. Creo el XML de la factura a partir del xml data binding:

Código Delphi [-] f:=ticketBaiV12.NewTicketBai; f.Cabecera.IDVersionTBAI := '1.2'; .......


2. Cargo el contenido de "f" en un XMLDocument:

Código Delphi [-] XMLDocument1.XML.Text:=f.XML; xmldocument1.Active:=True; xmldocument1.SaveToFile('factura.xml');


3. Realizo las modificaciones de hay que hacer en el XML generado por Delphi, siguiendo los pasos encontrados en el foro:

Código Delphi [-] FicheroCorregir := TStringList.Create; FicheroCorregir.LoadFromFile('factura.xml'); FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text, '',''); FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text,'', ''); FicheroCorregir.WriteBOM := false; FicheroCorregir.SaveToFile('factura.xml', TEncoding.UTF8);


4. Firmo la factura

Código Delphi [-] firmante.r_SigPolicyID := 'https://www.gipuzkoa.eus/ticketbai/sinadura'; firmante.r_SigPolicyHash := 'e8daca026eb4a3bbbad85510c3365ec36e2b6b6bdef4f4506300b6d4033a227d'; //6NrKAm60o7u62FUQwzZew24ra2ve9PRQYwC21AM6In0= convertido a HEX firmante.r_SigPolicyURI := 'https://www.gipuzkoa.eus/ticketbai/sinadura'; FirmarXML('factura.xml',firmante);


5. Vuelvo a cargar el XML ya firmado en un XMLDocument:

Código Delphi [-] xmldocument1.Active:=false; xmldocument1.LoadFromFile('firmado.xml'); xmldocument1.Active:=true;


6. Uso el código SaveAsUTF8 encontrado en el foro para guardar el archivo en UTF-8 SIN BOM

Código Delphi [-] SaveAsUTF8('firmado.xml', xmldocument1.XML);


7. Ya tenemos el archivo firmado. Ahora hago el envío:

Código Delphi [-] RequestBody := TFileStream.Create('firmado.xml', fmOpenRead); NetHTTPClient1.SecureProtocols := [THTTPSecureProtocol.TLS12]; NetHTTPClient1.CustomHeaders['Content-Type'] := 'application/xml'; NetHTTPClient1.CustomHeaders['Charset'] := 'UTF-8'; AResponse := NetHTTPClient1.Post('https://tbai-prep.egoitza.gipuzkoa.eus/WAS/HACI/HTBRecepcionFacturasWEB/rest/recepcionFacturas/alta',RequestBody);


¿Dónde puede estar el problema? Las facturas se envían (en el entorno de pruebas). De hecho si intento reenviarla, me dice que ya ha sido enviada.

PD: aunque conste como enviada, si voy a la URL del TicketBAI obtenido...

Por ejemplo: https://tbai.prep.gipuzkoa.eus/qr/?i...=100.00&cr=112

...me devuelve "No se ha podido determinar el estado de la factura"
Hola, no sé si te va a funcionar pero yo hago un par de cosas diferentes:

1. Una vez firmado no lo paso a UTF-8, solo antes.
2. Prueba a cambiar esto en la Cabecera:
xsi:schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"

3: Las politicas de firma no cuadran con las mias, falta el digest:
"name" => "Politica de firma TicketBAI 1.0",
"url" => "https://www.gipuzkoa.eus/ticketbai/sinadura",
"digest" => "dTtPpv4fWTcejeVx7+91ILruFX3HysbngBlllJm4i/E="
Responder Con Cita
  #1752  
Antiguo 04-10-2021
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 233
Poder: 16
espinete Va camino a la fama
Cita:
Empezado por ermendalenda Ver Mensaje
Hola, no sé si te va a funcionar pero yo hago un par de cosas diferentes:

1. Una vez firmado no lo paso a UTF-8, solo antes.
2. Prueba a cambiar esto en la Cabecera:
xsi:schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"

3: Las politicas de firma no cuadran con las mias, falta el digest:
"name" => "Politica de firma TicketBAI 1.0",
"url" => "https://www.gipuzkoa.eus/ticketbai/sinadura",
"digest" => "dTtPpv4fWTcejeVx7+91ILruFX3HysbngBlllJm4i/E="
Si elimino el SaveAsUTF8 tras hacer la firma, no me admite el envío. Me devuelve un error que dice algo así como "no se admite contenido en el prolog".

Cambiando el xsi:schemaLocation del XML por "http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd" en vez de "urn:ticketbai:emision ticketBaiV12.xsd" no afecta al resultado. Obtengo el mismo error 008 de mi anterior post.

Por cierto, en mi anterior post al convertir el texto a código Delphi se comió parte del código.
Esto es lo que hago para cambiar la cabecera del XML, una vez generado:

....
FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text, '<TicketBai xmlns="urn:ticketbai:emision">','<T:TicketBai xmlns:T="urn:ticketbai:emision" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ticketbai:emision ticketBaiV12.xsd">');
FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text,'</TicketBai>', '</T:TicketBai>');
....

No he entendido lo de las políticas de firma y que falta el digest... Antes solo puse parte del código, para resumir. Pongo ahora el resto, si es que te refieres a esta parte:

firmante.r_Nombre_firma := nom_emp_emisora;
firmante.r_ID := '';
firmante.r_Metodo_Canonicalization := '';
firmante.r_Hash_algorithm := 'SHA256';
firmante.r_SigPolicyHashAlgorithm := 'SHA256';
//Gipuzkoa
firmante.r_SigPolicyID := 'https://www.gipuzkoa.eus/ticketbai/sinadura';
firmante.r_SigPolicyHash := 'e8daca026eb4a3bbbad85510c3365ec36e2b6b6bdef4f4506300b6d4033a227d'; //6NrKAm60o7u62FUQwzZew24ra2ve9PRQYwC21AM6In0= convertido a HEX es e8daca026eb4a3bbbad85510c3365ec36e2b6b6bdef4f4506300b6d4033a227d
firmante.r_SigPolicyURI := 'https://www.gipuzkoa.eus/ticketbai/sinadura';

Utilizo los componentes de SecureBlackBox 2020 para la firma.

Alguna pista?
Responder Con Cita
  #1753  
Antiguo 04-10-2021
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 868
Poder: 3
ermendalenda Va por buen camino
Ese error la mayoría de las veces es por que hay caracteres extraños o el uri ml definido(que no parece el caso?) Edita el fichero antes de firmarlo con mswordpad. No pases utf8 firmalo y envíalo.
Si quieres mandar el xml par que lo repasemos cambiándole los datos...
Responder Con Cita
  #1754  
Antiguo 04-10-2021
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 233
Poder: 16
espinete Va camino a la fama
Hola

Estoy probando a hacer varios envíos seguidos de facturas a distintos clientes, para comprobar si hay algún caracter especial en el nombre del cliente, etc.

En algunos envíos me devuelve el error Codigo 008: Error en verificación de firma.
En otros me devuelve el error Codigo 008: El mensaje ha sido modificado en tránsito o la firma no está bien realizada -- Reference URI="" failed to verify. Reference URI="#SignedProperties-1610103204" failed to verify. [src/xml2signatureobj.cpp(315)] - (10606)

En cualquier caso, el envío se realiza y la factura consta como enviada (no puedo subirla de nuevo porque ya existe).

En el entorno de pruebas que estoy desarrollando, guardo el archivo xml ANTES y DESPUÉS de firmarlo. Abriéndolos con el Notepad++ veo que ambos tienen codificación UTF-8 SIN BOM.

¿Hay alguna utilidad online donde poder verificar los XML de ticketbai?
Responder Con Cita
  #1755  
Antiguo 04-10-2021
Band Band is offline
Miembro
 
Registrado: may 2021
Posts: 35
Poder: 0
Band Va por buen camino
Cita:
Empezado por espinete Ver Mensaje
Hola

Estoy probando a hacer varios envíos seguidos de facturas a distintos clientes, para comprobar si hay algún caracter especial en el nombre del cliente, etc.

En algunos envíos me devuelve el error Codigo 008: Error en verificación de firma.
En otros me devuelve el error Codigo 008: El mensaje ha sido modificado en tránsito o la firma no está bien realizada -- Reference URI="" failed to verify. Reference URI="#SignedProperties-1610103204" failed to verify. [src/xml2signatureobj.cpp(315)] - (10606)

En cualquier caso, el envío se realiza y la factura consta como enviada (no puedo subirla de nuevo porque ya existe).

En el entorno de pruebas que estoy desarrollando, guardo el archivo xml ANTES y DESPUÉS de firmarlo. Abriéndolos con el Notepad++ veo que ambos tienen codificación UTF-8 SIN BOM.

¿Hay alguna utilidad online donde poder verificar los XML de ticketbai?

Una vez firmado el xml no puedes volver a guardarlo. Es decir, cuando lo firmas tienes que dejarlo tal cual y no puedes realizar ninguna acción sobre el (obviamente si puedes enviar el fichero, copiarlo, moverlo... pero nada más, ni volver a guardarlo ni añadir un caracter en blanco al final ni nada).

Yo para probar el tema de caracteres raros, uso como propuso alguien del foro (igual voy equivocado, pero creo que era Neftali) esta cadena: áéíóúÁÉÍÓÚÜçÇñÑ€~#@ <--- Puede ser más compleja y rara, pero con esto a mi me vale
Responder Con Cita
  #1756  
Antiguo 04-10-2021
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 868
Poder: 3
ermendalenda Va por buen camino
Cita:
Empezado por espinete Ver Mensaje
Hola

Estoy probando a hacer varios envíos seguidos de facturas a distintos clientes, para comprobar si hay algún caracter especial en el nombre del cliente, etc.

En algunos envíos me devuelve el error Codigo 008: Error en verificación de firma.
En otros me devuelve el error Codigo 008: El mensaje ha sido modificado en tránsito o la firma no está bien realizada -- Reference URI="" failed to verify. Reference URI="#SignedProperties-1610103204" failed to verify. [src/xml2signatureobj.cpp(315)] - (10606)

En cualquier caso, el envío se realiza y la factura consta como enviada (no puedo subirla de nuevo porque ya existe).

En el entorno de pruebas que estoy desarrollando, guardo el archivo xml ANTES y DESPUÉS de firmarlo. Abriéndolos con el Notepad++ veo que ambos tienen codificación UTF-8 SIN BOM.

¿Hay alguna utilidad online donde poder verificar los XML de ticketbai?

Tiene que quedar así:
Código:
<?xml version="1.0" encoding="UTF-8"?>
<T:TicketBai xmlns:T="urn:ticketbai:emision" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd">
<Cabecera>
<IDVersionTBAI>1.2</IDVersionTBAI>
</Cabecera>

.
.
.
.
<HuellaTBAI>
.
.
.
</HuellaTBAI>
<ds:Signature 
.
.
..
</ds:Signature>
</T:TicketBai>
Aquí te dejo un par de verificadores de xmls firmados, que están en el foro(No de ticketbai, son genéricos):
http://tools.chilkat.io/xmlDsigVerif...#generatedCode
https://web.uanataca.com/pe/servicio...ma-electronica
Responder Con Cita
  #1757  
Antiguo 04-10-2021
Ramon88 Ramon88 is offline
Miembro
 
Registrado: ago 2021
Posts: 125
Poder: 3
Ramon88 Va por buen camino
Cita:
Empezado por espinete Ver Mensaje
Hola

Estoy probando a hacer varios envíos seguidos de facturas a distintos clientes, para comprobar si hay algún caracter especial en el nombre del cliente, etc.

En algunos envíos me devuelve el error Codigo 008: Error en verificación de firma.
En otros me devuelve el error Codigo 008: El mensaje ha sido modificado en tránsito o la firma no está bien realizada -- Reference URI="" failed to verify. Reference URI="#SignedProperties-1610103204" failed to verify. [src/xml2signatureobj.cpp(315)] - (10606)

En cualquier caso, el envío se realiza y la factura consta como enviada (no puedo subirla de nuevo porque ya existe).

En el entorno de pruebas que estoy desarrollando, guardo el archivo xml ANTES y DESPUÉS de firmarlo. Abriéndolos con el Notepad++ veo que ambos tienen codificación UTF-8 SIN BOM.

¿Hay alguna utilidad online donde poder verificar los XML de ticketbai?

A mi me pasaba algo aprecido y era por que al pasarlo a una variable luego lo ponía todo en 1 linea.


Código:
Dim xmlDoc As New XmlDocument
xmlDoc.PreserveWhitespace = True
xmlDoc.Load(pathXML)
Responder Con Cita
  #1758  
Antiguo 04-10-2021
iMia iMia is offline
Miembro
 
Registrado: jul 2010
Posts: 141
Poder: 14
iMia Va por buen camino
Cita:
Empezado por Ramon88 Ver Mensaje
He estado probándolo y si cambio los caracteres o lo convierto a uri no me funciona, sin embargo si lo dejo tal cual, si. No entiendo nada...


FUNCIONA:

https://tbai.prep.gipuzkoa.eus/qr/?i...&i=0.00&cr=046


NO FUNCIONA:
https://tbai.prep.gipuzkoa.eus/qr/?i...&i=0.00&cr=046
http://www.clubdelphi.com/foros/show...postcount=1743
Responder Con Cita
  #1759  
Antiguo 04-10-2021
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 233
Poder: 16
espinete Va camino a la fama
Cita:
Empezado por Band Ver Mensaje
Una vez firmado el xml no puedes volver a guardarlo. Es decir, cuando lo firmas tienes que dejarlo tal cual y no puedes realizar ninguna acción sobre el (obviamente si puedes enviar el fichero, copiarlo, moverlo... pero nada más, ni volver a guardarlo ni añadir un caracter en blanco al final ni nada).
Quizás me he explicado mal o no entiendo lo que quieres decir... Después de firmar el XML, no se debe guardar ese XML firmado para poder enviarlo en la petición?

Es decir... creo el XML (factura.xml), firmo ese XML (con los componentes de SecureBlackBox) y tras firmarlo, lo guardo (firmado) como firmado.xml, que es el que envío.

Después de firmarlo no he hecho ninguna modificación (salvo guardarlo con otro nombre).

Revisaré mañana el contenido del XML por si hay caracteres especiales, pero lo dudo mucho porque estoy usando datos de prueba muy básicos.
Responder Con Cita
  #1760  
Antiguo 04-10-2021
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 868
Poder: 3
ermendalenda Va por buen camino
Cita:
Empezado por espinete Ver Mensaje
Quizás me he explicado mal o no entiendo lo que quieres decir... Después de firmar el XML, no se debe guardar ese XML firmado para poder enviarlo en la petición?

Es decir... creo el XML (factura.xml), firmo ese XML (con los componentes de SecureBlackBox) y tras firmarlo, lo guardo (firmado) como firmado.xml, que es el que envío.

Después de firmarlo no he hecho ninguna modificación (salvo guardarlo con otro nombre).

Revisaré mañana el contenido del XML por si hay caracteres especiales, pero lo dudo mucho porque estoy usando datos de prueba muy básicos.
La clase stream lleva implícita cambios en la codificación del fichero a grabar. Revisa el comando:
Creo que El fichero firmado al grabarlo lo modificas:
TFileStream.Create('firmado.xml
Este problema ya lo han tenido y ha salido en otro post del hilo

Última edición por ermendalenda fecha: 04-10-2021 a las 19:42:18.
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 3548 Hace 1 Día 17:23:25
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 18:41:12.


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