Ver Mensaje Individual
  #7  
Antiguo 22-05-2025
jlmoli_67 jlmoli_67 is offline
Miembro
 
Registrado: feb 2024
Posts: 125
Reputación: 3
jlmoli_67 Va por buen camino
Cita:
Empezado por _Io Ver Mensaje
Hola, buenos días.

Muchas gracias por tu respuesta.
Tuve mi momento con PHP, pero pasó hace mucho tiempo y sinceramente no lo entiendo.

Huso Delphi12, y al final he resuelto la papeleta realizando una consulta , que sé que no hay resultados,
pero si me viene relleno la cabecera, sé que la AEAT me ha contestado.
No es la forma más eficiente, pero me vale.

Saludos



Buenas,
Hoy me ha tocado dejar cerrado el tema de comprobar la conexion antes del envio.
En un primer momento utilice el metodo de enviar una consulta en toda regla y segun la respuesta pues determinaba si la conexion a la aeat se establecia o no.

Despues me parecio interesante el metodo en php expuesto mas arriba y lo he estado probando pero da error en el sentido de que el wsdl puede no responder con el servicio verifactu estando activo por lo tanto no vale.


Por ultimo he hecho una funcion en la que me muestra si la conexion se establece o no recogiendo la respuesta al intentar conectar a la url a la que se envia la consulta pero sin enviar el xml de consulta y por tanto me evito tener que rellenar los parametros de la consulta.


en vb .net:


Código:
 Public Function VerificarServicioAEAT(url As String, rutaCertificadoPFX As String, passwordCertificado As String) As Boolean
        Try
            ' Forzar protocolo TLS 1.2

            System.Net.ServicePointManager.SecurityProtocol = DirectCast(3072, System.Net.SecurityProtocolType)
        
          ' Cargar certificado
             Dim cert As New X509Certificate2(rutaCertificadoPFX, passwordCertificado)

            ' Preparar la solicitud
            Dim request As HttpWebRequest = CType(WebRequest.Create(url), HttpWebRequest)
            request.Method = "POST" 
            request.ContentLength = 0
            request.ClientCertificates.Add(cert)
            request.Timeout = 10000

            ' Intentar obtener respuesta
            Using response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
                MsgBox("Código de respuesta: " & response.StatusCode)
                Return response.StatusCode = HttpStatusCode.OK OrElse response.StatusCode = HttpStatusCode.Accepted
            End Using

        Catch ex As WebException
            If ex.Response IsNot Nothing Then
                Using resp = CType(ex.Response, HttpWebResponse)
                    MsgBox("Error HTTP: " & resp.StatusCode.ToString())
                    MsgBox("Descripción: " & resp.StatusDescription)
                End Using
            Else
                MsgBox("Error sin respuesta HTTP: " & ex.Message)
            End If
            Return False

        Catch ex As Exception
            MsgBox("Error general: " & ex.Message)
            Return False
        End Try
    End Function



VerificarServicioAEAT("https://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP", "c:\certificados\micertificado.pfx", passwordCertificado)


un saludo
Responder Con Cita