Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Proyecto SIF/Veri*Factu/Ley Antifraude > Envío de registros y sus respuestas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-04-2025
Jariverom Jariverom is offline
Registrado
 
Registrado: abr 2025
Posts: 5
Poder: 0
Jariverom Va por buen camino
Funcionamiento de SOAP y error con wsdl

Buenas, estoy desarrollando una aplicación en php para verifactu y tengo algunos xml que he conseguido probar desde el entorno de pruebas que proporciona la AEAT pero ahora estoy intentando hacer el soap desde mi aplicación y me da un error al intentar cargar entidades del mismo.
El error que me da es el siguiente:
Código:
"SOAP-ERROR: Parsing WSDL: Couldn't load from 'h_t_t_p_s://prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/SistemaFacturacion.wsdl' : failed to load external entity "h_t_t_p_s://prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/SistemaFacturacion.wsdl"
"

y mi código esta así ahora mismo:
Código:
    
$xml = cargarHistorico($anio, $mes);

    // Definiciones proporcionadas
    $wsdlUrl = 'h_t_t_p_s://prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/SistemaFacturacion.wsdl';

    $certificatePath = RUTA_CERTIFICADO_VERIFACTU;
    $certificatePassword = RUTA_PASSWD_CERTIFICADO_VERIFACTU;

    // Verificar si el WSDL es accesible
    $wsdlContent = @file_get_contents($wsdlUrl);
    if ($wsdlContent === false) {
        echo "No se puede acceder al WSDL. Verifica la URL y la configuración del servidor.";
        return;
    } else {
        echo "WSDL cargado correctamente.\n";
    }

    try {
        // Crear el cliente SOAP con las configuraciones proporcionadas
        $client = new SoapClient($wsdlUrl, [  // Nombre del servicio
            'local_cert' => $certificatePath,
            'passphrase' => $certificatePassword,
            'trace' => 1,
            'exceptions' => 1
        ]);
    } catch (SoapFault $th) {
        $mensajeError = $th->getMessage();
        echo "Error al crear el cliente SOAP: " . $th->getMessage();
        return;
    }

    try {
        // Llamada al método SOAP
        $response = $client->__soapCall('EnviarFactura', [['facturaXML' => $xml]]);
        return $response;
    } catch (SoapFault $fault) {
        echo "Error en la llamada SOAP: " . $fault->getMessage();
        return;
    }
El error me da al crear el cliente de soap
Responder Con Cita
  #2  
Antiguo 07-04-2025
delphiGar delphiGar is offline
Miembro
 
Registrado: ago 2024
Posts: 182
Poder: 2
delphiGar Va por buen camino
la url que coges es para la configuracion del servicio.

La url de pruebas es:

Código:
https://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP
Responder Con Cita
  #3  
Antiguo 07-04-2025
Jariverom Jariverom is offline
Registrado
 
Registrado: abr 2025
Posts: 5
Poder: 0
Jariverom Va por buen camino
Cita:
Empezado por delphiGar Ver Mensaje
la url que coges es para la configuracion del servicio.

La url de pruebas es:

Código:
h_t_t_p_s://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP

Usando ese endpoint me da el siguiente error:
"SOAP-ERROR: Parsing WSDL: Couldn't load from 'h_t_t_p_s://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP' : EndTag: '</' not found"
Responder Con Cita
  #4  
Antiguo 07-04-2025
delphiGar delphiGar is offline
Miembro
 
Registrado: ago 2024
Posts: 182
Poder: 2
delphiGar Va por buen camino
Cita:
Empezado por Jariverom Ver Mensaje
Buenas, estoy desarrollando una aplicación en php para verifactu y tengo algunos xml que he conseguido probar desde el entorno de pruebas que proporciona la AEAT pero ahora estoy intentando hacer el soap desde mi aplicación y me da un error al intentar cargar entidades del mismo.
El error que me da es el siguiente:
Código:
"SOAP-ERROR: Parsing WSDL: Couldn't load from 'h_t_t_p_s://prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/SistemaFacturacion.wsdl' : failed to load external entity "h_t_t_p_s://prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/SistemaFacturacion.wsdl"
"

y mi código esta así ahora mismo:
Código:
    
