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)

keys 01-10-2021 12:20:12

Cita:

Empezado por JoseLeeTo (Mensaje 543256)
Hola de nuevo;

Estoy teniendo problemas al mandar a Bizkaia.
Me dice continuamente "Tiempo de respuesta agotado - Sin Respuesta"

Alava devuelve que tiene caído el servicio.
Guipzucoa aparentemente funciona bien.

¿Os está ocurriendo a vosotros también?

Muchas gracias.
Saludos.

Hola.

Bizkaia a parado hoy todos los servidores. hace unos días enviaron esto.
Cita:

Como sabéis, el periodo voluntario incentivado de Batuz se iniciará el 1 de enero de 2022 para las personas y entidades que se adhieran al sistema. En consecuencia, esta fecha supondrá la apertura del entorno real del Libro Registro de Operaciones Económicas (LROE), tanto para la aplicación web de la Hacienda Foral como para el intercambio automático de ficheros informáticos a través del servicio de entradas masivas de la Diputación Foral de Bizkaia.
Os escribimos ahora para informaros de que, a partir de mediados de octubre y hasta principios de diciembre, se abrirá a modo de pruebas este entorno real del LROE, con el doble objetivo de que, por un lado, las personas contribuyentes se familiaricen con el nuevo sistema, y, por otro lado, las empresas desarrolladoras de software puedan realizar pruebas sobre el entorno real del servicio de entradas masivas. En todo caso, las anotaciones que se realicen durante este periodo se registrarán a modo de prueba y no tendrán trascendencia tributaria.

Por ello, el entorno de pruebas actual del servicio de entradas https://pruesarrerak.bizkaia.eus se cerrará el próximo 30 de septiembre de 2021.

Para la realización de pruebas del sistema de envíos masivos estarán disponibles los siguientes entornos:
 Entorno real del LROE a modo de pruebas con certificados reales de producción. La URL será https://sarrerak.bizkaia.eus y, como hemos dicho, estará disponible a partir de mediados de octubre hasta principios de diciembre de 2021.
 Nuevo entorno de pruebas que, atendiendo a las sugerencias recibidas, funcionará con certificados de pruebas y estará disponible a partir de mediados de noviembre.
La información detallada de estos entornos se publicará en la web de Batuz (www.batuz.eus) y se notificará tanto a través del apartado de Novedades de dicha web como a través de un correo enviado desde este buzón.

Noe277 01-10-2021 12:26:08

Redondeo de Facturas
 
Respuesta de Álava sobre el tema del redondeo


Cita:

Buenos días Noemí


El aviso está motivado por los redondeos que se hacen al trabajar únicamente con dos decimales.

Intentaremos resolverlo para que la respuesta a este envío sea correcta.

Gracias por su colaboración. Cuando hayamos hecho los cambios en nuestro servicio se lo comunicaremos.

Un saludo

JoseLeeTo 01-10-2021 13:58:03

Cita:

Empezado por iMia (Mensaje 543257)
Hoy chapaban el servicio de Bizkaia durante 15 dias...

Ostras, es verdad.
Gracias.

JoseLeeTo 01-10-2021 13:59:41

Cita:

Empezado por keys (Mensaje 543258)
Hola.

Bizkaia a parado hoy todos los servidores. hace unos días enviaron esto.

Gracias. No me acordaba.

sEngine 01-10-2021 16:41:25

Os funciona bien Guipuzkoa? Porque me esta dando esta respuesta:

Código:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:TicketBaiResponse xmlns:ns2="urn:ticketbai:emision">
    <Salida>
        <IdentificadorTBAI>TBAI-XXXXXXX-011021-iUZNIGX8YcMeb-163</IdentificadorTBAI>
        <FechaRecepcion>01-10-2021 16:37:12</FechaRecepcion>
        <Estado>00</Estado>
        <Descripcion>Recibido</Descripcion>
        <Azalpena>Jasota</Azalpena>
        <ResultadosValidacion>
            <Codigo>008</Codigo>
            <Descripcion>org.apache.axis.InternalException: org.apache.axis.ConfigurationException: java.lang.NullPointerException
java.lang.NullPointerException
    at org.eclipse.osgi.internal.loader.BundleLoader.findResource(BundleLoader.java:585)
    at org.eclipse.osgi.internal.loader.BundleLoader.findResource(BundleLoader.java:581)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.getResource(DefaultClassLoader.java:143)
    at java.lang.ClassLoader.getResource(ClassLoader.java:576)
    at com.ibm.ws.bootstrap.ExtClassLoader.getResource(ExtClassLoader.java:575)
    at java.lang.ClassLoader.getResource(ClassLoader.java:576)
    at com.ibm.ws.classloader.CompoundClassLoader.getResource(CompoundClassLoader.java:977)
    at com.ibm.ws.classloader.CompoundClassLoader.getResource(CompoundClassLoader.java:977)
    at com.ibm.ws.classloader.CompoundClassLoader.getResource(CompoundClassLoader.java:977)
    at com.ibm.ws.classloader.CompoundClassLoader.getResourceAsStream(CompoundClassLoader.java:1160)
    at org.apache.axis.utils.ClassUtils.getResourceAsStream(ClassUtils.java:227)
    at org.apache.axis.configuration.FileProvider.configureEngine(FileProvider.java:170)
    at org.apache.axis.AxisEngine.init(AxisEngine.java:172)
    at org.apache.axis.AxisEngine.&lt;init&gt;(AxisEngine.java:156)
    at org.apache.axis.client.AxisClient.&lt;init&gt;(AxisClient.java:52)
    at org.apache.axis.client.Service.getAxisClient(Service.java:104)
    at org.apache.axis.client.Service.&lt;init&gt;(Service.java:144)
    at com.safelayer.http://www.TWS.DSV_wsdl.TWSDSVLocato...it&gt;(Unknown Source)
    at net.izfe.g240.wizserviciosfirma.facades.impl.SignatureFacadeImpl.verify(SignatureFacadeImpl.java:1480)
    at sun.reflect.GeneratedMethodAccessor327.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
    at java.lang.reflect.Method.invoke(Method.java:508)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at com.sun.proxy.$Proxy115.verify(Unknown Source)
    at net.izfe.g220.htbrecepcionfacturas.rest.ValidacionDatosTicketBai.validarFirmaFactura(ValidacionDatosTicketBai.java:425)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.AsincronoFacadeImpl.validarFirmaConPosibleActualizacionDeCache(AsincronoFacadeImpl.java:305)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.AsincronoFacadeImpl.verificarFirmaFacturaXML(AsincronoFacadeImpl.java:228)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.RecepcionFacadeImpl.validarFactura(RecepcionFacadeImpl.java:241)
    at net.izfe.g220.htbrecepcionfacturas.rest.HtbRecepcionFacturasRest.validacionhtbrecepcionfacturas(HtbRecepcionFacturasRest.java:118)
    at sun.reflect.GeneratedMethodAccessor143.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
    at java.lang.reflect.Method.invoke(Method.java:508)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:832)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:743)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1233)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:782)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:481)
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1114)
    at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87)
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:949)
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817)
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:463)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:530)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:316)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:287)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1892)

org.apache.axis.ConfigurationException: java.lang.NullPointerException
java.lang.NullPointerException
    at org.eclipse.osgi.internal.loader.BundleLoader.findResource(BundleLoader.java:585)
    at org.eclipse.osgi.internal.loader.BundleLoader.findResource(BundleLoader.java:581)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.getResource(DefaultClassLoader.java:143)
    at java.lang.ClassLoader.getResource(ClassLoader.java:576)
    at com.ibm.ws.bootstrap.ExtClassLoader.getResource(ExtClassLoader.java:575)
    at java.lang.ClassLoader.getResource(ClassLoader.java:576)
    at com.ibm.ws.classloader.CompoundClassLoader.getResource(CompoundClassLoader.java:977)
    at com.ibm.ws.classloader.CompoundClassLoader.getResource(CompoundClassLoader.java:977)
    at com.ibm.ws.classloader.CompoundClassLoader.getResource(CompoundClassLoader.java:977)
    at com.ibm.ws.classloader.CompoundClassLoader.getResourceAsStream(CompoundClassLoader.java:1160)
    at org.apache.axis.utils.ClassUtils.getResourceAsStream(ClassUtils.java:227)
    at org.apache.axis.configuration.FileProvider.configureEngine(FileProvider.java:170)
    at org.apache.axis.AxisEngine.init(AxisEngine.java:172)
    at org.apache.axis.AxisEngine.&lt;init&gt;(AxisEngine.java:156)
    at org.apache.axis.client.AxisClient.&lt;init&gt;(AxisClient.java:52)
    at org.apache.axis.client.Service.getAxisClient(Service.java:104)
    at org.apache.axis.client.Service.&lt;init&gt;(Service.java:144)
    at com.safelayer.http://www.TWS.DSV_wsdl.TWSDSVLocato...it&gt;(Unknown Source)
    at net.izfe.g240.wizserviciosfirma.facades.impl.SignatureFacadeImpl.verify(SignatureFacadeImpl.java:1480)
    at sun.reflect.GeneratedMethodAccessor327.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
    at java.lang.reflect.Method.invoke(Method.java:508)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at com.sun.proxy.$Proxy115.verify(Unknown Source)
    at net.izfe.g220.htbrecepcionfacturas.rest.ValidacionDatosTicketBai.validarFirmaFactura(ValidacionDatosTicketBai.java:425)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.AsincronoFacadeImpl.validarFirmaConPosibleActualizacionDeCache(AsincronoFacadeImpl.java:305)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.AsincronoFacadeImpl.verificarFirmaFacturaXML(AsincronoFacadeImpl.java:228)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.RecepcionFacadeImpl.validarFactura(RecepcionFacadeImpl.java:241)
    at net.izfe.g220.htbrecepcionfacturas.rest.HtbRecepcionFacturasRest.validacionhtbrecepcionfacturas(HtbRecepcionFacturasRest.java:118)
    at sun.reflect.GeneratedMethodAccessor143.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
    at java.lang.reflect.Method.invoke(Method.java:508)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:832)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:743)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1233)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:782)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:481)
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1114)
    at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87)
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:949)
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817)
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:463)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:530)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:316)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:287)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1892)

    at org.apache.axis.configuration.FileProvider.configureEngine(FileProvider.java:188)
    at org.apache.axis.AxisEngine.init(AxisEngine.java:172)
    at org.apache.axis.AxisEngine.&lt;init&gt;(AxisEngine.java:156)
    at org.apache.axis.client.AxisClient.&lt;init&gt;(AxisClient.java:52)
    at org.apache.axis.client.Service.getAxisClient(Service.java:104)
    at org.apache.axis.client.Service.&lt;init&gt;(Service.java:144)
    at com.safelayer.http://www.TWS.DSV_wsdl.TWSDSVLocato...it&gt;(Unknown Source)
    at net.izfe.g240.wizserviciosfirma.facades.impl.SignatureFacadeImpl.verify(SignatureFacadeImpl.java:1480)
    at sun.reflect.GeneratedMethodAccessor327.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
    at java.lang.reflect.Method.invoke(Method.java:508)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at com.sun.proxy.$Proxy115.verify(Unknown Source)
    at net.izfe.g220.htbrecepcionfacturas.rest.ValidacionDatosTicketBai.validarFirmaFactura(ValidacionDatosTicketBai.java:425)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.AsincronoFacadeImpl.validarFirmaConPosibleActualizacionDeCache(AsincronoFacadeImpl.java:305)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.AsincronoFacadeImpl.verificarFirmaFacturaXML(AsincronoFacadeImpl.java:228)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.RecepcionFacadeImpl.validarFactura(RecepcionFacadeImpl.java:241)
    at net.izfe.g220.htbrecepcionfacturas.rest.HtbRecepcionFacturasRest.validacionhtbrecepcionfacturas(HtbRecepcionFacturasRest.java:118)
    at sun.reflect.GeneratedMethodAccessor143.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
    at java.lang.reflect.Method.invoke(Method.java:508)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:832)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:743)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1233)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:782)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:481)
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1114)
    at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87)
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:949)
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817)
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:463)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:530)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:316)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:287)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1892)
</Descripcion>
            <Azalpena>org.apache.axis.InternalException: org.apache.axis.ConfigurationException: java.lang.NullPointerException
