Download the PHP package phpcfdi/sat-estado-retenciones without Composer

On this page you can find all versions of the php package phpcfdi/sat-estado-retenciones. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package sat-estado-retenciones

phpcfdi/sat-estado-retenciones

Source Code Packagist PHP Version Support Discord Latest Version Software License Build Status Reliability Maintainability Code Coverage Violations Total Downloads

Consulta el estado de un CFDI de Retenciones haciendo scrap del sitio del SAT

:us: The documentation of this project is in spanish as this is the natural language for the intended audience.

Acerca de phpcfdi/sat-estado-retenciones

El Servicio de Administración Tributaria en México (SAT) expone algunos servicios para la comprobación fiscal.

Para el caso de CFDI regulares (CFDI de ingresos, egresos, traslados y nómina) ofrece un web service de tipo SOAP para poder conocer el estado (vigente o cancelado) de un CFDI.

Para el caso de CFDI de Retenciones e Información de Pagos (CFDI de retenciones) no ofrece un web service. El SAT solo permite consultar su estado a través de una página de internet ubicada en https://prodretencionverificacion.clouda.sat.gob.mx/ y aparentemente protegida por un captcha*.

Esta librería permite aprovechar que la herramienta del SAT tiene una incorrecta implementación del captcha y no hay necesidad de resolverlo. Además, convierte la respuesta de la página de internet a propiedades de un objeto.

Instalación

Usa composer

Ejemplo de uso

Funcionamiento

Esta librería ofrece un objeto de entrada Service, con el que se pueden ejecutar dos tareas: generar los parámetros de consulta Parameters y consultar la página de internet con estos parámetros. El resultado de la consulta es un objeto Result.

Actualmente, se aprovecha el error de la página del SAT donde no está implementando correctamente el captcha, por lo que se puede consultar el estado brincando esta medida. Si en un futuro el SAT implenta un Web Service o implementa correctamente el captcha, se espera que esta librería tenga que cambiar muy poco su interfaz de uso.

Construcción de parámetros

El objeto de parámetros se puede construir a partir del UUID, RFC del emisor y RFC del receptor (si existe). Igualmente, si se cuenta con el XML como texto o como un objeto DOM es posible obtener los parámetros con los métodos Service::makeParametersFromXml(string $xml): Parameters y Service::makeParametersFromDocument(DOMDocument $document): Parameters respectivamente.

Tanto los parámetros Parameters como el resultado Result implementan la interfaz JsonSerializable, es decir, que exportan sus datos cuando se usa la función json_encode().

Ejecución de la consulta

Método Service::query(Parameters $parameters): Result

Ejecuta la consulta del estado de CFDI de retenciones y entrega el resultado en un objeto Result. Si el CFDI de retenciones no fue encontrado genera una excepción de tipo RetentionNotFoundException. Si la consulta falla por un error de conexión con el servidor se genera una excepción de tipo HttpClientException.

Método Service::queryOrNull(Parameters $parameters): ?Result

Existe el método queryOrNull, que es idéntico a query pero en lugar de generar la excepción RetentionNotFoundException regresará NULL.

Resultado

Al ejecutar la consulta se devuelve un objeto Result que contiene todas las propiedades que entrega la página web. Adicionalmente, cuenta con 3 propiedades especiales para interpretar el estado del documento (vigente o cancelado), el estado EFOS (incluido o excluido) y el total como valor flotante.

Estrategia scraper

Actualmente, se obtiene el estado de CFDI de retenciones haciendo scraping a la página del SAT.

El scraper puede ser sustituido por otro objeto que implemente la interfaz ScraperInterface.

La implementación de ScraperInterface está en la clase Scraper y depende directamente de un cliente HTTP para hacer una única petición de tipo GET.

El cliente puede ser sustituido por otro objeto que implemente la interfaz HttpClientInterface.

La implementación de HttpClientInterface está en la clase PhpStreamContextHttpClient, que utiliza los PHP Streams para poder ejecutar la petición a la página del SAT.

En caso de querer sustiuir esta implementación por alguna librería como Guzzle o Symfony HTTP Client, será necesario crear un objeto que implemente la interfaz HttpClientInterface.

Excepciones

Cuando se ejecute la consulta de parámetros podrían ocurrir dos excepciones: RetentionNotFoundException cuando no se encontró el CFDI de retenciones, y HttpClientException cuando hubo un error para contactar al servicio.

Ambas excepciones son de tipo \RuntimeException y además implementan la interfaz SatEstadoRetencionesException.

Soporte

Puedes obtener soporte abriendo un ticket en Github.

Adicionalmente, esta librería pertenece a la comunidad PhpCfdi, así que puedes usar los mismos canales de comunicación para obtener ayuda de algún miembro de la comunidad.

Compatibilidad

Esta librería se mantendrá compatible con al menos la versión con soporte activo de PHP más reciente.

También utilizamos Versionado Semántico 2.0.0 por lo que puedes usar esta librería sin temor a romper tu aplicación.

sat-estado-retenciones Versiones soportadas de PHP
1.1.0 7.3, 7.4, 8.0, 8.1, 8.2, 8.3
2.0.0 8.2, 8.3

Contribuciones

Las contribuciones con bienvenidas. Por favor lee CONTRIBUTING para más detalles y recuerda revisar el archivo de tareas pendientes TODO y el archivo CHANGELOG.

Copyright and License

The phpcfdi/sat-estado-retenciones library is copyright © PhpCfdi and licensed for use under the MIT License (MIT). Please see LICENSE for more information.


All versions of sat-estado-retenciones with dependencies

PHP Build Version
Package Version
Requires php Version >=8.2
ext-dom Version *
ext-json Version *
symfony/dom-crawler Version ^7.0
symfony/css-selector Version ^7.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package phpcfdi/sat-estado-retenciones contains the following files

Loading the files please wait ....