En la empresa en la que trabajo estamos intentando adaptar nuestro SIF a VERIFACTU.
El programa está en VFox con tablas libres, y será solo varifactu.
No se trata de una aplicación comercial. Es para nuestro uso.
Ya he solucionado diferentes temas:
- Crear el QR e inserción en el informe factura
- Crear del HASH
- Preparar el xml
He probado los xmls creados en el portal de pruebas de la AEAT y funcionan.
Nos falta desarrollar la lectura de los resultados, pero eso no me preocupa, lo podré hacer más adelante.
Si alguien ha probado el portal de pruebas sabrá al acceder te pide el certificado. Una vez lo das, accedes sin problema.
Lo que no consigo es enviar el xml directamente desde el programa:
He utilizado diferentes métodos usando WinHttp.WinHttpRequest.5.1 y otros, pero el problema que me encuentro es que no funcionan por falta de credenciales.
Debe haber alguna forma de enviar los xml desde fox y autenticar la conexión, pero no lo consigo.
¿Alguien puede indicarme posibles soluciones?
--
Blog de la Comunidad Visual FoxPro en Español http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver este debate, visita https://groups.google.com/d/msgid/publicesvfoxpro/c6d97836-a812-4621-bfd2-93ec68563233n%40googlegroups.com.
Gracias José Antonio
He probado tu función y 'casi' funciona.
No es un problema de certificado ya que si le doy un tcId inexistente si que me devuelve ve un error:
1429: OLE IDispatch exception code 0 from msxml6.dll: Se requiere de un certificado para completar la autenticación de cliente
..
Peo cuando le tcId es correcto la respuesta es:
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Body>
<env:Fault>
<faultcode>env:Server</faultcode>
<faultstring>Error interno en el servidor</faultstring>
</env:Fault>
</env:Body>
</env:Envelope>
Creo que el problema puede estar en:
*-- Configurar los timeouts: DNS, conexión, envío, recepción (en milisegundos)
oHTTP.setTimeouts(10000, 15000, 30000, 60000)
*-- Otros parámetros
oHTTP.setOption(2) = 13056 && Ignorar errores
oHTTP.setOption(3) = tcID && ID del certificado (NIF)
Gracias
Para ver este debate, visita https://groups.google.com/d/msgid/publicesvfoxpro/ffa711ab-bbd7-48a9-bcd6-b2c8f9d8adf9n%40googlegroups.com.
Jose.
Antes que nada muchas gracias por tu interés.
· Me comentas “No estarás usando una URL de PRODUCCION, con el certificado de pruebas de AEAT ?”
Estoy usando un certificado real, con el que me puedo conectar a la AEAT para cualquier gestión
De hecho si utilizo en el xml que envío un cif incorrecto el programa me devuelve:
1429: OLE IDispatch exception code 0 from msxml6.dll: Se requiere de un certificado para completar la autenticación de cliente
Así que considero que el servicio reconoce el certificado como correcto y comprueba que en cif coincide con la petición.
Me comentas: "He entendido que has probado a subir directamente a la web de pruebas en PRE-PRODUCCION el XML de consulta, eligiendo el XSD correspondiente, y te responde correctamente. Es así ??
Cierto subo el mismo xml de consulta en la web de pruebas y obtengo la respuesta esperada
La misma consulta desde el programa me devuelve:
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Body>
<env:Fault>
<faultcode>env:Server</faultcode>
<faultstring>Error interno en el servidor</faultstring>
</env:Fault>
</env:Body>
</env:Envelope>
· El xml que envío( Se trata de una consulta de los registros para el periodo 09-2025):
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:con="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/ConsultaLR.xsd" xmlns:sum="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
<soapenv:Header/>
<soapenv:Body>
<con:ConsultaFactuSistemaFacturacion>
<con:Cabecera>
<sum:IDVersion>1.0</sum:IDVersion>
<sum:ObligadoEmision>
<sum:NombreRazon>NNNNNN</sum:NombreRazon>
<sum:NIF>AXXXXXXXX</sum:NIF>
</sum:ObligadoEmision>
</con:Cabecera>
<con:FiltroConsulta>
<con:PeriodoImputacion>
<sum:Ejercicio>2025</sum:Ejercicio>
<sum:Periodo>09</sum:Periodo>
</con:PeriodoImputacion>
</con:FiltroConsulta>
</con:ConsultaFactuSistemaFacturacion>
</soapenv:Body>
</soapenv:Envelope>
La URL a la que lo envío:
https://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP
He probado también a enviarlo a la URL de producción en la que debería recibir una respuesta que indique que no hay datos, pero el resultado ha sido el mismo
· Y por último una duda:
No entiendo que en tu programa incluyas:
oHTTP.setRequestHeader("soapAction","EjecutandoWS desde VFP")
Ya que esa soapAcción no está en el .wsdl de la definición de servicios ni en el entorno de pruebas:
ni en el de producción:
De cualquier forma, gracias por tu atención. Entiendo que todos en el grupo estamos liados siempre con nuestro trabajo.
Eduardo Castellano.
PD.: Si a alguien le interesa alguno de los temas ‘piezas’ que comenté al principio del hilo que ya he resuelto solo tiene que pedirlo.
Para ver este debate, visita https://groups.google.com/d/msgid/publicesvfoxpro/e70374c4-656c-4308-bf79-b665fd27e3f2n%40googlegroups.com.