$xml = cargarHistorico($anio, $mes);

    // Definiciones proporcionadas
    $wsdlUrl = 'h_t_t_p_s://prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/SistemaFacturacion.wsdl';

    $certificatePath = RUTA_CERTIFICADO_VERIFACTU;
    $certificatePassword = RUTA_PASSWD_CERTIFICADO_VERIFACTU;

    // Verificar si el WSDL es accesible
    $wsdlContent = @file_get_contents($wsdlUrl);
    if ($wsdlContent === false) {
        echo "No se puede acceder al WSDL. Verifica la URL y la configuración del servidor.";
        return;
    } else {
        echo "WSDL cargado correctamente.\n";
    }

    try {
        // Crear el cliente SOAP con las configuraciones proporcionadas
        $client = new SoapClient($wsdlUrl, [  // Nombre del servicio
            'local_cert' => $certificatePath,
            'passphrase' => $certificatePassword,
            'trace' => 1,
            'exceptions' => 1
        ]);
    } catch (SoapFault $th) {
        $mensajeError = $th->getMessage();
        echo "Error al crear el cliente SOAP: " . $th->getMessage();
        return;
    }

    try {
        // Llamada al método SOAP
        $response = $client->__soapCall('EnviarFactura', [['facturaXML' => $xml]]);
        return $response;
    } catch (SoapFault $fault) {
        echo "Error en la llamada SOAP: " . $fault->getMessage();
        return;
    }
El error me da al crear el cliente de soap
Por lo que veo el fichero XML no lo cargas, primero, estas cargando la URL, supongo que sera el archivo xml lo que quieres cargar y no la URL:

Código PHP:
 $wsdlContent = @file_get_contents($wsdlUrl); 
Segundo, no envias nada, la variable $xml no existe, creo que aqui querias poner $wsdlContent:

Código PHP:
$response $client->__soapCall('EnviarFactura', [['facturaXML' => $xml]]); 
Responder Con Cita
  #5  
Antiguo 07-04-2025
Jariverom Jariverom is offline
Registrado
 
Registrado: abr 2025
Posts: 5
Poder: 0
Jariverom Va por buen camino
la variable $xml la cargo con el metodo cargarHistorico($anio, $mes), al cual le paso el año y el mes ya que he visto que para hacer la solicitud al endpoint me pide esos dos campos obligatorios.
esa variable lo que tiene tras la carga es lo siguiente (cambio los datos del emisor).

Código:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="h_t_t_p://schemas.xmlsoap.org/soap/envelope/" xmlns:con="h_t_t_p_s://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/ConsultaLR.xsd" xmlns:sum="h_t_t_p_s://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>NombreEmisor</sum:NombreRazon>
          <sum:NIF>00000000X</sum:NIF>
        </sum:ObligadoEmision>
      </con:Cabecera>
      <con:FiltroConsulta>
        <con:PeriodoImputacion>
          <sum:Ejercicio>2025</sum:Ejercicio>
          <sum:Periodo>01</sum:Periodo>
        </con:PeriodoImputacion>
      </con:FiltroConsulta>
    </con:ConsultaFactuSistemaFacturacion>
  </soapenv:Body>
</soapenv:Envelope>

Es posible que dentro del soap tenga que usar un archivo pem y no un p12? estoy intentando eso pero me sigue dando errores
Responder Con Cita
  #6  
Antiguo 07-04-2025
delphiGar delphiGar is offline
Miembro
 
Registrado: ago 2024
Posts: 182
Poder: 2
delphiGar Va por buen camino
Que quieres hacer, enviar o consultar, el ultimo xml que has puesto es de consulta?
Responder Con Cita
  #7  
Antiguo 07-04-2025
Jariverom Jariverom is offline
Registrado
 
Registrado: abr 2025
Posts: 5
Poder: 0
Jariverom Va por buen camino
la verdad que cualquiera me vale pero de momento la parte que estoy haciendo es la de consulta, en el entorno de prueba de la AEAT donde entras con certificado electrónico he probado ese xml y si me devuelve el xml con las facturas que tengo enviadas pero ahora al intentar hacerlo desde la aplicación de php no consigo que funcione correctamente el soap (es la primera vez que toco SOAP y llevo con php 2 meses)
Responder Con Cita
  #8  
Antiguo 07-04-2025
delphiGar delphiGar is offline
Miembro
 
Registrado: ago 2024
Posts: 182
Poder: 2
delphiGar Va por buen camino
Cita:
Empezado por Jariverom Ver Mensaje
la variable $xml la cargo con el metodo cargarHistorico($anio, $mes), al cual le paso el año y el mes ya que he visto que para hacer la solicitud al endpoint me pide esos dos campos obligatorios.
esa variable lo que tiene tras la carga es lo siguiente (cambio los datos del emisor).

Código:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="h_t_t_p://schemas.xmlsoap.org/soap/envelope/" xmlns:con="h_t_t_p_s://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/ConsultaLR.xsd" xmlns:sum="h_t_t_p_s://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>NombreEmisor</sum:NombreRazon>
          <sum:NIF>00000000X</sum:NIF>
        </sum:ObligadoEmision>
      </con:Cabecera>
      <con:FiltroConsulta>
        <con:PeriodoImputacion>
          <sum:Ejercicio>2025</sum:Ejercicio>
          <sum:Periodo>01</sum:Periodo>
        </con:PeriodoImputacion>
      </con:FiltroConsulta>
    </con:ConsultaFactuSistemaFacturacion>
  </soapenv:Body>
