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)

bilbur 03-06-2021 22:45:52

Cita:

Empezado por landaga (Mensaje 541203)
Yo tambien utilizo curl para enviar el LROE pero no veo la forma de recibir las cabeceras de la respuesta, el cuerpo de la respuesta si lo recibo y lo archivo pero no los headers.
El asunto es que algunas veces no envia nada y como en estos casos no devuelve nada en el body no se cual es la razón del fallo.
Alguien lo tiene resuelto?
Gracias


Mira si te sirve esto:

Código PHP:

 $response curl_exec($soap_do); 
    
$size_response curl_getinfo($soap_doCURLINFO_HEADER_SIZE);
    
$header_response substr($response0$size_response);
    
$body_response substr($response$size_response);

    function 
get_headers_from_curl_response($header_response)
    {
    
$headers_r = array();
    foreach (
explode("\r\n"$header_response) as $i => $line)
    if (
$i !== 0)
    {
    list (
$key$value) = explode(': '$line);
    
$headers_r[$key] = utf8_encode($value);
    }
    return 
$headers_r;
    }    
$headers_r get_headers_from_curl_response($header_response);
    
$respuesta_tipo $headers_r['eus-bizkaia-n3-tipo-respuesta'];
    
var_dump($headers_r); 


landaga 04-06-2021 09:24:02

Gracias Bilbur pero lo estoy haciendo por línea de comandos.

batuzail 04-06-2021 09:34:09

Memoria alta software garante
 
Hola,
Estoy preparando la memoria para darnos de alta en el directorio de software garante, aún no tengo casi empezada la programación. Podéis ayudarme es esto?


Que tipos de certificados se podrán usar, cuales son los más comunes?
Para la validación se ha de acceder a alguna url o basta con validar usando comprobaciones locales? uso los componentes de chilckat.


Gracias

landaga 04-06-2021 11:03:24

Cita:

Empezado por batuzail (Mensaje 541209)
Hola,
Estoy preparando la memoria para darnos de alta en el directorio de software garante, aún no tengo casi empezada la programación. Podéis ayudarme es esto?


Que tipos de certificados se podrán usar, cuales son los más comunes?
Para la validación se ha de acceder a alguna url o basta con validar usando comprobaciones locales? uso los componentes de chilckat.


Gracias

Hola Batuzail,
- Puedes utilizar certificados de representante de entidad jurídica, de persona física, de dispositivo (es el que uso yo), etc.
- Para la validación tienes que realizar tus comprobaciones a nivel local, ellos no comprueban nada, tan sólo que en la memoria pongas que cumples lo que exigen....
- Una vez que estas dado de alta en el registro de software garante puede empezar a utilizar el entorno de pruebas para depurar errores.
Un saludo

batuzail 04-06-2021 11:25:14

Cita:

Empezado por landaga (Mensaje 541210)
Hola Batuzail,
- Puedes utilizar certificados de representante de entidad jurídica, de persona física, de dispositivo (es el que uso yo), etc.
- Para la validación tienes que realizar tus comprobaciones a nivel local, ellos no comprueban nada, tan sólo que en la memoria pongas que cumples lo que exigen....
- Una vez que estas dado de alta en el registro de software garante puede empezar a utilizar el entorno de pruebas para depurar errores.
Un saludo


Muchas gracias, pensaba que se referian a proveedores de certificados.

landaga 04-06-2021 11:36:51

Cita:

Empezado por batuzail (Mensaje 541211)
Muchas gracias, pensaba que se referian a proveedores de certificados.


Proveedores son los que aparecen en el enlace que publican en la normativa.
Aquí los más usados y aceptados por TBai son los de Izenpe y los de la FNMT

tejano 04-06-2021 14:07:11

Buenos días Sistel.

Al final parece que el problema venía por el curl que estaba utilizando el que viene con el Windows.
Utilizando el descargado parece que no da ese error, da otro. Ahora me toca mirar a que es debido este nuevo error.

Gracias

tejano 04-06-2021 14:25:19

Cita:

Empezado por landaga (Mensaje 541208)
Gracias Bilbur pero lo estoy haciendo por línea de comandos.

Yo también lo hago por línea de comandos y me devuelve unos caracteres muy extraños.

Landaga, puedes enviar la línea de comando?

Yo lo envío de esta forma
c:\curl\1\bin\curl --insecure --cert-type P12 --cert c:\amis\exes\CERTIFICADO.p12:PASSWORD -H "Accept-Encoding:gzip" -H "Content-Encoding:gzip" -H "Content-Type:application/octet-stream" -H "eus-bizkaia-n3-version:1.0" -H "eus-bizkaia-n3-content-type:application/xml" -H "eus-bizkaia-n3-data:{\"con\":\"LROE\",\"apa\":\"1.1\",\"inte\":{\"nif\":\"A48190839\",\"nrs\":\"TECNICAS DE REFRACTARIOS S.A.U\"},\"drs\":{\"mode\":\"240\",\"ejer\":\"2021\"}}" -v "https://pruesarrerak.bizkaia.eus/N3B4001M/kontsulta" --data-binary "@c:\tmp\consulta.gz" --output c:\tmp\respuesta.xml

Y devuelve algo así.

‹ ªUþ‹ ÿ101368_peticion_Resp.xml ¥R]oÛ0 ü+FßkÙi¶µ'Àðœ!ÅævÚWC–ÕTmy¢„ýõ£ƒ6éöRxGñHî”Ä*´É¯r•¯¯góh!¤óV`Þk§[™ªŸt¡ïœ(Ž^¡Á¾ïL^(|?»wnÄ„±Ýn6ÂùÇPydwÚí…S[-þ°˦VLá_¯zT¯¯kj]ÇtÞö¯Ôï&¨oãš*Â=¶g2Ñ(©¬àðÛ´ª3œä€=Å”µóÅÀŽ1T¾‘ÇDH©—¬F’“Ú <‹HêáVYœ‚8$þ@þ*¬Ôô‚Ï¢‰0¬šNoEk6V7Þ ;qÅrÁÓùe|]^\› ¤£ê:Ý,LßXUŠGZÝH-:¾É³b™¥Uð#Ê|Q¦Ù&-—«*¨Â4¼öŸRšýƒþìäY:9Ûšg9,”¼GÍÏ£¯çÓZA<OâoÉì °×O*ðýZlõp¢Èƒ÷$ä{N
%}tÖ /Ȫ·°fbŸø®üðîJì ìÅ%sª

Gracias
Saludos

landaga 04-06-2021 14:30:10

Cita:

Empezado por tejano (Mensaje 541215)
Yo también lo hago por línea de comandos y me devuelve unos caracteres muy extraños.

Landaga, puedes enviar la línea de comando?

Yo lo envío de esta forma
c:\curl\1\bin\curl --insecure --cert-type P12 --cert c:\amis\exes\CERTIFICADO.p12:PASSWORD -H "Accept-Encoding:gzip" -H "Content-Encoding:gzip" -H "Content-Type:application/octet-stream" -H "eus-bizkaia-n3-version:1.0" -H "eus-bizkaia-n3-content-type:application/xml" -H "eus-bizkaia-n3-data:{\"con\":\"LROE\",\"apa\":\"1.1\",\"inte\":{\"nif\":\"A48190839\",\"nrs\":\"TECNICAS DE REFRACTARIOS S.A.U\"},\"drs\":{\"mode\":\"240\",\"ejer\":\"2021\"}}" -v "https://pruesarrerak.bizkaia.eus/N3B4001M/kontsulta" --data-binary "@c:\tmp\consulta.gz" --output c:\tmp\respuesta.xml

Y devuelve algo así.

‹ ªUþ‹ ÿ101368_peticion_Resp.xml ¥R]oÛ0ü+FßkÙi¶µ'Àðœ!ÅævÚWC–ÕTmy¢„ýõ£ƒ6éöRxGñHî”Ä*´É¯r•¯¯góh!¤óV`Þk§[™ªŸt¡ïœ(Ž^¡Á¾ïL^(|?»wnÄ„±Ýn6ÂùÇPydwÚí…S[-þ°Ë¦VLá_¯zT¯¯kj]ÇtÞö¯Ôï&¨oãš*Â=¶g2Ñ(©¬àðÛ´ª3œä€=Å”µóÅÀŽ1T¾‘ÇDH©—¬F’“Ú<‹HêáVYœ‚8$þ@þ*¬Ôô‚Ï¢‰0¬šNoEk6V7Þ ;qÅrÁÓùe|]^\› ¤£ê:Ý,LßXUŠGZÝH-:¾É³b™¥Uð#Ê|Q¦Ù&-—«*¨Â4¼öŸRšýƒþìäY:9Ûšg9,”¼GÍÏ£¯çÓZA<OâoÉì°×O*ðýZlõp¢Èƒ÷$ä{N
%}tÖ /Ȫ·°fbŸø®üðîJì ìÅ%sª

Gracias
Saludos


esos caractertes son el gzip de batuz, si lo abres con un descompresor de archivos te da el xml de hacienda
Cambia --output c:\tmp\respuesta.xml por --output c:\tmp\respuesta.gz

tejano 04-06-2021 14:42:32

Cita:

Empezado por landaga (Mensaje 541216)
esos caractertes son el gzip de batuz, si lo abres con un descompresor de archivos te da el xml de hacienda
Cambia --output c:\tmp\respuesta.xml por --output c:\tmp\respuesta.gz

