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


La franja horaria es GMT +2. Ahora son las 23:31:26.

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