Cita:
Empezado por _Io
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