SOAP Post php - mjungjohann/Ingefactura GitHub Wiki
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]).
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.