A partir del 1 de noviembre de 2018, el SAT cambió su webservice que permite consultar el estado de una factura, así que el método anterior para consultar ya no funciona.
Aquí la nueva función, ahora es directo con CURL en lugar de SOAP
<?php/* @toro 2018 tar.mx -- consultar estado de factura directo al SAT */
//datos de factura RFC emisor, RFC receptor, Total, UUID
$emisor="";
$receptor="";
$total="";
$uuid="";
//
$soap = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/"><soapenv:Header/><soapenv:Body><tem:Consulta><tem:expresionImpresa>?re='.$emisor.'&rr='.$receptor.'&tt='.$total.'&id='.$uuid.'</tem:expresionImpresa></tem:Consulta></soapenv:Body></soapenv:Envelope>';
//encabezados
$headers = [
'Content-Type: text/xml;charset=utf-8',
'SOAPAction: http://tempuri.org/IConsultaCFDIService/Consulta',
'Content-length: '.strlen($soap)
];
$url = 'https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $soap);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$res = curl_exec($ch);
curl_close($ch);
$xml = simplexml_load_string($res);
$data = $xml->children('s', true)->children('', true)->children('', true);
$data = json_encode($data->children('a', true), JSON_UNESCAPED_UNICODE);
print_r(json_decode($data));
Eso es todo, si tenemos datos válidos nos debería regresar algo como lo siguiente:
stdClass Object(
[CodigoEstatus] => S - Comprobante obtenido satisfactoriamente.
[EsCancelable] => Cancelable sin aceptación
[Estado] => Vigente
[EstatusCancelacion] => stdClass Object
(
)
)
Lo cual es un objeto con los datos que nos regresa el SAT, eso es todo. Gracias a Jaime Favela por la información para poder consultar la nueva forma.
ps. si el script marca error, copialo de aquí
https://panchito-kardashian.tar.mx/media/2016/12/validarcfdi-1.jpg