Ver Mensaje Individual
  #514  
Antiguo 04-08-2022
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 865
Reputación: 3
ermendalenda Va por buen camino
Envio De Soap

Hola, para los desarrolladores que tenemos lenguajes "Arcaicos", hay 2 soluciones que pasan por Curl.exe y depende de la construcción final del SOAP.
Aunque debes revisar a ver si delphi 2007 tiene librería curl.
Este metodo de envio lo uso para Factura Electrónica y funciona perfectamente, Faceb y Faceb2b por Soap.

Vamos a explicar los parametros del envio:

*El envio(Ojo este es para Factura electronica, aún no tenemos los parametros para Verifactu:

Código:
curl --connect-timeout 10 --insecure -A "FacturaePHP/1.7.1" -H "SOAPAction: https://webservice.face.gob.es#enviarFactura" --data "@C:\....\...\archivo.xml" --cert-type P12 --cert c:\....\fichero_certificado.pfx:clave -H "Content-Type: text/xml" https://se-face-webservice.redsara.es/facturasspp2 -o C:\....\Respuesta_face_o.html -D C:\...\Respuesta_face_D.html
Que consta de varias partes:
--connect-timeout 10 ----> Tiempo de espera ante eventuales problemas de conexión, es recomeendable por que hay casos en que se eterniza la conexión si hay un problema.

--insecure ----> Puede ser necesario para qyue se admitan conexiones SSl poco seguras

-A "FacturaePHP/1.7.1" --> Variable CURLOPT_USERAGENT, pueden solicitar que tenga un contenido especifico en caso de factura electrónica es la versión del esquema utilizado: FacturaPhp/1.7.1

-H "SOAPAction: https://webservice.face.gob.es#enviarFactura" ----> Equivale a la variable CURLOPT_HTTPHEADER= Cabecera de Envio.

-H "Content-Type: text/xml" ----> Otro Contenido de la variable CURLOPT_HTTPHEADER
--data "@C:\tpvision\Facturarealcanasta_FICTICIO_fichero.xml" ---> Fichero a Enviar, construido con el Soap

--cert-type P12 --cert c:\....\fichero_certificado.pfx:clave ----> Certificado Electronico y clave, ojo con esto ya que es demasiado visible, hay que intentar que la ejecución al menos sea invisible y no dejar rastro.

https://se-face-webservice.redsara.es/facturasspp2 ----> Servicio WEB/RES

-o C:\....\Respuesta_face_o.html --> Respuestaen XML se envia al fichero indicado

-D C:\...\Respuesta_face_D.html ---> Respuesta Simple Ok,Ko, Error xxx.., igualmente se envia al ficherro indicado, noponer el mismo qu en -o


Si en la composicion del Soap pidieran, como en Face algun dato del certificado, por ejemplo la variable publica, el soap podrias hacerlo con php, que eso es otra historia que si hace falta ya lo pondré, y en ese caso el envio lo pdrias hacer tambien en php:

Este sería el envio del soap en php, que tambien puedes ejecutarlo con un comando curl desde cualquier aplicacion, si fuera necesario ampliaré esto::
Código:
    $ch = curl_init();
    curl_setopt_array($ch, array(
      CURLOPT_URL => $GLOBALS['endpoint'],
      CURLOPT_RETURNTRANSFER => 1,
      CURLOPT_SSL_VERIFYPEER => 0,
      CURLOPT_TIMEOUT => 30,
      CURLOPT_POST => 1,
      CURLOPT_POSTFIELDS => $req,
      CURLOPT_HTTPHEADER => array(
        "Content-Type: text/xml",
        "SOAPAction: " . $soapAction
      ),
      CURLOPT_USERAGENT => "FacturaePHP/" . $GLOBALS["version"]
    ));
    $res = curl_exec($ch);
    curl_close($ch);
    unset($ch);

Última edición por ermendalenda fecha: 04-08-2022 a las 08:39:40.
Responder Con Cita