Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   TICKET BAI (TicketBAI); Nuevo sistema de la Agencia Tributaria del Pais Vasco (https://www.clubdelphi.com/foros/showthread.php?t=94264)

iMia 27-08-2021 08:32:02

Cita:

Empezado por defcon1_es (Mensaje 542475)
Gracias a los 3 por responder, efectivamente era por la fecha.


Ahora al enviar el fichero firmado con AutoFirmaCommandLine
Código:


AutoFirmaCommandLine sign -i C:\FacE\FacturaTBAI.XML -o C:\FacE\FacturaTBAI.FIRMADO.XML -store windows -filter subject.contains:<NIF> -format xades -xml -config "format=XAdES Enveloped"

y enviado mediante CURL

Código:

CURL -H "Content-type: application/xml;charset=UTF-8" -d @C:\FacE\FacturaTBAI.FIRMADO.XML -o C:\Teragest\FacE\FacturaTBAI.FIRMADO.Output.xml https://tbai-prep.egoitza.gipuzkoa.eus/WAS/HACI/HTBRecepcionFacturasWEB/rest/recepcionFacturas/alta
me responde esto:


Código:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:TicketBaiResponse xmlns:ns2="urn:ticketbai:emision">
    <Salida>
        <IdentificadorTBAI>TBAI-04600617L-290721-FdyL+dfXfDh5s-210</IdentificadorTBAI>
        <FechaRecepcion>26-08-2021 18:40:26</FechaRecepcion>
        <Estado>00</Estado>
        <Descripcion>Recibido</Descripcion>
        <Azalpena>Jasota</Azalpena>
        <ResultadosValidacion>
            <Codigo>008</Codigo>
            <Descripcion>El mensaje ha sido modificado en transito o la firma no esta bien realizada -- Reference URI="" failed to verify. [src/xml2signatureobj.cpp(315)] - (10606)</Descripcion>
            <Azalpena>El mensaje ha sido modificado en transito o la firma no esta bien realizada -- Reference URI="" failed to verify. [src/xml2signatureobj.cpp(315)] - (10606)</Azalpena>
        </ResultadosValidacion>
        <ResultadosValidacion>
            <Codigo>010</Codigo>
            <Descripcion>Aviso: Posible error de encadenamiento.</Descripcion>
            <Azalpena>Abisua: Litekeena da kateamendu errorea gertatzea.</Azalpena>
        </ResultadosValidacion>
        <CSV>TBAI2d4c3ee4-7c65-47f1-b789-b82f297b2f44</CSV>
    </Salida>
</ns2:TicketBaiResponse>

Pero si la vuelvo a enviar, me responde esto otro (con lo que si se registra en su sistema)
Código:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:TicketBaiResponse xmlns:ns2="urn:ticketbai:emision">
    <Salida>
        <FechaRecepcion>26-08-2021 18:56:29</FechaRecepcion>
        <Estado>01</Estado>
        <Descripcion>Rechazado</Descripcion>
        <Azalpena>Baztertua</Azalpena>
        <ResultadosValidacion>
            <Codigo>005</Codigo>
            <Descripcion>Error: Fichero de alta TicketBAI ya registrado en el sistema.</Descripcion>
            <Azalpena>Errorea: TicketBAI fitxategia sisteman erregistratuta dago jada.</Azalpena>
        </ResultadosValidacion>
    </Salida>
</ns2:TicketBaiResponse>

El error por encadenamiento, lo tengo claro, pero ¿por qué me devuelve el error 008?

En la firma te faltan los parámetros de política de firma, algoritmo, etc...
En el primer mensaje del hilo hay un recopilatorio de mensajes. Allí hay un enlance a un recopilatorio de código. y en ese segundo recopilatorio, en el apartado de firma con autofirma hay varios enlaces a mensajes con la instrucción completa de firma con autofirmacommandline...
venga va...

https://www.clubdelphi.com/foros/sho...&postcount=681

y

AutoFirmaCommandLine.exe sign
-i nombre_fichero
-o nombre_fichero_firmado
-xml
-store pkcs12:nombre_certificado.p12
-password contraseña_certificado
-alias nombrel_alias_del_certificado
-format xades
-config "format=XAdES Enveloped\npolicyIdentifier=https://www.batuz.eus/fitxategiak/batuz/ticketbai/sinadura_elektronikoaren_zehaztapenak_especificaciones_de_la_firma_electronica_v1_0.pdf
\npolicyIdentifierHash=Quzn98x3PMbSHwbUzaj5f5KOpiH0u8bvmwbbbNkO9Es=\npolicyIdentifierHashAlgorithm=h ttp://www.w3.org/2001/04/xmlenc#sha256
\npolicyQualifier=https://www.batuz.eus/fitxategiak/batuz/ticketbai/sinadura_elektronikoaren_zehaztapenak_especificaciones_de_la_firma_electronica_v1_0.pdf"



saludos

defcon1_es 27-08-2021 11:40:38

Muchas gracias a iMia y ermendalenda,
solucionando lo del encadenamiento por un lado y con vuestra ayuda,
¡¡ ya me funciona correctamente !!


Código:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:TicketBaiResponse xmlns:ns2="urn:ticketbai:emision">
    <Salida>
        <IdentificadorTBAI>TBAI-04600617L-020721-XtDDgyTK5vUyU-010</IdentificadorTBAI>
        <FechaRecepcion>27-08-2021 11:33:49</FechaRecepcion>
        <Estado>00</Estado>
        <Descripcion>Recibido</Descripcion>
        <Azalpena>Jasota</Azalpena>
        <CSV>TBAI61c1fc7f-fe1b-4232-9097-7fc39c3eaed2</CSV>
    </Salida>
</ns2:TicketBaiResponse>


Llamada al AutoFirmaCommandLine:

Código:

AutoFirmaCommandLine sign -i C:\FacE\FacturaTBAI.XML -o C:\FacE\FacturaTBAI.FIRMADO.XML -store windows -filter subject.contains:<NIF> -format xades -xml -config "format=XAdES Enveloped
\npolicyIdentifier=https://www.batuz.eus/fitxategiak/batuz/ticketbai/sinadura_elektronikoaren_zehaztapenak_especificaciones_de_la_firma_electronica_v1_0.pdf
\npolicyIdentifierHash=Quzn98x3PMbSHwbUzaj5f5KOpiH0u8bvmwbbbNkO9Es=
\npolicyIdentifierHashAlgorithm=http://www.w3.org/2001/04/xmlenc#sha256
\npolicyQualifier=https://www.batuz.eus/fitxategiak/batuz/ticketbai/sinadura_elektronikoaren_zehaztapenak_especificaciones_de_la_firma_electronica_v1_0.pdf"

Llamada CURL
Código:

CURL -H "Content-type: application/xml;charset=UTF-8" --data-binary @C:\FacE\FacturaTBAI.FIRMADO.XML -o C:\FacE\FacturaTBAI.FIRMADO.Output.xml https://tbai-prep.egoitza.gipuzkoa.eus/WAS/HACI/HTBRecepcionFacturasWEB/rest/recepcionFacturas/alta

ermendalenda 27-08-2021 19:34:31

Tiempos envíos y qr en Álava y guipuzcua
 
Pregunta sencilla, pero no encuentro la respuesta,
Si no tengo conexión, ya sea por caída de mi Red o el servidor de hacienda no funcione o un cable de Red partido... Etc etc.. Puedo dar el tiquet con el qr o el tiquet no debe salir hsstq que se realice el envío correcto?
En resumen.. Hay margen?

unomasmas 28-08-2021 08:08:33

Cita:

Empezado por ermendalenda (Mensaje 542484)
Pregunta sencilla, pero no encuentro la respuesta,
Si no tengo conexión, ya sea por caída de mi Red o el servidor de hacienda no funcione o un cable de Red partido... Etc etc.. Puedo dar el tiquet con el qr o el tiquet no debe salir hsstq que se realice el envío correcto?
En resumen.. Hay margen?

En breve: Sí
Confirmación: Sí, puedes (debes) crear tu fichero XML, generar el código QR, entregar la factura a tu cliente y después, cuando sea posible la conexión, enviarla.

unomasmas 28-08-2021 08:32:44

Qué pasa en Gipuzkoa
 
Había hecho pruebas hace tiempo y lo dejé funcionando. Retomo el tema, hago la prueba con el mismo fichero con que lo dejé funcionando y el servidor me responde "Anulada la solicitud: No se puede crear un canal seguro SSL/TLS." Ni siquiera me deja conectarme. Verifico que se usa TLS 1.2, que el certificado con el que me conecto es el de la persona que en su día se pidió que registraran en Gipuzkoa... Todo correcto. Envío mensaje al servicio técnico para que me ayuden y, aunque no obtengo respuesta, lo intento nuevamente al día siguiente.

En este nuevo intento parece que ese problema se ha solucionado. Ahora sí que llega la factura, pero el servidor responde:

Código:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:TicketBaiResponse xmlns:ns2="urn:ticketbai:emision">
    <Salida>
        <FechaRecepcion>25-08-2021 09:12:27</FechaRecepcion>
        <Estado>01</Estado>
        <Descripcion>Rechazado</Descripcion>
        <Azalpena>Baztertua</Azalpena>
        <ResultadosValidacion>
            <Codigo>002</Codigo>
            <Descripcion>Error: El fichero de alta TicketBAI no cumple el esquema XSD. Detalle del error: cvc-complex-type.2.4.b: The content of element 'T:TicketBai' is not complete. One of '{"http://www.w3.org/2000/09/xmldsig#":Signature}' is expected.</Descripcion>
            <Azalpena>Errorea: TicketBAI altako fitxategiak ez du betetzen XSD eskema. Errorearen xehetasuna: cvc-complex-type.2.4.b: The content of element 'T:TicketBai' is not complete. One of '{"http://www.w3.org/2000/09/xmldsig#":Signature}' is expected.</Azalpena>
        </ResultadosValidacion>
    </Salida>
</ns2:TicketBaiResponse>

He de decir que antes de enviar la factura yo también he pasado una validación sobre el XSD (ticketBaiV1-2.xsd), así que tampoco le veo la lógica de la respuesta y nuevamente les paso un mensaje al servicio técnico. Pasan los días y no obtengo respuesta, pero sigo probando por si nuevamente hubiese algún cambio en el servidor sin que se informe. Acabo de hacer una nueva prueba y ahora el servidor responde:

Código:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:TicketBaiResponse xmlns:ns2="urn:ticketbai:emision">
    <Salida>
        <FechaRecepcion>28-08-2021 08:05:12</FechaRecepcion>
        <Estado>01</Estado>
        <Descripcion>Rechazado</Descripcion>
        <Azalpena>Baztertua</Azalpena>
        <ResultadosValidacion>
            <Codigo>001</Codigo>
            <Descripcion>Error: Certificado remitente incorrecto (revocado o no homologado).</Descripcion>
            <Azalpena>Errorea: Bidaltzailearen ziurtagiria okerra (errebokatua edo ez-homologatua).</Azalpena>
        </ResultadosValidacion>
    </Salida>
</ns2:TicketBaiResponse>

¿Os está pasando algo extraño también a vosotros? No entiendo nada. ¿Será que estamos en agosto y que el mantenimiento está bajo mínimos? Me agobia pensar que esto no parece estar funcionando bien y que, sin embargo, se mantengan los plazos. Si fuera mal pensado diría que nos están utilizando para depurar una versión beta y que nos empujan sin considerar la pérdida de tiempo que supone para nosotros hacer pruebas inútiles y buscar el origen del problema cien veces antes de molestar a nadie (porque incluso tener que molestar a alguien también es un esfuerzo...)

ermendalenda 28-08-2021 11:58:54

Gracias unomasmas

ermendalenda 29-08-2021 11:41:48

Buenos días.
Alguien con (algo) información de por dónde van a ir los tiros con las demás comunidades? Aunque sea por MP por favor.
Gracias os deberé un gran favor
Saludos.

Casimiro Noteví 29-08-2021 11:52:09

Cita:

Empezado por ermendalenda (Mensaje 542501)
Aunque sea por MP por favor.

Los foros sirven para compartir información, no para mantenerla en secreto :D

ermendalenda 29-08-2021 12:10:50

Llevas razón, lo siento
Alguien con algo de información (por muy pequeña que sea la pista) sobre cómo van a ir las facturas en la hacienda no foral. Por favor compartid es muy importante para los programadores para no hacer doble trabajo.
Saludos

ermendalenda 29-08-2021 12:20:16

Aquí os dejo parte de la respuesta(la única parte importante) , sobre la pregunta a hacienda de para cuando y como.
Cita:

... desde el 11 de octubre de 2021. Desde esa fecha y hasta la entrada en vigor del desarrollo reglamentario previsto,... Blabla

edari 30-08-2021 12:54:16

Cita:

Empezado por ermendalenda (Mensaje 542503)
Llevas razón, lo siento
Alguien con algo de información (por muy pequeña que sea la pista) sobre cómo van a ir las facturas en la hacienda no foral. Por favor compartid es muy importante para los programadores para no hacer doble trabajo.
Saludos




Es muy pronto para preguntar esto cuando todavía ni siquiera nosotros hemos empezado


Pero usando la intuición me imagino a la Hacienda Nacional muy curiosona en el proyecto de aquí y haciéndole el "culo pepsi cola" por ponerlo ellos cuánto antes. No es golosa la cosa ni nada.



¿Los ficheros? Ten claro que serán tan parecidos como diferentes :D ...si ni siquiera aquí nos hemos puesto de acuerdo 3 provincias en hacerlo igual no pensarás que la nacional va a "tragar" con algo creado por otros...


Pondrá sus propias mierdas y los programadores que atendemos en toda España nos obligarán a trabajar por triplicado o cuatriplicado. :(

cbombin 30-08-2021 13:07:19

Cita:

Empezado por unomasmas (Mensaje 542487)
En breve: Sí
Confirmación: Sí, puedes (debes) crear tu fichero XML, generar el código QR, entregar la factura a tu cliente y después, cuando sea posible la conexión, enviarla.

y como se puede generar el código QR si se necesita el identificador que devuelve hacienda (el que empieza por TBAI-xxxx)?

Eric Mtz 30-08-2021 13:27:48

Cita:

Empezado por cbombin (Mensaje 542510)
y como se puede generar el código QR si se necesita el identificador que devuelve hacienda (el que empieza por TBAI-xxxx)?

Hola cbombin, te aclaro yo la duda.
Ese código es completamente calculable, consta de un total de 39 caracteres que te especifican en el apartado 4.3.2 de la documentación oficial:
https://www.euskadi.eus/contenidos/i...ones_v_1_1.pdf

Por lo tanto, lo puedes generar sin la necesidad de una respuesta por parte de hacienda, de hecho, en BATUZ no queda otra ya que las facturas que emitas no serán enviadas hasta finalizar el trimestre.

Pd: Para que no caiga en el olvido, hace unas páginas publicamos el cálculo CRC-8 en mogollón de lenguajes distintos, creo recordar que en C#, vb, python y php, rebusca un poco en el foro y lo encontrarás.

Un saludo y buen inicio de semana.

ermendalenda 30-08-2021 14:09:47

Eso sí. Para calcular el qr no se necesita conexión. Lo principal para este código es una parte de la firma del XML que se hace (se puede hacer) offline.

iMia 30-08-2021 15:44:30

Cita:

Empezado por Eric Mtz (Mensaje 542512)
Hola cbombin, te aclaro yo la duda.

...

Pd: Para que no caiga en el olvido, hace unas páginas publicamos el cálculo CRC-8 en mogollón de lenguajes distintos, creo recordar que en C#, vb, python y php, rebusca un poco en el foro y lo encontrarás.

Un saludo y buen inicio de semana.

No hace falta rebuscar. El primer post del hilo es un post magnifico y que le debe dar mucho curro mantenerlo a German, con los enlaces a los posts más importantes. Ahí está todo lo necesario y muy bien ordenado y especificado...
saludos...

Ramon88 30-08-2021 17:48:24

Error subiendo fichero
 
Hola!

Estoy intentando subir el xml y siempre me da el error No se puede crear un canal seguro SSL/TLS.
He probado con HttpClient y con HttpWebRequest y el error siempre es el mismo, si quito la parte donde añado el certificado, no da error pero en el mensaje devuelto, me dice que me falta el certificado... por lo que no se si es cosa del certificado o que puede ser, me estoy volviendo loco ya...

Este es el código que estoy usando:


ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12


Dim handler As System.Net.Http.HttpClientHandler = New System.Net.Http.HttpClientHandler()
Dim certificate As X509Certificate2 = New X509Certificate2("E:\Ramon\Programacion\Factura_TBai\Firma.pfx", "0000")
handler.ClientCertificates.Add(certificate)

Dim http As HttpClient = New HttpClient(handler)

Dim oString As StringContent = New StringContent(XML.ToString(), Encoding.UTF8, "application/xml")

Dim response As HttpResponseMessage = http.PostAsync(URL_Pruebas, oString).Result
Dim res As String = response.Content.ReadAsStringAsync.Result

ermendalenda 30-08-2021 19:25:40

Comprueba fecha y hora del equipo que no tenga mucha diferencia con la fecha hora real.
Prueba los envíos con Curl, para descartar otros problemas del equipo.

unomasmas 30-08-2021 22:52:13

Cita:

Empezado por cbombin (Mensaje 542510)
y como se puede generar el código QR si se necesita el identificador que devuelve hacienda (el que empieza por TBAI-xxxx)?

Esta dato no lo genera Hacienda, sino que se genera a partir de datos de la firma y de la propia factura. Así es como lo tengo yo (C#):

Código:

                result = "TBAI" + separador;
                result += nif + separador;
                result += fechaExpedicion + separador;
                result += signatureValue + separador;
                result += GetCrc8(result);


unomasmas 30-08-2021 22:57:56

Cita:

Empezado por Ramon88 (Mensaje 542520)
Hola!

Estoy intentando subir el xml y siempre me da el error No se puede crear un canal seguro SSL/TLS.
He probado con HttpClient y con HttpWebRequest y el error siempre es el mismo, si quito la parte donde añado el certificado, no da error pero en el mensaje devuelto, me dice que me falta el certificado... por lo que no se si es cosa del certificado o que puede ser, me estoy volviendo loco ya...

Este es el código que estoy usando:


ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12


Dim handler As System.Net.Http.HttpClientHandler = New System.Net.Http.HttpClientHandler()
Dim certificate As X509Certificate2 = New X509Certificate2("E:\Ramon\Programacion\Factura_TBai\Firma.pfx", "0000")
handler.ClientCertificates.Add(certificate)

Dim http As HttpClient = New HttpClient(handler)

Dim oString As StringContent = New StringContent(XML.ToString(), Encoding.UTF8, "application/xml")

Dim response As HttpResponseMessage = http.PostAsync(URL_Pruebas, oString).Result
Dim res As String = response.Content.ReadAsStringAsync.Result

Aemás de usar el protocolo TLS 1.2 (que veo que ya lo haces), creo que debes asegurarte de que el emisor en el documento (factura) que envías debe ser el mismo que firma la petición y, por otra parte, debe estar registrada en la base de datos de pruebas... Yo también estoy teniendo este problema. Es posible que sea un problema de ellos porque hace tiempo pude enviarlo con los mismos datos y ahora no me deja ?? He abierto una consulta con el servicio técnico pero todavía no tengo respuesta :-(

b4aronDeLaBirr4 31-08-2021 09:09:39

Cita:

Empezado por Eric Mtz (Mensaje 542452)
¡Muy buenas a todos!, ya estoy de vuelta de las vacatas, ¿Cómo andáis?

Bueno, entrado en materia hoy tengo una duda mas bien teórica, me gustaría saber vuestra opinión y creo que puede ser interesante para todos. (Atención se viene parrafada, pero en su mayoría son ejemplos así que no asustarse.)

El caso es el siguiente, quería tratar las respuestas de hacienda para que el usuario de turno pudiera leer algo MUCHO mas simple y legible, incluso un "Recibido" mi intención era transformarlo a "La factura ha sido enviada satisfactoriamente.", "Ha salido todo a pedir de Milhouse." o "Todo ha chuscado bien."... ya sabéis filosofía "Don't make me think" y esas cosas.

El tema es que con BATUZ todo perfecto, te responden algo como:


De hecho tenemos un pdf de 143 páginas con todas las posibles respuestas y sus respectivos códigos:
https://www.batuz.eus/fitxategiak/ba...b1d893b1006da9


Mi problema surge con Gipuzkoa, donde te devuelven algo como esto:


Y me diréis: Pos de puta madre, te han detallado el error, ¿Cuál es tu maldito problema Ericete?.
Pues muy simple, todos los errores de Gipuzkoa te devuelven el código 002, es decir, ese código sirve para identificar que en la respuesta hay algo incorrecto, pero no tenemos un código específico de cada error.

De pronto cobra sentido que el pdf con los errores de Gipuzkoa tenga tan solo 13 páginas:
https://www.gipuzkoa.eus/documents/2...9-3eb70c68034a

Esto rompe mi plan de pasar la respuesta por un switch donde filtrar los errores mas confusos en base a su código... a no ser que utilice como identificador el propio texto del error... aunque lo veo difícil ya que el ejemplo que os acorté antes tiene 1178 caracteres.

Perdonad, edito porque se me ha olvidado formular la pregunta... si... mmm... mejor ni lo mencionéis... serán efectos secundarios de los microchis de la vacuna.
¿Hacéis algún filtro para tratar los errores?, ¿Si es así cómo lo hacéis?, ¿Os ha supuesto algún problema Gipuzkoa?

Pues ya está, creo que os he expuesto mi tesitura con claridad, puede que se me esté escapando algo y si ese es el caso no dudéis en corregirme, pero lo cierto es que me ha descolocado, un saludo a todos y ánimo que ya queda menos.

Bienvenido de nuevo a las trincheras!

Justamente estaba analizando ese escenario y me iba a poner a clasificarlos en cuanto a su naturaleza (código). En la página 10 del pdf de las especificaciones del servicio REST de Gipuzkoa disponemos de 6 errores y 8 avisos. Mi intención era seguir esa misma estructura. Primero: Mandar una petición vacía para ver si el servicio se encuentra en funcionamiento y segundo: Recuperar la respuesta y ver si ha sido aceptada (mirar los avisos ya que puede ser que exista alguno) o rechazada (los errores y los avisos, aunque estos últimos no serían la causa directa del rechazo, se supone).


La franja horaria es GMT +2. Ahora son las 15:48:32.

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