Gracias Landaga, me imagino que la compresión y descompresión lo estás haciendo por línea de comando. Puedes decirme que programa utilizar y que línea de comando? Yo estaba con el 7zip - 7z a -tgzip archivo.gz archivo.xml , pero no va bien.

Gracias.

landaga 04-06-2021 14:59:33

Cita:

Empezado por tejano (Mensaje 541217)
Gracias Landaga, me imagino que la compresión y descompresión lo estás haciendo por línea de comando. Puedes decirme que programa utilizar y que línea de comando? Yo estaba con el 7zip - 7z a -tgzip archivo.gz archivo.xml , pero no va bien.

Gracias.




Para comprimir:
7z a C:\envio.gz C:\archivo.XML


simplemente ya que al poner la extensión .gz el 7zip ya entiende que debe comprimir en GZip y lo hace correctamente.



Para descomprimir tambien utilizo 7zip pero como el GZip de respuesta viene dentro de otro fichero no consigo hacerlo directamente por línea de comando. En cualquier caso utilizo:


7z e C:\salida.gz -oC:\miarchivo

landaga 04-06-2021 16:26:44

Cita:

Empezado por landaga (Mensaje 541219)
Para comprimir:
7z a C:\envio.gz C:\archivo.XML


simplemente ya que al poner la extensión .gz el 7zip ya entiende que debe comprimir en GZip y lo hace correctamente.



Para descomprimir tambien utilizo 7zip pero como el GZip de respuesta viene dentro de otro fichero no consigo hacerlo directamente por línea de comando. En cualquier caso utilizo:


7z e C:\salida.gz -oC:\miarchivo


Bueno pues ya lo he conseguido de una manera un poco rudimentaria, he vuelto a descomprimir ese archivo que me devuelve el primer proceso (C:\miarchivo) y obtengo el xml de respuesta de Batuz


7z e C:\miarchivo -oC:\

landaga 06-06-2021 18:16:19

Cita:

Empezado por landaga (Mensaje 541203)
Yo tambien utilizo curl para enviar el LROE pero no veo la forma de recibir las cabeceras de la respuesta, el cuerpo de la respuesta si lo recibo y lo archivo pero no los headers.
El asunto es que algunas veces no envia nada y como en estos casos no devuelve nada en el body no se cual es la razón del fallo.
Alguien lo tiene resuelto?
Gracias


Me respondo a mi mismo:


La opción -D de curl permite volcar las cabeceras (headers) HTTP recibidas en la respuesta del servidor.

-D Cabecera.txt (guarda las cabeceras en el archivo de texto Cabecera)

Band 08-06-2021 12:01:00

Buenas,

estoy intentando extraer la firma de los xml, pero no consigo referenciar al nodo ds:Signaturevalue.

A continuación os paso el código reducido de cómo lo hago:

Código Delphi [-]
docXML := CreateOleObject('Msxml2.DOMDocument.6.0');
docXML.Load(path+'\'+fichero);

ns := 'xmlns:T=''urn:ticketbai:emision'' xmlns:ds=''http://www.w3.org/2000/09/xmldsig#'' xmlns:xsi=''http://www.w3.org/2001/XMLSchema-instance''';

docXML.setProperty('SelectionNamespaces', ns);
docXML.setProperty('SelectionLanguage', 'XPath');

NodeList := docXML.selectNodes('//T:TicketBai/ds:Signature/ds:SignatureValue');


Considero que así sería la forma correcta de acceder al nodo, sin embargo "NodeList" es un nulo.
Si quiero obtener los nodos hijo de "T:TicketBai", lo hago así:

Código Delphi [-]
NodeList := docXML.selectNodes('//T:TicketBai/*');

Y me devuelve todos los nodos hijos de T:TicketBai, excepto el ds:Signature. La variable ns, que contiene los namespace, también considero que es correcta, puesto que si modifico los namespaces declarados ahí, entonces al ejecutar el
Código Delphi [-]
docXML.selectNodes('//T:TicketBai/ds:Signature/ds:SignatureValue')
se me queja de que los nombres de espacios son incorrectos.

Por ahora, solo puedo hacerlo con Msxml2.DOMDocument.6.0 y debería poderse pero no encuentro donde estoy fallando.

Alguien extrae la firma de esta manera o alguien me puede orientar?


Muchas gracias

keys 08-06-2021 13:32:31

Hola.

Para sacar la firma yo lo hago de la siguiente manera.

Código Delphi [-]
  Documento := Txmldocument.Create(nil);
  CoInitialize(nil);
  Documento.LoadFromFile(FicheroTBAI);
  Documento.Active := true;
  firma :=  Documento.DocumentElement.ChildNodes[4].ChildNodes[1].Text;

a través de las clases de Tbai no he conseguido hacerlo, el resto de cosas si, pero la firma no.

keys 08-06-2021 13:46:29

Hola a todos.

Alguien a podido consultar en bizkaia los datos enviados al 140 en delphi, con las clases que ellos dan. No hay forma de llegar a los datos. Como por ejemplo al objeto TicketBai.

Band 08-06-2021 15:08:27

Cita:

Empezado por keys (Mensaje 541247)
Hola.

Para sacar la firma yo lo hago de la siguiente manera.

Código Delphi [-]
  Documento := Txmldocument.Create(nil);
  CoInitialize(nil);
  Documento.LoadFromFile(FicheroTBAI);
  Documento.Active := true;
  firma :=  Documento.DocumentElement.ChildNodes[4].ChildNodes[1].Text;

a través de las clases de Tbai no he conseguido hacerlo, el resto de cosas si, pero la firma no.


Hola keys, gracias por la respuesta.
Mi problema es que no puedo usar el Txmldocument de momento :(
No sé si es problema del Msxml2.DOMDocument.6.0, porque así
Código Delphi [-]
Documento.DocumentElement.ChildNodes[4].ChildNodes[1].Text;
tampoco consigo referenciarlo.

Seguiré investigando.

tejano 08-06-2021 16:07:35

Codigo Qr
 
Hola, sabéis si una vez enviado el dato de la factura a la hacienda, ya se puede escanear el código QR, o es que estando en pruebas no es posible.

Gracias

Por otra parte, daros las gracias a todos. Hace un par de meses no habría sido capaz de hacer nada y parece que ya he podido enviar mi primera factura correcta.

GRACIASSSSSSSSS, de verdad.

skymota 08-06-2021 16:51:21

Buenas, tengo los xml firmados y su generación integrada en el software, asi que me he puesto con el envío, pero primer problema, el hacer la petición post con el certificado...
Utilizo Delphi y con el TIdHTTP como utilizo con todas las conexiones externas del software, lo que consigo aunque le meta el componente SSLIOHandler con el certificado, es que cuando me hace la petición POST, se me abre la ventana de los certificados de windows, no me coge el certificado que le estoy incluyendo.

¿Alguien ha tenido este problema? Sabeis como forzar para que pille el certificado del IOHandler?

Gracias!!



Cita:

Empezado por jaiser (Mensaje 541114)
No se porque me da el error 503. Estoy progrmamando en vb.net, no se si alguien me puede ayudar a ver donde está el error, lo he pasado a c el código.

Código:

public void envio(System.Xml.XmlDocument xml, System.Security.Cryptography.X509Certificates.X509Certificate2 certificado)
{
    byte[] sentXml = System.Text.Encoding.UTF8.GetBytes(xml.OuterXml);
    Stream stream;

    request.Method = "POST";
    request.ContentType = "application/xml; charset=utf-8";
    request.ContentType = "text/xml; charset=utf-8";
    request.Timeout = 3000000;
    request.ClientCertificates.Add(certificado);
    // soap action (this is the header I tried to add. Didn't work.)
    request.Headers.Add("SOAPAction", "h t t p s://tbai-prep.egoitza.gipuzkoa.eus/WAS/HACI/HTBRecepcionFacturasWEB/rest/recepcionFacturas/alta");

    // Set the ContentLength property of the WebRequest.
    request.ContentLength = sentXml.Length;

    stream = request.GetRequestStream();

    try
    {
        stream.Write(sentXml, 0, sentXml.Length);
    }
    catch (Exception ex)
    {
        Interaction.MsgBox("Error Sending Data: " + ex.Message);
    }

    // Close the Stream object.
    stream.Close();

    try
    {
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        Console.WriteLine("Received response with status {0} {1}.", response.StatusCode, response.StatusDescription);

        if (response.StatusCode == HttpStatusCode.OK)
        {
            XmlDocument responseXML = new XmlDocument();
            Stream a = response.GetResponseStream;
            StreamReader reader = new StreamReader(a);
            Interaction.MsgBox(reader.ReadToEnd());

            responseXML.Load(response.GetResponseStream());
            responseXML.Save("respuesta.xml");
            responseXML.Save(Console.Out);
        }

        response.Close();
    }
    catch (Exception ex)
    {
        Interaction.MsgBox("Error Getting Response: " + ex.Message);
    }
}



joselugrk 08-06-2021 17:08:22

Firma de Código
 
Hola,

Estaba intentando localizar una empresa para obtener el Certificado de Firma de Código y no sé a que empresa comprarlo.

He estado mirando www.ksoftware.net, recomendado en el foro, tiene un buen precio. Pero a la hora de realizar el pedido no me funciona con Internet Explorer 11 tal como indican en su página. También les he enviado un email y después de varios días no me han contestado.

He estado mirando:
  • digicert.com 1 año $499.00 - Muy caro
  • sectigostore.com 1 año $99.00 - Buen precio
  • leaderssl.es 1 año €69.00 - Buen precio y te dejan probarlo durante 14 días

¿Qué certificado me recomendáis? ¿Qué estáis utilizando vosotros?

Cualquier ayuda será muy agradecida, saludos y muchas gracias,
Joselu

Band 08-06-2021 17:28:30

Cita:

Empezado por Band (Mensaje 541252)
Hola keys, gracias por la respuesta.
Mi problema es que no puedo usar el Txmldocument de momento :(
No sé si es problema del Msxml2.DOMDocument.6.0, porque así
Código Delphi [-]
Documento.DocumentElement.ChildNodes[4].ChildNodes[1].Text;
tampoco consigo referenciarlo.

Seguiré investigando.


Me autocontesto por si alguien tenía el mismo problema.

Al final tenía un pequeño lío con los namespaces y como lo trata microsoft. Lo correcto es así:

Código Delphi [-]
docXML := CreateOleObject('Msxml2.DOMDocument.6.0');

ns := 'xmlns:T=''urn:ticketbai:emision''';
        
docXML.Load(path+'\'+fichero);
         
docXML.setProperty('SelectionNamespaces', ns);
          
NodeList := docXML.selectNodes('T:TicketBai/*'); 

firma := NodeList.item(4).childNodes[1].text; // (4) = ds:Signature / [1] = ds:SignatureValue

keys 09-06-2021 08:02:49

Cita:

Empezado por skymota (Mensaje 541257)
Buenas, tengo los xml firmados y su generación integrada en el software, asi que me he puesto con el envío, pero primer problema, el hacer la petición post con el certificado...
Utilizo Delphi y con el TIdHTTP como utilizo con todas las conexiones externas del software, lo que consigo aunque le meta el componente SSLIOHandler con el certificado, es que cuando me hace la petición POST, se me abre la ventana de los certificados de windows, no me coge el certificado que le estoy incluyendo.

¿Alguien ha tenido este problema? Sabeis como forzar para que pille el certificado del IOHandler?

Gracias!!

Hola.

Con TIdHTTP creo que no se puede hacer lo de gestionar los certificados. En los ejemplos que encontraras en el foro está hecho con TNetHTTPClient.

keys 09-06-2021 08:06:14

Cita:

Empezado por tejano (Mensaje 541255)
Hola, sabéis si una vez enviado el dato de la factura a la hacienda, ya se puede escanear el código QR, o es que estando en pruebas no es posible.

Gracias

Por otra parte, daros las gracias a todos. Hace un par de meses no habría sido capaz de hacer nada y parece que ya he podido enviar mi primera factura correcta.

GRACIASSSSSSSSS, de verdad.

Hola.

El codigo QR se puede escanear la factura según se envia. En gipuzkoa si no esta enviada da error, ya que el envío se realiza en el momento de hacer la factura, tanto en el entorno real como en el de pruebas. Y en Bizkaia siempre te muestra la información este o no enviada, y te indica que no esta enviada.

Galaxian 09-06-2021 10:09:02

Sobre los epígrafes del LROE 140
 
Estoy en la última fase de pruebas con batuz y me he topado con los epígrafes del LROE 140 (apartado Renta), en el que hay que asignar a cada epígrafe la base imponible correspondiente a su actividad o, lo que es lo mismo, separar la factura en actividades. ¡Toma ya!

Obviamente el problema no es de programación sino de usuario ¿alguien en su sano juicio (es decir, que no sea cerebro pensante de la administración) cree que un autónomo que tenga un negocio con varias actividades va a conocer, artículo por artículo, a que actividad hay que asignarlo?

Y aunque el gestor (si es que lo tiene) pudiera hacerlo la primera vez ¿qué ocurre con los artículos nuevos? ¿se va a estar incordiando al gestor con cada artículo?. ¿Alguien adivina a quién van a llamar si no tiene gestor o este le dice que se busque la vida?

Me da que eso va a ser una inmensa fuente de errores (y sanciones). ¿Adivináis a quién van a culpar si algo sale mal? Pues eso.

Como diría Obelix: Están locos estos romanos.

skymota 09-06-2021 11:01:54

Cita:

Empezado por keys (Mensaje 541264)
Hola.

Con TIdHTTP creo que no se puede hacer lo de gestionar los certificados. En los ejemplos que encontraras en el foro está hecho con TNetHTTPClient.

Gracias! efectivamente no se puede con TidHTTP

Error mío pq utilicé la librería Chilkat para la firma y no se me ocurrió utilizarla para esto y con esta si que se puede, además de que está documentado y es sencillísimo

Dejo un ejemplo por si le sirve a alguien:

Código:

       
        CkHttp http;
        bool success = http.SetSslClientCertPfx(CERTIFICADO, CONTRASEÑA);
        if (success != true)
        {
                ...               
        }

        CkStringBuilder sbXml;
        success = sbXml.LoadFile(FICHERO XML TBAI FIRMADO, "utf-8");
        if (success != true)
        {
                ...
        }

        const char *strXml = sbXml.asString();

        http.SetRequestHeader("Content-Type", "application/xml");
        http.SetRequestHeader("Content-Encoding", "utf-8");

        const char *strURL = ((AnsiString)usURL).c_str();
        CkHttpResponse *resp = http.PostXml(strURL, strXml, "utf-8");
        if (http.get_LastMethodSuccess() != true)
        {
                ...
        }


jaiser 10-06-2021 08:40:33

A mi me da error al probar el qr en la web de pruebas de guipuzkoa. ¿Podeis poner algúno la web qr de pruebas de guipuzkoa? Es asi:
h t t p s://tbai-prep.egoitza.gipuzkoa.eus/qr/?id=TBAI-44619360G-261020-EzyQEMtxw37Gm-161&s=TB-2020-F&nf=419&i=1542.75&cr=182


Cita:

Empezado por keys (Mensaje 541265)
Hola.

El codigo QR se puede escanear la factura según se envia. En gipuzkoa si no esta enviada da error, ya que el envío se realiza en el momento de hacer la factura, tanto en el entorno real como en el de pruebas. Y en Bizkaia siempre te muestra la información este o no enviada, y te indica que no esta enviada.


Eric Mtz 10-06-2021 09:13:24

Muy buenos días a todos, tengo un dilema que requiere de más puntos de vista.
Os pongo al día, últimamente ando gestionando las respuestas de las altas y estoy notando que Gipuzkoa es mucho más estricto que Bizkaia.
Es decir, en cuando a estructura y contenido ambos son similares, advierten de las mismas cosas y no dudan en rechazarlas si fuera necesario, sin embargo, ayer tuve la ocurrencia de enviar 3 facturas a Bizkaia y eliminar la segunda, esto según mi cabeza debería de causar algún conflicto pero no es así, me devuelve un correcto en la factura 1 y 3 como si no encontrase ningún error, cuando es EVIDENTE que la factura 3 apunta a una factura 2 inexistente y que la primera factura no está referenciada por ninguna otra. (Y sí, las mando todas en el mismo envío).

¿Qué se supone que sucede?, mis teorías son las siguientes:
1. Mi teoría más lógica es que el TBAI de Bizkaia es menos estricto por la cantidad de facturas que tiene que almacenar por cada envío... si le enviases miles de facturas y protestase por cada error de encadenamiento quizás no les salga a cuenta.
2. Mi segunda teoría es que no estoy tratando bien la respuesta???, yo diría que no, es decir, recibo sus errores cuando se trata de otros campos y de hecho los serializo correctamente a la clase respuesta, no se... a estas alturas el TBAI me hace dudar de mi propia existencia.
3. Siguiendo con la especulación, podría ser que el entorno de pruebas sea mas permisivo que el servidor final, siendo sinceros hasta que logramos realizar envíos correctos mandamos mucha basura inútil, tendría sentido que se saltasen algunas revisiones, aunque enviar en el mismo "pack" tres facturas mal encadenadas y que no diga nada tiene tela...
4. Por último mi teoría favorita, todo el TBAI es una farsa, al otro lado tan solo hay un mono aporreando un teclado para determinar si el envío está bien y acabo de romper el mátrix.

En fin, ¿Alguien me puede arrojar un poco de luz sobre todo este asunto?, gracias de antemano.

Neftali [Germán.Estévez] 10-06-2021 09:51:11

Cita:

Empezado por jaiser (Mensaje 541273)
A mi me da error al probar el qr en la web de pruebas de guipuzkoa. ¿Podeis poner algúno la web qr de pruebas de guipuzkoa? Es asi:
h t t p s://tbai-prep.egoitza.gipuzkoa.eus/qr/?id=TBAI-44619360G-261020-EzyQEMtxw37Gm-161&s=TB-2020-F&nf=419&i=1542.75&cr=182


Creo que la Base para la URL es esta: https://tbai.prep.gipuzkoa.eus/qr/

MikusMikae 10-06-2021 11:15:32

Errror de envio a Gipuzkoa
 
Hola,

Soy nuevo en el foro, gracias de antemano por la ayuda encontrada en este foro para el desarrollo de la adaptación de Ticket Bai. Impagable.

Tengo el desarrollo avanzado, genero el xml, lo firmo (chilkat), envio el fichero (A Gipuzkoa en este caso), pero me devuelve el siguiente error y no se verlo.

Error: El fichero de alta TicketBAI no cumple el esquema XSD. Detalle del error: cvc-complex-type.2.4.a: Invalid content was found starting with element 'ds:Signature'.
One of '{"http://www.w3.org/2000/09/xmldsig#":Signature}' is expected.

En el fichero xml la firma empieza y finaliza de este modo:

Cita:

</HuellaTBAI>
<ds:Signature xmlns:ds="h t t p:w w w.w3.org/2000/09/xmldsig#" Id="Signature-63c35f38-2b5f-4600-b3da-3ddee86d62b3-Signature">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="h t t p://w w w.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod Algorithm="h t t p://w w w.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
.....
.....
</xades:QualifyingProperties>
</ds:Object>
</ds:Signature>
</T:TicketBai>
¿Qué puede ser?

Gracias.

Neftali [Germán.Estévez] 10-06-2021 15:12:14

1 Archivos Adjunto(s)
Cita:

Empezado por MikusMikae (Mensaje 541276)
Soy nuevo en el foro, gracias de antemano por la ayuda encontrada en este foro para el desarrollo de la adaptación de Ticket Bai. Impagable.

Bienvenido al foro.

Cita:

Empezado por MikusMikae (Mensaje 541276)
Error: El fichero de alta TicketBAI no cumple el esquema XSD. Detalle del error: cvc-complex-type.2.4.a: Invalid content was found starting with element 'ds:Signature'.
One of '{"http://www.w3.org/2000/09/xmldsig#":Signature}' is expected.

Segun el error parece que el problema que está en el XML/ds:Signature.
Te adjunto un par de ejemplos que se pueden descargar.
Revísalos y compara la estructura con el que estás generando, a ver qué diferencias ves.

jaiser 10-06-2021 15:41:27

Cita:

Empezado por MikusMikae (Mensaje 541276)
Hola,

Soy nuevo en el foro, gracias de antemano por la ayuda encontrada en este foro para el desarrollo de la adaptación de Ticket Bai. Impagable.

Tengo el desarrollo avanzado, genero el xml, lo firmo (chilkat), envio el fichero (A Gipuzkoa en este caso), pero me devuelve el siguiente error y no se verlo.

Error: El fichero de alta TicketBAI no cumple el esquema XSD. Detalle del error: cvc-complex-type.2.4.a: Invalid content was found starting with element 'ds:Signature'.

En el fichero xml la firma empieza y finaliza de este modo:



¿Qué puede ser?

Gracias.

No se si habrás copiado el ejemplo del chilkat, si es asi prueba a cambiar al hacer la llamada para firmar "T:TicketBai" por "TicketBai". Quita el "T:"

jaiser 10-06-2021 15:41:57

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 541275)
Creo que la Base para la URL es esta: h t tp s ://tbai.prep.gipuzkoa.eus/qr/

Muchas gracias

MikusMikae 11-06-2021 10:37:52

Cita:

Empezado por jaiser (Mensaje 541278)
No se si habrás copiado el ejemplo del chilkat, si es asi prueba a cambiar al hacer la llamada para firmar "T:TicketBai" por "TicketBai". Quita el "T:"

Si le quito la 'T:', Chilkat devuelve error , no sabe donde ubicar la firma.
Doing first SAX parse...
The location of where to insert the Signature was not found.
Failed.

He enviado un correo a soporte de Gipuzkoa, a ver que comentan.

Maska10 11-06-2021 11:51:30

Buenos días compañeros, llevo años sin pasar por aquí y con esto del Ticket Bai pues nos toca.

Mira que llevo semanas respasando todo el hilo + la documentación de las distintas haciendas, tengo bastante claros los procesos excepto una parte (o bien soy muy tonto o bien por mucho que lo lea no lo capto) .. tengo claro que:

1 - Genero el fichero XML
2 - Lo firmo
3 - Genero TBAI y QR ?¿?¿?¿?¿
4 - Lo envío

Guay, como veis mi duda está en el punto 3:

- ¿que carajo significa genero el TBAI? he visto códigos con un TBAI-ID que no se de donde sale y en base a que se genera
- ¿que datos contiene el QR, a donde apunta? entiendo que en base al TBAI-ID pero claro, hasta que no me aclare con el punto anterior no puedo entender este.

Disculpad si son preguntas tontas pero en serio que me he leido 3 veces ya todos los mensajes.

FranAza 11-06-2021 11:58:53

Cita:

Empezado por MikusMikae (Mensaje 541276)
Hola,

Soy nuevo en el foro, gracias de antemano por la ayuda encontrada en este foro para el desarrollo de la adaptación de Ticket Bai. Impagable.

Tengo el desarrollo avanzado, genero el xml, lo firmo (chilkat), envio el fichero (A Gipuzkoa en este caso), pero me devuelve el siguiente error y no se verlo.

Error: El fichero de alta TicketBAI no cumple el esquema XSD. Detalle del error: cvc-complex-type.2.4.a: Invalid content was found starting with element 'ds:Signature'.
One of '{"http://www.w3.org/2000/09/xmldsig#":Signature}' is expected.

En el fichero xml la firma empieza y finaliza de este modo:



¿Qué puede ser?

Gracias.

Buenas,

Según tu xml, es posible que te falte poner // en la línea:

<ds:Signature xmlns:ds="h t t p:w w w.w3.org/2000/09/xmldsig#" Id="Signature-63c35f38-2b5f-4600-b3da-3ddee86d62b3-Signature">

Justo después de h t t p:

Saludos

MikusMikae 11-06-2021 12:08:24

Cita:

Empezado por FranAza (Mensaje 541288)
Buenas,

Según tu xml, es posible que te falte poner // en la línea:

<ds:Signature xmlns:ds="h t t p:w w w.w3.org/2000/09/xmldsig#" Id="Signature-63c35f38-2b5f-4600-b3da-3ddee86d62b3-Signature">

Justo después de h t t p:

Saludos




Era eso. Que vista.

Muchas gracias.

HerensugeBeltz 11-06-2021 12:55:56

Cita:

Empezado por Maska10 (Mensaje 541287)
Buenos días compañeros, llevo años sin pasar por aquí y con esto del Ticket Bai pues nos toca.

Mira que llevo semanas respasando todo el hilo + la documentación de las distintas haciendas, tengo bastante claros los procesos excepto una parte (o bien soy muy tonto o bien por mucho que lo lea no lo capto) .. tengo claro que:

1 - Genero el fichero XML
2 - Lo firmo
3 - Genero TBAI y QR ?¿?¿?¿?¿
4 - Lo envío

Guay, como veis mi duda está en el punto 3:

- ¿que carajo significa genero el TBAI? he visto códigos con un TBAI-ID que no se de donde sale y en base a que se genera
- ¿que datos contiene el QR, a donde apunta? entiendo que en base al TBAI-ID pero claro, hasta que no me aclare con el punto anterior no puedo entender este.

Disculpad si son preguntas tontas pero en serio que me he leido 3 veces ya todos los mensajes.

Esos procesos se definen en el PDF titulado 'Especificaciones funcionales y técnicas del sistema TicketBAI', disponible en la documentación técnica de las distintas Hacienda Forales.
Concretamente:
- Punto 4.3.2. Identificativo TBAI, donde explica cómo generarlo.
- Punto 4.3.3. QR TBAI. Explica el contenido del código QR.

Ánimo!

Maska10 11-06-2021 15:17:33

Cita:

Empezado por HerensugeBeltz (Mensaje 541290)
Esos procesos se definen en el PDF titulado 'Especificaciones funcionales y técnicas del sistema TicketBAI', disponible en la documentación técnica de las distintas Hacienda Forales.
Concretamente:
- Punto 4.3.2. Identificativo TBAI, donde explica cómo generarlo.
- Punto 4.3.3. QR TBAI. Explica el contenido del código QR.

Ánimo!

Muchas gracias, ya lo tengo.

Eric Mtz 14-06-2021 10:52:10

Ayuda
 
Buenos días, tengo una pequeña duda con respecto a las pruebas de anulación de Gipuzkoa.

El caso es que hasta ahora he rellenado los campos de "software de facturación" con datos falsos, y quitando un simple aviso de "El software no está registrado" no tenía problemas ya que igualmente almacenaban la factura.

Sin embargo al realizar el envío de una anulación a Gipuzkoa recibo lo siguiente: "Error: Falta dato obligatorio o el dato es erróneo [LicenciaTBAI]</". El contenido de ese campo ya os adelanto que es "TBAIPRUEBA", es decir, el mismo texto de prueba del ejemplo oficial que nos ofrece BATUZ.

¿Habéis tenido algún problema similar?, ¿tengo que registrar el software para poder realizar estas pruebas?

Neftali [Germán.Estévez] 14-06-2021 12:06:05

Cita:

Empezado por Eric Mtz (Mensaje 541313)
¿Habéis tenido algún problema similar?, ¿tengo que registrar el software para poder realizar estas pruebas?

Aquí:
https://www.gipuzkoa.eus/es/web/ogas...stado-software

Puedes encontrar esto:
Entidades desarrolladoras: si desea registrar su software para TicketBAI acceda a la aplicación de Registro de Software TicketBAI.

https://egoitza.gipuzkoa.eus/WAS/COR...HTBSW&idioma=C

También puedes revisar aquí para Bizkaia:
https://www.ebizkaia.eus/es/catalogo...os?procID=1660


La franja horaria es GMT +2. Ahora son las 04:37:13.

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