Validar folio fiscal CFDi con PHP (directo del SAT)

El Sistema de Administración Tributaria de México (SAT) debería soltar un API bien documentado acerca de la validación, comprobaciones y emisión de facturas. Es decir, existen los PAC que por lo visto son amigos cercanos y toda una industria alrededor que obtiene ganancias de certificar todo lo relacionado con la facturación electrónica.

Me recuerda un poco como los certificados SSL: en un tiempo sólo existió Verisign y cada certificado costaba unos $1,000 USD por sitio web, luego vinieron muchos competidores y finalmente nació letsencrypt que permite la certificación gratuita de certificados SSL.

Es decir, en una economía global te permiten gratuitamente validar tus certificados, evidentemente de la seguridad te tienes que encargar tu, de mantener tus certificados y demás... que las empresas que cobran sólo es eso (durante años pagamos certificados y no vimos otra ventaja), dicen "que tu sitio es seguro" pero no lo comprueban, solo sellan tu certificado para que no aparezca un error cuando cargas tu sitio web.

Resulta que aquí en México aparte de que el SAT tiene con la bota en el cuello de los contribuyentes, tienes que pagar para que te certifiquen tus datos. En un mundo ideal el SAT debería liberar APIs como comenté antes de forma gratuita a sus contribuyentes. Y bien documentada. Si bien tiene herramientas en línea para generar y comprobar documentos fiscales, parecen hechos con las patas, no funcionan un día y otro tampoco, se saturan, etcétera, etcétera. La cosa es que emitir una factura te puede costar hasta 10 pesos... dependiendo el proveedor, lo mínimo que he encontrado son unos 30 centavos por cada una, cuando consumes varias decenas de miles.

Volviendo al tema de los CFDi, resulta que hay muchos programas de pago y formas de validar un documento: si bien son muchas validaciones en teoría la definitiva es la que te emita el SAT, de que un documento sea válido. Así que pondremos cómo validar los XML de facturas con PHP:

<?php 
   // Consulta el estado de una factura en el SAT
   // @ToRo 2016 https://tar.mx/tema/facturacion-electronica.html
   //
   $options=array('trace'=>true, 'stream_context'=>stream_context_create( ['http' => ['timeout'=>1] ] ));
   $client = new SoapClient("https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc?wsdl",$options);
   //uso: asumimos que tenemos  el RFC del emisor, el RFC del receptor
   //     el total y el uuid (folio fiscal).
   $factura   = "?re=".$rfcreceptor."&rr=".$rfcemisor."&tt=".str_pad(number_format($total,6,".",""),17,0,STR_PAD_LEFT)."&id=".strtoupper($uuid);
   $resultado = $client->Consulta(['expresionImpresa'=>$factura]);
   print_r($resultado);
   //en caso que el SAT responda, dará una respuesta (objeto) parecida a:
   /*
   stdClass Object
   (
    [ConsultaResult] => stdClass Object
        (
            [CodigoEstatus] => S - Comprobante obtenido satisfactoriamente.
            [Estado] => Vigente
        )
   )
   */

Requiere tener instalado php-soap.

Y ya pues es todo... inicialmente el script me lo pasó mi amigo @Halcón, lo cual me ha ayudado bastante para un proyecto. Más adelante pondremos más herramientas en línea para la validación de folios fiscales.

PHP, Facturación Electrónica

por Jorge Martínez Mauricio :)

¿Algo que comentar?


Populares estos días

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


    tar.mx es un blog personal de Jorge Martínez Mauricio