Veri*Factu Capítulo 2... |
Responder
|
Página <1 234 |
| Autor | |
VMT
Nuevo
Unido: 18/Noviembre/2025 Localización: VALENCIA Estado: Sin conexión Puntos: 10 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 18/Noviembre/2025 a las 11:38 |
|
Hola, la verdad que la implementación de VERI*FACTU y NO VERI*FACTU es una locura. Llevo meses en contacto con el dpto. de informática de la AEAT, a 2 correos diarios de consultas y es una locura. Ya tengo todo montado a falta de enviar el fichero, que no hay manera de enviarlo pues no coge la huella del certificado digital. Uso esta función por si alguno le ocurre lo mismo y sabe
COMO ENVIAR LOS XML con la huella... Gracias de antemano Private Function PostSoapConCert0( _ ByVal xmlEnvelope As String, _ ByVal url As String, _ ByVal soapAction As String, _ ByVal certRef As String) As String On Error GoTo EH Dim req As Object ' WinHttp.WinHttpRequest.5.1 Set req = CreateObject("WinHttp.WinHttpRequest.5.1") 'Fuerza el uso de TLS 1.2 si no estuviera activado req.Option(9) = "0x00000800" req.setTimeouts 10000, 10000, 30000, 30000 req.Open "POST", url, False ' Seleccionad el certificado del almacen CURRENT USER (mTLS) ' Formato: CURRENT_USER\MY\THUMBPRINT o LOCAL_MACHINE\MY\THUMBPRINT If Len(certRef) > 0 Then req.SetClientCertificate certRef End If req.setRequestHeader "Content-Type", "text/xml; charset=utf-8" If Len(soapAction) > 0 Then req.setRequestHeader "SOAPAction", """" & soapAction & """" End If req.Send xmlEnvelope Dim st As Long st = req.Status If st < 200 Or st >= 300 Then Err.Raise vbObjectError + 13001, , _ "HTTP " & st & " - " & req.statusText & vbCrLf & req.responseText End If PostSoapConCert = req.responseText Exit Function EH: Err.Raise Err.Number, "PostSoapConCert", Err.description End Function |
|
![]() |
|
Mihura
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: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14428 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 18/Noviembre/2025 a las 11:50 |
|
Joer, que liao veo yo eso ....
Un proceso típico sería:
|
|
![]() |
|
VMT
Nuevo
Unido: 18/Noviembre/2025 Localización: VALENCIA Estado: Sin conexión Puntos: 10 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 18/Noviembre/2025 a las 12:48 |
|
Gracias Mihura, pero no funciona... Se requiere de un certificado para completar la autenticación de cliente. Desde VB no pilla el certificado se lo pases por CN, por Huella... si lo lanzas por PowerShell, $xml = Get-Content "C:\ruta\NOVERIFACTU-Fra-2510029-251118-102045-Firmada.xml" -Raw Invoke-WebRequest -Uri "https://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/ValRegistroNoVF" ` -Method Post -Body "C:\ruta\NOVERIFACTU-Fra-2510029-251118-102045-Firmada.xml" -ContentType "text/xml; charset=utf-8" ` -Headers @{ SOAPAction = "https://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/RequerimientoSOAP" } ` -CertificateThumbprint "h u e l l a" Entonces da un 0K 200, y lanzar un Power desde VB como que no mola mucho... ¿Existe algun modo de lanzarlo desde VB con el algún método?
|
|
![]() |
|
Mihura
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: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14428 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 18/Noviembre/2025 a las 13:01 |
Obviamente, sin certificado la AEAT no te va a admitir el envío. No conozco VB, pero básicamente VB y VBA son iguales y con este tipo de objetos más. Estaría por jurar que sin cambiar nada lo que te he posteado furula en VB. |
|
![]() |
|
ninja
Nuevo
Unido: 13/Abril/2012 Localización: España Estado: Sin conexión Puntos: 45 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 18/Noviembre/2025 a las 19:22 |
|
Prueba así, funciona. strCertificaatNaam = NOMBRECERTIFICADO If UCase(strCertificaatNaam) <> "" And UCase(strCertificaatNaam) <> "[SKIP]" Then objWinHttp.SetOption 3, strCertificaatNaam End If objWinHttp.Send objRequestXML
|
|
![]() |
|
VMT
Nuevo
Unido: 18/Noviembre/2025 Localización: VALENCIA Estado: Sin conexión Puntos: 10 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 19/Noviembre/2025 a las 10:15 |
|
Gracias.... pero no... no funciona. Es un problema del objeto y no del certificado, que cuenta con la clave privada, de la FNMT etc etc etc. Un problemon la verdad! Como lo estoy haciendo y no me gusta... desde PowerShell generado un ps1 y luego ejecutándolo... Public Function VF_PostSoap( _ ByVal xmlOrPath As String, _ ByVal endpoint As String, _ ByVal soapAction As String, _ ByVal thumbprint As String, _ Optional ByVal hasEnvelope As Boolean = True _ ) As String Dim xmlBody As String xmlBody = IIf(FileExists(xmlOrPath), ReadAllText(xmlOrPath), xmlOrPath) Dim payload As String If hasEnvelope Then payload = xmlBody Else payload = BuildEnvelope(xmlBody) End If Dim tp As String tp = NormalizeThumb(thumbprint) ' 1) MSXML2.ServerXMLHTTP.6.0 On Error GoTo try_powershell VF_PostSoap = Send_MSXML(endpoint, soapAction, payload, tp) Exit Function try_winhttp: ' 2) WinHTTP On Error GoTo try_powershell VF_PostSoap = Send_WinHTTP(endpoint, soapAction, payload, tp) Exit Function try_powershell: ' 3) Fallback PowerShell (comprobado que te da 200 OK) On Error GoTo fail_all VF_PostSoap = Send_PowerShell(endpoint, soapAction, payload, tp) Exit Function fail_all: Err.Raise vbObjectError + 53001, "VF_PostSoap", _ "Fallo en los 3 métodos (MSXML, WinHTTP y PowerShell):" & vbCrLf & _ " - " & Err.Number & " / " & Err.description End Function UNA FRICADA DE LA OS... Private Function Send_PowerShell(ByVal url As String, ByVal soapAction As String, _ ByVal soapEnvelope As String, ByVal thumb As String) As String Dim tempDir As String tempDir = Environ$("TEMP") Dim fBody As String, fOut As String, fPs As String fBody = tempDir & "\vf_body_" & Replace(CStr(Timer), ".", "") & ".xml" fOut = tempDir & "\vf_resp_" & Replace(CStr(Timer), ".", "") & ".txt" fPs = tempDir & "\vf_send_" & Replace(CStr(Timer), ".", "") & ".ps1" WriteAllText fBody, soapEnvelope Dim ps As String ps = "" ps = ps & "$ErrorActionPreference='Stop'" & vbCrLf ps = ps & "$thumb='" & thumb & "'" & vbCrLf ps = ps & "$endpoint='" & url & "'" & vbCrLf ps = ps & "$soapAction='" & soapAction & "'" & vbCrLf ps = ps & "$body=[IO.File]::ReadAllText('" & fBody & "')" & vbCrLf ps = ps & "$resp=Invoke-WebRequest -Uri $endpoint -Method Post -Body $body -ContentType 'text/xml; charset=utf-8' -Headers @{SOAPAction=$soapAction} -CertificateThumbprint $thumb -UseBasicParsing" & vbCrLf ps = ps & "[IO.File]::WriteAllText('" & fOut & "',$resp.Content,[Text.Encoding]::UTF8)" & vbCrLf WriteAllText fPs, ps Dim cmd As String cmd = "powershell.exe -NoProfile -ExecutionPolicy Bypass -File " & Quote(fPs) Set cb = New MSForms.DataObject cb.SetText cmd cb.PutInClipboard Set cb = Nothing Dim sh As Object: Set sh = CreateObject("WScript.Shell") Dim rc As Long rc = sh.Run(cmd, 0, True) If rc <> 0 Then Err.Raise vbObjectError + 53031, "Send_PowerShell", "PowerShell devolvió código " & rc & " " & Err.description End If Send_PowerShell = ReadAllText(fOut) On Error Resume Next Kill fBody: Kill fOut: Kill fPs End Function ALGUNA SUGUERENCIA DE ALGUIEN? Como gestionáis los errores que os devuelve el ENPOINT de la AEAT, porque devuelve un XML...?
|
|
![]() |
|
Mihura
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: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14428 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 19/Noviembre/2025 a las 10:35 |
Editado por Mihura - 19/Noviembre/2025 a las 10:35 |
|
![]() |
|
main
Colaborador
Unido: 31/Agosto/2009 Localización: OVIEDO Estado: Sin conexión Puntos: 1301 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 01/Diciembre/2025 a las 10:41 |
|
Los errores se tratan en funcion de una tabla de codigos de error: Este error viene en el .xml de respuesta(<tikR:CodigoErrorRegistro>2004</tikR:CodigoErrorRegistro>? incluyendo ademas una breve descripción de su estado(<tikR:EstadoRegistro>AceptadoConErrores</tikR:EstadoReg). Tambien devuelve el CSV (Codigo seguro de verificacion) <tikR:CSV> Saludos:
|
|
![]() |
|
VMT
Nuevo
Unido: 18/Noviembre/2025 Localización: VALENCIA Estado: Sin conexión Puntos: 10 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 01/Diciembre/2025 a las 20:01 |
|
Gracias, sí ya lo tengo solucionado. Empiezo a ver la luz, envío en modo VERI*FACTU y NO VERI*FACTU bajo requerimiento y leo respuesta. He tenido que montar una cola de envío con un límite de 240 segundos como indica la AEAT. Sigo pensando que es muy precaria la forma de comunicarse... Ya veremos si el día 1 no se caen los servidores de la AEAT. Un saludo y gracias |
|
![]() |
|
main
Colaborador
Unido: 31/Agosto/2009 Localización: OVIEDO Estado: Sin conexión Puntos: 1301 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 01/Diciembre/2025 a las 20:15 |
|
Te recomiendo que la cola de envio sea de 60 segundos como se recomienda, y en funcion del tamaño del fichero enviado no tendras problemas. Si solo mandas un documento por envio, quiza no te de problemas pero si el envio contiene varias facturas empiezan los probemas. Lo que no te comprendi es lo de enviar documento NO VERIFACTU, hasta donde se estos no se envian, Saludos al grupo.
Editado por main - 01/Diciembre/2025 a las 20:18 |
|
![]() |
|
main
Colaborador
Unido: 31/Agosto/2009 Localización: OVIEDO Estado: Sin conexión Puntos: 1301 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 02/Diciembre/2025 a las 13:12 |
|
APLAZAMIENTO VERIFACTU A ENERO 2027
|
|
![]() |
|
OmniPresente
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
Colaborador
Unido: 10/Febrero/2009 Localización: España Estado: Sin conexión Puntos: 1888 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 02/Diciembre/2025 a las 13:13 |
|
Estaba claro... pero es que ni ellos mismos lo tenían resuelto a nivel técnico...
|
|
![]() |
|
Mihura
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: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14428 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 02/Diciembre/2025 a las 13:28 |
|
¿Cómo que no estaba resuelto?
La web de AEAT funciona 100% ... no he tenido parones ni errores de comunicación / validación. Esto nos da un margen para avanzar sin sobresaltos, pero no hay que pararse, porque si no, en diciembre del año que viene estaremos igual. |
|
![]() |
|
OmniPresente
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
Colaborador
Unido: 10/Febrero/2009 Localización: España Estado: Sin conexión Puntos: 1888 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 10/Diciembre/2025 a las 18:24 |
|
Bueno; a mí me pasó que, a medida que iba haciendo implantaciones, cambiaba el esquema XML. No sé ser más específico, porque no recuerdo los detalles, pero de repente me encontraba con bloques que primero no eran obligatorios y luego sí.
Por no hablar, fuera ya del nivel técnico, de lo ambigua que es la AEAT sobre quién está obligado y quién no. Quien haga sus facturas con Excel o Word, está exento de la norma. Pues nada, yo, que envío mis facturas en PDF por e-mail; si alguna vez me requieren el registro Verifactu, digo que no uso un programa SIF; que las hago todas individualmente con Word y las exporto a PDF y listos.
|
|
![]() |
|
Responder
|
Página <1 234 |
|
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 |