![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Cita:
De todas formas la primera línea es necesaria. Y haz caso eel comentario de Band, lo puede modificar la aplicación que envía si no está bien parametrizada. |
|
#2
|
|||
|
|||
|
El envío lo hago tal como indiqué en el primer mensaje, usando el código encontrado en este hilo:
He probado a comentar la siguiente línea: NetHTTPClient1.CustomHeaders['Charset'] := 'UTF-8'; y ocurre lo mismo. También he añadido manualmente ANTES DE FIRMAR la línea... <?xml version="1.0" encoding="UTF-8"?> ...al XML (Delphi no la añade al generar el xml con el databinding) y obtengo el mismo error. Esta tarde probaré a cambiar la HORA al horario peninsular, a ver si es eso. |
|
#3
|
|||
|
|||
|
Cita:
Lo tienes en c#? si es así puedo mandarte mi código en .Net y si tienes alguna duda puedo ayudarte hasta donde pueda... EDITO: Termino de ver que es delphi,,, pero reitero que yo tenia un problema parecido y era por que luego de firmar no mantenia los espacios. Estas mostrandonos el código donde envias el post, pero creo que el problema está al cargar el XML, o lo que hagas despues de firmarlo. Última edición por Ramon88 fecha: 05-10-2021 a las 16:54:19. |
|
#4
|
|||
|
|||
|
Cita:
2. No entiendo lo de "falta un digest". Si el problema está en el código de la firma (con SecureBlackBox), el código lo he sacado de este mismo hilo, y creo que es el mismo que se usaba para FacturaE (que, por cierto, publiqué yo mismo hace años) 3. He tenido que usar un editor HEX online para comparar ambos archivos: el firmado y el sin firmar, y he encontrado una diferencia: Archivo SIN firmar (factura.xml): <CabeceraFactura> <SerieFactura></SerieFactura> <NumFactura>164</NumFactura> Archivo firmado (firmado.xml) <CabeceraFactura> <SerieFactura/> <NumFactura>164</NumFactura> ¿A donde ha ido el </SerieFactura> que falta? ¿Acaso el proceso de firma quita ese dato? A simple vista es lo único que falta, salvo eso de que me "falta un digest". Si el código que he usado es el que está en este hilo (aquí), no entiendo lo del digest. |
|
#5
|
|||
|
|||
|
Cita:
Que </nombre de campo> No he mirado si las especificaciones indican que mejor no ponerlo que ponerlo vacío en caso de no usar la serie. Ya lo único que veo es que pongas un ejemplo de unxml firmado(cambiando datos sensibles) para que lo repasemos. |
|
#6
|
|||
|
|||
|
Cita:
Los campos vacíos siempre se van a ver así después de firmarlo con los firmadores que he visto. |
|
#7
|
|||
|
|||
|
Cita:
Por lo tanto, el problema tiene que ser la codificación. La factura SIN firmar está en UTF-8 SIN BOM. Al menos así me consta con el Notepad++ y con el RJ TextEd. Y tiene esta línea al principio del XML: Código:
<?xml version="1.0" encoding="UTF-8"?> Código:
<?xml version="1.0"?> img.jpg Este es el contenido del XML (SIN firmar): < Código:
?xml version="1.0" encoding="UTF-8"?> <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="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"> <Cabecera> <IDVersionTBAI>1.2</IDVersionTBAI> </Cabecera> <Sujetos> <Emisor> <NIF>11111111H</NIF> <ApellidosNombreRazonSocial>Empresa Emisora</ApellidosNombreRazonSocial> </Emisor> <Destinatarios> <IDDestinatario> <NIF>42187378L</NIF> <ApellidosNombreRazonSocial>DESTINATARIO PEREZ</ApellidosNombreRazonSocial> <CodigoPostal>28080</CodigoPostal> <Direccion>Calle Madrid 18</Direccion> </IDDestinatario> </Destinatarios> <VariosDestinatarios>N</VariosDestinatarios> <EmitidaPorTercerosODestinatario>N</EmitidaPorTercerosODestinatario> </Sujetos> <Factura> <CabeceraFactura> <NumFactura>170</NumFactura> <FechaExpedicionFactura>04-10-2021</FechaExpedicionFactura> <HoraExpedicionFactura>10:38:20</HoraExpedicionFactura> <FacturaSimplificada>N</FacturaSimplificada> <FacturaEmitidaSustitucionSimplificada>N</FacturaEmitidaSustitucionSimplificada> </CabeceraFactura> <DatosFactura> <FechaOperacion>04-10-2021</FechaOperacion> <DescripcionFactura>Factura 170</DescripcionFactura> <DetallesFactura> <IDDetalleFactura> <DescripcionDetalle>Linea 1</DescripcionDetalle> <Cantidad>1</Cantidad> <ImporteUnitario>100</ImporteUnitario> <Descuento>0</Descuento> <ImporteTotal>121</ImporteTotal> </IDDetalleFactura> </DetallesFactura> <ImporteTotalFactura>136.78</ImporteTotalFactura> <RetencionSoportada>0</RetencionSoportada> <Claves> <IDClave> <ClaveRegimenIvaOpTrascendencia>01</ClaveRegimenIvaOpTrascendencia> </IDClave> </Claves> </DatosFactura> <TipoDesglose> <DesgloseFactura> <Sujeta> <NoExenta> <DetalleNoExenta> <TipoNoExenta>S1</TipoNoExenta> <DesgloseIVA> <DetalleIVA> <BaseImponible>50.00</BaseImponible> <TipoImpositivo>0</TipoImpositivo> <CuotaImpuesto>0.00</CuotaImpuesto> <TipoRecargoEquivalencia>0</TipoRecargoEquivalencia> <CuotaRecargoEquivalencia>0</CuotaRecargoEquivalencia> <OperacionEnRecargoDeEquivalenciaORegimenSimplificado>N</OperacionEnRecargoDeEquivalenciaORegimenSimplificado> </DetalleIVA> </DesgloseIVA> </DetalleNoExenta> </NoExenta> </Sujeta> </DesgloseFactura> </TipoDesglose> </Factura> <HuellaTBAI> <EncadenamientoFacturaAnterior> <SerieFacturaAnterior></SerieFacturaAnterior> <NumFacturaAnterior>169</NumFacturaAnterior> <FechaExpedicionFacturaAnterior>04-10-2021</FechaExpedicionFacturaAnterior> <SignatureValueFirmaFacturaAnterior>ihX0a1ouXku0n2MmeC47pcgwR2COanoSVPAcfKgxcIq90lrlk/0zmkqkBvX9Xus4dlms1P+q5IPIOQICaMD0OeXDR8EQ+lksbVE2</SignatureValueFirmaFacturaAnterior> </EncadenamientoFacturaAnterior> <Software> <LicenciaTBAI>TBAIXXXXXXXXXXXXXXXX</LicenciaTBAI> <EntidadDesarrolladora> <NIF>11111111H</NIF> </EntidadDesarrolladora> <Nombre>Entidad Desarrolladora</Nombre> <Version>15.5</Version> </Software> <NumSerieDispositivo>NSERIEPC</NumSerieDispositivo> </HuellaTBAI> </T:TicketBai> Última edición por Neftali [Germán.Estévez] fecha: 06-10-2021 a las 12:12:42. |
|
#8
|
||||
|
||||
|
Sólo por si ayuda a aclarar el tema.
¿Por casualidad tienes en esa factura algún character extraño (ÑÇáéí,...)? En la razón social del cliente, o en la empresa,...
__________________
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. |
|
#9
|
|||
|
|||
|
Cita:
Signature Verified Number of Reference Digests = 3 Reference 1 digest is valid. Reference 2 digest is valid. Reference 3 digest is valid. Lo que me extraña es que, a tí, despuéss de firmarlo le quite algo a la primera linea, con lo cual sigo pensando que hay un proceso intermedio que mete caracterers, a mi no me quita nada despues de firmarlo, con lo cual empieza a comprobar desde el proceso de Firma que es donde tienes el fallo. Última edición por ermendalenda fecha: 06-10-2021 a las 12:35:31. |
|
#10
|
|||
|
|||
|
Cita:
veo campos vacios: firmante.r_ID := ''; firmante.r_Metodo_Canonicalization := ''; Y deberia haber un Algoritmo del Metodo canonizador, etc,etc.. ...CanonicalizationMethod:="http://www.w3.org/TR/2000/WD-xml-c14n-20000710"; ....EnableXAdES := True; ...XAdESVersion :=... .XAdESForm :=... |
|
#11
|
|||
|
|||
|
Cita:
sbxXAdESSigner1.SignatureType := cxstEnveloped; sbxXAdESSigner1.CanonicalizationMethod := cxcmCanon; sbxXAdESSigner1.HashAlgorithm := firmante.r_Hash_algorithm; // SHA256 sbxXAdESSigner1.XMLElement := ''; // Todo el documento sbxXAdESSigner1.EnableXAdES := True; sbxXAdESSigner1.XAdESVersion := xav132; sbxXAdESSigner1.XAdESForm := xafEPES; sbxXAdESSigner1.Config('SigPolicyID=' + firmante.r_SigPolicyID); // https://ticketbai.eus/politicafirma'); sbxXAdESSigner1.Config('SigPolicyHash=' + firmante.r_SigPolicyHash); // 39D59C038EBB3B7DF6C61ED2F740B318F0C50F93ADCD35E26BE8FF8E76D21DA8; sbxXAdESSigner1.Config('SigPolicyHashAlgorithm=' + firmante.r_SigPolicyHashAlgorithm); //=SHA256; sbxXAdESSigner1.Config('SigPolicyURI=' + firmante.r_SigPolicyURI); //https://ticketbai.eus/politicafirma; |
|
#12
|
|||
|
|||
|
Además de la desaparición de </SerieFactura> en el archivo firmado, que no tengo ni idea de por qué ocurre (y ni siquiera sé si eso solucionará el problema), he estado usando varios editores de texto avanzados (no el bloc de notas) que me dicen la codificación de los archivos generados.
He estado haciendo pruebas, cambiando la codificación antes, después, en el propio XMLDocument, etc. y obtengo resultados diferentes. De hecho, el propio componente de firma de SecureBlackBoxpermite especificar la codificación del archivo resultante. Haciendo varias pruebas he conseguido que el XML incluya la línea... <?xml version="1.0" encoding="UTF-8"?> pero el archivo firmado la incluye así: <?xml version="1.0" encoding="utf-8"?> (utf-8 en minúsculas) Pero no quiero seguir haciendo pruebas si finalmente el problema va a estar en algo más simple, como que falta el cierre de </SerieFactura> en el XML firmado y no sé por qué. Eso sí sería una causa más que probable para que me devuelva el error que me está dando desde hace días. |
|
#13
|
|||
|
|||
|
La firma o las firmas
Una duda sobe la firma o las firmas.
Se supone que hay tres firmas, la de aplicación, la de usuario y la de dispositivo. No termina de cuadrarme esto, pero por lo que he leido es asi. Y que supongo que esto se puede hacer desasistido... o cada vez que emita una factura, he de seleccionar el certificado de la lista de certificados y firmar el xml? Pero ahora, como incorporo las 3 firmas? o ha de ser una de las tres ? o una que contempla las tres? O es que el software garante ya esta certificado, y se da por supuesto que esa firma esta incluida al usar ese software? Perdón por mis preguntas ya obsoletas... Que veo que andais ya todos en otros pasos del proceso. Supuestamente con Chilkat se podría automatizar todo esto... y hacerlo de forma desasistida, no? Tengo que integrarlo en una aplicación desarrollada en Velneo6, que no permite hacer firmas. Alguien tiene el mismo problema? estoy pensando en hacerlo bajo php, o python.o c++ para que sea un .exe que se ejecute desde Velneo... O lo suyo seria una dll. Gracias! |
|
#14
|
|||
|
|||
|
Hasta ahora yo solo he utilizado dos firmas (usando el mismo certificado, en mi caso)
- Firmar la factura - Firmar el envío No sé hasta qué punto hay que certificar el dispositivo... ¿Y si es un software alojado en la nube, por ejemplo, en Azure? Qué se utiliza en ese caso? Cuál sería el "dispositivo" en ese caso, teniendo en cuenta que en Azure, Google Cloud, AWS, etc. puede haber réplicas exactas de la misma aplicación según el volumen de carga? |
|
#15
|
|||
|
|||
|
Cita:
T Consigue un certificado de firma (o de autónomo o de dispositivo o de lo que sea) con su clave. Aún puedes hacer pruebas sin dar dte alta en software grnté(solo es a una clave que te Dan la forales por rellenar un formulario de compromiso de que el software cumple) este para las pruebas aún no te hace falta. Y con la clave que te den la tienes que escribir en el xml en un campo específico, de momento pon cualquier cosa. Firmar el software (si es una distribución de escritorio(que se instala en un equipo y no se ejecutaen la web o similar) tienes que firmarlo, pero eso no tiene que incluirse en lo que envías. Cada nueva versión tienes que guardar la copia y volver a firmar. (para las pruebas tampoco te hace falta). Pribldma que tu software no puede firmar: Aquí cada uno ha hecho cosas distintas en la medida de lo que conoce, facilidad, costes.ll más adaptable a lo que tengas etcc. Ejemplo usar el firmador.pho que desarrollo un usuario y ejecutarlo con algún servidor php instalado en cualquier sitio. Por ejemplo un servidor XAMPP.. Ejemplo 2, usar librerías que tiene un coste, te facilitan que lo puedes integrar con un montón de softwares, Chilkat, etc.. Usar el firmador de Autofirmacommanline. Exe. No te preocupes si tu software no puede firmar o enviar. Te recomie do que te relee as todo el hilo (todas la s páginas) que al principio es un poco lío pero lte va a despejar todas las dudas. Para enviar puedes usar el software de distribución gratuita CURL. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
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 | 3716 | 19-01-2026 20:01:34 |
| 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 |
|