SOAP Post php - mjungjohann/Ingefactura GitHub Wiki

Seguridad

Para poder comunicarse con el web service es necesario el uso de un token, el cual estará en la cabecera de la petición.El token lo debe solicitar a nuestro equipo de Ingefactura ([email protected]).

Enviar request

Los web service utilizan la comunicación por xml.

Las peticiones son HTTPS SAOP. El web service al ser de tipo SOAP posee una ruta WSDL ejemplo:

$url= "https://develop.ingefactura.cl/wsDte/igf?wsdl"; 
            
            //Envio del rut
            $soapRut = "76518460";
            //envio de dv
            $soapDv = "6";
            //contraseña (Para obtener la contraseña debe mandar un correo a [email protected])
            $soapPassword = "12334";
            //numero de pedido
            $soapnumPedido = "111111";
            //dirección del archivo
            $file_name = realpath('/Users/admin/Desktop/pruebas.xml');
            //tomo el contenido del archivo
            $xmlGetContent = file_get_contents($file_name);
            //ingreso el archivo a una variable
            $xml = simplexml_load_string($xmlGetContent);
            //no tocar este dato
            $user = "user";
            //no tocar este dato
            $password = "pass";

            try{
            //se envia la estructura del xml
            $xml_post_string = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://servicios/">
                           <soapenv:Header/>
                           <soapenv:Body>
                              <ser:sendDte>
                                 <rut>'.$soapRut.'</rut>
                                 <dv>'.$soapDv.'</dv>
                                 <pass>'.$soapPassword.'</pass>
                                 <numPedido>'.$soapnumPedido.'</numPedido>
                                 <sxml>'.$xmlGetContent.'</sxml>
                              </ser:sendDte>
                           </soapenv:Body>
                        </soapenv:Envelope>';  
                //
                $soap_do = curl_init(); 
                curl_setopt($soap_do, CURLOPT_URL,            $url );   
                curl_setopt($soap_do, CURLOPT_CONNECTTIMEOUT, 10); 
                curl_setopt($soap_do, CURLOPT_TIMEOUT,        10); 
                curl_setopt($soap_do, CURLOPT_RETURNTRANSFER, true );
                curl_setopt($soap_do, CURLOPT_SSL_VERIFYPEER, false);  
                curl_setopt($soap_do, CURLOPT_SSL_VERIFYHOST, false); 
                curl_setopt($soap_do, CURLOPT_POST,           true ); 
                curl_setopt($soap_do, CURLOPT_POSTFIELDS,    $xml_post_string); 
                curl_setopt($soap_do, CURLOPT_HTTPHEADER,     array('Content-Type: text/xml; charset=ISO-8859-1', 'Content-Length: '.strlen($xml_post_string))); 
                curl_setopt($soap_do, CURLOPT_USERPWD, $user . ":" . $password);

                $result = curl_exec($soap_do);

                echo $result;

            }catch(SoapFault $e){
                echo $e->getMessage();
            }

Nota: El archivo xml debe enviarlo sin el header (xml version="1.0" encoding="ISO-8859-1") porque el código php genera errores con los archivos xml.

⚠️ **GitHub.com Fallback** ⚠️