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
  #421  
Antiguo 29-01-2021
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.029
Poder: 22
keys Va por buen camino
Es por que delphi no genera las cabeceras como tiene que ser o no he encontrado la forma de hacerlo.

Antes de enviar hay que rehacer el fichero.

Código:
 Para el 140

FicheroCorregir := TStringList.Create;
      FicheroCorregir.LoadFromFile(FicheroDestino);

      FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text, '<LROEPF140IngresosConFacturaConSGAltaPeticion xmlns="https://www.batuz.eus/fitxategiak/batuz/LROE/esquemas/LROE_PF_140_1_1_Ingresos_ConfacturaConSG_AltaPeticion_V1_0_1.xsd">', '<lrpficfcsgap:LROEPF140IngresosConFacturaConSGAltaPeticion xmlns:lrpficfcsgap="https://www.batuz.eus/fitxategiak/batuz/LROE/esquemas/LROE_PF_140_1_1_Ingresos_ConfacturaConSG_AltaPeticion_V1_0_1.xsd">');
      FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text, '</LROEPF140IngresosConFacturaConSGAltaPeticion>', '</lrpficfcsgap:LROEPF140IngresosConFacturaConSGAltaPeticion>');
     
      System.SysUtils.DeleteFile(FicheroDestino);
     
      FicheroCorregir.SaveToFile(FicheroDestino);
Código:
Para el 240 
FicheroCorregir := TStringList.Create;
      FicheroCorregir.LoadFromFile(FicheroDestino);
      FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text, '<LROEPJ240FacturasEmitidasConSGAltaPeticion xmlns="https://www.batuz.eus/fitxategiak/batuz/LROE/esquemas/LROE_PJ_240_1_1_FacturasEmitidas_ConSG_AltaPeticion_V1_0_1.xsd">','<lrpjfecsgap:LROEPJ240FacturasEmitidasConSGAltaPeticion xmlns:lrpjfecsgap="https://www.batuz.eus/fitxategiak/batuz/LROE/esquemas/LROE_PJ_240_1_1_FacturasEmitidas_ConSG_AltaPeticion_V1_0_1.xsd">');
      FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text, '</LROEPJ240FacturasEmitidasConSGAltaPeticion>','</lrpjfecsgap:LROEPJ240FacturasEmitidasConSGAltaPeticion>');
      
      System.SysUtils.DeleteFile(FicheroDestino);
      
      FicheroCorregir.SaveToFile(FicheroDestino);
Esto antes de comprimir y enviarlo.
Responder Con Cita
  #422  
Antiguo 29-01-2021
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 233
Poder: 16
espinete Va camino a la fama
Gracias,. keys.

Estuve revisando el XML Data Binding a ver si había forma de que fuera automático, pero no. Haciendo el cambio manualmente ya no me da ese error.

Me dio otro error relacionado con el orden en el que van los campos en el XML. Al parecer si no están en el orden esperado (Modelo, Capítulo, Subcapitulo, Operacion...) dice que se ha encontrado un campo pero esperaba otro. Se pone tiquismiquis el señorito, pero bueno.

Después de colocarlo todo en el orden correcto, ahora obtengo un error que me hace mucha menos gracia que todos los anteriores:

B4_1000002 - Todos los registros incluidos en la petición son incorrectos.

Pues menuda gracia.

Me ocurre con el 240 y con el 140. Este es el código que utilizo para generar y firmar el XML:

Código Delphi [-]
    f := NewLROEPJ240FacturasEmitidasConSGAltaPeticion;

    f.Cabecera.Modelo:='240';
    f.Cabecera.Capitulo:='1';
    f.Cabecera.SubCapitulo:='1.1';
    f.Cabecera.Operacion:='A00';  //A00 = Alta / M00 = Modificación
    f.Cabecera.Version:='1.0';
    f.Cabecera.Ejercicio:=2021;

    f.Cabecera.ObligadoTributario.NIF:='XXXXXXXX';
    f.Cabecera.ObligadoTributario.ApellidosNombreRazonSocial:='XXXXXXXXXXXXXXXX';

    with f.FacturasEmitidas.Add do
    begin
        TicketBai := EncodeFileToBase64('firmado.xml');
    end;

    XMLDocument2.XML.Text:=f.XML;
    xmldocument2.Active:=True;
    xmldocument2.SaveToFile('lroe.xml');

    FicheroCorregir := TStringList.Create;
    FicheroCorregir.LoadFromFile('lroe.xml');
    FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text, '','');
    FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text, '','');
    FicheroCorregir.SaveToFile('lroe.xml');

    comprimir('lroe.xml','archivo.gz');

Y este el del envío:

Código Delphi [-]
    RequestBody := TFileStream.Create('archivo.gz', 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 :=  f_cabecera_LROE('LROE', //concepto
                                 '1.1',  //apartado (1.1 = Ingreso con Facturas con Software Garante / 2 = Facturas Recibidas
                                 'XXXXXXXX',  //NIF
                                 'XXXXXXXXXXXXXXXXXX',   //Nombre o Razón Social
                                 '',   //Primer Apellido
                                 '',   //Segundo Apellido
                                 '240',   //140 o 240
                                 '2021'); //Ejercicio

    NetHTTPClient1.CustomHeaders['eus-bizkaia-n3-data'] := json;
    AResponse := NetHTTPClient1.Post('https://pruesarrerak.bizkaia.eus/N3B4000M/aurkezpena',RequestBody);


¿En serio? TODOS los registros incluidos en la petición son incorrectos???!?!?

Obviamente en el xml y en el envío no he puesto XXXXXXXX sino los datos correctos, que coinciden con el del certificado digital que estoy usando.

¿Alguien más ha tenido este problema? ¿A qué campos se refiere exactamente?
Responder Con Cita
  #423  
Antiguo 01-02-2021
juramisa juramisa is offline
Miembro
 
Registrado: abr 2007
Posts: 54
Poder: 18
juramisa Va por buen camino
Consultas

Buenos días

El viernes se publicó nuevas posibilidades de Batuz. Entre ellas las consultas, LROE_PF_140_1_1_Ingresos_ConfacturaConSG_Consulta.
Al generar los esquemas os encontraréis que faltan dos valores:
En batuz_enumerados.xsd

Código:
	<simpleType name="EstadoRegistroConsultaEnum">
		<restriction base="string">
			<enumeration value="Correcto">
				<annotation>
					<documentation>Correcto</documentation>
				</annotation>
			</enumeration>
			<enumeration value="AceptadoConErrores">
				<annotation>
					<documentation>Aceptado con Errores</documentation>
				</annotation>
			</enumeration>
			<enumeration value="Anulado">
				<annotation>
					<documentation>Anulado</documentation>
				</annotation>
			</enumeration>
			<enumeration value="Incorrecto">
				<annotation>
					<documentation>Incorrecto</documentation>
				</annotation>
			</enumeration>
		</restriction>
	</simpleType>
en este caso yo lo he sesuento copiando directamente los de "EstadoRegistroEnum" sobre "EstadoRegistroConsultaEnum";

y en Batuz_tiposbasicos.xsd

Código:
	<!-- Cadena de 8 caracteres -->
	<simpleType name="TextMax8Type">
		<restriction base="string">
			<maxLength value="8"/>
		</restriction>
	</simpleType>
Saludos
Responder Con Cita
  #424  
Antiguo 01-02-2021
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 233
Poder: 16
espinete Va camino a la fama
Buenas...

¿Alguien sabe cómo descomprimir la respuesta a la petición (Bizkaia) usando NetHTTPClient y no los componentes de SecureBlackBox?

Con NetHTTPClient consigo hacer el envío de la petición y obtengo los headers, pero no sé cómo acceder a la respuesta en formato gzip y descomprimirla sin usar los componentes de SecureBlackBox.

Con el otro método que usa dichos componentes sí consigo obtener la respuesta y descomprimir el xml que contiene (con el mensaje de error detallado), pero con NetHTTPClient no sé cómo guardar AResponse.ContentStream en un gzip y luego descomprimir su contenido. Lo he intentado de varias maneras y aunque consigo guardar ContentStream como archivo, me falla al descomprimirlo. Ni siquiera puedo abrir el .gz con WinRAR.

Si alguien pudo hacerlo usando NetHTTPClient y las librerías ZLib se lo agradecería.

PD: El error que me devuelve (usando SecureBlackBox) es el siguiente:

El XML del fichero TicketBAI no cumple el esquema.[Linea:1 Columna:52] Error:cvc-complex-type.2.4.a: Invalid content was found starting with element '{"urn:ticketbai:emision":Cabecera}'. One of '{Cabecera}' is expected.

Pero el XML del TicketBAI obviamente sí tiene cabecera, y no hay diferencias con respecto a los ejemplos oficiales de TicketBAI
Responder Con Cita
  #425  
Antiguo 02-02-2021
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.029
Poder: 22
keys Va por buen camino
Hola.

Para sacar el fichero de respuesta de hacienda yo hago lo siguiente.

Código:
    Comprimido : TFileStream;

    AResponse := EnvioBizkaia.Post('https://pruesarrerak.bizkaia.eus/N3B4000M/aurkezpena',RequestBody);
    Comprimido := TFileStream.Create(NombreFicheroSalida, fmCreate);
    Comprimido.CopyFrom(AResponse.ContentStream, AResponse.ContentStream.Size);
    Comprimido.Destroy;
El fichero luego hay que descomprimirlo dos veces.

Para la generación del fichero de TBAI, en delphi no genera bien las cabeceras. Yo tengo que hacer lo siguiente despues de haber generado el fichero.
Código:
    Fichero := TStringList.Create;
         Fichero.LoadFromFile(ficheroTemporal);        
         Fichero.Text := AnsiReplaceStr(Fichero.Text, '<TicketBai xmlns="urn:ticketbai:emision">','<T:TicketBai xmlns:T="urn:ticketbai:emision" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ticketbai:emision ticketBaiV12.xsd ">');
         Fichero.Text := AnsiReplaceStr(Fichero.Text,'</TicketBai>', '</T:TicketBai>');

         System.SysUtils.DeleteFile(ficheroTemporal);
         Fichero.SaveToFile(ficheroTemporal);
         Fichero.Destroy;
Un Saludo
Responder Con Cita
  #426  
Antiguo 03-02-2021
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 233
Poder: 16
espinete Va camino a la fama
Gracias, keys. Iba por buen camino, pero solo estaba añadiendo la T: antes de TicketBAI y no en el "xmlns:T=" de después. Ni lo había visto

Qué curioso que haya que descomprimir el gzip dos veces. Por cierto, para descomprimirlo usando las librerías de Delphi yo uso este código:

Código Delphi [-]
procedure descomprimir(origen,destino:string);
var LInput, LOutput: TFileStream;
    DecompressionStream: TDecompressionStream;
begin
    LInput := TFileStream.Create(origen, fmOpenRead);
    LOutput := TFileStream.Create(destino, fmCreate);

    //Primera descompresión
    DecompressionStream := TDecompressionStream.Create(LInput, 15 + 16);  // 31 bit wide window = gzip only mode
    LOutput.CopyFrom(DecompressionStream, DecompressionStream.size);

    LOutput.Free;
    LInput.Free;
end;

Como hay que descomprimir dos veces, lo hago así:

Código Delphi [-]
        
    descomprimir('respuesta.gz','respuesta2.gz');
    descomprimir('respuesta2.gz','respuesta.xml');

Y ya luego borro los archivos temporales sobrantes.

Estoy intentando cargar la respuesta XML en el "IXMLLROEPJ240FacturasEmitidasConSGAltaRespuesta" importado, para trabajar "mejor" con las respuestas, pero no lo consigo:

Código Delphi [-]
var Alta240Respuesta : IXMLLROEPJ240FacturasEmitidasConSGAltaRespuesta;
    i : integer;
begin
        Alta240Respuesta := LROE_PJ_240_1_1_FacturasEmitidas_ConSG_AltaRespuesta_V1_0_1.LoadLROEPJ240FacturasEmitidasConSGAltaRe  spuesta('respuesta.xml');
        for i:=0 to Alta240Respuesta.Registros.Count-1 do
        begin
            with Alta240Respuesta.Registros.Registro[i] do
            begin
                memo2.Lines.Append(SituacionRegistro.EstadoRegistro);
                memo2.Lines.Append(SituacionRegistro.CodigoErrorRegistro);
                memo2.Lines.Append(SituacionRegistro.DescripcionErrorRegistro);
                memo2.Lines.Append('');
            end;
        end;
end;

El XML se carga en Alta240Respuesta, porque Alta240Respuesta.XML devuelve el contenido del XML, pero luego no puedo acceder a los valores. No encuentra nada.

No me preocupa mucho porque puedo simplemente cargar el XML en un XMLDocument y trabajar con eso, pero creo que sería más cómodo aprovechar el XML Data Binding, no?

Un saludo y gracias nuevamente. Ahora ya puedo obtener los errores detallados en las respuestas, así que a partir de ahora todo debería ser más sencillo.
Responder Con Cita
  #427  
Antiguo 03-02-2021
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 233
Poder: 16
espinete Va camino a la fama
Problemas con la firma del TicketBAI

Hola de nuevo. Después de corregir algunos errores en el XML del TicketBAI, en la petición, formato del gzip, etc. ahora me devuelve este otro error:

FirmaElectronica: La firma no cumple los requisitos de la polÃ*tica de firma TicketBAI.(EPES: S ALGORITMO: rsa-sha256:2048 POLITICA: N CERTIFICADO_ADMITIDO: S )

He usado el código para firma que encontré en el foro, el que usa los componentes de SecureBlackBox 2020. (He suprimido la parte del código que uso para cargar el certificado):

Código Delphi [-]
procedure FirmarXML(archivo : string);
var
  CertificateStorage: TsbxCertificateStorage; 
  CertificateManager: TsbxCertificateManager;
  sbxXAdESSigner1 : TsbxXAdESSigner; 
  cert : TsbxCertificate;
  i : Integer;
begin
  sbxXAdESSigner1 := TsbxXAdESSigner.Create(nil);
  sbxXAdESSigner1.InputFile := archivo;
  sbxXAdESSigner1.OutputFile := 'firmado.xml';

  {.....}

  sbxXAdESSigner1.SignatureType := cxstEnveloped;
  sbxXAdESSigner1.CanonicalizationMethod := cxcmCanon;
  sbxXAdESSigner1.HashAlgorithm := 'SHA256';
  sbxXAdESSigner1.XMLElement := '';  // Todo el documento
  sbxXAdESSigner1.EnableXAdES := True;
  sbxXAdESSigner1.XAdESVersion := xav132;
  sbxXAdESSigner1.XAdESForm := xafEPES;
  sbxXAdESSigner1.Config('SigPolicyID=https://ticketbai.eus/politicafirma'); 
  sbxXAdESSigner1.Config('SigPolicyHash=39D59C038EBB3B7DF6C61ED2F740B318F0C50F93ADCD35E26BE8FF8E76D21D  A8');
  sbxXAdESSigner1.Config('SigPolicyHashAlgorithm=SHA256');
  sbxXAdESSigner1.Config('SigPolicyURI=https://ticketbai.eus/politicafirma');

  try
    sbxXAdESSigner1.Sign();
  except
      MessageDlg('Error en el proceso de firma', mtError, [mbOK], 0);
  end;
end;


No sé si las URLs han cambiado y ahora son distintas. En la documentación he encontrado otra URL...

https://www.euskadi.eus/contenidos/i...irma_v_1_0.pdf

...pero incluso añadiendo esa URL y su correspondiente HASH (que he calculado en https://www.fileformat.info/tool/hash.htm), me devuelve el mismo error.

Como los errores que devuelve Bizkaia son muy ambiguos, no sé si el problema es ese o es otro, la verdad.

Última edición por Neftali [Germán.Estévez] fecha: 04-02-2021 a las 08:40:01. Razón: Añadir TAGs al código Delphi
Responder Con Cita
  #428  
Antiguo 03-02-2021
juramisa juramisa is offline
Miembro
 
Registrado: abr 2007
Posts: 54
Poder: 18
juramisa Va por buen camino
Hola

Código Delphi [-]
sbxXAdESSigner1.Config('SigPolicyHash=39D59C038EBB3B7DF6C61ED2F740B318F0C50F93ADCD35E26BE8FF8E76D21D A8');
tienes que fijarte en el valor que se publica en https://www.batuz.eus/es/documentacion-tecnica

Cita:
Firma electrónica TicketBAI 1.0.Documento de especificaciones para la firma electrónica de los ficheros del software garante TicketBAI 1.0. El Hash SHA256 de este documento es el siguiente, el cual se deberá incluir obligatoriamente en la firma electrónica de los ficheros de alta y de anulación de operación con software garante TicketBAI: Quzn98x3PMbSHwbUzaj5f5KOpiH0u8bvmwbbbNkO9Es=
Convertimos ese valor // Quzn98x3PMbSHwbUzaj5f5KOpiH0u8bvmwbbbNkO9Es=
de base64 a HEX
// 42ECE7F7CC773CC6D21F06D4CDA8F97F928EA621F4BBC6EF9B06DB6CD90EF44B

Este es el valor actual
Código Delphi [-]
sbxXAdESSigner1.Config('SigPolicyHash=42ECE7F7CC773CC6D21F06D4CDA8F97F928EA621F4BBC6EF9B06DB6CD90EF4  4B');
Responder Con Cita
  #429  
Antiguo 04-02-2021
Avatar de elcharlie
elcharlie elcharlie is offline
Miembro
 
Registrado: mar 2013
Ubicación: Bilbao
Posts: 174
Poder: 12
elcharlie Va por buen camino
Buenos días:
¿Alguien sabe cuando va a publicarse la información de TBai de Araba? Estamos a 4 de Febrero y no encuentro nada, ¿alguien sabe algo?
Responder Con Cita
  #430  
Antiguo 04-02-2021
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 233
Poder: 16
espinete Va camino a la fama
Gracias, juramisa.

Había probado esa cadena pero en minúsculas, supongo que por eso me daba el error.

De Araba no se sabe nada. Yo envié hace un par de semanas un email solicitando información a las tres direcciones de email (una para cada provincia) y solo me han respondido de Bizkaia (responden bastante rápido) y de Gipuzkoa.
Responder Con Cita
  #431  
Antiguo 25-02-2021
naglro naglro is offline
Registrado
 
Registrado: feb 2021
Posts: 2
Poder: 0
naglro Va por buen camino
Hola compañeros,

Os escribo después de leer las 22 páginas del foro porque tengo una herramienta de facturación online que he creado yo mismo y me llevo semanas investigando sobre cómo implementar Ticketbai pero no consigo encauzar el tema. No soy programador y la aplicación la he hecho con herramientas de nocode (no me abucheéis porfa que me encanta la programación pero no consigo aprender porque se me hace muy complicada).

A ver si me podéis comentar algo porque estoy buscando la forma de poder firmar las facturas que emito a través de la aplicación y que cumplan el tema de Ticketbai pero me he encontrado con que no sé cómo lanzar algo que firme el XML.

Por lo que he leído, el proceso de creación de factura consiste en crear el fichero XML y luego firmarlo. Ahora, qué librería de firma electrónica puedo utilizar? Podría utilizar algo que ya haga factura-e y adaptarlo?

Mi idea es montar un servidor que cuente con la aplicación que pueda firmar las facturas y que luego me las devuelva a la herramienta a través de una API pero para ello primero entiendo que necesito una librería a la que llamar. He buscado en github pero no encuentro ninguna.

A ver si me podéis comentar algo porque como no soy programador estoy súper perdido aún leyendo todo lo que habéis comentado.

Muchas gracias de antemano y espero que estéis teniendo una buena tarde/noche.
Responder Con Cita
  #432  
Antiguo 25-02-2021
Emiliopm Emiliopm is offline
Miembro
 
Registrado: jun 2013
Ubicación: Huelva
Posts: 14
Poder: 0
Emiliopm Va por buen camino
Buenas, nosotros tenemos gran parte desarrollada, y al igual el resto de compañeros, así pues, si lo consideras oportuno, podríamos colaborar.

Eso si, estas cosas en github, con la de horas que nos ha llevado a todos, ojalá me equivoque, no se si lo encontraras .
Responder Con Cita
  #433  
Antiguo 25-02-2021
naglro naglro is offline
Registrado
 
Registrado: feb 2021
Posts: 2
Poder: 0
naglro Va por buen camino
Hola Emiliopm,

Sí, la verdad que me gustsaría poder colaborar.

Perdón por el tema de github, pensaba que todo el mundo ponía ahí el código pero acabo de caer que github es para temas open source claro.

Hasta ahora lo único que sé es el esquema de generación que pensaba que había que firmar primero la factura en PDF y no que había que firmar el fichero .xml. Había descubierto una empresa que se llama signaturit y tienen una API pero es mucho dinero al año por el uso de su API.

Cómo podríamos colaborar?
Responder Con Cita
  #434  
Antiguo 01-03-2021
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 233
Poder: 16
espinete Va camino a la fama
A mí también me interesa poder portar el código Delphi a PHP para otra aplicación online que estoy desarrollando, pero me temo que hasta que no termine con el de Delphi, no podré meterme con el otro.

Por cierto, hace unos días Bizcaia anunció (o eso entendí) que ya se podían hacer pruebas de "consulta de facturas". ¿A alguien le funciona? A mí me devuelve "Internal Server Error" -> "No hay definido un servicio al que llamar para el modelo:240, ejercicio:2021, periodo: 02 y apartado: 1.1".

Por lo que no me queda claro si realmente ya se pueden realizar consultas de facturas enviadas o aún no.
Responder Con Cita
  #435  
Antiguo 01-03-2021
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.282
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
A medida que va avanzando el tema, la documentación y el hilo crecen.

NOTA DEL MODERADOR: La recopilación de código ha pasado a la primera página de este hilo, al mensaje #2, para que esté más accesible.
__________________
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.

Última edición por Neftali [Germán.Estévez] fecha: 05-05-2022 a las 10:50:49.
Responder Con Cita
  #436  
Antiguo 06-03-2021
yaedev yaedev is offline
Miembro
 
Registrado: ene 2020
Posts: 23
Poder: 0
yaedev Va por buen camino
Cita:
Empezado por naglro Ver Mensaje
Hola compañeros,

Os escribo después de leer las 22 páginas del foro porque tengo una herramienta de facturación online que he creado yo mismo y me llevo semanas investigando sobre cómo implementar Ticketbai pero no consigo encauzar el tema. No soy programador y la aplicación la he hecho con herramientas de nocode (no me abucheéis porfa que me encanta la programación pero no consigo aprender porque se me hace muy complicada).

A ver si me podéis comentar algo porque estoy buscando la forma de poder firmar las facturas que emito a través de la aplicación y que cumplan el tema de Ticketbai pero me he encontrado con que no sé cómo lanzar algo que firme el XML.

Por lo que he leído, el proceso de creación de factura consiste en crear el fichero XML y luego firmarlo. Ahora, qué librería de firma electrónica puedo utilizar? Podría utilizar algo que ya haga factura-e y adaptarlo?

Mi idea es montar un servidor que cuente con la aplicación que pueda firmar las facturas y que luego me las devuelva a la herramienta a través de una API pero para ello primero entiendo que necesito una librería a la que llamar. He buscado en github pero no encuentro ninguna.

A ver si me podéis comentar algo porque como no soy programador estoy súper perdido aún leyendo todo lo que habéis comentado.

Muchas gracias de antemano y espero que estéis teniendo una buena tarde/noche.
Hola,

Yo también he empezado a buscar si ya hay algo hecho, pero ya doy por sentado que será algo de pago, y es lógico. Pero al menos encontrar algo asequible . En mi caso me pasa que tengo muy pocos clientes que les vaya a afectar el ticket bai, y no me sale a cuenta la inversión de horas con lo que luego voy a facturar. Para las microempresas o autónomos que tenemos muy pocos clientes afectados nos es un problemón gordo.

Por ahora lo único que he visto es que hay alguna que otra empresa desarrolladora que ya está poniendo en su catálogo de productos una solución API para Ticket BAI. Esto está super bien porque da igual el lenguaje de programación que uses. Tu mandas el fichero con los datos de la factura a través de la API, ésta realiza todo el proceso y luego la API te devuelve el QR y otros datos. Evidentemente son de pago, aunque en sus webs no he visto los precios. Por ahora espero a ver que vayan saliendo más empresas que vean filón de negocio en esto, y empiecen a comercializar soluciones y que alguna sea asequible para los que vayamos a manejar pocos usuarios.

Si alguien de aquí ofrece algo de esto sería interesante saber. Ya sean servicios de API, librerías, etc.

Un saludo
Responder Con Cita
  #437  
Antiguo 09-03-2021
Emiliopm Emiliopm is offline
Miembro
 
Registrado: jun 2013
Ubicación: Huelva
Posts: 14
Poder: 0
Emiliopm Va por buen camino
Buenas, la verdad es que nosotros hicimos el intento de montar algo que pudiéramos utilizar entre muchos, de ahí este curso:
abatic.net /courses/curso-de-ticketbai-con-delphi/

Pero al final no había interés en ello, no conseguimos que se apuntara nadie en él.

Saludos.
Responder Con Cita
  #438  
Antiguo 11-03-2021
Pau Haro Pau Haro is offline
Miembro
 
Registrado: mar 2021
Posts: 13
Poder: 0
Pau Haro Va por buen camino
Problema con atributo Id en firma TicketBAI

Buenas,

Soy nuevo en el foro pero llevo ya 1 mes trabajando con TicketBAI, de momento todo ha ido funcionando, pero una vez tengo ya mi documento firmado, lo envio y me da error (Error: Certificado remitente no válido para emisor factura). Asi que me he puesto a buscar diferencias entre mi XML y el que proporcionan de ejemplo y lo unico que me falta son los atributos (Id) que contienen una cadena tipo "Id="xmldsig-bf662545-f093-444e-8a4d-3d0daaa76d6f"". Mi pregunta es, realmente es necessario el Id ya que segun el estandar no lo es y en caso de que sea necessario como debo generar-lo adecuadamente?


Muchas gracias de antemano.
Responder Con Cita
  #439  
Antiguo 11-03-2021
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.282
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
Thumbs up

Cita:
Empezado por Pau Haro Ver Mensaje
...pero una vez tengo ya mi documento firmado, lo envio y me da error (Error: Certificado remitente no válido para emisor factura).
Yo creo que el error es claro: "Certificado remitente no válido para emisor factura".

No creo que sea problema del contenido, sino del certificado que estás utilizando.
Hay que decir que ayer "tocaron" algo de las validaciones de certificados, porque yo llevo utilizando uno de pruebas desde hace tiempo, y desde ayer por la mañana me está devolviendo este error:

Cita:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:TicketBaiResponse xmlns:ns2="urn:ticketbai:emision">
<Salida>
<FechaRecepcion>10-03-2021 11:54:35</FechaRecepcion>
<Estado>01</Estado>
<Descripcion>Rechazado</Descripcion>
<Azalpena>Baztertua</Azalpena>
<ResultadosValidacion>
<Codigo>001</Codigo>
<Descripcion>Error: Certificado remitente incorrecto (revocado o no homologado)</Descripcion>
<Azalpena>Akatsa: Bidaltzailearen ziurtagiria okerra (ezeztatua edo ez-homologatua)</Azalpena>
</ResultadosValidacion>
</Salida>
</ns2:TicketBaiResponse>

Yo intentaría probar con otro certificado, sin modificar le fichero.

P.D: No voy a hacer comentarios sobre el que está al otro lado y que parece que si ya no tenemos bastante con lo que tenemos que hacer, para que esté "facilitándonos" el trabajo con estos temas...
No se están poniendo en el lugar de los desarrolladores y creo que antes o después lo van a pagar. Recordemos que algun "lubreras" dijo que el coste de la solución informática sería de 150€. Quien encuentre una que cueste eso, que nos lo diga a los demás...

"
La adaptación al sistema supondrá un desembolso económico para los contribuyentes, ya que en algunos casos tendrán que adquirir el software -que no superará los 150 euros,..."

(link a la noticia)
__________________
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
  #440  
Antiguo 22-03-2021
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.029
Poder: 22
keys Va por buen camino
Hola.

Por si a alguien le interesa el sabado saliio en prensa que Gipuzkoa va a realizar un par de jornadas. Lo raro es que no sale en la página de gipuzkoa y no han avisado los a los desarrolladores, por lo menos a nosotros.

https://www.diariovasco.com/oarsoald...1257-ntvo.html
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 3549 Hace 2 Días 08:22:30
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 20:35:30.


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