</soapenv:Envelope>

Es posible que dentro del soap tenga que usar un archivo pem y no un p12? estoy intentando eso pero me sigue dando errores
Para esta utiliza lo siguiente:

Código PHP:
$response $client->__soapCall'ConsultaFactuSistemaFacturacion', ['facturaXML' => $xml]); 
Código PHP:
$response $client->ConsultaFactuSistemaFacturacion( ['facturaXML' => $xml]); 
Responder Con Cita
  #9  
Antiguo 09-04-2025
alexrodral alexrodral is offline
Registrado
 
Registrado: abr 2025
Posts: 6
Poder: 0
alexrodral Va por buen camino
Buenas, me esta pasando un error parecido en el proyecto que tengo en php para el tema de verifactu, inteno crear el cliente SOAP y todo el rato me sale este error:
Error:
Código:
message =
"SOAP-ERROR: Parsing WSDL: Couldn't load from 'h_t_t_p_s://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP' : failed to load external entity "h_t_t_p_s://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP"
"
*Exception*string =
""
code =
0
file =
"C:\xampp\htdocs\factu\funciones\funciones_verifactu.php"
line =
489
*Exception*trace =
array(2)
*Exception*previous =
null
faultstring =
"SOAP-ERROR: Parsing WSDL: Couldn't load from 'h_t_t_p_s://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP' : failed to load external entity "h_t_t_p_s://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP"
"
faultcode =
"WSDL"
Este es el codigo para generar el SOAP client:
Código PHP:
$client = new SoapClient((string) $wsdlUrl, [ 
            
'local_cert' => $filename,
            
'passphrase' => $certificatePassword,
            
'cache_wsdl' => WSDL_CACHE_NONE,
            
'soap_version' => SOAP_1_1,
            
'style' => SOAP_DOCUMENT,
            
'use' => SOAP_LITERAL,
            
'trace' => 1,
            
'exceptions' => 1,

        ]); 
La ruta que estoy usando para acceder a la AEAT es esta :
Código PHP:
$wsdlUrl 'h_t_t_p_s://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP'
Y estoy usando los certificados de pruebas que da la AEAT, el XML que estoy intentando subir es este:
Código:
<soapenv:Envelope xmlns:soapenv="h_t_t_p://schemas.xmlsoap.org/soap/envelope/" xmlns:con="h_t_t_p_s://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/ConsultaLR.xsd" xmlns:sum="h_t_t_p_s://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>Certificado Pruebas</sum:NombreRazon>
<sum:NIF>A39200019</sum:NIF>
</sum:ObligadoEmision>
</con:Cabecera>
<con:FiltroConsulta>
<con:PeriodoImputacion>
<sum:Ejercicio>2025</sum:Ejercicio>
<sum:Periodo>04</sum:Periodo>
</con:PeriodoImputacion>
</con:FiltroConsulta>
</con:ConsultaFactuSistemaFacturacion>
</soapenv:Body>
</soapenv:Envelope>
Responder Con Cita
  #10  
Antiguo 09-04-2025
Jariverom Jariverom is offline
Registrado
 
Registrado: abr 2025
Posts: 5
Poder: 0
Jariverom Va por buen camino
Estoy en ese mismo punto, pero he conseguido extraer mas sobre el error y me especifica que falta la Cabecera en el XML y en la variable donde tengo el XML si está ese nodo.
Responder Con Cita
  #11  
Antiguo 13-05-2025
wilecoyote wilecoyote is offline
Miembro
 
Registrado: may 2025
Posts: 29
Poder: 0
wilecoyote Va por buen camino
Hola. Disculpad, pero ¿a qué certificado de prueba de la AEAT te refieres? Tenía entendido que la AEAT no facilitaba ningún certificado de prueba, ni siquiera para el portal de pruebas.

Asimismo, ¿cómo hacéis para proteger el certificado digital, una vez subido en el hosting web?
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error después de actualizar el WSDL newtron Envío de registros y sus respuestas 17 03-02-2025 10:18:26
Error al importar el ultimo WSDL MAAM Envío de registros y sus respuestas 0 04-12-2024 18:51:51
error al importar wsdl ANCELMO Delphi para la web 2 23-08-2018 11:04:05
error al importar WSDL SOAP Server GerTorresM Providers 5 23-08-2013 18:20:32
Consumir WebService. Ayuda con XML,WSDL,XSD,SOAP josemmerida Internet 2 23-12-2010 13:37:16


La franja horaria es GMT +2. Ahora son las 18:21:23.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi