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
  #1  
Antiguo 08-08-2022
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.744
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Problemas de envio mediante CURL

Estoy tratando de enviar mediante CURL un registro.

En la apliación hago y firmo el TicketBAI y luego hago el xml de la presentación.
Código:
<?xml version="1.0"?>
<lrpjfecsgap:LROEPJ240FacturasEmitidasConSGAltaPeticion xmlns:lrpjfecsgap="https://www.batuz.eus/fitxategiak/batuz/LROE/esquemas/LROE_PJ_240_1_1_FacturasEmitidas_ConSG_AltaPeticion_V1_0_2.xsd">
  <Cabecera>
    <Modelo>240</Modelo>
    <Capitulo>1</Capitulo>
    <Subcapitulo>1.1</Subcapitulo>
    <Operacion>A00</Operacion>
    <Version>1.0</Version>
    <Ejercicio>2022</Ejercicio>
    <ObligadoTributario>
      <NIF>B95642500</NIF>
      <ApellidosNombreRazonSocial>ECOTHERM ENERGY SL</ApellidosNombreRazonSocial>
    </ObligadoTributario>
  </Cabecera>
  <FacturasEmitidas>
    <FacturaEmitida>
      <TicketBai>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48VDpUaWNrZXRC
[...]
PjwvZHM6T2JqZWN0PjwvZHM6U2lnbmF0dXJlPjwvVDpUaWNrZXRCYWk+
</TicketBai>
    </FacturaEmitida>
  </FacturasEmitidas>
</lrpjfecsgap:LROEPJ240FacturasEmitidasConSGAltaPeticion>
Este fichero lo comprimo con 7zip en formato gz.
Código:
7z.exe a Presentacion_1.gz Presentacion_1.xml
Luego creo un fichero BAT para ejecutar el envío:
Código:
set CAB1=-H "Accept-Encoding: gzip" 
set CAB2=-H "Content-Encoding: gzip" 
set CAB3=-H "Content-Type: application/octet-stream" 
set CAB4=-H "eus-bizkaia-n3-version: 1.0" 
set CAB5=-H "eus-bizkaia-n3-content-type: application/xml" 
set CAB6=-H "eus-bizkaia-n3-data: { \"con\":\"LROE\", \"apa\":\"1.1\", \"inte\":{ \"nif\":\"B95642500\", \"nrs\":\"ECOTHERM ENERGY SL\", \"ap1\":\"\", \"ap2\":\"\" }, \"drs\":{ \"mode\":\"240\", \"ejer\":\"2022\" } } " 
set FICHERO=--data-binary "@Presentacion_1.xml" 
set CERT=--cert Certificado_crt.pem 
set CERT_KEY=--key Certificado_key.pem 
set URL=-v https://tbai-z.prep.gipuzkoa.eus/sarrerak/alta 
set REPUESTA=--output Respuesta_1.gz 
set CABECERA=-D Respuesta_1.txt 
cls 
.\curl.exe -v --insecure %CAB1% %CAB2% %CAB3% %CAB4% %CAB5% %CAB6% %FICHERO% %CERT_TYPE% %CERT% %CERT_KEY% %URL% %RESPUESTA% %CABECERA%
El problema es que me está devolviendo el mensaje 415 Unsupported Media Type
Código:
HTTP/1.1 415 Unsupported Media Type
Date: Mon, 08 Aug 2022 13:14:34 GMT
Server: Apache/2.4.16 (Unix) OpenSSL/1.0.1e-fips
X-Powered-By: Servlet/3.0
$WSEP: 
Transfer-Encoding: chunked
Content-Type: text/html;charset=ISO-8859-1
Content-Language: en-US
He seguido este hilo y he visto y comparado las difrentes formas de enviar por CURL que hay en el mensaje que resume este tema.
He visto que hay algunos de ustedes que han enviado con éxito utilizando CURL estos registros.

¿Véis alguna cosa rara en cómo lo estoy haciendo yo?

Lo único que me resulta raro en la respuesta es
Content-Type: text/html;charset=ISO-8859-1
Pero yo genero en UTF8 y en la cabecera se menciona tipo gzip.


Por si sirve de algo, os dejo la captura completa de lo que devuelve CURL.

Código:
C:\Users\Usuario\AppData\Local\Temp>.\curl.exe -v --insecure -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\":\"B95642500\", \"nrs\":\"ECOTHERM ENERGY SL\", \"ap1\":\"\", \"ap2\":\"\" }, \"drs\":{ \"mode\":\"240\", \"ejer\":\"2022\" } } "  --data-binary "@Presentacion_1.xml"   --cert Certificado_crt.pem  --key Certificado_key.pem  -v https://tbai-z.prep.gipuzkoa.eus/sarrerak/alta   -D Respuesta_1.txt
*   Trying 82.116.160.130:443...
* Connected to tbai-z.prep.gipuzkoa.eus (82.116.160.130) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* TLSv1.0 (OUT), TLS header, Certificate Status (22):
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS header, Certificate Status (22):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS header, Certificate Status (22):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS header, Certificate Status (22):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS header, Certificate Status (22):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS header, Finished (20):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS header, Finished (20):
* TLSv1.2 (IN), TLS header, Certificate Status (22):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server did not agree to a protocol
* Server certificate:
*  subject: C=ES; ST=GIPUZKOA; L=DONOSTIA / SAN SEBASTIAN; O=INFORMATIKA ZERBITZUEN FORU ELKARTEA - SOCIEDAD FORAL DE SERVICI; CN=*.prep.gipuzkoa.eus
*  start date: Nov 15 15:59:03 2021 GMT
*  expire date: Dec 15 15:59:03 2022 GMT
*  issuer: C=ES; O=IZENPE S.A.; OU=AZZ Ziurtagiri publikoa - Certificado publico SCA; CN=EAEko Herri Administrazioen CA - CA AAPP Vascas (2)
*  SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway.
* TLSv1.2 (OUT), TLS header, Supplemental data (23):
* TLSv1.2 (OUT), TLS header, Supplemental data (23):
> POST /sarrerak/alta HTTP/1.1
> Host: tbai-z.prep.gipuzkoa.eus
> User-Agent: curl/7.81.0
> Accept: */*
> Accept-Encoding: gzip
> Content-Encoding: gzip
> Content-Type: application/octet-stream
> eus-bizkaia-n3-version: 1.0
> eus-bizkaia-n3-content-type: application/xml
> eus-bizkaia-n3-data: { "con":"LROE", "apa":"1.1", "inte":{ "nif":"B95642500", "nrs":"ECOTHERM ENERGY SL", "ap1":"", "ap2":"" }, "drs":{ "mode":"240", "ejer":"2022" } }
> Content-Length: 19906
>
* TLSv1.2 (IN), TLS header, Certificate Status (22):
* TLSv1.2 (IN), TLS handshake, Hello request (0):
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS header, Certificate Status (22):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS header, Certificate Status (22):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS header, Certificate Status (22):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS header, Certificate Status (22):
* TLSv1.2 (IN), TLS handshake, Request CERT (13):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Certificate (11):
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, CERT verify (15):
* TLSv1.2 (OUT), TLS header, Finished (20):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS header, Finished (20):
* TLSv1.2 (IN), TLS header, Certificate Status (22):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* old SSL session ID is stale, removing
* TLSv1.2 (IN), TLS header, Supplemental data (23):
* Mark bundle as not supporting multiuse
< HTTP/1.1 415 Unsupported Media Type
< Date: Mon, 08 Aug 2022 14:02:00 GMT
< Server: Apache/2.4.16 (Unix) OpenSSL/1.0.1e-fips
< X-Powered-By: Servlet/3.0
< $WSEP:
< Transfer-Encoding: chunked
< Content-Type: text/html;charset=ISO-8859-1
< Content-Language: en-US
<
* TLSv1.2 (IN), TLS header, Supplemental data (23):
Error 415: SRVE0295E: Error reported: 415
* TLSv1.2 (IN), TLS header, Supplemental data (23):
* TLSv1.2 (IN), TLS header, Supplemental data (23):
* Connection #0 to host tbai-z.prep.gipuzkoa.eus left intact

Última edición por duilioisola fecha: 08-08-2022 a las 16:12:40.
Responder Con Cita
  #2  
Antiguo 09-08-2022
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.339
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Has probado con este ContentType? (tercer parametro)
Cita:
set CAB3=-H "Content-Type: application/xml;charset=UTF-8"
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 09-08-2022
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.744
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
¿Has probado con este ContentType? (tercer parametro)
set CAB3=-H "Content-Type: application/xml;charset=UTF-8"
Parece que funcionó!!! MUCHAS GRACIAS!!!
La respuesta es:
Código:
HTTP/1.1 200 OK
Date: Tue, 09 Aug 2022 06:45:24 GMT
Server: Apache/2.4.16 (Unix) OpenSSL/1.0.1e-fips
X-Powered-By: Servlet/3.0
Content-Length: 861
Content-Type: application/xml;charset=utf-8
Content-Language: en-US
Ahora seguiré mirando cómo sigue el intercambio, pues el mensaje de respuesta me dice que el tamaño no es válido.
No se si se refiere a:
  • todo el mensaje
  • La parte JSON de la cabecera.
  • al campo <TicketBAI> que contiene el Ticket BAI comprimido y convertido a Base64
  • algún campo dentro del Ticket BAI (aunque esto sí lo acepta)

Código:
Fichero RESPUESTA_1.GZ
(que contiene texto XML ya que el Content-Type de la respuesta es application/xml;charset=utf-8)

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:TicketBaiResponse xmlns:ns2="urn:ticketbai:emision">
    <Salida>
        <FechaRecepcion>09-08-2022 09:04:18</FechaRecepcion>
        <Estado>01</Estado>
        <Descripcion>Rechazado - ALTA PREP</Descripcion>
        <Azalpena>Baztertua - ALTA PREP</Azalpena>
        <ResultadosValidacion>
            <Codigo>017</Codigo>
            <Descripcion>El tamaño del mensaje no es válido: ha superado el tamaño permitido. Le recomendamos que eliminen espacios, tabulaciones u otro tipo de caracteres innecesarios.</Descripcion>
            <Azalpena>Mezuaren tamaina ez da zuzena: baimendutako tamaina gainditu du. Espazioak, tabulazioak edo beharrezkoak ez diren bestelako karaktereak ezabatzea gomendatzen dizugu.</Azalpena>
        </ResultadosValidacion>
    </Salida>
</ns2:TicketBaiResponse>
Si alguien me puede enviar un fichero de presentación de un ticket BAI os lo agradecería, para poder comparar formato, tamaño, codificacion, etc.

Os dejo el BAT con el que estoy trabajando hasta ahora.
Código:
@echo off
cd C:\Users\Usuario\AppData\Local\Temp\

rem HEADER del mensaje que enviamos.
set CAB1=-H "Accept-Encoding: gzip" 
set CAB2=-H "Content-Encoding: gzip" 
set CAB3=-H "Content-Type: application/xml;charset=UTF-8" 
set CAB4=-H "eus-bizkaia-n3-version: 1.0" 
set CAB5=-H "eus-bizkaia-n3-content-type: application/xml" 

rem JSON de la cabecera con datos de la presentacion
set CAB6=-H "eus-bizkaia-n3-data: { \"con\":\"LROE\", \"apa\":\"1.1\", \"inte\":{ \"nif\":\"B95642500\", \"nrs\":\"ECOTHERM ENERGY SL\", \"ap1\":\"\", \"ap2\":\"\" }, \"drs\":{ \"mode\":\"240\", \"ejer\":\"2022\" } } "

rem Fichero que contiene el XML de presentacion comprimido en formato GZ.
set FICHERO=--data-binary "@Presentacion_1.gz" 

rem Certificado
rem set CERT_TYPE=--cert-type PEM 
set CERT=--cert Certificado_crt.pem 
set CERT_KEY=--key Certificado_key.pem 

rem URL a donde enviamos el mensaje. (Alta y Baja en produccion o en pruebas)
set URL=-v https://tbai-z.prep.gipuzkoa.eus/sarrerak/alta

rem Fichero con el mensaje de respuesta. Puede ser un mensaje de error en formato XML (<ns2:TicketBaiResponse xmlns:ns2="urn:ticketbai:emision">).
set FICHERORESPUESTA=--output Respuesta_1.gz

rem La primera linea sera el codigo de error. Por ejemplo "HTTP/1.1 200 OK".
rem Tambien devolvera el yipo de contenido de la respuesta. Por ejemplo "Content-Type: application/xml;charset=utf-8".
set HEADERRESPUESTA=-D Respuesta_1.txt

cls 
.\curl.exe -v --insecure %CAB1% %CAB2% %CAB3% %CAB4% %CAB5% %CAB6% %FICHERO% %CERT_TYPE% %CERT% %CERT_KEY% %URL% %FICHERORESPUESTA% %HEADERRESPUESTA% 

pause
Responder Con Cita
  #4  
Antiguo 09-08-2022
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.339
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por duilioisola Ver Mensaje
Si alguien me puede enviar un fichero de presentación de un ticket BAI os lo agradecería, para poder comparar formato, tamaño, codificacion, etc.

Código PHP:
<?xml version="1.0" encoding="utf-8"?>
<T:TicketBai xmlns:T="urn:ticketbai:emision">
    <Cabecera>
        <IDVersionTBAI>1.2</IDVersionTBAI>
    </Cabecera>
    <Sujetos>
        <Emisor>
            <NIF>B11111111</NIF>
            <ApellidosNombreRazonSocial>NOMBRE EMPRESA</ApellidosNombreRazonSocial>
        </Emisor>
        <Destinatarios>
            <IDDestinatario>
                <NIF>B22222222</NIF>
                <ApellidosNombreRazonSocial>AÑAR LORAZAINTZA SL</ApellidosNombreRazonSocial>
                <CodigoPostal>08009</CodigoPostal>
                <Direccion>Muntaner, 12</Direccion>
            </IDDestinatario>
        </Destinatarios>
        <VariosDestinatarios>N</VariosDestinatarios>
        <EmitidaPorTercerosODestinatario>N</EmitidaPorTercerosODestinatario>
    </Sujetos>
    <Factura>
        <CabeceraFactura>
            <SerieFactura>SA</SerieFactura>
            <NumFactura>44</NumFactura>
            <FechaExpedicionFactura>25-07-2022</FechaExpedicionFactura>
            <HoraExpedicionFactura>09:44:20</HoraExpedicionFactura>
            <FacturaSimplificada>N</FacturaSimplificada>
            <FacturaEmitidaSustitucionSimplificada>N</FacturaEmitidaSustitucionSimplificada>
        </CabeceraFactura>
        <DatosFactura>
            <DescripcionFactura>Bicicleta carrera</DescripcionFactura>
            <DetallesFactura>
                <IDDetalleFactura>
                    <DescripcionDetalle>Bicicleta carrera</DescripcionDetalle>
                    <Cantidad>1.00</Cantidad>
                    <ImporteUnitario>11.00000000</ImporteUnitario>
                    <Descuento>1.98</Descuento>
                    <ImporteTotal>10.91</ImporteTotal>
                </IDDetalleFactura>
            </DetallesFactura>
            <ImporteTotalFactura>10.91</ImporteTotalFactura>
            <Claves>
                <IDClave>
                    <ClaveRegimenIvaOpTrascendencia>01</ClaveRegimenIvaOpTrascendencia>
                </IDClave>
            </Claves>
        </DatosFactura>
        <TipoDesglose>
            <DesgloseFactura>
                <Sujeta>
                    <NoExenta>
                        <DetalleNoExenta>
                            <TipoNoExenta>S1</TipoNoExenta>
                            <DesgloseIVA>
                                <DetalleIVA>
                                    <BaseImponible>9.02</BaseImponible>
                                    <TipoImpositivo>21.00</TipoImpositivo>
                                    <CuotaImpuesto>1.89</CuotaImpuesto>
                                    <TipoRecargoEquivalencia>0.00</TipoRecargoEquivalencia>
                                    <CuotaRecargoEquivalencia>0.00</CuotaRecargoEquivalencia>
                                    <OperacionEnRecargoDeEquivalenciaORegimenSimplificado>N</OperacionEnRecargoDeEquivalenciaORegimenSimplificado>
                                </DetalleIVA>
                            </DesgloseIVA>
                        </DetalleNoExenta>
                    </NoExenta>
                </Sujeta>
            </DesgloseFactura>
        </TipoDesglose>
    </Factura>
    <HuellaTBAI>
        <EncadenamientoFacturaAnterior>
            <SerieFacturaAnterior>SA</SerieFacturaAnterior>
            <NumFacturaAnterior>43</NumFacturaAnterior>
            <FechaExpedicionFacturaAnterior>12-07-2022</FechaExpedicionFacturaAnterior>
            <SignatureValueFirmaFacturaAnterior>2XzEhji0af0hHWP8p0FpBBxhQrvJjSF4qRP5VfozLC5CQ4+NoFDUfcIrNj6jn1pfmuaOOPcxNi10QWyRaDJLi5b0bWSC/q+0DHl8</SignatureValueFirmaFacturaAnterior>
        </EncadenamientoFacturaAnterior>
        <Software>
            <LicenciaTBAI>TBAIXXXXXXXXXXXXXX</LicenciaTBAI>
            <EntidadDesarrolladora>
                <NIF>B11111111</NIF>
            </EntidadDesarrolladora>
            <Nombre>NOMBRE_ERP</Nombre>
            <Version>14.05.00.0</Version>
        </Software>
    </HuellaTBAI>
    <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signature-229139166">
        <ds:SignedInfo>
            <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
            <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
            <ds:Reference Id="Reference-ID-906576092" URI="">
                <ds:Transforms>
                    <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
                </ds:Transforms>
                <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
                <ds:DigestValue>IpXdMRzbXG2FGTwys8NPhjMCwra+gM+28Z31JcSGXHI=</ds:DigestValue>
            </ds:Reference>
            <ds:Reference Type="http://uri.etsi.org/01903#SignedProperties" URI="#SignedProperties-777055075">
                <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
                <ds:DigestValue>uZ8i3Bac2BsLavzCN5AvwRnfeO3U5vqOlPDG1oxqQmI=</ds:DigestValue>
            </ds:Reference>
        </ds:SignedInfo>
        <ds:SignatureValue>xqXvvxMp7xoJRhXRZ9TnvEzWJGGhUCRzwO/M6ZO06N4bgJvTvaX+lv1uLKNOC1uDhBnRmqtYViSV/bBzxt6WnZVx4uX3MT1zc3yJ+zNdTxe0WSOls0FtSHsu/Tv9AIB7xC9JMIAD7h5AYuX7ja1LfrnVgW+TBIVJIl2xuWcV1WNd088vaKJU5VG6TCEjPF63ldRvwvtnjslfSnlNPSMmdYoml8KbdTYHdYhDGav3wgrqciWpO1Bv0txO8svB5/u1wqiQvLm/lpNVi1hDdu1pP02nXAseSRdBmEwgiwffTDU+LSPAfLEqxF82jb6G0oHKgR53RnaYjSB8/ygiWzGBWIgCYb9ZQr9SZFuNqRdhLACGtIGqoKb3XbbbIJrXNbGWx2xbAdbxsNJjXqyTMz2M3m79unqY36L2yQ7Iiv2gv/5iDU4nbNeNs6CrVK3xKqlzR5obiG3Epx2IKoe/abOrzbiG7VirC3rojekfeLH0acgYlfrJ7zRvyKugyRxqrf39q42yUbHoWazMcAf2KIn42V1D7fcrtoOEue2fXW8zlH3Awph+Ge8r79bHhmIvvQToeu8cR5C5wQFZOlHOLXp20u/8TiTlELJ1/O/Fl2sBGjgG8hCB6stmj3KM3xYG5HfrWMmIp0I84Dya0qrwFPhLsCDVquuN0JGPVLMYquKcXAg=</ds:SignatureValue>
        <ds:KeyInfo>
            <ds:KeyValue>
                <ds:RSAKeyValue>
                    <ds:Modulus>3+RvefNVHNcvHSzFmjXNMRdZXKctuVAY6hOy2nc486H4opgE8H5/2orrIF9wfJW6Hb5xAhc6DNhlfXoTq6a5OSAKPDyn7az8uYzuOR+HIFn8Ow8y4/An+kHCyTqN2avksmQDrc2cfxzdUYu6GVIazmfU2iFiwXCrG+lJDEeLoh+8VD6YCnFDSuCyZVUcTaPVg/ymjtVcXJoLe8qiXjha63Yf+EKt9Sz9xgRZVGA68eixJWXwU/D0UYC/miw6JWro4whWO8o5vDrSdLvpmpojXRRCZcDktFKwsIbJW9u7bFxNv5LPzVgM14mBzpUfJ2/JuQbB79Gq6l6NPtN53qlHPgA3jTJTOX0vHqkCEU1VTVN8UqHmNQxbXt6gbRERaQRt/h0lE4yW+GYI7AQLoDlpwFRXRt5bL8NcCWQtH7HkUyNbN3EQFj48sOn5sVKzOfkbWPPC5BgSoziXlPpsTYZMlP2uLv3vD1iY0XHau/C821FJVZ0r/oqE37rukHk8gyCP6Yc1xON05d2rrs+rwTqgwxnSWx4SogyGyzdovS0LUT/zfM+fLJeILC5941X5iMSvvrHrGN829f+J+/uo5dez5X4eyyzqXrc/FwbgT02Y+kni2c1Wb+T5XmnVTpiwarI38W6zru+XTEPKirhJnEGIy1tT85JGoBlzWXSnY794XDs=</ds:Modulus>
                    <ds:Exponent>AQAB</ds:Exponent>
                </ds:RSAKeyValue>
            </ds:KeyValue>
            <ds:X509Data>
                <ds:X509IssuerSerial>
                    <ds:X509IssuerName>CN=EAEko Herri Administrazioen CA - CA AAPP Vascas (2), OU=AZZ Ziurtagiri publikoa - Certificado publico SCA, O=IZENPE S.A., C=ES</ds:X509IssuerName>
                    <ds:X509SerialNumber>40680020218691596437659190274445776782</ds:X509SerialNumber>
                </ds:X509IssuerSerial>
                <ds:X509SubjectName>CN=L1NRCV01D748027, OU=PC, OU=ZEPHYRUS M GU502GU_GU502GU, OU=Gailu ziurtagiria - Certificado de dispositivo, O=ASUS, C=ES</ds:X509SubjectName>
                <ds:X509Certificate>MIIJDDCCBvSgAwIBAgIQHpqv2S+e3ZZgk/gLEO+XjjANBgkqhkiG9w0BAQsFADCBnTELMAkGA1UEBhMCRVMxFDASBgNVBAoMC0laRU5QRSBTLkEuMTowOAYDVQQLDDFBWlogWml1cnRhZ2lyaSBwdWJsaWtvYSAtIENlcnRpZmljYWRvIHB1YmxpY28gU0NBMTwwOgYDVQQDDDNFQUVrbyBIZXJyaSBBZG1pbmlzdHJhemlvZW4gQ0EgLSBDQSBBQVBQIFZhc2NhcyAoMikwHhcNMjEwNTA2MTQwNzA3WhcNMzEwNTA2MTQwNzA3WjCBoTELMAkGA1UEBhMCRVMxDTALBgNVBAoMBEFTVVMxNzA1BgNVBAsMLkdhaWx1IHppdXJ0YWdpcmlhIC0gQ2VydGlmaWNhZG8gZGUgZGlzcG9zaXRpdm8xIzAhBgNVBAsMGlpFUEhZUlVTIE0gR1U1MDJHVV9HVTUwMkdVMQswCQYDVQQLDAJQQzEYMBYGA1UEAwwPTDFOUkNWMDFENzQ4MDI3MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA3+RvefNVHNcvHSzFmjXNMRdZXKctuVAY6hOy2nc486H4opgE8H5/2orrIF9wfJW6Hb5xAhc6DNhlfXoTq6a5OSAKPDyn7az8uYzuOR+HIFn8Ow8y4/An+kHCyTqN2avksmQDrc2cfxzdUYu6GVIazmfU2iFiwXCrG+lJDEeLoh+8VD6YCnFDSuCyZVUcTaPVg/ymjtVcXJoLe8qiXjha63Yf+EKt9Sz9xgRZVGA68eixJWXwU/D0UYC/miw6JWro4whWO8o5vDrSdLvpmpojXRRCZcDktFKwsIbJW9u7bFxNv5LPzVgM14mBzpUfJ2/JuQbB79Gq6l6NPtN53qlHPgA3jTJTOX0vHqkCEU1VTVN8UqHmNQxbXt6gbRERaQRt/h0lE4yW+GYI7AQLoDlpwFRXRt5bL8NcCWQtH7HkUyNbN3EQFj48sOn5sVKzOfkbWPPC5BgSoziXlPpsTYZMlP2uLv3vD1iY0XHau/C821FJVZ0r/oqE37rukHk8gyCP6Yc1xON05d2rrs+rwTqgwxnSWx4SogyGyzdovS0LUT/zfM+fLJeILC5941X5iMSvvrHrGN829f+J+/uo5dez5X4eyyzqXrc/FwbgT02Y+kni2c1Wb+T5XmnVTpiwarI38W6zru+XTEPKirhJnEGIy1tT85JGoBlzWXSnY794XDsCAwEAAaOCA0AwggM8MIHHBgNVHRIEgb8wgbyGFWh0dHA6Ly93d3cuaXplbnBlLmNvbYEPaW5mb0BpemVucGUuY29tpIGRMIGOMUcwRQYDVQQKDD5JWkVOUEUgUy5BLiAtIENJRiBBMDEzMzcyNjAtUk1lcmMuVml0b3JpYS1HYXN0ZWl6IFQxMDU1IEY2MiBTODFDMEEGA1UECQw6QXZkYSBkZWwgTWVkaXRlcnJhbmVvIEV0b3JiaWRlYSAxNCAtIDAxMDEwIFZpdG9yaWEtR2FzdGVpejAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0OBBYEFP7l1cwcXOUTcx9428TFx7oWETeTMB8GA1UdIwQYMBaAFMCpSvdHJYf/vLWmic6C0kaoieujMIIBHgYDVR0gBIIBFTCCAREwggENBgorBgEEAfM5AQMCMIH+MCUGCCsGAQUFBwIBFhlodHRwOi8vd3d3Lml6ZW5wZS5jb20vY3BzMIHUBggrBgEFBQcCAjCBxwyBxEJlcm1lZW4gbXVnYWsgZXphZ3V0emVrbyB3d3cuaXplbnBlLmNvbSBaaXVydGFnaXJpYW4ga29uZmlhbnR6YSBpemFuIGF1cnJldGlrIGtvbnRyYXR1YSBpcmFrdXJyaS5MaW1pdGFjaW9uZXMgZGUgZ2FyYW50aWFzIGVuIHd3dy5pemVucGUuY29tIENvbnN1bHRlIGVsIGNvbnRyYXRvIGFudGVzIGRlIGNvbmZpYXIgZW4gZWwgY2VydGlmaWNhZG8wHwYDVR0lBBgwFgYIKwYBBQUHAwIGCisGAQQBgjcKAwwwgaAGCCsGAQUFBwEBBIGTMIGQMCIGCCsGAQUFBzABhhZodHRwOi8vb2NzcC5pemVucGUuY29tMGoGCCsGAQUFBzAChl5odHRwOi8vd3d3Lml6ZW5wZS5jb20vY29udGVuaWRvcy9pbmZvcm1hY2lvbi9jYXNfaXplbnBlL2VzX2Nhcy9hZGp1bnRvcy9BQVBQTlJfY2VydF9zaGEyNTYuY3J0MDoGA1UdHwQzMDEwL6AtoCuGKWh0dHA6Ly9jcmwuaXplbnBlLmNvbS9jZ2ktYmluL2NybGludGVybmEyMA0GCSqGSIb3DQEBCwUAA4ICAQCSM24d7ToO2NXrsNp4U8PcgmT3qVTbGgtfZix8774SzElCaKBYZvEDqsJpTdlpzDmUXbCtAJsFGeCj/vz3P4Ot1DUYiej7TttsSsTLZUHrxI8mn++R9vlXLOsioRxf4XORdyvinRgUHv3SJ6Xk6Yc67QRKjJsOQhjTuZ0fyzNsyCwvEJ2W8B1UhAuUF0rGzmez6brwfJnWtZMMCRtPsvaHvG2CK91koqkuoYdheoKFC3Ud5TMP1djc5p5KXzFzTNgHIX1Wl6L8go+Pco24V67hG7n58daRI0RVG7guuYMbxk1r76/58QnIYVD0n44QT0b27Ki0flG6rFLfNRZpiNUMAPTtDAAH3aJ41XoNwkfOyxZrt9BUUdg5wCJI+1TYsClXkUj395w3DSZ8BY55QNOyrf5XQjDmtuk/jqTzjlheAL94NIAs5Pa+vG8b8aOuNG6MKZXNF1hKPx7bZ4cxkWnLJX8wA0Ohw8I8TqWDc44ZAwXvxAjwTM7WrXtMixeCIapJjQwR9TJvtf+I1FvnLsPUVlnAuqkjs6K4Wzd3CmekqNLXGX/1jfi0avmkVAHbFGFnmwoKyW7zP7MVMELSAF9O9szOdIDS8L1IckohxvZr8P+IkYRbJPhy0HFFJrqevnwAqI4wYL5fFlj3CJGDhwwgTYdx/79ph9fp3sXUIAhO7Q==</ds:X509Certificate>
            </ds:X509Data>
        </ds:KeyInfo>
        <ds:Object>
            <xades:QualifyingProperties xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" Target="#Signature-229139166">
                <xades:SignedProperties Id="SignedProperties-777055075">
                    <xades:SignedSignatureProperties>
                        <xades:SigningTime>2022-07-25T07:44:20.340Z</xades:SigningTime>
                        <xades:SigningCertificate>
                            <xades:Cert>
                                <xades:CertDigest>
                                    <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
                                    <ds:DigestValue>7RfvGuxIRTKz5Thh0ysc2xcu7vcSE7XLJmVIgr2d41k=</ds:DigestValue>
                                </xades:CertDigest>
                                <xades:IssuerSerial>
                                    <ds:X509IssuerName>CN=EAEko Herri Administrazioen CA - CA AAPP Vascas (2), OU=AZZ Ziurtagiri publikoa - Certificado publico SCA, O=IZENPE S.A., C=ES</ds:X509IssuerName>
                                    <ds:X509SerialNumber>40680020218691596437659190274445776782</ds:X509SerialNumber>
                                </xades:IssuerSerial>
                            </xades:Cert>
                        </xades:SigningCertificate>
                        <xades:SignaturePolicyIdentifier>
                            <xades:SignaturePolicyId>
                                <xades:SigPolicyId>
                                    <xades:Identifier>https://ticketbai.araba.eus/tbai/sinadura/</xades:Identifier>
                                </xades:SigPolicyId>
                                <xades:SigPolicyHash>
                                    <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
                                    <ds:DigestValue>4Vk3uExj7tGn9DyUCPDsV9HRmK6KZfYdRiW3StOjcQA=</ds:DigestValue>
                                </xades:SigPolicyHash>
                                <xades:SigPolicyQualifiers>
                                    <xades:SigPolicyQualifier>
                                        <xades:SPURI>https://ticketbai.araba.eus/tbai/sinadura/</xades:SPURI>
                                    </xades:SigPolicyQualifier>
                                </xades:SigPolicyQualifiers>
                            </xades:SignaturePolicyId>
                        </xades:SignaturePolicyIdentifier>
                    </xades:SignedSignatureProperties>
                </xades:SignedProperties>
            </xades:QualifyingProperties>
        </ds:Object>
    </ds:Signature>
</T:TicketBai>
Te lo adjunto al mensaje
Archivos Adjuntos
Tipo de Archivo: zip fichero_TBAI.zip (4,9 KB, 29 visitas)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 09-08-2022
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.744
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Código PHP:
<?xml version="1.0" encoding="utf-8"?>
<T:TicketBai xmlns:T="urn:ticketbai:emision">
    <Cabecera>
        <IDVersionTBAI>1.2</IDVersionTBAI>
    </Cabecera>
...
</T:TicketBai>
Te lo adjunto al mensaje
Gracias Germán,

Lo he comparado con lo que genero yo y son iguales, excepto la parte de la firma, donde la estructura es un poco diferente.
Como parece que lo aceptan, no voy a mirar eso mucho más.

De todos modos, me refería al envío del Libro de Registro.
Esto lo formo con una parte JSON en la cabecera
Código:
{
  "con":"LROE",
  "apa":"1.1",
  "inte":{
    "nif":"B95642500",
    "nrs":"ECOTHERM ENERGY SL",
    "ap1":"",
    "ap2":""
  },
  "drs":{
    "mode":"240",
    "ejer":"2022"
  }
}
y luego un XML que contiene el TicketBAI comprimido y convertido a Base64 dentro del tag <FacturasEmitidas><FacturaEmitida><TicketBai>:

Código:
<?xml version="1.0"?>
<lrpjfecsgap:LROEPJ240FacturasEmitidasConSGAltaPeticion xmlns:lrpjfecsgap="https://www.batuz.eus/fitxategiak/batuz/LROE/esquemas/LROE_PJ_240_1_1_FacturasEmitidas_ConSG_AltaPeticion_V1_0_2.xsd">
  <Cabecera>
    <Modelo>240</Modelo>
    <Capitulo>1</Capitulo>
    <Subcapitulo>1.1</Subcapitulo>
    <Operacion>A00</Operacion>
    <Version>1.0</Version>
    <Ejercicio>2022</Ejercicio>
    <ObligadoTributario>
      <NIF>B95642500</NIF>
      <ApellidosNombreRazonSocial>ECOTHERM ENERGY SL</ApellidosNombreRazonSocial>
    </ObligadoTributario>
  </Cabecera>
  <FacturasEmitidas>
    <FacturaEmitida>
      <TicketBai>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48VDpUaWNrZXRC
YWkgeG1sbnM6VD0idXJuOnRpY2tldGJhaTplbWlzaW9uIj4KCTxDYWJlY2VyYT4K
...
PjwvZHM6T2JqZWN0PjwvZHM6U2lnbmF0dXJlPjwvVDpUaWNrZXRCYWk+
</TicketBai>
    </FacturaEmitida>
  </FacturasEmitidas>
</lrpjfecsgap:LROEPJ240FacturasEmitidasConSGAltaPeticion>
Responder Con Cita
  #6  
Antiguo 09-08-2022
Ja Mon Ja Mon is offline
Miembro
 
Registrado: ene 2017
Posts: 12
Poder: 0
Ja Mon Va por buen camino
Duda sobre encadenamiento

Saludos a todos y gracias por vuestra ayuda.


La duda que no me ha quedado clara leyendo los post es si, tras enviar el fichero firmado, nos devuelve un mensaje de error.
1. Si el error es de datos, creo que el fichero se acepta y queda registrado. (¿y que hay que hacer en este caso?)

2. Si el error es por otra causa y es rechazado (error en el formato o la firma por ejemplo) ¿queda registrado y su signaturevalue es válida para la siguiente factura? Supongo que no, pero no me ha quedado claro que ocurre en este caso.


El proceso que voy a seguir para realizar los envios es este, por si a alguien le sirve de ayuda y por si veis que hay algo que corregir:
Primero creo el fichero XML desde la factura sin los datos de encadenamiento y luego los recupero con otro programa que hace lo siguiente:

1. Lee el fichero XML
2. Busca la ultima factura procesada
3. Guarda los datos de encadenamiento
4. Firma el fichero

5. Envía el fichero
6. Si el resultado es correcto
a. Actualiza la ultima factura

b. Imprimo o envío la factura
c. Muevo el fichero xml a otro directorio

Si el resultado es incorrecto
a. Borro el fichero XML
b. Notifico el error
7. Inicio el proceso con el siguiente fichero


Gestionar el encadenamiento desde la misma aplicación de facturación, en entornos con múltiples terminales era una pesadilla, por eso la idea de crear una cola y gestionarla con otra aplicación. No se si ya existe algo así


Muchas gracias a todos.
Responder Con Cita
  #7  
Antiguo 11-08-2022
trumbolt trumbolt is offline
Miembro
 
Registrado: may 2022
Posts: 31
Poder: 0
trumbolt Va por buen camino
Cita:
Empezado por Ja Mon Ver Mensaje
Saludos a todos y gracias por vuestra ayuda.


La duda que no me ha quedado clara leyendo los post es si, tras enviar el fichero firmado, nos devuelve un mensaje de error.
1. Si el error es de datos, creo que el fichero se acepta y queda registrado. (¿y que hay que hacer en este caso?)

2. Si el error es por otra causa y es rechazado (error en el formato o la firma por ejemplo) ¿queda registrado y su signaturevalue es válida para la siguiente factura? Supongo que no, pero no me ha quedado claro que ocurre en este caso.


El proceso que voy a seguir para realizar los envios es este, por si a alguien le sirve de ayuda y por si veis que hay algo que corregir:
Primero creo el fichero XML desde la factura sin los datos de encadenamiento y luego los recupero con otro programa que hace lo siguiente:

1. Lee el fichero XML
2. Busca la ultima factura procesada
3. Guarda los datos de encadenamiento
4. Firma el fichero

5. Envía el fichero
6. Si el resultado es correcto
a. Actualiza la ultima factura

b. Imprimo o envío la factura
c. Muevo el fichero xml a otro directorio

Si el resultado es incorrecto
a. Borro el fichero XML
b. Notifico el error
7. Inicio el proceso con el siguiente fichero


Gestionar el encadenamiento desde la misma aplicación de facturación, en entornos con múltiples terminales era una pesadilla, por eso la idea de crear una cola y gestionarla con otra aplicación. No se si ya existe algo así


Muchas gracias a todos.
El problema que veo es que si tienes un error en el envío, borras el xml y estás "sacando" esa factura digamos del correcto encadenamiento. Si la borras, ¿cómo gestionas luego eso?. Aparte que si tienes que imprimir la factura (y necesitas el QR) cómo lo haces cpon esa factira cuyo envio ha fallado? Lo digo porque necesitas la firma para eso.

Teóricamente según TBAI, el software garante tiene que ser capaz de emitir una factura (firmarla e imprimir su QR) sin necesidad de conectarse con ellos (que era el principal problema que había al principio).

En mi caso, hemos desligado la generación, firmado e impresión de la factura del envío que va por un servicio de cola que únicamente se encarga de enviar las facturas que va generando el software y notifica posibles errores para luego poder solventarlos de manera manual, que es la única manera que hemos encontrado ya que automatizar algo es prácticamente imposible ...
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 3565 Hace 1 Semana 11:04:13
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 03:30: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