XML a la Agencia Tributaria |
Responder | Página 12> |
Autor | |
rafaservi
Habitual Unido: 18/Noviembre/2010 Localización: España Estado: Sin conexión Puntos: 139 |
Tema: XML a la Agencia Tributaria Enviado: 13/Agosto/2019 a las 15:48 |
Estimados Srs. Estoy en una aplicación por la que intento mandar información en XML a la Agencia Tributaria (Hidrocarburos). He visto algunos videos que aconsejáis, he visto como hacer ficheros XML y la información de la Agencia indica el formato de estos ficheros. Creo que esto no es problema. El problema está en la comunicación con la Agencia, en la forma de hacerlo. Debo, según unos datos que introduzca el usuario, enviar un fichero en el formato XML para que ésta me conteste, si todo es correcto, con otro archivo que contiene un Código CRE necesario para repartir el combustible. He visto un vídeo donde se muestra como comunicarse con un Servicio WEB mediante Soap, recibiendo información según los filtros que mandaba. Todo correcto. Pero he intentado hacer esto con la Agencia (ya que prácticamente es lo que se hace, mandar y recibir una constestación) pero da problemas. Por lo pronto, el navegador (Mozilla) precisa de un Certificado Digital necesario para saber quien opera. He usado este código, como en el del vídeo, cambiando lo que creo que pudiera ser distinto pero no hay resultados... Dim cUrl, cEnv, cRes As String Dim xmlhtp As New MSXML2.XMLHTTP60 Dim xmldoc As New MSXML2.DOMDocument60 cEnv = "<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/" cEnv = cEnv & " xmlns:ie2=""https://www3.agenciatributaria.gob.es/static_files/common/internet/dep/aduanas/es/aeat/adia/avit/ws/Ie215V1Ent.xsd" cEnv = cEnv & " xmlns:cab=""https://www3.agenciatributaria.gob.es/static_files/common/internet/dep/aduanas/es/aeat/adia/avit/ws/cab.xsd"">" cEnv = cEnv & " <soapenv:Header/>" 'No tiene elemento Cabecera, es opcional cEnv = cEnv & " <soapenv:Body>" 'Define el elemento Cuerpo, que es obligatorio cEnv = cEnv & " <ie2:Ie215Id=" & "01" & " NifDeclarante=" & Me.CifDeclarante & " NombreDeclarante=" & Me.NombreDeclarante & ">" cEnv = cEnv & " <ie2:Cabecera>" cEnv = cEnv & " <cab:EmisorMensaje>" & Me.Cif & "</cab:EmisorMensaje>" cEnv = cEnv & " <cab:NombreEmisor>" & Me.Nombre & "</cab:NombreEmisor>" cEnv = cEnv & " <cab:ReceptorMensaje>SIANE.ES</cab:ReceptorMensaje>" cEnv = cEnv & " <cab:FechaPreparacion>" & Now() & "</cab:FechaPreparacion>" cEnv = cEnv & " <cab:HoraPreparacion>" & Now() & "</cab:HoraPreparacion>" cEnv = cEnv & " <cab:IdentificadorMensaje>" & "01" & "</cab:IdentificadorMensaje>" cEnv = cEnv & " </ie2:Cabecera>" cEnv = cEnv & " </ie2:Ie215>" cEnv = cEnv & " </soapenv:Body>" cEnv = cEnv & "</soapenv:Envelope>" cUrl = "https://www7.aeat.es/wlpl/ADIA-AVIT/ws/Ie215V1SOAP" 'Dirección del Servicio Set xmlhtp = New MSXML2.XMLHTTP60 'Nombramos el objeto With xmlhtp .Open "POST", cUrl, False .setRequestHeader "Content-Type", "text/xml;charset=UTF-8" .setRequestHeader "SOAPAction", "" .setRequestHeader "Content-Length", length .send cEnv 'Enviamos el Sobre Set xmldoc = New MSXML2.DOMDocument60 'Declaramos el documento a recibir xmldoc.loadXML .responseText 'Lo declaramos con el espacio entre XML y .response Debug.Print xmldoc.Text 'Visualizar la variable en Inmediato Me.NúmeroTexto = xmldoc.Text End With Set xmldoc = Nothing Set xmlhtp = Nothing Alguien podría echarme una mano?? Gracias.
|
|
lbauluz
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 29/Marzo/2005 Localización: La Gloria Estado: Sin conexión Puntos: 3861 |
Enviado: 13/Agosto/2019 a las 19:21 |
Hombre, as'i a ojo te faltan algunas comillas o te sobran
Ejemplo cEnv = "<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/""" Esto enviaria <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" Ahora bien, si quieres enviar <soapenv:Envelope xmlns:soapenv=http://schemas.xmlsoap.org/soap/envelope/ En ese caso te sobran Env = "<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/" Y por ultimo, pero no estoy seguro, creo que te faltan los saltos de linea Un saludo. Luis
|
|
El Búho es un pajarraco
|
|
emiliove
Administrador Unido: 16/Junio/2009 Localización: Mexico Estado: Sin conexión Puntos: 5694 |
Enviado: 13/Agosto/2019 a las 19:41 |
¿Revisaste la documentación estas seguro que el web service es SOAP? Edito: y me contesto: Revisado si es SOAP, y de hecho el ejemplo esta muy explicito: https://www3.agenciatributaria.gob.es/static_files/common/internet/dep/aduanas/es/aeat/adia/avit/ws/Ie215.pdf Y la hoja del lenguaje de definición del web service: https://www3.agenciatributaria.gob.es/static_files/common/internet/dep/aduanas/es/aeat/adia/avit/ws/Ie215V1.wsdl Saludos.
Editado por emiliove - 13/Agosto/2019 a las 21:17 |
|
rafaservi
Habitual Unido: 18/Noviembre/2010 Localización: España Estado: Sin conexión Puntos: 139 |
Enviado: 14/Agosto/2019 a las 00:25 |
Gracias Ibauluz. Lo revisaré y miraré los saltos de línea. Respecto a Emiliove... Gracias también ... Lo que indica la documentación que aporta la Agencia es:
5.2.Estándares utilizados El uso de servicios Web constituye la base de las buenas prácticas para desplegar servicios que posibiliten la interacción máquina-máquina, es decir, la automatización integral de un proceso en el que interviene varios sistemas de información (el del ciudadano/empresa y el de la Agencia Tributaria). Se pretende utilizar los estándares de facto para el desarrollo de servicios web.La estructura de los mensajes será descrita sobre la base de la creación de esquemas XML utilizando para ello la recomendaciónW3C de 28-Octubre de 2004 en http://www.w3.org/TR/xmlschema-0 y referenciada por el namespace http://www.w3.org/2001/XMLSchema Con relación a SOAP se utilizará SOAP V1.1 disponible como NOTA W3C de 08-Mayo-2000 en : http://www.w3.org/TR/2000/NOTE-SOAP-20000508/ y referenciado por el namespace http://schemas.xmlsoap.org/soap/envelope/ En SOAP-1.1 existen dos estilos para implementar servicio, modo “rpc” y modo “document”, en línea con las recomendaciones actuales se utilizará siempre el modo “document” (style=”document”) sin ningún tipo de codificación (use=”literal”). Es decir el mensaje de entrada y salida estará descrito íntegramente por su respectivo esquema XML.En la descripción de los servicios utilizaremos WSDL 1.1 disponible como NOTA W3C de 14-Marzo-2001 en: http://www.w3.org/TR/2001/NOTE-wsdl-20010315 y referenciado por el namespace http://schemas.xmlsoap.org/wsdl/. 5.3.Medio de envío Entorno: Internet. Protocolo: HTTPS. Mensajes: Web Service con SOAP 1.1 modo Document. Certificado: Las aplicaciones que envían información a los servicios web deberán autenticarse con certificado electrónico de cliente. El uso de los servicios requiere tener instalado un certificado electrónico reconocido admitido por la Agencia Tributaria, en el ordenador desde el que se produzca el envío de la información. Firma: Los XML intercambiados no irán firmados. Creo que es Web Service Soap. Respecto al resto del comentario no logro entenderte. Perdona. Un saludo y gracias de nuevo a todos. |
|
emiliove
Administrador Unido: 16/Junio/2009 Localización: Mexico Estado: Sin conexión Puntos: 5694 |
Enviado: 14/Agosto/2019 a las 15:07 |
Te bajaste el SoapUI e intentaste desde el, como en el ejemplo que supongo viste. Saludos.
|
|
rafaservi
Habitual Unido: 18/Noviembre/2010 Localización: España Estado: Sin conexión Puntos: 139 |
Enviado: 14/Agosto/2019 a las 18:22 |
Sí, lo descargué y estudié el vídeo. Hice cambios, adaptaciones, pruebas para ver que tal. Siempre con el Web Service que se proponía en el vídeo. He intentado adaptar el Servicio de la Agencia tal y como lo he visto en el vídeo pero no da resultados.
|
|
emiliove
Administrador Unido: 16/Junio/2009 Localización: Mexico Estado: Sin conexión Puntos: 5694 |
Enviado: 14/Agosto/2019 a las 18:44 |
¿Cuando haces el envió como sabes que es POST y que esos son los caracteres de la cabecera? ¿Qué error te da en la respuesta? Debes de hacer la prueba del web service todo en el SoapUI, ahí te da la estructura del envió para ese web servicio, y hacer el envió y te da la respuesta y una vez que la respuesta sea 200 ok entonces ya puedes trasladar todo a Access. Saludos. |
|
rafaservi
Habitual Unido: 18/Noviembre/2010 Localización: España Estado: Sin conexión Puntos: 139 |
Enviado: 14/Agosto/2019 a las 19:22 |
Realmente no lo sé si es POST. El error que me da en tiempo de ejecución: Error en la descarga del recurso solicitado. EN la línea ... .send cEnv Miraré con SoapUI a ver si probando. Lo que me tiene también desconcertado es lo del Certificado Electrónico. Que está asociado a un navegador. Muchas gracias emiliove.
|
|
lbauluz
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 29/Marzo/2005 Localización: La Gloria Estado: Sin conexión Puntos: 3861 |
Enviado: 14/Agosto/2019 a las 19:56 |
Solo por asegurarme, ¿tienes el certificado digital de la Agencia Tributaria?
Es que a mi si intento conectarme el error que me da es: Se ha producido un error:
Un saludo. Luis |
|
El Búho es un pajarraco
|
|
rafaservi
Habitual Unido: 18/Noviembre/2010 Localización: España Estado: Sin conexión Puntos: 139 |
Enviado: 15/Agosto/2019 a las 10:32 |
Hola Ibauluz. Sí, lo tengo instalado en Mozilla, en el navegador y, en principio, el acceso al Servicio Web es desde Access, a parte e independiente del navegador. La Agencia tiene, para este servicio, dos formas de hacerlo por parte del usuario: * Por su Web, accediendo con el navegador que tenga el Certificado Electrónico. Donde el usuario introduce los campos que se precisen manualmente. * Por otro lado, por el Web Service. Donde, creo, que tengo controlada la creación del fichero XML, ya que desde la Agencia muestran ejemplos, pero en lo que fallo es en el proceso de envío del fichero. Dónde enviarlo y la forma de hacerlo. Estoy con SoapUI a ver si averiguo algo más. Un saludo y muchas gracias.
|
|
rafaservi
Habitual Unido: 18/Noviembre/2010 Localización: España Estado: Sin conexión Puntos: 139 |
Enviado: 15/Agosto/2019 a las 12:04 |
He probado con SoapUI el Servicio Web correspondiente a los Albaranes de Reparto: https://www1.agenciatributaria.gob.es/wlpl/ADIA-AVIT/ws/Ie215V1SOAP Me aparece correctamente en el Request 1 del Proyecto la información XML. Al solicitar el servicio: el Web Service de la Agencia envía otro XML indicando que se ha producido un error: Error de identificación. No se detecta certificado digital o no se ha seleccionado correctamente. ¿Dónde y cómo se podría indicar dicho Certificado?
|
|
lbauluz
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 29/Marzo/2005 Localización: La Gloria Estado: Sin conexión Puntos: 3861 |
Enviado: 15/Agosto/2019 a las 15:00 |
Mira a ver si esto te ayuda
El ultimo punto "Firmar digitalmente un proyecto de macro" Un saludo. Luis PD: Perdon por la ortografia, teclado en idioma ingles
|
|
El Búho es un pajarraco
|
|
rafaservi
Habitual Unido: 18/Noviembre/2010 Localización: España Estado: Sin conexión Puntos: 139 |
Enviado: 15/Agosto/2019 a las 15:50 |
Gracias Ibauluz
|
|
rafaservi
Habitual Unido: 18/Noviembre/2010 Localización: España Estado: Sin conexión Puntos: 139 |
Enviado: 21/Agosto/2019 a las 12:23 |
He contactado con la Agencia y me han indicado que para solventar
el problema de acceder mediante SoapUI hay que indicar el archivo de
Certificado Digital en Preferencias y poner la clave. Correcto, se accede bien. El problema está con Access, ¿Cómo indicar al Certificado en Access? En la Agencia no han sabido indicarme. He
visto y seguido el enlace de Ibauluz pero de esta forma se crea un
certificado manual que no es válido para la Agencia y que me da
problemas para guardarlo. Una vez creado este certificado, en Int. Explorer aparecen los dos certificados, el correcto de la Fáb de Moneda y Timbre y el creado manualmente. Pero no puedo seleccionar en Access el correcto, no lo reconoce a la hora de elegir. ¿Alguien sabría cómo? Un saludo y muchas gracias.
|
|
lbauluz
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 29/Marzo/2005 Localización: La Gloria Estado: Sin conexión Puntos: 3861 |
Enviado: 21/Agosto/2019 a las 23:51 |
¿Y como lo haces con SoapUI?
Mira el xml que te genera para enviar, probablemente tengas algo similar a esto, en cuyo caso lo tendrías que agregar a tu XML <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsasha1" /> <Reference URI="#MsgBody"> <Transforms> <Transform Algorithm="http://www.w3.org/2001/10/xml-excc14n#" /> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>DH9Z0Y91RCHeZoLoqFb9b4sadQQ=</DigestValue> </Reference> </SignedInfo> <SignatureValue>UvK6R+mDjLudqM9ftzifwPRNOKyF03Wne0 (...) (...) </SignatureValue> <KeyInfo> <X509Data> <X509Certificate>MIIDqDCCAxGgAwIBAgIEPH (...) (...) </X509Certificate> </X509Data> <KeyValue> <RSAKeyValue> <Modulus>4hd4FWDTGvHaoiok5xPA6baDkEzDOT7PMBI2(...) (...) </Modulus> <Exponent>ABCD</Exponent> </RSAKeyValue> </KeyValue> </KeyInfo> </Signature> Saludos. Luis
|
|
El Búho es un pajarraco
|
|
Responder | Página 12> |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |