![]() |
Error en la firma Ticketbai Bizkaia
Hola a todos,
Estoy escribiendo porque ya me estoy quedando sin ideas. Tengo una integración con Ticketbai Bizkaia en java, hasta hace poco tiempo podia enviar facturas sin ningun problemas al entorno de prueba de bizkaia, pero de un momento a otro... pum, error con la Firma electrónica. <DescripcionErrorRegistroES>La firma no cumple los requisitos de la política de firma TicketBAI.(EPES: S ALGORITMO: rsa-sha256:2048 POLITICA: N CERTIFICADO_ADMITIDO: S )</DescripcionErrorRegistroES> Entiendo que lo único que tengo mal es "POLITICA: N", pero yo no cambie nada, tampoco no se cambio nada en la documentación de Bizkaia, estoy utilizando el siguiente link para al firma "https batuz eus/ .... _...a_firma_electronica_v1_1.pdf" Así estoy haciendo una parte de la firma en java: Código:
URL url = new URL("https batuz eus/ .... _...a_firma_electronica_v1_1.pdf"); |
Cita:
Si quieres añade un fichero LROE con 1 factura (si hace falta elimina datos sensibles) y revisamos a ver si tiene algo raro. |
Ficheros Rechazados
Buenas,
Hay una cosa que no entiendo a nivel de procedimiento. Mando Factura 1 -> Me la Rechaza -> En teoría tengo que conservar el fichero .xml Mando la subsanación de Factura 1 -> Huella Tbai ¿ Cual es la de la factura 1? -> La firma ¿ Es Nueva o la de la Factura 1? Me rechaza la subsanación -> ¿ Conservo este fichero y vuelvo a generar otra subsanación? En tal caso ¿la firma y la huella de la Factura 1 ? Si alguien me puede aclarar algo. Gracias |
Cita:
Para aclarar, ¿estás hablando de BATUZ (Vizcaya) o TICKETBAI (Alava y Guipuzkoa)? |
Mira si puede ir por aquí el error, según el fichero de especificaciones de firma el Hash a cambiado:
Antes [SignaturePolicyIdentifier] SigPolicyID=https://www.batuz.eus/fitxategiak/batuz/ticketbai/sinadura_elektronikoaren_zehaztapenak_especificaciones_de_la_firma_electronica_v1_0.pdf SigPolicyHash=Quzn98x3PMbSHwbUzaj5f5KOpiH0u8bvmwbbbNkO9Es= (Base64) SigPolicyHash=42ECE7F7CC773CC6D21F06D4CDA8F97F928EA621F4BBC6EF9B06DB6CD90EF44B (HEX) SigPolicyHashAlgorithm=SHA256 SigPolicyURI=https://www.batuz.eus/fitxategiak/batuz/ticketbai/sinadura_elektronikoaren_zehaztapenak_especificaciones_de_la_firma_electronica_v1_0.pdf Ahora [SignaturePolicyIdentifier] SigPolicyID=https://www.batuz.eus/fitxategiak/batuz/ticketbai/sinadura_elektronikoaren_zehaztapenak_especificaciones_de_la_firma_electronica_v1_1.pdf SigPolicyHash=K2baIY0fk8jbkPHkffk5F5C46O5VuzDwH21dAovjVRs= (Base64) SigPolicyHash=2B66DA218D1F93C8DB90F1E47DF9391790B8E8EE55BB30F01F6D5D028BE3551B (HEX) SigPolicyHashAlgorithm=SHA256 SigPolicyURI=https://www.batuz.eus/fitxategiak/batuz/ticketbai/sinadura_elektronikoaren_zehaztapenak_especificaciones_de_la_firma_electronica_v1_1.pdf |
Facturas
Cita:
|
Estoy encontrándome un error que puede que os haya sucedido.
¿Cómo anuláis las ventas o facturas, que se hicieron antes de ticketbai? Evidentemente, la factura no esta registrada, por lo que da error la anulación. Se me ha ocurrido hacer una factura en negativo simplemente para que haya constancia... ¿Se podría hacer así? |
Cita:
¿Desde cuando han cambiado eso?¿Tienes el documento? |
Cita:
En principio, Hacienda no pone ningún problema a que se hagan facturas con importes negativos. Y es la única solución cuando hay una devolución y no se puede localizar la facturasoriginal para poder hacer una rectificativa. Saludos |
Dentro de la documentación técnica, a finales del 2023 han hecho modificaciones, e incorporado nuevos esquemas de envío para personas jurídicas. Relativo a la firma, pone lo siguiente
Cita:
Y como digo se han incorporado el capitulo de movimientos contables, para el año que viene. Saludos |
Cita:
Con respecto al Capitulo de movimientos contables, esto nos ha comentado nuestro asesor, aunque por "mala suerte", en nuestro caso querrán empezar de forma voluntaria para el año que viene, 2025. ------------------------------ El link en cuestión es una serie de indicaciones técnicas (informáticas) para cumplir con dicha normativa, pero en todo en caso de forma voluntaria para 2025. Como te comenté, la obligatoriedad no se producirá hasta 2029. ------------------------------ Saludos |
Lo de los de los libros contables hay que llevarlos de forma voluntaria a partir del 2025, pero los tienen que presentar en el 2026. Ya que se presentarán al final del año.
|
Cita:
r_SigPolicyID := 'https://www.batuz.eus/fitxategiak/batuz/ticketbai/sinadura_elektronikoaren_zehaztapenak_especificaciones_de_la_firma_electronica_v1_1.pdf'; r_SigPolicyHash := 'K2baIY0fk8jbkPHkffk5F5C46O5VuzDwH21dAovjVRs='; r_SigPolicyURI := 'https://www.batuz.eus/fitxategiak/batuz/ticketbai/sinadura_elektronikoaren_zehaztapenak_especificaciones_de_la_firma_electronica_v1_1.pdf'; |
Cita:
Si me pasó ayer que también cambié la versión del XML a la 1.2.2 creyendo que era necesario y me dio error. He vuelto a dejar la 1.2 Saludos |
Cita:
|
Cita:
Este es la llamada que hago. call dllfun('WinExec','cmd /c AutoFirmaCommandLine.exe sign'&& ' -i '&&fichero_inicial clipped&& ' -o '&&fichero_firmado clipped&& ' -store pkcs12:'&&fg_batuz_cert clipped&& ' -password '&&fg_batuz_pass clipped&& ' -filter '&&fg_batuz_cert clipped&& ' -format xades -xml'&& ' -config "format=XAdES Enveloped'&& ' \npolicyIdentifier='&&fg_batuz_iden clipped&& ' \npolicyIdentifierHash='&&fg_batuz_hash clipped&& ' \npolicyIdentifierHashAlgorithm=http://www.w3.org/2001/04/xmlenc#sha256 '&& ' \npolicyQualifier='&&fg_batuz_iden clipped,0) |
¿Hay alguien que firme con SecureBlackBox y tenga el nuevo hash? No consigo firmar con el. Poniendo esto
El fichero que genera no tiene la parte de sigpolicyhash Código PHP:
Código PHP:
|
Cita:
Nosotros firmamos con SecureBlackBox, pero seguimos con el antiguo. ¿De cuando es este nuevo hash? |
Cita:
Lo que no entiendo es por qué no envían un mail de las modificaciones a las empresas con software garante. https://www.batuz.eus/fitxategiak/ba...c419d77e08898f |
Buenos días
Nosotros sólo lo hemos probado en el entorno de pruebas, y nos funciona. Mientras no sea necesario, a nuestros clientes ni tocar. Lo que funciona, funciona. Recordaros que para SecureBlackBox hay que mandar el valor en hexadecimal. Yo tengo un fichero INI, de donde cojo dichos valores, os lo dejo a continuación. Cita:
|
Gracias.
No me acordaba lo de que había que pasarlo a hexadecimal. Tampoco lo voy a cambiar mientras funcione el anterior, sólo era por tenerlo preparado por si algún día deja de funcionar el anterior. :rolleyes: |
Hola a todos, soy nuevo en el foro. Por circunstancias de la vida necesito aprender de vosotros para poder adaptar un software. Llevo semanas leyendo y probando. He aprendido mucho de vosotros, muchas gracias, pero me tropiezo con algunas dudas y me quedo estancado. Me veo obligado a preguntar. Me lleváis años de ventaja, pero quizás mis dudas sean compartidas por otros en mi situación a estas alturas. Voy a intentar desarrollar una interface en python para conseguir la adaptación que necesito. Entiendo que este es un foro enfocado principalmente a Delphi pero creo que las dudas y las soluciones adoptadas pueden servir para otros lenguajes.
Pues mi duda donde me quedo estancado es muy básica creo. A la hora de firmar el xml de una factura, no encuentro información detallada sobre que entra exactamente en el xml a firmar. He tomado para comenzar el ejemplo de factura en h ttp s://w eb. araba. eus que como todos sabréis comienza así: <?xml version="1.0" encoding="UTF-8"?> <T:TicketBai xmlns:T="urn:ticketbai:emision" xmlns:xsi="h t t p://www .w3. org/2001/XMLSchema-instance" xsi:schemaLocation="ht tp://www w3. org/2001/XMLSchema ticketbai.xsd"> <Cabecera> ... y entiendo que la factura termina en ... </HuellaTBAI> luego en este xml de ejemplo ya se continua con <ds:Signature ... que creo haber entendido se trata ya de la firma que se añade. Si hasta aquí lo he entendido bien, entonces busco y busco sobre como se genera el valor que hay unas líneas mas abajo <ds:DigestValue>/j7C3YYEt9b1T0E4p6mUo9rtdiLxNXKnR6eKQB1KlSQ=</ds:DigestValue> pero eso es lo que no encuentro Duda 1: El primer caracter del xml que se debe incluir en la firma y el último, son <?xml version ... y ... </HuellaTBAI> los extremos? Duda 2: Como no se exactamente si esos son los extremos del xml a firmar, no se si el codigo python que empleo funciona bien o no, los pasos que sigue el codigo es primero calcular el hash utilizando SHA-256, eso me da una cadena hexadecimal, que creo se debe firmar con la clave privada y luego codificar en base64 el hash firmado. Pero nunca consigo obtener el valor <ds:DigestValue>/j7C3YYEt9b1T0E4p6mUo9rtdiLxNXKnR6eKQB1KlSQ=</ds:DigestValue>, haga lo que haga obtengo otros. Yo debería conseguir ese mismo valor de DigestValue tomando ese mismo ejemplo de factura xml, verdad? Gracias a quien me lea y agradecería mucho un poco de luz en esto, no se si lo estoy entendiendo mal y no es así. |
Hola:
El xml termina con: </T:TicketBai> Y el programa de firma añade lo de signature, etc... <Version>1.02</Version> </Software> </HuellaTBAI> </T:TicketBai> Yo tampoco utilizo Delphi, escribo el xml como fichero de texto, firmo con afirma, genero el Qr con Simplecodegenerator (freeware), con base64 lo convierto y lo envio a la diputación con curl. Todo lo hago con bats. Lo tengo funcionando en Bizkaia y Alava. |
Tengo una duda, si envio una factura a ticketbai y por el motivo que sea no obtengo respuesta (problema servidor, etc...) la factura queda entregada, de que manera puedo consultar si una factura se encuentra en ticketbai? Ya que puede ser que le de a enviar y de un error de que esa factura ya existe en el sistema. Hay algún endpoint para verificar el estado de una factura? Si no es asi, como gestionais esta parte?
Saludos |
Cita:
Manualmente puedes hacerlo por ejemplo escaneando el QR o utilizando la web de consulta (ahora no recuerdo si todas la tienen). De forma "automática" siempre puedes volver a enviarla y detectar el error de factura duplicada. No hay que yo recuerde servicio de consulta. |
Fecha de expedicion y fecha de factura
Buenas tardes, no sé si sabéis responderme sobre estos temas de las fechas. Estamos recibiendo facturas de diferentes empresas de las haciendas forales y que creo que están haciendo lo que quieran con la fecha de expedición.
Creo que la fecha de expedición es lo que antiguamente llamábamos Fecha de factura y que esta debe ser siempre la fecha del día en la que hacemos la factura. Hemos recibido una factura con fecha de factura = 31/01/2024 y fecha de expedición = 02/02/2024. Actualmente creo que solo existen 2 fechas, la fecha de expedición y la fecha del devengo, que es la fecha en la que nos devengamos el IVA. Puede haber otras fechas, pero sin demasiada importancia. Si me lo podéis aclarar os lo agradezco. Gracias |
Cita:
gracias por la respuesta ^\||/ |
Cita:
Si quieres ir un nivel por encima, en Vizcaya que es con la que trabajo, puedes hacer una consulta en la hacienda y verificar que existe ya ese documento. Existe el capítulo de consulta de facturas. Nosotros lo utilizamos para "cuadrar" nuestro IVA, contabilidad y emisión de facturas entre la DFB y nuestros datos. Saludos |
Cita:
Aquí como cada uno va por libre... :( |
Cita:
Me consta que hay aplicaciones que dejan poner en la fecha de expedición un día que no es el actual (el sistema se lo traga), pero eso no es correcto y no se sé si algún día les darán problema en Hacienda (tienen la fecha de firma). De hecho Alava ha incorporado un aviso (016) que indica si la fecha de expedición es anterior de la fecha del día. Hacienda dice esto : Cita:
|
Cita:
|
Cita:
No me entra en la cabeza que no tengan un endpoint para verificar el estado de una factura |
Buenos días,
Conocéis alguna página que valide un código QR y te diga el nivel de corrección del error? Gracias |
Cita:
Cualquier app para smartphone que escanee códigos QR, te permitirá conectar desde un QR de TicketBAI con la Hacienda Foral correspondiente para comprobar los datos de una factura. Si no te conecta es probable que el QR sea incorrecto. Respecto al nivel de corrección de error de un QR, puedes comprobarlo directamente a ojo, mirando la esquina inferior izquierda donde aparece ese dato mediante un sencillo sistema: https://blog.qrstuff.com/general/qr-...ror-correction Aunque también hay herramientas para extraer ése y otros datos de un QR: https://developer.apple.com/document...codedescriptor Mira en concreto el dato CIQRCodeDescriptor.ErrorCorrectionLevel Saludos |
Cita:
Gracias ^\||/ |
Curl para el envío a TicketBAI Álava
Cita:
|
Cita:
curl.exe --tlsv1.2 --data-binary "@c:\Efactura\Factura-Alava\factura1-signed.xml" --cert-type P12 --cert c:\Efactura\Certificado\softtron.pfx:123456789 -H "Content-Type: application/xml;charset=UTF8" -X POST htt ps ://pruebas-ticketbai.araba. eus/TicketBAI/v1/facturas/ -o c:\Efactura\respuesta.xml Entre comillas " el archivo xml que se envía y el header. Pero en otros ejemplos Curl para otras haciendas forales las comillas se usan de forma diferente. Si alguien me puede corroborar lo que es correcto, o confirmar lo que es erróneo, se lo agradezco. |
Cita:
curl.exe --tlsv1.2 --data-binary @\FICHERO.XML --cert-type P12 --cert CERTIFICADO:PASSWORD -H "Content-Type: application/xml;charset=UTF8" -X POST https://pruebas-ticketbai.araba.eus/...I/v1/facturas/ -o FICHERORESPUESTA.XML ^\||/ |
Cita:
Ahí hay varias referencias a códigos de envío con CURL. |
Cita:
j:\TbaiAlava\curl -X POST --connect-timeout 30 --data-binary "@j:\TbaiAlava\XML\Factura230014Fir.xml" -o "j:\TbaiAlava\XML\RespTbaiFactura230014.xml" --cert-type P12 --cert SOLDISP_2CE25029TG_CERT.p12:999999 -H "Content-Type: application/xml;charset=UTF-8" https://pruebas-ticketbai.araba.eus/...I/v1/facturas/ Es muy parecido a lo que tu dices. |
| La franja horaria es GMT +2. Ahora son las 02:23:29. |
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