Validar folio fiscal CFDi con PHP (directo del SAT) 2018

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.'&amp;rr='.$receptor.'&amp;tt='.$total.'&amp;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í

Aquí puedes ver las fotos del post

Almacenado en PHP, Facturación Electrónica

por Jorge Martínez Mauricio :)



¿Algo que comentar?


Suscríbete por correo electrónico, recibirás los nuevos escritos antes que nadie y es gratis 😊

¿Ya conoces los foros de tar?

Relacionadas

    tar.mx es un blog sobre tecnología y otras chunches