java.lang.NullPointerException
    at org.eclipse.osgi.internal.loader.BundleLoader.findResource(BundleLoader.java:585)
    at org.eclipse.osgi.internal.loader.BundleLoader.findResource(BundleLoader.java:581)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.getResource(DefaultClassLoader.java:143)
    at java.lang.ClassLoader.getResource(ClassLoader.java:576)
    at com.ibm.ws.bootstrap.ExtClassLoader.getResource(ExtClassLoader.java:575)
    at java.lang.ClassLoader.getResource(ClassLoader.java:576)
    at com.ibm.ws.classloader.CompoundClassLoader.getResource(CompoundClassLoader.java:977)
    at com.ibm.ws.classloader.CompoundClassLoader.getResource(CompoundClassLoader.java:977)
    at com.ibm.ws.classloader.CompoundClassLoader.getResource(CompoundClassLoader.java:977)
    at com.ibm.ws.classloader.CompoundClassLoader.getResourceAsStream(CompoundClassLoader.java:1160)
    at org.apache.axis.utils.ClassUtils.getResourceAsStream(ClassUtils.java:227)
    at org.apache.axis.configuration.FileProvider.configureEngine(FileProvider.java:170)
    at org.apache.axis.AxisEngine.init(AxisEngine.java:172)
    at org.apache.axis.AxisEngine.&lt;init&gt;(AxisEngine.java:156)
    at org.apache.axis.client.AxisClient.&lt;init&gt;(AxisClient.java:52)
    at org.apache.axis.client.Service.getAxisClient(Service.java:104)
    at org.apache.axis.client.Service.&lt;init&gt;(Service.java:144)
    at com.safelayer.http://www.TWS.DSV_wsdl.TWSDSVLocato...it&gt;(Unknown Source)
    at net.izfe.g240.wizserviciosfirma.facades.impl.SignatureFacadeImpl.verify(SignatureFacadeImpl.java:1480)
    at sun.reflect.GeneratedMethodAccessor327.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
    at java.lang.reflect.Method.invoke(Method.java:508)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at com.sun.proxy.$Proxy115.verify(Unknown Source)
    at net.izfe.g220.htbrecepcionfacturas.rest.ValidacionDatosTicketBai.validarFirmaFactura(ValidacionDatosTicketBai.java:425)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.AsincronoFacadeImpl.validarFirmaConPosibleActualizacionDeCache(AsincronoFacadeImpl.java:305)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.AsincronoFacadeImpl.verificarFirmaFacturaXML(AsincronoFacadeImpl.java:228)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.RecepcionFacadeImpl.validarFactura(RecepcionFacadeImpl.java:241)
    at net.izfe.g220.htbrecepcionfacturas.rest.HtbRecepcionFacturasRest.validacionhtbrecepcionfacturas(HtbRecepcionFacturasRest.java:118)
    at sun.reflect.GeneratedMethodAccessor143.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
    at java.lang.reflect.Method.invoke(Method.java:508)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:832)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:743)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1233)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:782)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:481)
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1114)
    at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87)
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:949)
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817)
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:463)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:530)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:316)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:287)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1892)

org.apache.axis.ConfigurationException: java.lang.NullPointerException
java.lang.NullPointerException
    at org.eclipse.osgi.internal.loader.BundleLoader.findResource(BundleLoader.java:585)
    at org.eclipse.osgi.internal.loader.BundleLoader.findResource(BundleLoader.java:581)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.getResource(DefaultClassLoader.java:143)
    at java.lang.ClassLoader.getResource(ClassLoader.java:576)
    at com.ibm.ws.bootstrap.ExtClassLoader.getResource(ExtClassLoader.java:575)
    at java.lang.ClassLoader.getResource(ClassLoader.java:576)
    at com.ibm.ws.classloader.CompoundClassLoader.getResource(CompoundClassLoader.java:977)
    at com.ibm.ws.classloader.CompoundClassLoader.getResource(CompoundClassLoader.java:977)
    at com.ibm.ws.classloader.CompoundClassLoader.getResource(CompoundClassLoader.java:977)
    at com.ibm.ws.classloader.CompoundClassLoader.getResourceAsStream(CompoundClassLoader.java:1160)
    at org.apache.axis.utils.ClassUtils.getResourceAsStream(ClassUtils.java:227)
    at org.apache.axis.configuration.FileProvider.configureEngine(FileProvider.java:170)
    at org.apache.axis.AxisEngine.init(AxisEngine.java:172)
    at org.apache.axis.AxisEngine.&lt;init&gt;(AxisEngine.java:156)
    at org.apache.axis.client.AxisClient.&lt;init&gt;(AxisClient.java:52)
    at org.apache.axis.client.Service.getAxisClient(Service.java:104)
    at org.apache.axis.client.Service.&lt;init&gt;(Service.java:144)
    at com.safelayer.http://www.TWS.DSV_wsdl.TWSDSVLocato...it&gt;(Unknown Source)
    at net.izfe.g240.wizserviciosfirma.facades.impl.SignatureFacadeImpl.verify(SignatureFacadeImpl.java:1480)
    at sun.reflect.GeneratedMethodAccessor327.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
    at java.lang.reflect.Method.invoke(Method.java:508)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at com.sun.proxy.$Proxy115.verify(Unknown Source)
    at net.izfe.g220.htbrecepcionfacturas.rest.ValidacionDatosTicketBai.validarFirmaFactura(ValidacionDatosTicketBai.java:425)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.AsincronoFacadeImpl.validarFirmaConPosibleActualizacionDeCache(AsincronoFacadeImpl.java:305)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.AsincronoFacadeImpl.verificarFirmaFacturaXML(AsincronoFacadeImpl.java:228)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.RecepcionFacadeImpl.validarFactura(RecepcionFacadeImpl.java:241)
    at

 ...
</Azalpena>
        </ResultadosValidacion>
        <CSV>TBAIc5c7f01a-7031-4d68-b8b7-3d6498dd5633</CSV>
    </Salida>
</ns2:TicketBaiResponse>

Se envía pero recibo ese cacho de error. Lo reduzco un poco porque era muy largo

Sistel 01-10-2021 16:58:19

Cita:

Empezado por Ramon88 (Mensaje 543231)
Lo de que todas las empresas deben imprimir ticket estamos de acuerdo, pero te diria que todavía hay una gran parte de negocios sin impresoras de ticket, aunque parezca mentira...
La verdad que sigo sin tener claro si debo de subir también las facturas simplificadas o no...
Si subimos facturas simplificadas, estas deben de coincidir con las facturas...
Nº de venta: 55 *que incluye las facturas simplificadas Nº 10 y 33 (Subo 2 facturas simplificadas)
Factura 11111 de la venta 55 (Subo 1 factura)
Es correcto ?

Hola Ramon88,

Las facturas simplificadas (antes llamadas tickets) también son facturas y, aunque no tengan destinatario, también tienen su corazoncito, como las demás :D
Por tanto, hay que enviarlas igual que las facturas completas (con destinatario).
Da igual que sean de un TPV o de una balanza de pescadería: hay que enviarlas.

Otra cosa es que después quieras hacer una factura completa de sustitución de simplificadas (también llamadas facturas de canje de tickets)
Estas facturas de sustitución de tickets deben identificar las facturas simplificadas a las que sustituyen (serie, número y fecha de cada una de ellas)
Y también se deben enviar.
Pero ojo, en TicketBAI, estas facturas sustitutivas no se consideran rectificativas de las facturas simplificadas a las que sustituyen.
En Hacienda, toman nota de esta sustitución, pero los importes, IVAs y fechas siguen siendo los de las facturas simplificadas enviadas antes.
Estas sustitutivas sólo sirven para informar a Hacienda que se ha hecho esta factura sustitutiva y se le ha entregado al cliente.

Como en la información del XML de una sustitutiva sólo caben hasta 100 facturas sustituidas, Hacienda admite que si son más se indique sólo la primera y la última.
(Al fin y al cabo es sólo una factura informativa)

Saludos

David M 01-10-2021 17:47:16

Cita:

Empezado por sEngine (Mensaje 543265)
Os funciona bien Guipuzkoa? Porque me esta dando esta respuesta:

Se envía pero recibo ese cacho de error. Lo reduzco un poco porque era muy largo

A mí tampoco me funciona, me devuelve Service Unavailable

Saludos,
David M

ermendalenda 01-10-2021 17:50:07

Cita:

Empezado por sEngine (Mensaje 543265)
Os funciona bien Guipuzkoa? Porque me esta dando esta respuesta:

Código:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:TicketBaiResponse xmlns:ns2="urn:ticketbai:emision">
    <Salida>
        <IdentificadorTBAI>TBAI-XXXXXXX-011021-iUZNIGX8YcMeb-163</IdentificadorTBAI>
        <FechaRecepcion>01-10-2021 16:37:12</FechaRecepcion>
        <Estado>00</Estado>
        <Descripcion>Recibido</Descripcion>
        <Azalpena>Jasota</Azalpena>
        <ResultadosValidacion>
            <Codigo>008</Codigo>
            <Descripcion>org.apache.axis.InternalException: org.apache.axis.ConfigurationException: java.lang.NullPointerException
java.lang.NullPointerException
    at org.eclipse.osgi.internal.loader.BundleLoader.findResource(BundleLoader.java:585)
    at org.eclipse.osgi.internal.loader.BundleLoader.findResource(BundleLoader.java:581)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.getResource(DefaultClassLoader.java:143)
    at java.lang.ClassLoader.getResource(ClassLoader.java:576)
    at com.ibm.ws.bootstrap.ExtClassLoader.getResource(ExtClassLoader.java:575)
    at java.lang.ClassLoader.getResource(ClassLoader.java:576)
    at com.ibm.ws.classloader.CompoundClassLoader.getResource(CompoundClassLoader.java:977)
    at com.ibm.ws.classloader.CompoundClassLoader.getResource(CompoundClassLoader.java:977)
    at com.ibm.ws.classloader.CompoundClassLoader.getResource(CompoundClassLoader.java:977)
    at com.ibm.ws.classloader.CompoundClassLoader.getResourceAsStream(CompoundClassLoader.java:1160)
    at org.apache.axis.utils.ClassUtils.getResourceAsStream(ClassUtils.java:227)
    at org.apache.axis.configuration.FileProvider.configureEngine(FileProvider.java:170)
    at org.apache.axis.AxisEngine.init(AxisEngine.java:172)
    at org.apache.axis.AxisEngine.&lt;init&gt;(AxisEngine.java:156)
    at org.apache.axis.client.AxisClient.&lt;init&gt;(AxisClient.java:52)
    at org.apache.axis.client.Service.getAxisClient(Service.java:104)
    at org.apache.axis.client.Service.&lt;init&gt;(Service.java:144)
    at com.safelayer.http://www.TWS.DSV_wsdl.TWSDSVLocato...it&gt;(Unknown Source)
    at net.izfe.g240.wizserviciosfirma.facades.impl.SignatureFacadeImpl.verify(SignatureFacadeImpl.java:1480)
    at sun.reflect.GeneratedMethodAccessor327.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
    at java.lang.reflect.Method.invoke(Method.java:508)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at com.sun.proxy.$Proxy115.verify(Unknown Source)
    at net.izfe.g220.htbrecepcionfacturas.rest.ValidacionDatosTicketBai.validarFirmaFactura(ValidacionDatosTicketBai.java:425)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.AsincronoFacadeImpl.validarFirmaConPosibleActualizacionDeCache(AsincronoFacadeImpl.java:305)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.AsincronoFacadeImpl.verificarFirmaFacturaXML(AsincronoFacadeImpl.java:228)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.RecepcionFacadeImpl.validarFactura(RecepcionFacadeImpl.java:241)
    at net.izfe.g220.htbrecepcionfacturas.rest.HtbRecepcionFacturasRest.validacionhtbrecepcionfacturas(HtbRecepcionFacturasRest.java:118)
    at sun.reflect.GeneratedMethodAccessor143.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
    at java.lang.reflect.Method.invoke(Method.java:508)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:832)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:743)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1233)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:782)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:481)
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1114)
    at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87)
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:949)
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817)
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:463)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:530)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:316)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:287)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1892)

