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)

yaedev 31-03-2021 11:27:50

(edito)

Sobre el escenario de Bizkaia:

Acabo de leer en las preguntas frecuentes que habéis colgado:

Cita:

En el caso de Bizkaia, el fichero XML TicketBAI no se envía directamente, sino que se envía en el campo “TicketBAI”, codificado en Base64, dentro de las anotaciones del LROE:
• 1.1 - Ingresos con factura con Software garante (modelo 140).
• 1.1 - Facturas emitidas con Software garante (modelo 240).

Eso quiere decir que el XML de la factura Ticket Bai se codifica a BASE64, y ese resultado se añade al modelo 240 o 140. ¿Y que es lo que se envía en zip?

Entonces, si el programa que genera las facturas no lleva temas contables ni de libros, por lo que no genera un modelo 240 o 140, ¿entonces como se envía?

keys 31-03-2021 11:39:26

Cita:

Empezado por yaedev (Mensaje 540508)
Sobre el escenario de Bizkaia:

Según entiendo las facturas XML firmadas deben enviarse empaquetadas en un fichero zip, el cual se incluyen con el envío del modelo 240 o modelo 140 ¿correcto?

Entonces, si el programa que genera las facturas no lleva temas contables ni de libros, por lo que no genera un modelo 240 o 140, ¿entonces como se envía? ¿El cliente deberá facilitar el zip a su asesor o tener un programa contable puente?

Hola.

Lo podrá enviar directamente el cliente y luego el asesor podrá modificar solo los datos que no son de TicketBai (La factura) o podrá enviarselo al asesor para que le realice el envio completo. Por eso el envío en Bizkaia no es inmediato como en Gipuzkoa.

Lógicamente si el envío lo hace el cliente, este tiene que saber a que modelo enviarlo 140/240 y algún dato mínimo más, como por ejemplo el epigrafe de la actividad en el 140, aunque luego siempre lo podra cambiar.

Un Saludo.

Pau Haro 31-03-2021 14:53:41

Cita:

Empezado por keys (Mensaje 540494)
Hola.

Parece que el fichero esta bien. Si no recuerdo mal es por el protocolo con el que estas intentando enviar. En Bizkaia sólo admiten [THTTPSecureProtocol.TLS12]

Un Saludo.

Buenas,

He implementado este codigo para usar el protocolo [THTTPSecureProtocol.TLS12]:
Código:

               
SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
                sslContext.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(),
                                new SecureRandom()); 
               
                con.setSSLSocketFactory(sslContext.getSocketFactory());

Pero aun y asi me esta dando el mismo error (400 - Bad Request), alguna cosa mas que pueda tener mal?

Dejo por aqui el set de mis headers y del cuerpo de la peticion.

Código:

                String jsonHeader = "{\"con\": \"LROE\",\"apa\": \"1.1\",\"inte\": {\"nif\": \"" + nif + "\",\"nrs\": \"" + nrs + "\"},\"drs\": {\"mode\": \"240\",\"ejer\": \"" + nExercici + "\"}}";
                 
                con.setRequestProperty("Accept-Encoding", "gzip");   
                con.setRequestProperty("Content-Encoding", "gzip");     
                con.setRequestProperty("Content-Length ",String.valueOf(Files.readAllBytes(comprimitBizkaia.toPath()).length));
                con.setRequestProperty("Content-Type", "application/octet-stream");       
                con.setRequestProperty("eus-bizkaia-n3-version", "1.0");
                con.setRequestProperty("eus-bizkaia-n3-content-type", "application/xml");
                con.setRequestProperty("eus-bizkaia-n3-data", jsonHeader);
                con.setRequestProperty("Method", "POST");
               
                OutputStream os = con.getOutputStream();
                os.write(Files.readAllBytes(comprimitBizkaia.toPath()));
                os.close();
               
                con.connect();

Gracias!

keys 31-03-2021 14:57:19

Ya no te puedo decir mas ya que yo lo tengo en java. Pero revisaría lo del protocolo

Pau Haro 31-03-2021 15:15:08

Cita:

Empezado por keys (Mensaje 540513)
Ya no te puedo decir mas ya que yo lo tengo en java. Pero revisaría lo del protocolo

De acuerdo, muchas gracias igualmente por la ayuda!

Saludos.

Pau Haro 31-03-2021 15:58:13

Cita:

Empezado por keys (Mensaje 540513)
Ya no te puedo decir mas ya que yo lo tengo en java. Pero revisaría lo del protocolo

Buenas,

Estoy viendo como solucionar todo el tema este, dado que ya uso el protocolo adecuado, he visto que una de las causas del error 400 es el tamaño del cuerpo. Yo pongo pongo el tamaño del cuerpo en la cabecera asi:
Código:

con.setRequestProperty("Content-Length ",String.valueOf(Files.readAllBytes(comprimitBizkaia.toPath()).length));
En el run que acabo de hacer he mostrado por pantalla el valor que setea y es 7266, es possible que al ser tan grande el fichero no me lo permita? Cual es el tamaño de vuestros ficheros?

Saludos.

Galaxian 31-03-2021 19:31:15

He conseguido crear un XAdES-EPES para TicketBAI con AutofirmaCommandLine, pero no puedo ponerlo porque no tengo permiso para poner enlaces ni imágenes (el ejemplo contiene enlaces a w3.org y batuz.eus)

Si algún moderador fuera tan amable...

Casimiro Notevi 31-03-2021 20:36:22

Cita:

Empezado por Galaxian (Mensaje 540519)
He conseguido crear un XAdES-EPES para TicketBAI con AutofirmaCommandLine, pero no puedo ponerlo porque no tengo permiso para poner enlaces ni imágenes (el ejemplo contiene enlaces a w3.org y batuz.eus)
Si algún moderador fuera tan amable...


Puedes poner, por ejemplo: ttp://.......

Y luego un moderador añadirá la h del principio.

Galaxian 01-04-2021 12:12:11

Con un certificado PFX:

Cita:

AutoFirmaCommandLine.exe sign -i FicheroSinFirmar.xml -o FicheroFirmado.xml -store pkcs12:nombre_certificado.pfx -password password_certificado -filter nombre_certificado.pfx -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\npolicyIdent ifierHash=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"
Con certificado en el almacén de Windows:

Cita:

AutoFirmaCommandLine.exe sign -i FicheroSinFirmar.xml -o FicheroFirmado.xml -store windows -alias NombreDescriptivo -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\npolicyIdent ifierHash=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"
Los enlaces están sin el https (batuz), http (w3) ni www (todos)

Si se escoge el método del almacén de windows, hay que asegurarse de que no haya más de un certificado con el mismo nombre en el campo 'Nombre descriptivo' del almacén. Este valor puede cambiarse desde el menú secundario -> 'Propiedades' para asegurarse de que se va a escoger el definido en el comando.

Pau Haro 06-04-2021 10:08:10

Envio de TicketBAI Batuz
 
Buenas,

Llevo ya 1 semana intentando enviar el LROE de Bizkaia al servidor utilizando Java, pero no consigo nada mas que Error 400. Os dejo mi petición a continuación, si me pudierais echar una mano se agradecería, "creo que mi error esta en como estoy enviando el GZIP al servidor":

Headers:
Código:

con.setRequestProperty("Accept-Encoding", "gzip");
con.setRequestProperty("Content-Encoding", "gzip");
con.setRequestProperty("Content-Length ",String.valueOf(Files.readAllBytes(comprimitBizkaia.toPath()).length));
con.setRequestProperty("Content-Type", "application/octet-stream");
con.setRequestProperty("eus-bizkaia-n3-version", "1.0");
con.setRequestProperty("eus-bizkaia-n3-content-type", "application/xml");
con.setRequestProperty("eus-bizkaia-n3-data", jsonHeader);
con.setRequestMethod("POST");

jsonHeader:
Cita:

{
"con":"LROE",
"apa":"1.1",
"inte":{
"nif":"xxxxxxxxxx",
"nrs":"xxxxxxxxxxx"
},
"drs":{
"mode":"240",
"ejer":"2021"
}
}
Como envio el XML comprimido:
Código:

String foo = new String(Files.readAllBytes(Paths.get("/LROE_Bizkaia.xml")));
ByteArrayOutputStream baos = new ByteArrayOutputStream();

try (GZIPOutputStream gzos = new GZIPOutputStream(baos)) {
    gzos.write(foo.getBytes("UTF-8"));
}

byte[] fooGzippedBytes = baos.toByteArray();

OutputStream os = con.getOutputStream();
os.write(fooGzippedBytes);
os.flush();

con.connect();


Gracias!

Pau Haro 06-04-2021 17:28:38

Buenas,

Tengo una duda, en el documento Especificaciones del envío masivo del LROE 1.0.6 de Batuz, aparece en el apartado (5.1.1 Envío de la información) :
Cita:

Es requisito utilizar un certificado electrónico para realizar la petición al servicio de entradas,
certificado con el que se autentica al presentador del envío. El presentador puede ser el propio
obligado tributario o una persona que actúe en su nombre.
▪ Dicho certificado debe incluirse en la petición https que se realice al servicio de entrada
y se utiliza como base del servicio para la identificación y uso.
▪ Los tipos de certificados admitidos para los envíos de los LROE son los siguientes:
o Certificado de persona física.
BATUZ- LROE
Batuz_LROE_Especificaciones_Envío_Masivo_V1_0_6.docx
26/02/2021 14/44
o Certificado de representante de entidad.
o Sello de empresa.
o Sello de autónomo.
o Certificado de dispositivo (debe estar censado para el obligado tributario en
DFB/BFA)
El certificado al que se refiere, es el mismo que usamos para firmar el XML que enviamos a Guipuzkoa por ejemplo, verdad?

Y para enviar-lo se supone que lo tenemos que usar para el SSL como en Guipuzkoa?

Gracias.

keys 11-04-2021 14:38:59

El tema de los certificados es igual en Bizkaia que en Gipuzkoa.

Galaxian 12-04-2021 09:02:36

Todo hecho y funcionando a la perfección con la librería de Chilkat: gestión de certificados, firma, compresión, envío y recepción de la respuesta mediante REST). Además de más completa, eficiente y fácil de usar, es mucho más barata que la Secure Black Box (unos 250€ al cambio una licencia perpetua).

Ahí queda eso.

Neftali [Germán.Estévez] 12-04-2021 09:51:48

Cita:

Empezado por Galaxian (Mensaje 540575)
Todo hecho y funcionando a la perfección con la librería de Chilkat: gestión de certificados, firma, compresión, envío y recepción de la respuesta mediante REST). Además de más completa, eficiente y fácil de usar, es mucho más barata que la Secure Black Box (unos 250€ al cambio una licencia perpetua).

Gracias por el comentario. ^\||/^\||/
Va bien saberlo para la gente que tenga que realizar la compra.

Si pudieras poner algun código de ejempo sobre firma estaría muy bien, por si otras personas lo buscan.
Estaría bien que pusieras el link a los componentes también, por si alguien quiere revisarlos. Hay muchas descargas y opciones diferentes en la web.

Gracias de nuevo (actualizo el mensaje recopilatorio de opciones con esta).

Galaxian 12-04-2021 10:39:06

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 540576)
Gracias por el comentario.
Va bien saberlo para la gente que tenga que realizar la compra.

Si pudieras poner algun código de ejempo sobre firma estaría muy bien, por si otras personas lo buscan.
Estaría bien que pusieras el link a los componentes también, por si alguien quiere revisarlos. Hay muchas descargas y opciones diferentes en la web.

Estoy tratando de enviar un ejemplo pero me da este error (además de no dejarme poner enlaces ni imágenes):

Cita:

Has incluido 15 imágenes en tu mensaje. Tú estás limitado a utilizar 10 imágenes asi que por favor regresa y corriges el problema y continuas de nuevo.

Por imágenes se entiende el uso de caritas, el código vB la etiqueta 'img' y las etiquetas. El huso* de todo esto está sujeto a habilitación en el panel de administración.

* Fe de erratas: La 'h' sobra

Elyas 12-04-2021 11:27:23

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 540576)
Gracias por el comentario. ^\||/^\||/
Va bien saberlo para la gente que tenga que realizar la compra.

Si pudieras poner algun código de ejempo sobre firma estaría muy bien, por si otras personas lo buscan.
Estaría bien que pusieras el link a los componentes también, por si alguien quiere revisarlos. Hay muchas descargas y opciones diferentes en la web.

Gracias de nuevo ...con esta).

Quiero añadir que yo también lo he conseguido con la librería chilkat. Iba a compartir mi experiencia y casualidad veo que otros también lo acaban de conseguir. También confirmo que con blacksecurebox se firma sin problemas. Pero la licencia es mucho más cara. Ahí queda eso para los devs en PHP.
Un saludo.

benjy.sr 12-04-2021 11:43:49

No consigo enviar datos
 
Buenas a todos, siguiendo vuestros ejemplos, no consigo obtener respuesta: Mi código es este

Código Delphi [-]
  RequestBody:= TFileStream.Create(ficheroComprimido, fmOpenRead);

  NetHTTPClient1.SecureProtocols:= [THTTPSecureProtocol.TLS12];
  NetHTTPClient1.CustomHeaders['Accept-Encoding'] := 'gzip';
  NetHTTPClient1.CustomHeaders['Content-Encoding'] := 'gzip';
  NetHTTPClient1.CustomHeaders['Content-Type'] := 'application/octet-stream';
  NetHTTPClient1.CustomHeaders['eus-bizkaia-n3-version'] := '1.0';
  NetHTTPClient1.CustomHeaders['eus-bizkaia-n3-content-type'] := 'application/xml';

  //Formamos los parametros json de entrada
  json:='{"con": "LROE", "apa": "1.1", "inte": {"nif":  "XXXXXXXXX","nrs": "XXXXXXXXXXXXXXXXXXXXXXX",
         "ap1": "","ap2": ""},"drs":  {"mode": "240","ejer": "2021"}}';
  NetHTTPClient1.CustomHeaders['eus-bizkaia-n3-data']:= json;

  AResponse:= NetHTTPClient1.Post(url,RequestBody);
  Memo1.Text:= aResponse.ContentAsString(TEncoding.UTF8);

Pero siempre obtengo el mismo error:

Error receiving data: (12030) La conexión con el servidor finalizó anormalmente.

He desactivado firewall, por si acaso, pero siempre me devuelve lo mismo, seguro que hay que tener en cuenta algo que se me está escapando, ¿Alguien puede darme una idea de qué puede estar ocurriendo?

Neftali [Germán.Estévez] 12-04-2021 11:51:05

Cita:

Empezado por Galaxian (Mensaje 540577)
Estoy tratando de enviar un ejemplo pero me da este error (además de no dejarme poner enlaces ni imágenes):


No te preocupes.
Puedes añadir los links "engañando" a vBulletin sustituyendo el http p https por h_t_t_p o h_t_t_p_s (espero que los spammers no se enteren de esto... ;)).
Si es algo más largo puedes dividirlo en varios mensajes o enviarmelo por privado y yo lo añado al hilo.

Neftali [Germán.Estévez] 12-04-2021 11:56:15

Cita:

Empezado por benjy.sr (Mensaje 540579)
Pero siempre obtengo el mismo error:

Error receiving data: (12030) La conexión con el servidor finalizó anormalmente.

He desactivado firewall, por si acaso, pero siempre me devuelve lo mismo, seguro que hay que tener en cuenta algo que se me está escapando, ¿Alguien puede darme una idea de qué puede estar ocurriendo?


Parece que tiene que ver con el certificado (o relacionado con TSL).
Revisa los mensajes de esta página:
http://www.clubdelphi.com/foros/show...=94264&page=17

Casimiro Notevi 12-04-2021 12:14:36

Cita:

Empezado por Galaxian (Mensaje 540577)
Estoy tratando de enviar un ejemplo pero me da este error (además de no dejarme poner enlaces ni imágenes):

Hola, hay un control sobre los nuevos usuarios para que no pongan enlaces hasta que lleven al menos 10 mensajes, de todas formas, usa el truco de quitar la primera letra al enlace y un moderador añadirá la "h" al principio, ejemplo:
ttp://www.loquesea.com/loquesea


Lo del "huso" se ve que quien hizo la traducción de vbulletin estaba ese día un poco despistado :)


La franja horaria es GMT +2. Ahora son las 04:17:48.

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