Cita:
Empezado por Neftali [Germán.Estévez]
¿Te refieres a esto?
Código PHP:
<Cabecera> <IDVersionTBAI>1.2</IDVersionTBAI> </Cabecera> <Sujetos> <Emisor> <NIF>J69552834</NIF> <ApellidosNombreRazonSocial>Empresa de Test</ApellidosNombreRazonSocial> </Emisor> <Destinatarios> <IDDestinatario> <NIF>A86868189</NIF> <ApellidosNombreRazonSocial>C1</ApellidosNombreRazonSocial> <CodigoPostal>22050</CodigoPostal> <Direccion>CL. Menor, 77, 20, 30, 40 - Mod</Direccion> </IDDestinatario> </Destinatarios> <VariosDestinatarios>N</VariosDestinatarios> <EmitidaPorTercerosODestinatario>N</EmitidaPorTercerosODestinatario> </Sujetos> <Factura> <CabeceraFactura> <SerieFactura/> <NumFactura>5</NumFactura> <FechaExpedicionFactura>20-04-2021</FechaExpedicionFactura> <HoraExpedicionFactura>00:00:00</HoraExpedicionFactura> <FacturaSimplificada>N</FacturaSimplificada> <FacturaEmitidaSustitucionSimplificada>N</FacturaEmitidaSustitucionSimplificada> </CabeceraFactura> <DatosFactura> <DescripcionFactura>Factura de ejemplos 1</DescripcionFactura> <DetallesFactura> <IDDetalleFactura> <DescripcionDetalle/> <Cantidad>1.00</Cantidad> <ImporteUnitario>55.00000000</ImporteUnitario> <Descuento>0.00</Descuento> <ImporteTotal>66.55</ImporteTotal> </IDDetalleFactura> </DetallesFactura> <ImporteTotalFactura>66.55</ImporteTotalFactura> <Claves> <IDClave> <ClaveRegimenIvaOpTrascendencia>51</ClaveRegimenIvaOpTrascendencia> </IDClave> </Claves> </DatosFactura> <TipoDesglose> <DesgloseFactura> <Sujeta> <NoExenta> <DetalleNoExenta> <TipoNoExenta>S1</TipoNoExenta> <DesgloseIVA> <DetalleIVA> <BaseImponible>55.00</BaseImponible> <TipoImpositivo>21.00</TipoImpositivo> <CuotaImpuesto>11.55</CuotaImpuesto> <TipoRecargoEquivalencia>0.00</TipoRecargoEquivalencia> <CuotaRecargoEquivalencia>0.00</CuotaRecargoEquivalencia> <OperacionEnRecargoDeEquivalenciaORegimenSimplificado>S</OperacionEnRecargoDeEquivalenciaORegimenSimplificado> </DetalleIVA> </DesgloseIVA> </DetalleNoExenta> </NoExenta> </Sujeta> </DesgloseFactura> </TipoDesglose> </Factura>
|
Sí gracias, Neftali. Eso quería.
Pues lo tengo prácticamnente igual. Tengo una duda con la primera línea. Te pongo mi fichero
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>nif empresa facturadoara6</NIF>
<ApellidosNombreRazonSocial>EDARI</ApellidosNombreRazonSocial>
</Emisor>
<Destinatarios>
<IDDestinatario>
<NIF>nif cliente</NIF>
<ApellidosNombreRazonSocial>nombre cliente</ApellidosNombreRazonSocial>
</IDDestinatario>
</Destinatarios>
<VariosDestinatarios>N</VariosDestinatarios>
<EmitidaPorTercerosODestinatario>N</EmitidaPorTercerosODestinatario>
</Sujetos>
<Factura>
<CabeceraFactura>
<SerieFactura>02</SerieFactura>
<NumFactura>1000035</NumFactura>
<FechaExpedicionFactura>01-07-2021</FechaExpedicionFactura>
<HoraExpedicionFactura>00:06:28</HoraExpedicionFactura>
<FacturaSimplificada>N</FacturaSimplificada>
<FacturaEmitidaSustitucionSimplificada>N</FacturaEmitidaSustitucionSimplificada>
</CabeceraFactura>
<DatosFactura>
<DescripcionFactura>factura a cliente</DescripcionFactura>
<DetallesFactura>
<IDDetalleFactura>
<DescripcionDetalle>BARRIL DAMM</DescripcionDetalle>
<Cantidad>1.00</Cantidad>
<ImporteUnitario>40.00</ImporteUnitario>
<Descuento>0.00</Descuento>
<ImporteTotal>40.00</ImporteTotal>
</IDDetalleFactura>
</DetallesFactura>
<ImporteTotalFactura>50.48</ImporteTotalFactura>
<Claves>
<IDClave>
<ClaveRegimenIvaOpTrascendencia>01</ClaveRegimenIvaOpTrascendencia>
</IDClave>
</Claves>
</DatosFactura>
<TipoDesglose>
<DesgloseFactura>
<Sujeta>
<NoExenta>
<DetalleNoExenta>
<TipoNoExenta>S1</TipoNoExenta>
<DesgloseIVA>
<DetalleIVA>
<BaseImponible>40.00</BaseImponible>
<TipoImpositivo>21.00</TipoImpositivo>
<CuotaImpuesto>8.40</CuotaImpuesto>
<TipoRecargoEquivalencia>05.20</TipoRecargoEquivalencia>
<CuotaRecargoEquivalencia>2.08</CuotaRecargoEquivalencia>
</DetalleIVA>
</DesgloseIVA>
</DetalleNoExenta>
</NoExenta>
</Sujeta>
</DesgloseFactura>
</TipoDesglose>
</Factura>
<HuellaTBAI>
<Software>
<LicenciaTBAI>mi licencia como empresa</LicenciaTBAI>
<EntidadDesarrolladora>
<NIF>nuestro nif</NIF>
</EntidadDesarrolladora>
<Nombre>EDARI</Nombre>
<Version>1.0</Version>
</Software>
<NumSerieDispositivo>el numero de serie de mi dispositivo</NumSerieDispositivo>
</HuellaTBAI>
</T:TicketBai>
Lo firmo desde símbolo de comando con
\autofirma\autofirma\autofirmacommandline.exe sign -i FACTURA.XML -o FACTURA_FIRMADA.XML -store pkcs12:\CERTIFICADO\MI_CERTIFICADO_DE_DISPOSITIVO.p12 -password MI_PASSWD -filter \CERTIFICADO\MI_CERTIFICADO_DE_DISPOSITIVO.p12 -format xades -xml -config "format=XAdES Enveloped \npolicyIdentifier=identificativo \npolicyIdentifierHash=codigo_HASH \npolicyIdentifierHashAlgorithm=h t t p ://w w w .w3.org/2001/04/xmlenc#sha256 \npolicyQualifier=identificativo
El certificado de dispositivo lo bajamos de Izenpe para la máquina donde hago las pruebas
Al lanzarlo me da este mensaje, que aunque da algunos errores al final dice que lo ha generado bien
...
GRAVE: No se ha podido establecer la propiedad de seguridad en la factoria XML
java.lang.IllegalArgumentException: La propiedad "h t t p ://javax.xml.XMLConstants/property/accessExternalStylesheet" no se ha reconocido.
at java.xml/com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl.setAttribute(Unknown Source)
at es.gob.afirma.signers.xades.XAdESUtil.<clinit>(XAdESUtil.java:97)
at es.gob.afirma.signers.xades.XAdESSigner.sign(XAdESSigner.java:429)
at es.gob.afirma.signers.xades.AOXAdESSigner.sign(AOXAdESSigner.java:405)
at es.gob.afirma.standalone.CommandLineLauncher.sign(CommandLineLauncher.java:797)
at es.gob.afirma.standalone.CommandLineLauncher.signByCommandLine(CommandLineLauncher.java:624)
at es.gob.afirma.standalone.CommandLineLauncher.processCommandLine(CommandLineLauncher.java:152)
at es.gob.afirma.standalone.CommandLineLauncher.main(CommandLineLauncher.java:1006)
at es.gob.afirma.standalone.SimpleAfirma.main(SimpleAfirma.java:573)
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See h t t p://w w w.slf4j.org/codes.html#StaticLoggerBinder for further details.
<afirma><result>true</result><response><msg>La operacion ha terminado correctamente </msg></response></afirma>
y lanzo el curl con
curl.exe --data-binary @FACTURA_FIRMADA.XML --cert-type P12 --cert certificadodispositivo.p12:230175 -H "Content-Type: application/xml;charset=UTF8" -X POST h t t p s://tbai-prep.egoitza.gipuzkoa.eus/WAS/HACI/HTBRecepcionFacturasWEB/rest/recepcionFacturas/alta -o RESPUESTA.XML
Y siempre me da este error
<Codigo>002</Codigo>
<Descripcion>Error: El fichero de alta TicketBAI no cumple el esquema XSD. Detalle del error: cvc-datatype-valid.1.2.1: 'codigo_HASH' is not a valid value for 'base64Binary'.</Descripcion>
Gracias de nuevo