org.apache.axis.ConfigurationException: java.lang.NullPointerException
java.lang.NullPointerException
    at org.eclipse.osgi.internal.loader.BundleLoader.findResource(BundleLoader.java:585)
    at org.eclipse.osgi.internal.loader.BundleLoader.findResource(BundleLoader.java:581)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.getResource(DefaultClassLoader.java:143)
    at java.lang.ClassLoader.getResource(ClassLoader.java:576)
    at com.ibm.ws.bootstrap.ExtClassLoader.getResource(ExtClassLoader.java:575)
    at java.lang.ClassLoader.getResource(ClassLoader.java:576)
    at com.ibm.ws.classloader.CompoundClassLoader.getResource(CompoundClassLoader.java:977)
    at com.ibm.ws.classloader.CompoundClassLoader.getResource(CompoundClassLoader.java:977)
    at com.ibm.ws.classloader.CompoundClassLoader.getResource(CompoundClassLoader.java:977)
    at com.ibm.ws.classloader.CompoundClassLoader.getResourceAsStream(CompoundClassLoader.java:1160)
    at org.apache.axis.utils.ClassUtils.getResourceAsStream(ClassUtils.java:227)
    at org.apache.axis.configuration.FileProvider.configureEngine(FileProvider.java:170)
    at org.apache.axis.AxisEngine.init(AxisEngine.java:172)
    at org.apache.axis.AxisEngine.&lt;init&gt;(AxisEngine.java:156)
    at org.apache.axis.client.AxisClient.&lt;init&gt;(AxisClient.java:52)
    at org.apache.axis.client.Service.getAxisClient(Service.java:104)
    at org.apache.axis.client.Service.&lt;init&gt;(Service.java:144)
    at com.safelayer.http://www.TWS.DSV_wsdl.TWSDSVLocato...it&gt;(Unknown Source)
    at net.izfe.g240.wizserviciosfirma.facades.impl.SignatureFacadeImpl.verify(SignatureFacadeImpl.java:1480)
    at sun.reflect.GeneratedMethodAccessor327.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
    at java.lang.reflect.Method.invoke(Method.java:508)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at com.sun.proxy.$Proxy115.verify(Unknown Source)
    at net.izfe.g220.htbrecepcionfacturas.rest.ValidacionDatosTicketBai.validarFirmaFactura(ValidacionDatosTicketBai.java:425)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.AsincronoFacadeImpl.validarFirmaConPosibleActualizacionDeCache(AsincronoFacadeImpl.java:305)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.AsincronoFacadeImpl.verificarFirmaFacturaXML(AsincronoFacadeImpl.java:228)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.RecepcionFacadeImpl.validarFactura(RecepcionFacadeImpl.java:241)
    at net.izfe.g220.htbrecepcionfacturas.rest.HtbRecepcionFacturasRest.validacionhtbrecepcionfacturas(HtbRecepcionFacturasRest.java:118)
    at sun.reflect.GeneratedMethodAccessor143.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
    at java.lang.reflect.Method.invoke(Method.java:508)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:832)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:743)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1233)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:782)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:481)
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1114)
    at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87)
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:949)
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817)
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:463)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:530)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:316)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:287)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1892)

    at org.apache.axis.configuration.FileProvider.configureEngine(FileProvider.java:188)
    at org.apache.axis.AxisEngine.init(AxisEngine.java:172)
    at org.apache.axis.AxisEngine.&lt;init&gt;(AxisEngine.java:156)
    at org.apache.axis.client.AxisClient.&lt;init&gt;(AxisClient.java:52)
    at org.apache.axis.client.Service.getAxisClient(Service.java:104)
    at org.apache.axis.client.Service.&lt;init&gt;(Service.java:144)
    at com.safelayer.http://www.TWS.DSV_wsdl.TWSDSVLocato...it&gt;(Unknown Source)
    at net.izfe.g240.wizserviciosfirma.facades.impl.SignatureFacadeImpl.verify(SignatureFacadeImpl.java:1480)
    at sun.reflect.GeneratedMethodAccessor327.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
    at java.lang.reflect.Method.invoke(Method.java:508)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at com.sun.proxy.$Proxy115.verify(Unknown Source)
    at net.izfe.g220.htbrecepcionfacturas.rest.ValidacionDatosTicketBai.validarFirmaFactura(ValidacionDatosTicketBai.java:425)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.AsincronoFacadeImpl.validarFirmaConPosibleActualizacionDeCache(AsincronoFacadeImpl.java:305)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.AsincronoFacadeImpl.verificarFirmaFacturaXML(AsincronoFacadeImpl.java:228)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.RecepcionFacadeImpl.validarFactura(RecepcionFacadeImpl.java:241)
    at net.izfe.g220.htbrecepcionfacturas.rest.HtbRecepcionFacturasRest.validacionhtbrecepcionfacturas(HtbRecepcionFacturasRest.java:118)
    at sun.reflect.GeneratedMethodAccessor143.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
    at java.lang.reflect.Method.invoke(Method.java:508)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:832)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:743)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1233)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:782)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:481)
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1114)
    at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87)
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:949)
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817)
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:463)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:530)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:316)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:287)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1892)
</Descripcion>
            <Azalpena>org.apache.axis.InternalException: org.apache.axis.ConfigurationException: java.lang.NullPointerException
java.lang.NullPointerException
    at org.eclipse.osgi.internal.loader.BundleLoader.findResource(BundleLoader.java:585)
    at org.eclipse.osgi.internal.loader.BundleLoader.findResource(BundleLoader.java:581)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.getResource(DefaultClassLoader.java:143)
    at java.lang.ClassLoader.getResource(ClassLoader.java:576)
    at com.ibm.ws.bootstrap.ExtClassLoader.getResource(ExtClassLoader.java:575)
    at java.lang.ClassLoader.getResource(ClassLoader.java:576)
    at com.ibm.ws.classloader.CompoundClassLoader.getResource(CompoundClassLoader.java:977)
    at com.ibm.ws.classloader.CompoundClassLoader.getResource(CompoundClassLoader.java:977)
    at com.ibm.ws.classloader.CompoundClassLoader.getResource(CompoundClassLoader.java:977)
    at com.ibm.ws.classloader.CompoundClassLoader.getResourceAsStream(CompoundClassLoader.java:1160)
    at org.apache.axis.utils.ClassUtils.getResourceAsStream(ClassUtils.java:227)
    at org.apache.axis.configuration.FileProvider.configureEngine(FileProvider.java:170)
    at org.apache.axis.AxisEngine.init(AxisEngine.java:172)
    at org.apache.axis.AxisEngine.&lt;init&gt;(AxisEngine.java:156)
    at org.apache.axis.client.AxisClient.&lt;init&gt;(AxisClient.java:52)
    at org.apache.axis.client.Service.getAxisClient(Service.java:104)
    at org.apache.axis.client.Service.&lt;init&gt;(Service.java:144)
    at com.safelayer.http://www.TWS.DSV_wsdl.TWSDSVLocato...it&gt;(Unknown Source)
    at net.izfe.g240.wizserviciosfirma.facades.impl.SignatureFacadeImpl.verify(SignatureFacadeImpl.java:1480)
    at sun.reflect.GeneratedMethodAccessor327.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
    at java.lang.reflect.Method.invoke(Method.java:508)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at com.sun.proxy.$Proxy115.verify(Unknown Source)
    at net.izfe.g220.htbrecepcionfacturas.rest.ValidacionDatosTicketBai.validarFirmaFactura(ValidacionDatosTicketBai.java:425)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.AsincronoFacadeImpl.validarFirmaConPosibleActualizacionDeCache(AsincronoFacadeImpl.java:305)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.AsincronoFacadeImpl.verificarFirmaFacturaXML(AsincronoFacadeImpl.java:228)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.RecepcionFacadeImpl.validarFactura(RecepcionFacadeImpl.java:241)
    at net.izfe.g220.htbrecepcionfacturas.rest.HtbRecepcionFacturasRest.validacionhtbrecepcionfacturas(HtbRecepcionFacturasRest.java:118)
    at sun.reflect.GeneratedMethodAccessor143.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
    at java.lang.reflect.Method.invoke(Method.java:508)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:832)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:743)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1233)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:782)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:481)
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1114)
    at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87)
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:949)
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817)
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:463)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:530)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:316)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:287)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1892)

org.apache.axis.ConfigurationException: java.lang.NullPointerException
java.lang.NullPointerException
    at org.eclipse.osgi.internal.loader.BundleLoader.findResource(BundleLoader.java:585)
    at org.eclipse.osgi.internal.loader.BundleLoader.findResource(BundleLoader.java:581)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.getResource(DefaultClassLoader.java:143)
    at java.lang.ClassLoader.getResource(ClassLoader.java:576)
    at com.ibm.ws.bootstrap.ExtClassLoader.getResource(ExtClassLoader.java:575)
    at java.lang.ClassLoader.getResource(ClassLoader.java:576)
    at com.ibm.ws.classloader.CompoundClassLoader.getResource(CompoundClassLoader.java:977)
    at com.ibm.ws.classloader.CompoundClassLoader.getResource(CompoundClassLoader.java:977)
    at com.ibm.ws.classloader.CompoundClassLoader.getResource(CompoundClassLoader.java:977)
    at com.ibm.ws.classloader.CompoundClassLoader.getResourceAsStream(CompoundClassLoader.java:1160)
    at org.apache.axis.utils.ClassUtils.getResourceAsStream(ClassUtils.java:227)
    at org.apache.axis.configuration.FileProvider.configureEngine(FileProvider.java:170)
    at org.apache.axis.AxisEngine.init(AxisEngine.java:172)
    at org.apache.axis.AxisEngine.&lt;init&gt;(AxisEngine.java:156)
    at org.apache.axis.client.AxisClient.&lt;init&gt;(AxisClient.java:52)
    at org.apache.axis.client.Service.getAxisClient(Service.java:104)
    at org.apache.axis.client.Service.&lt;init&gt;(Service.java:144)
    at com.safelayer.http://www.TWS.DSV_wsdl.TWSDSVLocato...it&gt;(Unknown Source)
    at net.izfe.g240.wizserviciosfirma.facades.impl.SignatureFacadeImpl.verify(SignatureFacadeImpl.java:1480)
    at sun.reflect.GeneratedMethodAccessor327.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
    at java.lang.reflect.Method.invoke(Method.java:508)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at com.sun.proxy.$Proxy115.verify(Unknown Source)
    at net.izfe.g220.htbrecepcionfacturas.rest.ValidacionDatosTicketBai.validarFirmaFactura(ValidacionDatosTicketBai.java:425)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.AsincronoFacadeImpl.validarFirmaConPosibleActualizacionDeCache(AsincronoFacadeImpl.java:305)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.AsincronoFacadeImpl.verificarFirmaFacturaXML(AsincronoFacadeImpl.java:228)
    at net.izfe.g220.htbrecepcionfacturas.facades.impl.RecepcionFacadeImpl.validarFactura(RecepcionFacadeImpl.java:241)
    at

 ...
</Azalpena>
        </ResultadosValidacion>
        <CSV>TBAIc5c7f01a-7031-4d68-b8b7-3d6498dd5633</CSV>
    </Salida>
</ns2:TicketBaiResponse>

Se envía pero recibo ese cacho de error. Lo reduzco un poco porque era muy largo

Pues gracias por la info me viene bien saberlo por que yo guardaba las respuestas completas. A partir de ahora meteré un control de tamaño.

ermendalenda 01-10-2021 18:23:33

Cita:

Empezado por Ramon88 (Mensaje 543231)
Lo de que todas las empresas deben imprimir ticket estamos de acuerdo, pero te diria que todavía hay una gran parte de negocios sin impresoras de ticket, aunque parezca mentira...
De todas formas creo que deberías leerte la normativa de facturación que es larga y te vas a encontrar cosillas. Yo creí que tenía todo correcto hasta hace un mes que me la leí y me ha dejado unas cuantas cosas claras, aunque algunas dudillas quedan.

La verdad que sigo sin tener claro si debo de subir también las facturas simplificadas o no...
Si subimos facturas simplificadas, estas deben de coincidir con las facturas...
Nº de venta: 55 *que incluye las facturas simplificadas Nº 10 y 33 (Subo 2 facturas simplificadas)
Factura 11111 de la venta 55 (Subo 1 factura)


Es correcto ?

Simplificadas:obligatorio imprimirlas y enviarlas, a no ser que llegues a un acuerdo por algún tipo de imposibilidad(tipo vending que no se puede preparar...)
Lo de ser chino ya no va a valer.

Ramon88 01-10-2021 19:27:33

Me sabe fatal preguntar algo que ya está explicado en el foro, pero no logro entenderlo y no me sale.
Calcular el último CRC8...
He visto que si hay '+' '/' da problemas y que para ello hay que pasarlo a URI.


Os explico lo que hago aver si veis donde fallo, por que llevo todo el día dándole vueltas y seguramente lo tenga delante y ya no lo vea...


1- Calculo el primer CRC8 como siempre y me funcionaba.
2- Voy calculando todo y cuando tengo que calcular el ultimo CRC lo codifico a URI, y queda algo asi
Código:

https%3A%2F%2Ftbai.prep.....

ermendalenda 01-10-2021 21:07:08

Cita:

Empezado por Ramon88 (Mensaje 543271)
Me sabe fatal preguntar algo que ya está explicado en el foro, pero no logro entenderlo y no me sale.
Calcular el último CRC8...
He visto que si hay '+' '/' da problemas y que para ello hay que pasarlo a URI.


Os explico lo que hago aver si veis donde fallo, por que llevo todo el día dándole vueltas y seguramente lo tenga delante y ya no lo vea...


1- Calculo el primer CRC8 como siempre y me funcionaba.
2- Voy calculando todo y cuando tengo que calcular el ultimo CRC lo codifico a URI, y queda algo asi
Código:

https%3A%2F%2Ftbai.prep.....

No veo nada raro. La teoría bien, si quieres má dar un ejemplo mañana lo reviso.

andalusoft 02-10-2021 01:03:37

Calculo CRC-8
 
Hola a tod@s.

Os dejo código fuente para calcular el CRC-8:

MICROFOCUS COBOL:

$set sourceformat(variable)
program-id. CRC8 as "CRC8".

environment division.
configuration section.

data division.
working-storage section.

01 CRC8-Table.
05 filler occurs 256.
10 tbByte PIC X(1).
10 tbByteNum redefines tbByte PIC S9(2) COMP-5.

01 cadena PIC X(256) VALUE
"TBAI-00000006Y-251019-btFpwP8dcLGAF-".
01 len PIC 9(2) COMP-5.
01 crc PIC X(1).
01 crcNum redefines crc PIC 9(2) comp-5.
01 crcNumInt PIC S9(9) COMP-5.

01 idx-1 PIC 9(2) COMP-5.

01 tmpChar PIC X(1).
01 tmpIdx redefines tmpChar PIC S9(2) COMP-5.
01 tmpIdxInt PIC S9(9) COMP-5.

procedure division.

perform chargeTable
perform getLen

move 1 to idx-1
move 0 to crcNumInt

perform until idx-1 > len
move cadena(idx-1:1) to tmpChar
move tmpIdx to tmpIdxInt

call "CBL_XOR" using crcNumInt tmpIdxInt by value 4
display tmpIdxInt " " no advancing

call "CBL_AND" using X"FF000000" tmpIdxInt by value 4
display tmpIdxInt " "
tbByteNum(tmpIdxInt + 1) " " no advancing

move tbByte(tmpIdxInt + 1) to crc
move crcNum to crcNumInt

display crcNumInt " "

add 1 to idx-1
end-perform

call "CBL_AND" using X"FF000000" crcNumInt by value 4

display crcNumInt

move crcNumInt to crcNum

display crcNum " " crc

goback
.


chargeTable.
string
X"00", X"07", X"0E", X"09",
X"1C", X"1B", X"12", X"15", X"38", X"3F", X"36", X"31",
X"24", X"23", X"2A", X"2D", X"70", X"77", X"7E", X"79",
X"6C", X"6B", X"62", X"65", X"48", X"4F", X"46", X"41",

X"54", X"53", X"5A", X"5D", X"E0", X"E7", X"EE", X"E9",
X"FC", X"FB", X"F2", X"F5", X"D8", X"DF", X"D6", X"D1",
X"C4", X"C3", X"CA", X"CD", X"90", X"97", X"9E", X"99",
X"8C", X"8B", X"82", X"85", X"A8", X"AF", X"A6", X"A1",
X"B4", X"B3", X"BA", X"BD", X"C7", X"C0", X"C9", X"CE",
X"DB", X"DC", X"D5", X"D2", X"FF", X"F8", X"F1", X"F6",
X"E3", X"E4", X"ED", X"EA", X"B7", X"B0", X"B9", X"BE",
X"AB", X"AC", X"A5", X"A2", X"8F", X"88", X"81", X"86",
X"93", X"94", X"9D", X"9A", X"27", X"20", X"29", X"2E",
X"3B", X"3C", X"35", X"32", X"1F", X"18", X"11", X"16",
X"03", X"04", X"0D", X"0A", X"57", X"50", X"59", X"5E",
X"4B", X"4C", X"45", X"42", X"6F", X"68", X"61", X"66",
X"73", X"74", X"7D", X"7A", X"89", X"8E", X"87", X"80",
X"95", X"92", X"9B", X"9C", X"B1", X"B6", X"BF", X"B8",
X"AD", X"AA", X"A3", X"A4", X"F9", X"FE", X"F7", X"F0",
X"E5", X"E2", X"EB", X"EC", X"C1", X"C6", X"CF", X"C8",
X"DD", X"DA", X"D3", X"D4", X"69", X"6E", X"67", X"60",
X"75", X"72", X"7B", X"7C", X"51", X"56", X"5F", X"58",
X"4D", X"4A", X"43", X"44", X"19", X"1E", X"17", X"10",
X"05", X"02", X"0B", X"0C", X"21", X"26", X"2F", X"28",
X"3D", X"3A", X"33", X"34", X"4E", X"49", X"40", X"47",
X"52", X"55", X"5C", X"5B", X"76", X"71", X"78", X"7F",
X"6A", X"6D", X"64", X"63", X"3E", X"39", X"30", X"37",
X"22", X"25", X"2C", X"2B", X"06", X"01", X"08", X"0F",
X"1A", X"1D", X"14", X"13", X"AE", X"A9", X"A0", X"A7",
X"B2", X"B5", X"BC", X"BB", X"96", X"91", X"98", X"9F",
X"8A", X"8D", X"84", X"83", X"DE", X"D9", X"D0", X"D7",
X"C2", X"C5", X"CC", X"CB", X"E6", X"E1", X"E8", X"EF",
X"FA", X"FD", X"F4", X"F3"
delimited by size into CRC8-Table
.

getLen.

move 36 to len

*> Fujitsu: function stored-cahr-length
*> Otros: un bucle, unstring con x"00" o NOT = SPACES etc.
.

end program CRC8.


WINDEV:


PROCEDURE calcular_CRC8(Cadena is UNICODE string)

CRC8_Table is array of byte = [0x00, 0x07, 0x0E, 0x09, 0x1C, 0x1B, 0x12, 0x15, 0x38, 0x3F, 0x36, 0x31, 0x24, 0x23, 0x2A, 0x2D,
0x70, 0x77, 0x7E, 0x79, 0x6C, 0x6B, 0x62, 0x65, 0x48, 0x4F, 0x46, 0x41, 0x54, 0x53, 0x5A, 0x5D,
0xE0, 0xE7, 0xEE, 0xE9, 0xFC, 0xFB, 0xF2, 0xF5, 0xD8, 0xDF, 0xD6, 0xD1, 0xC4, 0xC3, 0xCA, 0xCD,
0x90, 0x97, 0x9E, 0x99, 0x8C, 0x8B, 0x82, 0x85, 0xA8, 0xAF, 0xA6, 0xA1, 0xB4, 0xB3, 0xBA, 0xBD,
0xC7, 0xC0, 0xC9, 0xCE, 0xDB, 0xDC, 0xD5, 0xD2, 0xFF, 0xF8, 0xF1, 0xF6, 0xE3, 0xE4, 0xED, 0xEA,
0xB7, 0xB0, 0xB9, 0xBE, 0xAB, 0xAC, 0xA5, 0xA2, 0x8F, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9D, 0x9A,
0x27, 0x20, 0x29, 0x2E, 0x3B, 0x3C, 0x35, 0x32, 0x1F, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0D, 0x0A,
0x57, 0x50, 0x59, 0x5E, 0x4B, 0x4C, 0x45, 0x42, 0x6F, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7D, 0x7A,
0x89, 0x8E, 0x87, 0x80, 0x95, 0x92, 0x9B, 0x9C, 0xB1, 0xB6, 0xBF, 0xB8, 0xAD, 0xAA, 0xA3, 0xA4,
0xF9, 0xFE, 0xF7, 0xF0, 0xE5, 0xE2, 0xEB, 0xEC, 0xC1, 0xC6, 0xCF, 0xC8, 0xDD, 0xDA, 0xD3, 0xD4,
0x69, 0x6E, 0x67, 0x60, 0x75, 0x72, 0x7B, 0x7C, 0x51, 0x56, 0x5F, 0x58, 0x4D, 0x4A, 0x43, 0x44,
0x19, 0x1E, 0x17, 0x10, 0x05, 0x02, 0x0B, 0x0C, 0x21, 0x26, 0x2F, 0x28, 0x3D, 0x3A, 0x33, 0x34,
0x4E, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5C, 0x5B, 0x76, 0x71, 0x78, 0x7F, 0x6A, 0x6D, 0x64, 0x63,
0x3E, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2C, 0x2B, 0x06, 0x01, 0x08, 0x0F, 0x1A, 0x1D, 0x14, 0x13,
0xAE, 0xA9, 0xA0, 0xA7, 0xB2, 0xB5, 0xBC, 0xBB, 0x96, 0x91, 0x98, 0x9F, 0x8A, 0x8D, 0x84, 0x83,
0xDE, 0xD9, 0xD0, 0xD7, 0xC2, 0xC5, 0xCC, 0xCB, 0xE6, 0xE1, 0xE8, 0xEF, 0xFA, 0xFD, 0xF4, 0xF3]

Idx_1 is int = 1
Len is int = Length(Cadena)

TmpIdx is bytes = 0

CrcNum is byte = 0
CRC is UNICODE string = ""

Cadena = StringToUTF8(Cadena,charsetUTF8)

FOR Idx_1 = 1 TO Len
TmpIdx = Asc(Middle(Cadena,Idx_1,1))
TmpIdx = BinaryXOR(CrcNum,TmpIdx)
TmpIdx = BinaryAND(0xFF,TmpIdx)
CrcNum = CRC8_Table[TmpIdx + 1]
END

CrcNum = BinaryAND(0xFF,CrcNum)

CRC = NumToString(CrcNum,"%03d")

RESULT = CRC

Saludos y gracias por todo.

ermendalenda 02-10-2021 10:06:24

Calculo Cifs
 
1 Archivos Adjunto(s)
Lo prometiddo es deuda
Aquí os dejo los calculos de los cifs, españa, extranjero.
Aún me queda una duda, que no me he peleado mucho, pero ya veo codigo fuente flotando en el aire y es hora del descanso.

Resulta que para la comprobación del cif extranjeero se envia el cif dividido en 2 campos;
Por un lado el identificador del pais
Por otro Lado el resto del identificador.
He probado con el identificador del Pais de 2 caracteres, por que resulta que hay de 2 caracteres, de 3 y otro identificadorn úmerico (os mando la tabla de paises en una excell), los probaré todos el Lunes, si probais vosotros antes decidme.

XML Petición ejemplo comproobacion nif ESPAÑA
Código:

<?xml version="1.0" encoding="utf-8"?>
<Spain:Envelope xmlns:Spain="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ELNIF="http://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/burt/jdit/ws/VNifV2Ent.xsd">
    <Spain:Header/>
    <Spain:Body>
        <ELNIF:VNifV2Ent>
            <ELNIF:Contribuyente>
                <ELNIF:Nif>B63272603</ELNIF:Nif>
                <ELNIF:Nombre>GOOGLE </ELNIF:Nombre>
            </ELNIF:Contribuyente>
        </ELNIF:VNifV2Ent>
    </Spain:Body>
</Spain:Envelope>

CURL CIF ESPAÑOL:
curl.exe --connect-timeout 60 -m 60 -S -L -d "@C:\[path donde esta ubicado]\EnvioNif.xml" -o C:\[path respuesta]\RespuestaNif.xml --cert-type P12 --cert c:\[path certificado]\Ciudadano.pfx:82388133 https://www1.agenciatributaria.gob.e.../ws/VNifV2SOAP



Ejemplo xml Petición Nif Extranjero
Código:

<?xml version="1.0" encoding="utf-8"?>
<Extranjero:Envelope xmlns:Extranjero='http://schemas.xmlsoap.org/soap/envelope/'>
    <Extranjero:Body>
        <Datos:checkVat xmlns:Datos='urn:ec.europa.eu:taxud:vies:services:checkVat:types'>
            <Datos:countryCode>FR</Datos:countryCode>
            <Datos:vatNumber>08353523418</Datos:vatNumber>
        </Datos:checkVat>
    </Extranjero:Body>
</Extranjero:Envelope>

Curl Extranjero:
curl.exe --connect-timeout 60 -m 60 -S -L -d "@C:\[path donde esta ubicado]\EnvioNif_extranjero.xml" -o C:\[path respuesta]\RespuestaNif_extranjero.xml http://ec.europa.eu/taxation_customs...heckVatService
Ojo: un cif extranjero no es el que empieza por X o Y, esos son cifs extranjeros adaptados a España y hay que comprobarlos según el Curl de España.

ermendalenda 02-10-2021 15:34:57

Tiene algunos detalles más.
https://www.agenciatributaria.es/AEA...spanola_.shtml
Madre mía cada año meten más historias. Hace ya varios años que no repasaba esto.

Sistel 02-10-2021 16:50:42

Cita:

Empezado por ermendalenda (Mensaje 543276)
Tiene algunos detalles más.
https://www.agenciatributaria.es/AEA...spanola_.shtml
Madre mía cada año meten más historias. Hace ya varios años que no repasaba esto.

Hola ermendalenda,

Sí, hay muchos casos posibles.
En https://es.wikipedia.org/wiki/N%C3%B...%C3%B3n_fiscal tienes la información de cada uno de ellos y el algoritimo de verificación (cálculo de la letra en el DNI y del último dígito en el CIF)

Saludos

Sistel 02-10-2021 16:59:05

Cita:

Empezado por Sistel (Mensaje 543277)
Hola ermendalenda,
Sí, hay muchos casos posibles.
En https://es.wikipedia.org/wiki/N%C3%B...%C3%B3n_fiscal tienes la información de cada uno de ellos y el algoritimo de verificación (cálculo de la letra en el DNI y del último dígito en el CIF)
Saludos

Yo, desde hace muchos años, uso las mismas funciones para comprobar si un documento (NIF, NIE o CIF) expedido en España es válido.
En PHP, llamando a la función COMPROBAR_DOCUMENTO($nif) :
Código PHP:

<?php
function COMPROBAR_DOCUMENTO($nif){
    
// Limpia
    
$nif LIMPIAR_NIF($nif);
    
// Comprueba NIF, CIF o NIE
    
if(stristr("XYZ"$nif[0])) $salida COMPROBAR_NIE($nif);
    if(
stristr("ABCDEFGHJKLMNPQRSUVW"$nif[0])) $salida COMPROBAR_CIF($nif);
    if(
stristr("0123456789"$nif[0])) $salida COMPROBAR_NIF($nif);
    
// Si la comprobación ha dado errónea se devuelve texto
    
if($salida <> '1') return "Error en documento (CIF/NIF/NIE)";
    return 
"";
}
/***************************************************************************************************************/
function COMPROBAR_NIE($nie){
    if(
$nie[0] == "X"$nie "0".substr($nie1);
    if(
$nie[0] == "Y"$nie "1".substr($nie1);
    if(
$nie[0] == "Z"$nie "2".substr($nie1);
    
$dni substr($nie0, -1);
    if(
LETRA_NIF($dni) <> substr($nie, -11)) return "Error: NIE erróneo";
    return 
1;
}
/***********************************************************************************/
function COMPROBAR_NIF($nif){
    
$nif str_replace(" """$nif);
    
$nif str_replace("."""$nif);
    
$nif str_replace("-"""$nif);
    
$nif str_replace("_"""$nif);
    
$nif str_replace(","""$nif);
    
$dni substr($nif0, -1);
    if(
LETRA_NIF($dni) <> strtoupper(substr($nif, -11))) return "Error: NIF erróneo";
    return 
1;
}
/***************************************************************************************************************/
function COMPROBAR_CIF($cif){
    
$cif str_replace(" """$cif);
    
$cif str_replace("."""$cif);
    
$cif str_replace("-"""$cif);
    if(
strlen($cif) <> 9) return "Error: Número de caracteres del CIF no es 9";
    
$validos "ABCDEFGHJKLMNPQRSUVW";
    if(!
strstr($validossubstr($cif01))) return "Error: Primera letra del CIF errónea";
    if(!
ctype_digit(substr($cif17))) return "Error: Dígitos no numéricos en el CIF";

    
// Cálculo del dígito final
    
$a $cif[2] + $cif[4] + $cif[6];
    for(
$i=1$i<=7$i=$i+2){
        
$x $cif[$i] * 2;
        
$x sprintf('%02d'$x);
        
$b += $x[0] + $x[1];
    }
    
$c $a $b;
    
$c sprintf('%02d'$c);
    
$d 10 $c[1];
    if(
$d == 10$d 0;
    
$letras = array("J","A","B","C","D","E","F","G","H","I");
    if(
$cif[8] <> $d && $cif[8] <> $letras[$d]) return "Error: CIF erróneo";
    return 
1;
}
/***************************************************************************************************************/
function LIMPIAR_NIF($nif){
    
$nif str_replace(' '''$nif);
    
$nif str_replace('-'''$nif);
    
$nif str_replace('/'''$nif);
    
$nif str_replace('_'''$nif);
    
$nif str_replace('.'''$nif);
    
$nif str_replace(','''$nif);        
    
$nif strtoupper($nif);            
    return 
$nif;
}
/***************************************************************************************************************/
function LETRA_NIF($dni){
    
$dni str_replace(" """$dni);
    
$dni str_replace("."""$dni);
    
$resto = (int) ($dni 23);
    
$letras "TRWAGMYFPDXBNJZSQVHLCKE";
    
$letra substr ($letras$resto1);
    return 
$letra;
}
?>

Saludos

ermendalenda 02-10-2021 20:33:20

Cita:

Empezado por Sistel (Mensaje 543278)
Yo, desde hace muchos años, uso las mismas funciones para comprobar si un documento (NIF, NIE o CIF) expedido en España es válido.
En PHP, llamando a la función COMPROBAR_DOCUMENTO($nif) :
Código PHP:

<?php
function COMPROBAR_DOCUMENTO($nif){
    
// Limpia
    
$nif LIMPIAR_NIF($nif);
    
// Comprueba NIF, CIF o NIE
    
if(stristr("XYZ"$nif[0])) $salida COMPROBAR_NIE($nif);
    if(
stristr("ABCDEFGHJKLMNPQRSUVW"$nif[0])) $salida COMPROBAR_CIF($nif);
    if(
stristr("0123456789"$nif[0])) $salida COMPROBAR_NIF($nif);
    
// Si la comprobación ha dado errónea se devuelve texto
    
if($salida <> '1') return "Error en documento (CIF/NIF/NIE)";
    return 
"";
}
/***************************************************************************************************************/
function COMPROBAR_NIE($nie){
    if(
$nie[0] == "X"$nie "0".substr($nie1);
    if(
$nie[0] == "Y"$nie "1".substr($nie1);
    if(
$nie[0] == "Z"$nie "2".substr($nie1);
    
$dni substr($nie0, -1);
    if(
LETRA_NIF($dni) <> substr($nie, -11)) return "Error: NIE erróneo";
    return 
1;
}
/***********************************************************************************/
function COMPROBAR_NIF($nif){
    
$nif str_replace(" """$nif);
    
$nif str_replace("."""$nif);
    
$nif str_replace("-"""$nif);
    
$nif str_replace("_"""$nif);
    
$nif str_replace(","""$nif);
    
$dni substr($nif0, -1);
    if(
LETRA_NIF($dni) <> strtoupper(substr($nif, -11))) return "Error: NIF erróneo";
    return 
1;
}
/***************************************************************************************************************/
function COMPROBAR_CIF($cif){
    
$cif str_replace(" """$cif);
    
$cif str_replace("."""$cif);
    
$cif str_replace("-"""$cif);
    if(
strlen($cif) <> 9) return "Error: Número de caracteres del CIF no es 9";
    
$validos "ABCDEFGHJKLMNPQRSUVW";
    if(!
strstr($validossubstr($cif01))) return "Error: Primera letra del CIF errónea";
    if(!
ctype_digit(substr($cif17))) return "Error: Dígitos no numéricos en el CIF";

    
// Cálculo del dígito final
    
$a $cif[2] + $cif[4] + $cif[6];
    for(
$i=1$i<=7$i=$i+2){
        
$x $cif[$i] * 2;
        
$x sprintf('%02d'$x);
        
$b += $x[0] + $x[1];
    }
    
$c $a $b;
    
$c sprintf('%02d'$c);
    
$d 10 $c[1];
    if(
$d == 10$d 0;
    
$letras = array("J","A","B","C","D","E","F","G","H","I");
    if(
$cif[8] <> $d && $cif[8] <> $letras[$d]) return "Error: CIF erróneo";
    return 
1;
}
/***************************************************************************************************************/
function LIMPIAR_NIF($nif){
    
$nif str_replace(' '''$nif);
    
$nif str_replace('-'''$nif);
    
$nif str_replace('/'''$nif);
    
$nif str_replace('_'''$nif);
    
$nif str_replace('.'''$nif);
    
$nif str_replace(','''$nif);        
    
$nif strtoupper($nif);            
    return 
$nif;
}
/***************************************************************************************************************/
function LETRA_NIF($dni){
    
$dni str_replace(" """$dni);
    
$dni str_replace("."""$dni);
    
$resto = (int) ($dni 23);
    
$letras "TRWAGMYFPDXBNJZSQVHLCKE";
    
$letra substr ($letras$resto1);
    return 
$letra;
}
?>

Saludos

Gracias me faltaba la parte dell algoritmo para comprobar los NIE (Offline), con esto listo.

Una cosa menos.

ermendalenda 03-10-2021 10:05:56

continuo con los CIFS, perdonad los que ya tengais este tema solucionado, pero creo que es una parte importante para que en el futuro no echen para atrás facturas enviadas por errores en los cif/nif/nie/Nombres y por lo tanto se queden facturas huerfanas (no se si se queda aceptado "00" o no aceptado, pero está claro que se va a quedar con errores)

Por lo que tengo visto lo normal es que los que están dado de alta en el ROI los 2 primeros caracteres identifique el país, pero sopresa, primera excepción que me encuentro:
Los que empiezan por "ESN", las primeras letras no identifican al pais si no a "Entidades no residentes" por lo tanto tratamiento¿?: comprobar por el curl extranjero o español, por que el curl extranjero no admite "ESN", así que supongo que será español.

Tenedlo en cuenta sobre todo los que trabajais programas que hacen facturas para laboratorios externos, holandeses, alemanes, etc, que se os va a dar más de un caso.

Esto es más lioso de lo que esperaba, los que podais aportar ideas, documentos... se agradece

ermendalenda 03-10-2021 10:56:25

Si equivocas la primera letra del cif te lo admite. Esta bien que el algoritmo lo admita., por que entiendo que hay empresas que cambian su sociedad por ejemplo de SL. a SA etc. Y le respetan el mismo número pasando de B-XXXXXXXX a A-XXXXXXXX, pero no entiendo que la consulta curl te de por correcta ambas.

ermendalenda 03-10-2021 11:41:23

Cita:

Empezado por ermendalenda (Mensaje 543283)
Si equivocas la primera letra del cif te lo admite. Esta bien que el algoritmo lo admita., por que entiendo que hay empresas que cambian su sociedad por ejemplo de SL. a SA etc. Y le respetan el mismo número pasando de B-XXXXXXXX a A-XXXXXXXX, pero no entiendo que la consulta curl te de por correcta ambas.

Devuelve la letra correcta en la respuesta..^\||/
Pues es importante dejar la opción de elegir uno u otro por los cambios de sociedades

unomasmas 04-10-2021 08:13:24

Cita:

Empezado por sEngine (Mensaje 543265)
Os funciona bien Guipuzkoa? Porque me esta dando esta respuesta:

Código:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:TicketBaiResponse xmlns:ns2="urn:ticketbai:emision">
    <Salida>
        <IdentificadorTBAI>TBAI-XXXXXXX-011021-iUZNIGX8YcMeb-163</IdentificadorTBAI>
        <FechaRecepcion>01-10-2021 16:37:12</FechaRecepcion>
        <Estado>00</Estado>
        <Descripcion>Recibido</Descripcion>
        <Azalpena>Jasota</Azalpena>
        <ResultadosValidacion>
            <Codigo>008</Codigo>
            <Descripcion>org.apache.axis.InternalException: org.apache.axis.ConfigurationException: java.lang.NullPointerException
java.lang.NullPointerException

 ...
</Azalpena>
        </ResultadosValidacion>
        <CSV>TBAIc5c7f01a-7031-4d68-b8b7-3d6498dd5633</CSV>
    </Salida>
</ns2:TicketBaiResponse>

Se envía pero recibo ese cacho de error. Lo reduzco un poco porque era muy largo


008 es Error en verificación de firma. Se necesita corregir el problema para próximos envíos. Se acepta este envío. Tienen un error en el servidor; supongo que lo corregirán (si saben que está devolviendo este mensaje ¿Se lo has dicho?)

unomasmas 04-10-2021 08:28:10

Cita:

Empezado por Ramon88 (Mensaje 543271)
Me sabe fatal preguntar algo que ya está explicado en el foro, pero no logro entenderlo y no me sale.
Calcular el último CRC8...
He visto que si hay '+' '/' da problemas y que para ello hay que pasarlo a URI.


Os explico lo que hago aver si veis donde fallo, por que llevo todo el día dándole vueltas y seguramente lo tenga delante y ya no lo vea...

1- Calculo el primer CRC8 como siempre y me funcionaba.
2- Voy calculando todo y cuando tengo que calcular el ultimo CRC lo codifico a URI, y queda algo asi
Código:

https%3A%2F%2Ftbai.prep.....

Yo creo que sólo hay que codificar la parte del identificador TBAI, no la URL completa. Básicamente, con codificar la parte subrayada sería suficiente, aunque podrías hacerlo con toda la cadena negrita si te resulta más cómodo, pero no habría que incluir la parte inicial de la URL.
Código:

https://tbai.egoitza.gipuzkoa.eus/qr/?id=TBAI-12345678Z-290921-ViPV5QljO4BSh-103&s=R-2021&nf=0003&i=60.50&cr=255
No te fies de los valores. Los crc de este ejemplo son ficticios. Me he inventado una cadena que parece cierta para explicar cómo lo entiendo yo.

iMia 04-10-2021 09:01:22

Cita:

Empezado por unomasmas (Mensaje 543290)
Yo creo que sólo hay que codificar la parte del identificador TBAI, no la URL completa. Básicamente, con codificar la parte subrayada sería suficiente, aunque podrías hacerlo con toda la cadena negrita si te resulta más cómodo, pero no habría que incluir la parte inicial de la URL.
Código:

https://tbai.egoitza.gipuzkoa.eus/qr/?id=TBAI-12345678Z-290921-ViPV5QljO4BSh-103&s=R-2021&nf=0003&i=60.50&cr=255
No te fies de los valores. Los crc de este ejemplo son ficticios. Me he inventado una cadena que parece cierta para explicar cómo lo entiendo yo.

Exacto, Sólo hay que pasar a URI el código TBAI y sin recalcular el CRC...

p.Ej.

h t t p s://tbai.egoitza.gipuzkoa.eus/qr/?id=TBAI-12345678Z-290921-ViP+5Qlj/4BSh-103&s=R-2021&nf=0003&i=60.50&cr=255

debería ser

h t t p s://tbai.egoitza.gipuzkoa.eus/qr/?id=TBAI-12345678Z-290921-ViP%2B5Qlj%2F4BSh-103&s=R-2021&nf=0003&i=60.50&cr=128

- Sólo se cambian los caracteres + y / del codigo TBAI
- El CRC del código TBAI -> 103, no varía
- El CRC de todo el valor de la dirección se calcula una vez se han cambiado los valores + y / del codigo TBAI

Código Delphi [-]
    strCodigoTBAI := 'TBAI-12345678Z-290921-ViP+5Qlj/4BSh-103';
    strUrlQR := 'https://tbai.egoitza.gipuzkoa.eus/qr/';
    strURI := strUrlQR + '?id=' + TbaiToURI(strCodigoTBAI) + '&s=' + strSerie + '&nf=' strNumeroFactura + '&i=' + strImporteFactura;
    strURI := strURI + '&cr=' + CRC8(strURI);
-

Noe277 04-10-2021 09:06:56

Cita:

Empezado por ermendalenda (Mensaje 543275)
Lo prometiddo es deuda
Aquí os dejo los calculos de los cifs, españa, extranjero.
Aún me queda una duda, que no me he peleado mucho, pero ya veo codigo fuente flotando en el aire y es hora del descanso.

Resulta que para la comprobación del cif extranjeero se envia el cif dividido en 2 campos;
Por un lado el identificador del pais
Por otro Lado el resto del identificador.
He probado con el identificador del Pais de 2 caracteres, por que resulta que hay de 2 caracteres, de 3 y otro identificadorn úmerico (os mando la tabla de paises en una excell), los probaré todos el Lunes, si probais vosotros antes decidme.

Los Alpha 3 se usan para factura-e, para listados oficiales, modelos y SII Alpha 2


Y una pregunta el Zuzendu de Gipuzkoa sabemos algo de el ?

JoseLeeTo 04-10-2021 09:27:02

Cita:

Empezado por ermendalenda (Mensaje 543275)
Lo prometiddo es deuda
Aquí os dejo los calculos de los cifs, españa, extranjero.
Aún me queda una duda, que no me he peleado mucho, pero ya veo codigo fuente flotando en el aire y es hora del descanso.

Resulta que para la comprobación del cif extranjeero se envia el cif dividido en 2 campos;
Por un lado el identificador del pais
Por otro Lado el resto del identificador.
He probado con el identificador del Pais de 2 caracteres, por que resulta que hay de 2 caracteres, de 3 y otro identificadorn úmerico (os mando la tabla de paises en una excell), los probaré todos el Lunes, si probais vosotros antes decidme.

XML Petición ejemplo comproobacion nif ESPAÑA
Código:

<?xml version="1.0" encoding="utf-8"?>
<Spain:Envelope xmlns:Spain="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ELNIF="http://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/burt/jdit/ws/VNifV2Ent.xsd">
    <Spain:Header/>
    <Spain:Body>
        <ELNIF:VNifV2Ent>
            <ELNIF:Contribuyente>
                <ELNIF:Nif>B63272603</ELNIF:Nif>
                <ELNIF:Nombre>GOOGLE </ELNIF:Nombre>
            </ELNIF:Contribuyente>
        </ELNIF:VNifV2Ent>
    </Spain:Body>
</Spain:Envelope>

CURL CIF ESPAÑOL:
curl.exe --connect-timeout 60 -m 60 -S -L -d "@C:\[path donde esta ubicado]\EnvioNif.xml" -o C:\[path respuesta]\RespuestaNif.xml --cert-type P12 --cert c:\[path certificado]\Ciudadano.pfx:82388133 https://www1.agenciatributaria.gob.e.../ws/VNifV2SOAP



Ejemplo xml Petición Nif Extranjero
Código:

<?xml version="1.0" encoding="utf-8"?>
<Extranjero:Envelope xmlns:Extranjero='http://schemas.xmlsoap.org/soap/envelope/'>
    <Extranjero:Body>
        <Datos:checkVat xmlns:Datos='urn:ec.europa.eu:taxud:vies:services:checkVat:types'>
            <Datos:countryCode>FR</Datos:countryCode>
            <Datos:vatNumber>08353523418</Datos:vatNumber>
        </Datos:checkVat>
    </Extranjero:Body>
</Extranjero:Envelope>

Curl Extranjero:
curl.exe --connect-timeout 60 -m 60 -S -L -d "@C:\[path donde esta ubicado]\EnvioNif_extranjero.xml" -o C:\[path respuesta]\RespuestaNif_extranjero.xml http://ec.europa.eu/taxation_customs...heckVatService
Ojo: un cif extranjero no es el que empieza por X o Y, esos son cifs extranjeros adaptados a España y hay que comprobarlos según el Curl de España.


Muchísimas gracias por la aportación.

ermendalenda 04-10-2021 09:35:35

Cita:

Empezado por Noe277 (Mensaje 543292)
Los Alpha 3 se usan para factura-e, para listados oficiales, modelos y SII Alpha 2


Y una pregunta el Zuzendu de Gipuzkoa sabemos algo de el ?

Gracias
Ni idea de Zuzendu

ermendalenda 04-10-2021 09:41:45

Cita:

Empezado por JoseLeeTo (Mensaje 543293)
Muchísimas gracias por la aportación.

Nada. Es buenísimo. Para los cifs españoles no hace falta que mandes nada en el nombre, te lo devuelve. Y te devuelve el cif, si te equivocas de letra te devuelve la letra correcta.
Para los nifs y nie tienes que mandarle una parte del nombre aproximada y te lo devuelve completo, lo que tienen registrado.
Para los ESN se le quita El Es y se manda la consulta a la de España, son los no residentes (Extranjeros con un nif de alta en españa pero no están en el registro ROI), por ejemplo los chinos de Aliexpress, amazon, muchos laboratorios Europeos...



Para los extranjeros: En el primer campo, siempre los 2 caracteres del país, y en el segundo el código. Y te devuelve nombre y dirección, que además creo que la he conseguido formatear para sacar dirección, ciudad, población y cod. Postal(aunque es un algoritmo aprox creo que vale para la mayoría de los casos, ya que al devolver la dirección en un solo campo hay que hacer inventos. Ten en cta que como devuelve la dirección con saltos de líneas (asc(10)) se puede más o menos formatear.

Un consejo, cuando compreis productos chinos, normalmente el proveedor tiene un ESN o un VIES(Registro en el ROI), muchas veces falso, en ese caso no comprar nada, y podeis comprobarlo con estos CURLS.

Ramon88 04-10-2021 12:37:18

Cita:

Empezado por unomasmas (Mensaje 543290)
Yo creo que sólo hay que codificar la parte del identificador TBAI, no la URL completa. Básicamente, con codificar la parte subrayada sería suficiente, aunque podrías hacerlo con toda la cadena negrita si te resulta más cómodo, pero no habría que incluir la parte inicial de la URL.
Código:

https://tbai.egoitza.gipuzkoa.eus/qr/?id=TBAI-12345678Z-290921-ViPV5QljO4BSh-103&s=R-2021&nf=0003&i=60.50&cr=255
No te fies de los valores. Los crc de este ejemplo son ficticios. Me he inventado una cadena que parece cierta para explicar cómo lo entiendo yo.


He estado probándolo y si cambio los caracteres o lo convierto a uri no me funciona, sin embargo si lo dejo tal cual, si. No entiendo nada...


FUNCIONA:

https://tbai.prep.gipuzkoa.eus/qr/?i...&i=0.00&cr=046


NO FUNCIONA:
https://tbai.prep.gipuzkoa.eus/qr/?i...&i=0.00&cr=046

ermendalenda 04-10-2021 12:50:49

Cita:

Empezado por Ramon88 (Mensaje 543298)
He estado probándolo y si cambio los caracteres o lo convierto a uri no me funciona, sin embargo si lo dejo tal cual, si. No entiendo nada...


FUNCIONA:

https://tbai.prep.gipuzkoa.eus/qr/?i...&i=0.00&cr=046


NO FUNCIONA:
https://tbai.prep.gipuzkoa.eus/qr/?i...&i=0.00&cr=046

El último crc del último caso está mal.
No puedes poner el mismo. Tienes que calcularlo según lo que has cambiado. Es lioso pero es así

espinete 04-10-2021 14:05:27

el mensaje ha sido modificado en tránsito o la firma no está bien realizada
 
Buenas...

Estoy haciendo pruebas con Gipuzkoa y, aunque la factura se envía, me devuelve el error "...el mensaje ha sido modificado en tránsito o la firma no está bien realizada...".

He leído en el foro y en las Preguntas Frecuentes de Gipuzkoa, que puede deberse a problemas en la codificación del archivo antes y después de firmar/enviar, pero he revisado todo y no encuentro dónde puede estar el problema.
Me he asegurado de que todo se guarda como UTF-8 (sin BOM) y el envío se realiza también en UTF-8 (sin BOM).
El nombre de la empresa no contiene ningún carácter especial, ni tildes, etc.

Estos son los pasos que sigo:

1. Creo el XML de la factura a partir del xml data binding:

Código Delphi [-]
        f:=ticketBaiV12.NewTicketBai;
        f.Cabecera.IDVersionTBAI := '1.2';
        .......

2. Cargo el contenido de "f" en un XMLDocument:

Código Delphi [-]
        XMLDocument1.XML.Text:=f.XML;
        xmldocument1.Active:=True;
        xmldocument1.SaveToFile('factura.xml');

3. Realizo las modificaciones de hay que hacer en el XML generado por Delphi, siguiendo los pasos encontrados en el foro:

Código Delphi [-]
        FicheroCorregir := TStringList.Create;
        FicheroCorregir.LoadFromFile('factura.xml');
        FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text, '','');
        FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text,'', '');

        FicheroCorregir.WriteBOM := false;
        FicheroCorregir.SaveToFile('factura.xml', TEncoding.UTF8);

4. Firmo la factura

Código Delphi [-]
    firmante.r_SigPolicyID := 'https://www.gipuzkoa.eus/ticketbai/sinadura';                        
    firmante.r_SigPolicyHash := 'e8daca026eb4a3bbbad85510c3365ec36e2b6b6bdef4f4506300b6d4033a227d';     //6NrKAm60o7u62FUQwzZew24ra2ve9PRQYwC21AM6In0= convertido a HEX 
    firmante.r_SigPolicyURI := 'https://www.gipuzkoa.eus/ticketbai/sinadura';

    FirmarXML('factura.xml',firmante);

5. Vuelvo a cargar el XML ya firmado en un XMLDocument:

Código Delphi [-]
    xmldocument1.Active:=false;
    xmldocument1.LoadFromFile('firmado.xml');
    xmldocument1.Active:=true;

6. Uso el código SaveAsUTF8 encontrado en el foro para guardar el archivo en UTF-8 SIN BOM

Código Delphi [-]
    SaveAsUTF8('firmado.xml', xmldocument1.XML);

7. Ya tenemos el archivo firmado. Ahora hago el envío:

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

    NetHTTPClient1.SecureProtocols := [THTTPSecureProtocol.TLS12];
    NetHTTPClient1.CustomHeaders['Content-Type'] := 'application/xml';
    NetHTTPClient1.CustomHeaders['Charset'] := 'UTF-8';

    AResponse := NetHTTPClient1.Post('https://tbai-prep.egoitza.gipuzkoa.eus/WAS/HACI/HTBRecepcionFacturasWEB/rest/recepcionFacturas/alta',RequestBody);

¿Dónde puede estar el problema? Las facturas se envían (en el entorno de pruebas). De hecho si intento reenviarla, me dice que ya ha sido enviada.

PD: aunque conste como enviada, si voy a la URL del TicketBAI obtenido...

Por ejemplo: https://tbai.prep.gipuzkoa.eus/qr/?i...=100.00&cr=112

...me devuelve "No se ha podido determinar el estado de la factura"

ermendalenda 04-10-2021 14:50:09

Cita:

Empezado por espinete (Mensaje 543300)
Buenas...

Estoy haciendo pruebas con Gipuzkoa y, aunque la factura se envía, me devuelve el error "...el mensaje ha sido modificado en tránsito o la firma no está bien realizada...".

He leído en el foro y en las Preguntas Frecuentes de Gipuzkoa, que puede deberse a problemas en la codificación del archivo antes y después de firmar/enviar, pero he revisado todo y no encuentro dónde puede estar el problema.
Me he asegurado de que todo se guarda como UTF-8 (sin BOM) y el envío se realiza también en UTF-8 (sin BOM).
El nombre de la empresa no contiene ningún carácter especial, ni tildes, etc.

Estos son los pasos que sigo:

1. Creo el XML de la factura a partir del xml data binding:

Código Delphi [-] f:=ticketBaiV12.NewTicketBai; f.Cabecera.IDVersionTBAI := '1.2'; .......


2. Cargo el contenido de "f" en un XMLDocument:

Código Delphi [-] XMLDocument1.XML.Text:=f.XML; xmldocument1.Active:=True; xmldocument1.SaveToFile('factura.xml');


3. Realizo las modificaciones de hay que hacer en el XML generado por Delphi, siguiendo los pasos encontrados en el foro:

Código Delphi [-] FicheroCorregir := TStringList.Create; FicheroCorregir.LoadFromFile('factura.xml'); FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text, '',''); FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text,'', ''); FicheroCorregir.WriteBOM := false; FicheroCorregir.SaveToFile('factura.xml', TEncoding.UTF8);


4. Firmo la factura

Código Delphi [-] firmante.r_SigPolicyID := 'https://www.gipuzkoa.eus/ticketbai/sinadura'; firmante.r_SigPolicyHash := 'e8daca026eb4a3bbbad85510c3365ec36e2b6b6bdef4f4506300b6d4033a227d'; //6NrKAm60o7u62FUQwzZew24ra2ve9PRQYwC21AM6In0= convertido a HEX firmante.r_SigPolicyURI := 'https://www.gipuzkoa.eus/ticketbai/sinadura'; FirmarXML('factura.xml',firmante);


5. Vuelvo a cargar el XML ya firmado en un XMLDocument:

Código Delphi [-] xmldocument1.Active:=false; xmldocument1.LoadFromFile('firmado.xml'); xmldocument1.Active:=true;


6. Uso el código SaveAsUTF8 encontrado en el foro para guardar el archivo en UTF-8 SIN BOM

Código Delphi [-] SaveAsUTF8('firmado.xml', xmldocument1.XML);


7. Ya tenemos el archivo firmado. Ahora hago el envío:

Código Delphi [-] RequestBody := TFileStream.Create('firmado.xml', fmOpenRead); NetHTTPClient1.SecureProtocols := [THTTPSecureProtocol.TLS12]; NetHTTPClient1.CustomHeaders['Content-Type'] := 'application/xml'; NetHTTPClient1.CustomHeaders['Charset'] := 'UTF-8'; AResponse := NetHTTPClient1.Post('https://tbai-prep.egoitza.gipuzkoa.eus/WAS/HACI/HTBRecepcionFacturasWEB/rest/recepcionFacturas/alta',RequestBody);


¿Dónde puede estar el problema? Las facturas se envían (en el entorno de pruebas). De hecho si intento reenviarla, me dice que ya ha sido enviada.

PD: aunque conste como enviada, si voy a la URL del TicketBAI obtenido...

Por ejemplo: https://tbai.prep.gipuzkoa.eus/qr/?i...=100.00&cr=112

...me devuelve "No se ha podido determinar el estado de la factura"

Hola, no sé si te va a funcionar pero yo hago un par de cosas diferentes:

1. Una vez firmado no lo paso a UTF-8, solo antes.
2. Prueba a cambiar esto en la Cabecera:
xsi:schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"

3: Las politicas de firma no cuadran con las mias, falta el digest:
"name" => "Politica de firma TicketBAI 1.0",
"url" => "https://www.gipuzkoa.eus/ticketbai/sinadura",
"digest" => "dTtPpv4fWTcejeVx7+91ILruFX3HysbngBlllJm4i/E="

espinete 04-10-2021 15:22:09

Cita:

Empezado por ermendalenda (Mensaje 543301)
Hola, no sé si te va a funcionar pero yo hago un par de cosas diferentes:

1. Una vez firmado no lo paso a UTF-8, solo antes.
2. Prueba a cambiar esto en la Cabecera:
xsi:schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"

3: Las politicas de firma no cuadran con las mias, falta el digest:
"name" => "Politica de firma TicketBAI 1.0",
"url" => "https://www.gipuzkoa.eus/ticketbai/sinadura",
"digest" => "dTtPpv4fWTcejeVx7+91ILruFX3HysbngBlllJm4i/E="

Si elimino el SaveAsUTF8 tras hacer la firma, no me admite el envío. Me devuelve un error que dice algo así como "no se admite contenido en el prolog".

Cambiando el xsi:schemaLocation del XML por "http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd" en vez de "urn:ticketbai:emision ticketBaiV12.xsd" no afecta al resultado. Obtengo el mismo error 008 de mi anterior post.

Por cierto, en mi anterior post al convertir el texto a código Delphi se comió parte del código.
Esto es lo que hago para cambiar la cabecera del XML, una vez generado:

....
FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.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">');
FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text,'</TicketBai>', '</T:TicketBai>');
....

No he entendido lo de las políticas de firma y que falta el digest... Antes solo puse parte del código, para resumir. Pongo ahora el resto, si es que te refieres a esta parte:

firmante.r_Nombre_firma := nom_emp_emisora;
firmante.r_ID := '';
firmante.r_Metodo_Canonicalization := '';
firmante.r_Hash_algorithm := 'SHA256';
firmante.r_SigPolicyHashAlgorithm := 'SHA256';
//Gipuzkoa
firmante.r_SigPolicyID := 'https://www.gipuzkoa.eus/ticketbai/sinadura';
firmante.r_SigPolicyHash := 'e8daca026eb4a3bbbad85510c3365ec36e2b6b6bdef4f4506300b6d4033a227d'; //6NrKAm60o7u62FUQwzZew24ra2ve9PRQYwC21AM6In0= convertido a HEX es e8daca026eb4a3bbbad85510c3365ec36e2b6b6bdef4f4506300b6d4033a227d
firmante.r_SigPolicyURI := 'https://www.gipuzkoa.eus/ticketbai/sinadura';

Utilizo los componentes de SecureBlackBox 2020 para la firma.

Alguna pista?

ermendalenda 04-10-2021 15:27:59

Ese error la mayoría de las veces es por que hay caracteres extraños o el uri ml definido(que no parece el caso?) Edita el fichero antes de firmarlo con mswordpad. No pases utf8 firmalo y envíalo.
Si quieres mandar el xml par que lo repasemos cambiándole los datos...

espinete 04-10-2021 15:44:16

Hola

Estoy probando a hacer varios envíos seguidos de facturas a distintos clientes, para comprobar si hay algún caracter especial en el nombre del cliente, etc.

En algunos envíos me devuelve el error Codigo 008: Error en verificación de firma.
En otros me devuelve el error Codigo 008: El mensaje ha sido modificado en tránsito o la firma no está bien realizada -- Reference URI="" failed to verify. Reference URI="#SignedProperties-1610103204" failed to verify. [src/xml2signatureobj.cpp(315)] - (10606)

En cualquier caso, el envío se realiza y la factura consta como enviada (no puedo subirla de nuevo porque ya existe).

En el entorno de pruebas que estoy desarrollando, guardo el archivo xml ANTES y DESPUÉS de firmarlo. Abriéndolos con el Notepad++ veo que ambos tienen codificación UTF-8 SIN BOM.

¿Hay alguna utilidad online donde poder verificar los XML de ticketbai?

Band 04-10-2021 16:13:29

Cita:

Empezado por espinete (Mensaje 543307)
Hola

Estoy probando a hacer varios envíos seguidos de facturas a distintos clientes, para comprobar si hay algún caracter especial en el nombre del cliente, etc.

En algunos envíos me devuelve el error Codigo 008: Error en verificación de firma.
En otros me devuelve el error Codigo 008: El mensaje ha sido modificado en tránsito o la firma no está bien realizada -- Reference URI="" failed to verify. Reference URI="#SignedProperties-1610103204" failed to verify. [src/xml2signatureobj.cpp(315)] - (10606)

En cualquier caso, el envío se realiza y la factura consta como enviada (no puedo subirla de nuevo porque ya existe).

En el entorno de pruebas que estoy desarrollando, guardo el archivo xml ANTES y DESPUÉS de firmarlo. Abriéndolos con el Notepad++ veo que ambos tienen codificación UTF-8 SIN BOM.

¿Hay alguna utilidad online donde poder verificar los XML de ticketbai?


Una vez firmado el xml no puedes volver a guardarlo. Es decir, cuando lo firmas tienes que dejarlo tal cual y no puedes realizar ninguna acción sobre el (obviamente si puedes enviar el fichero, copiarlo, moverlo... pero nada más, ni volver a guardarlo ni añadir un caracter en blanco al final ni nada).

Yo para probar el tema de caracteres raros, uso como propuso alguien del foro (igual voy equivocado, pero creo que era Neftali) esta cadena: áéíóúÁÉÍÓÚÜçÇñÑ€~#@ <--- Puede ser más compleja y rara, pero con esto a mi me vale

ermendalenda 04-10-2021 16:29:55

Cita:

Empezado por espinete (Mensaje 543307)
Hola

Estoy probando a hacer varios envíos seguidos de facturas a distintos clientes, para comprobar si hay algún caracter especial en el nombre del cliente, etc.

En algunos envíos me devuelve el error Codigo 008: Error en verificación de firma.
En otros me devuelve el error Codigo 008: El mensaje ha sido modificado en tránsito o la firma no está bien realizada -- Reference URI="" failed to verify. Reference URI="#SignedProperties-1610103204" failed to verify. [src/xml2signatureobj.cpp(315)] - (10606)

En cualquier caso, el envío se realiza y la factura consta como enviada (no puedo subirla de nuevo porque ya existe).

En el entorno de pruebas que estoy desarrollando, guardo el archivo xml ANTES y DESPUÉS de firmarlo. Abriéndolos con el Notepad++ veo que ambos tienen codificación UTF-8 SIN BOM.

¿Hay alguna utilidad online donde poder verificar los XML de ticketbai?


Tiene que quedar así:
Código:

<?xml version="1.0" encoding="UTF-8"?>
<T:TicketBai xmlns:T="urn:ticketbai:emision" 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>

.
.
.
.
<HuellaTBAI>
.
.
.
</HuellaTBAI>
<ds:Signature
.
.
..
</ds:Signature>
</T:TicketBai>

Aquí te dejo un par de verificadores de xmls firmados, que están en el foro(No de ticketbai, son genéricos):
http://tools.chilkat.io/xmlDsigVerif...#generatedCode
https://web.uanataca.com/pe/servicio...ma-electronica

Ramon88 04-10-2021 17:35:35

Cita:

Empezado por espinete (Mensaje 543307)
Hola

Estoy probando a hacer varios envíos seguidos de facturas a distintos clientes, para comprobar si hay algún caracter especial en el nombre del cliente, etc.

En algunos envíos me devuelve el error Codigo 008: Error en verificación de firma.
En otros me devuelve el error Codigo 008: El mensaje ha sido modificado en tránsito o la firma no está bien realizada -- Reference URI="" failed to verify. Reference URI="#SignedProperties-1610103204" failed to verify. [src/xml2signatureobj.cpp(315)] - (10606)

En cualquier caso, el envío se realiza y la factura consta como enviada (no puedo subirla de nuevo porque ya existe).

En el entorno de pruebas que estoy desarrollando, guardo el archivo xml ANTES y DESPUÉS de firmarlo. Abriéndolos con el Notepad++ veo que ambos tienen codificación UTF-8 SIN BOM.

¿Hay alguna utilidad online donde poder verificar los XML de ticketbai?


A mi me pasaba algo aprecido y era por que al pasarlo a una variable luego lo ponía todo en 1 linea.


Código:

Dim xmlDoc As New XmlDocument
xmlDoc.PreserveWhitespace = True
xmlDoc.Load(pathXML)


iMia 04-10-2021 19:00:58

Cita:

Empezado por Ramon88 (Mensaje 543298)
He estado probándolo y si cambio los caracteres o lo convierto a uri no me funciona, sin embargo si lo dejo tal cual, si. No entiendo nada...


FUNCIONA:

https://tbai.prep.gipuzkoa.eus/qr/?i...&i=0.00&cr=046


NO FUNCIONA:
https://tbai.prep.gipuzkoa.eus/qr/?i...&i=0.00&cr=046

http://www.clubdelphi.com/foros/show...postcount=1743

espinete 04-10-2021 19:20:28

Cita:

Empezado por Band (Mensaje 543309)
Una vez firmado el xml no puedes volver a guardarlo. Es decir, cuando lo firmas tienes que dejarlo tal cual y no puedes realizar ninguna acción sobre el (obviamente si puedes enviar el fichero, copiarlo, moverlo... pero nada más, ni volver a guardarlo ni añadir un caracter en blanco al final ni nada).

Quizás me he explicado mal o no entiendo lo que quieres decir... Después de firmar el XML, no se debe guardar ese XML firmado para poder enviarlo en la petición?

Es decir... creo el XML (factura.xml), firmo ese XML (con los componentes de SecureBlackBox) y tras firmarlo, lo guardo (firmado) como firmado.xml, que es el que envío.

Después de firmarlo no he hecho ninguna modificación (salvo guardarlo con otro nombre).

Revisaré mañana el contenido del XML por si hay caracteres especiales, pero lo dudo mucho porque estoy usando datos de prueba muy básicos.

ermendalenda 04-10-2021 19:37:14

Cita:

Empezado por espinete (Mensaje 543321)
Quizás me he explicado mal o no entiendo lo que quieres decir... Después de firmar el XML, no se debe guardar ese XML firmado para poder enviarlo en la petición?

Es decir... creo el XML (factura.xml), firmo ese XML (con los componentes de SecureBlackBox) y tras firmarlo, lo guardo (firmado) como firmado.xml, que es el que envío.

Después de firmarlo no he hecho ninguna modificación (salvo guardarlo con otro nombre).

Revisaré mañana el contenido del XML por si hay caracteres especiales, pero lo dudo mucho porque estoy usando datos de prueba muy básicos.

La clase stream lleva implícita cambios en la codificación del fichero a grabar. Revisa el comando:
Creo que El fichero firmado al grabarlo lo modificas:
TFileStream.Create('firmado.xml
Este problema ya lo han tenido y ha salido en otro post del hilo


La franja horaria es GMT +2. Ahora son las 07:04:12.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi