Obtiene los datos fiscales actuales de una persona moral o física dado su RFC y CIFID

Overview

phpcfdi/csf-scraper

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

Obtiene los datos fiscales actuales de una persona moral o física dado su RFC y CIFID.

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

🇲🇽 La documentación del proyecto está en español porque ese es el lenguaje principal de los usuarios.

Instalación

Usa composer

composer require phpcfdi/csf-scraper

Esta librería requiere del uso de un cliente que implemente GuzzleHttp\ClientInterface; puedes obtener más información de esta librería en guzzle.

Ejemplo de uso



declare(strict_types=1);

use GuzzleHttp\Client;
use PhpCfdi\CsfScraper\Scraper;
use PhpCfdi\Rfc\Rfc;

require 'vendor/autoload.php';

$scraper = Scraper::create();

$rfc = Rfc::parse('YOUR_RFC');

$person = $scraper->obtainFromRfcAndCif(rfc: $rfc, idCIF: 'ID_CIF');

// También puedes obtener los datos de la persona directamente del archivo local PDF
// (Ten en cuenta que esta funcionalidad requiere de tener instalado popper-utils en tu servidor).
$person = $scraper->obtainFromPdfPath('LOCAl_PDF_FILE_PATH');

// puedes acceder a los datos de la persona (moral o física) usando los métodos incluidos:
if($rfc->isFisica()) {
    echo $person->getNombre();
}
if($rfc->isMoral()) {
    echo $person->getRazonSocial();
}

// o puedes obtener el array de datos usando
echo print_r($person->toArray(), true);

Ejemplo de salida de json_encode($person) para persona moral:

{
  "rfc": "DIM8701081LA",
  "id_cif": "12345678",
  "razon_social": "Mi razón social",
  "regimen_de_capital": "SA DE CV",
  "fecha_constitucion": {
    "date": "2019-02-21 22:50:46.000000",
    "timezone_type": 3,
    "timezone": "UTC"
  },
  "fecha_inicio_operaciones": {
    "date": "2019-02-21 22:50:46.000000",
    "timezone_type": 3,
    "timezone": "UTC"
  },
  "situacion_contribuyente": "ACTIVO",
  "fecha_ultimo_cambio_situacion": {
    "date": "2019-02-21 22:50:46.000000",
    "timezone_type": 3,
    "timezone": "UTC"
  },
  "entidad_federativa": "CIUDAD DE MEXICO",
  "municipio_delegacion": "CUAUHTEMOC",
  "colonia": "CUAUHTEMOC",
  "tipo_vialidad": "Tipo vialidad",
  "nombre_vialidad": "PASEO DE LA REFORMA",
  "numero_exterior": "143",
  "numero_interior": "Piso 69",
  "codigo_postal": "72055",
  "correo_electronico": "[email protected]",
  "al": "CIUDAD DE MEXICO 2",
  "regimenes": [
    {
      "regimen": "Régimen General de Ley Personas Morales",
      "regimen_id": "601",
      "fecha_alta": {
        "date": "2019-02-21 22:50:46.000000",
        "timezone_type": 3,
        "timezone": "UTC"
      }
    }
  ],
  "extra_data": []
}

Ejemplo de salida de json_encode($person) para persona física:

{
  "rfc": "COSC8001137NA",
  "id_cif": "1904014102123",
  "curp": "CURP",
  "nombre": "JUAN",
  "apellido_paterno": "PEREZ",
  "apellido_materno": "RODRIGUEZ",
  "fecha_nacimiento": {
    "date": "1973-05-01 22:53:25.000000",
    "timezone_type": 3,
    "timezone": "UTC"
  },
  "fecha_inicio_operaciones": {
    "date": "2004-11-03 22:53:25.000000",
    "timezone_type": 3,
    "timezone": "UTC"
  },
  "situacion_contribuyente": "ACTIVO",
  "fecha_ultimo_cambio_situacion": {
    "date": "2004-11-03 22:53:25.000000",
    "timezone_type": 3,
    "timezone": "UTC"
  },
  "entidad_federativa": "CIUDAD DE MEXICO",
  "municipio_delegacion": "IZTAPALAPA",
  "colonia": "MI COLONIA",
  "tipo_vialidad": "CALLE",
  "nombre_vialidad": "BENITO JUAREZ",
  "numero_exterior": "183",
  "numero_interior": "",
  "codigo_postal": "72000",
  "correo_electronico": "",
  "al": "CIUDAD DE MEXICO 3",
  "regimenes": [
    {
      "regimen": "Régimen de Incorporación Fiscal",
      "regimen_id": "621",
      "fecha_alta": {
        "date": "2014-01-01 22:53:25.000000",
        "timezone_type": 3,
        "timezone": "UTC"
      }
    }
  ],
  "extra_data": []
}

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.

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/csf-scraper library is copyright © PhpCfdi and licensed for use under the MIT License (MIT). Please see LICENSE for more information.

Comments
  • Mejoras a código, excepciones y documentación (versión 0.1.2)

    Mejoras a código, excepciones y documentación (versión 0.1.2)

    Método fábrica de Scraper

    Se agrega el método para fabricar estáticamente un objeto Scraper con la configuración de curl adecuada. Lamentablemente, el sitio del SAT utiliza un esquema de seguridad anticuado que requiere configuración especial.

    Refactorización de excepciones

    Se agrega la excepción CifDownloadException que se genera cuando no se pudo descargar la página web de datos fiscales.

    Se agrega CsfScraperException como una interfaz vacía para identificar las excepciones generadas por esta librería.

    Se agregan las anotaciones @throws a los métodos para identificar que generan excepciones.

    Refactorizaciones

    Pequeñas limpiezas de código y a partes específicas:

    • Se refactoriza el código de la clase interna CsfExtractor para mejorar su intención.
    • Se refactoriza el código de la clase PdfToText para que use ShellExec al buscar por el ejecutable pdftotext.
    enhancement 
    opened by eclipxe13 1
  • Mejoras a código, excepciones y documentación (versión 0.1.2)

    Mejoras a código, excepciones y documentación (versión 0.1.2)

    Método fábrica de Scraper

    Se agrega el método para fabricar estáticamente un objeto Scraper con la configuración de curl adecuada. Lamentablemente, el sitio del SAT utiliza un esquema de seguridad anticuado que requiere configuración especial.

    Refactorización de excepciones

    Se agrega la excepción CifDownloadException que se genera cuando no se pudo descargar la página web de datos fiscales.

    Se agrega CsfScraperException como una interfaz vacía para identificar las excepciones generadas por esta librería.

    Se agregan las anotaciones @throws a los métodos para identificar que generan excepciones.

    Refactorizaciones

    Pequeñas limpiezas de código y a partes específicas:

    • Se refactoriza el código de la clase interna CsfExtractor para mejorar su intención.
    • Se refactoriza el código de la clase PdfToText para que use ShellExec al buscar por el ejecutable pdftotext.
    enhancement 
    opened by eclipxe13 1
  • Versión 0.1.5 2022-10-28

    Versión 0.1.5 2022-10-28

    Propiedades mágicas en Persona

    El método setter mágico permite establecer cualquier tipo de datos en $data. El método getter mágico solo permitía devolver cadenas de caracteres. Se cambió este comportamiento para devolver cualquier tipo de datos.

    El método setter mágico daba prioridad al método compuesto set<Propiedad>() (si existía). El método getter solo devolvía datos del almacén local $data. Se cambió este comportamiento para también darle prioridad al método get<Propiedad>() (si existe).

    El método isset mágico cambia la comprobación a verificar que el resultado del método mágico getter no devuelva nulo. De esta forma se incluye la comprobación para propiedades del objeto.

    Otros cambios de mantenimiento

    • En los flujos de integración continua:
      • Se agrega la versión de PHP 8.2 a la matriz del trabajo para pruebas.
      • Se corrige la instalación de poppler-utils, se quedaba colgado en nektos/act.
    • Se modifican y simplifican varias anotaciones de PHPDoc.
    • Se corrige el nombre del método setfechaUltimoCambioSituacion a setFechaUltimoCambioSituacion.
    • Se actualiza el archivo de configuración de php-cs-fixer:
      • Cambiar la regla no_trailing_comma_in_singleline_array a no_trailing_comma_in_singleline.
      • Se actualizan las reglas a PHP 8.0.
      • Se activan las reglas class_attributes_separation, trailing_comma_in_multiline y ordered_imports.

    Nota: Revisar este PR por commit para mejor entendimiento

    opened by eclipxe13 0
  • Correcciones de regímenes más estrictas

    Correcciones de regímenes más estrictas

    Antes: se sustituían palabras y se quitaban espacios. Después: se usan expresiones regulares que definen dónde deben estar los textos a sustituir junto con los espacios.

    opened by eclipxe13 0
  • fix:  regimenId no se obtiene correctamente cuando el régimen es 622

    fix: regimenId no se obtiene correctamente cuando el régimen es 622

    Cuando el régimen de la persona moral es 622(Actividades Agrícolas, Ganaderas, Silvícolas y Pesqueras). La página objetivo del scraper regresa: Actividades Agrícolas, Ganaderas, Silvícolas y Pesqueras PM. Por lo tanto el id de este régimen no se obtenía correctamente. Debido a esto se agregó PM a la lista de palabras a las cuales se les aplica la función str_replace para homogeneizar el nombre del régimen.

    opened by celli33 0
  • docs: fix docs to existing methods.

    docs: fix docs to existing methods.

    -El ejemplo del README.md mostraba que se obtenían los datos usando el método $scraper->data() , sin embargo este método ya no existe más y el método usado es: $scraper->obtainFromRfcAndCif().

    • Se agrega a la documentación como obtener los datos usando la ruta local del archivo PDF a través del método $scraper->obtainFromPdfPath().
    opened by celli33 0
Releases(v0.1.5)
  • v0.1.5(Oct 28, 2022)

    Regímenes que terminan en punto .

    Se elimina de regímenes el punto final, que viene en algunos regímenes como "Régimen de las Actividades Empresariales con ingresos a través de Plataformas Tecnológicas.".

    Propiedades mágicas en Persona

    El método setter mágico permite establecer cualquier tipo de datos en $data. El método getter mágico solo permitía devolver cadenas de caracteres. Se cambió este comportamiento para devolver cualquier tipo de datos.

    El método setter mágico daba prioridad al método compuesto set<Propiedad>() (si existía). El método getter solo devolvía datos del almacén local $data. Se cambió este comportamiento para también darle prioridad al método get<Propiedad>() (si existe).

    El método isset mágico cambia la comprobación a verificar que el resultado del método mágico getter no devuelva nulo. De esta forma se incluye la comprobación para propiedades del objeto.

    Otros cambios de mantenimiento

    • En los flujos de integración continua:
      • Se agrega la versión de PHP 8.2 a la matriz del trabajo para pruebas.
      • Se corrige la instalación de poppler-utils, se quedaba colgado en nektos/act.
    • Se modifican y simplifican varias anotaciones de PHPDoc.
    • Se corrige el nombre del método setfechaUltimoCambioSituacion a setFechaUltimoCambioSituacion.
    • Se actualiza el archivo de configuración de php-cs-fixer:
      • Cambiar la regla no_trailing_comma_in_singleline_array a no_trailing_comma_in_singleline.
      • Se actualizan las reglas a PHP 8.0.
      • Se activan las reglas class_attributes_separation, trailing_comma_in_multiline y ordered_imports.
    Source code(tar.gz)
    Source code(zip)
  • v0.1.4(Oct 26, 2022)

  • v0.1.3(Oct 26, 2022)

    • Se elimina de regímenes la palabra PM, que viene en algunos regímenes como: "Actividades Agrícolas, Ganaderas, Silvícolas y Pesqueras PM".
    • El ejemplo del README.md mostraba que se obtenían los datos usando el método $scraper->data(), sin embargo este método ya no existe más y el método usado es: $scraper->obtainFromRfcAndCif().
    • Se agrega a la documentación cómo obtener los datos usando la ruta local del archivo PDF a través del método $scraper->obtainFromPdfPath().
    Source code(tar.gz)
    Source code(zip)
  • v0.1.2(Jul 1, 2022)

    Método fábrica de Scraper

    Se agrega el método para fabricar estáticamente un objeto Scraper con la configuración de curl adecuada. Lamentablemente, el sitio del SAT utiliza un esquema de seguridad anticuado que requiere configuración especial.

    Refactorización de excepciones

    Se agrega la excepción CifDownloadException que se genera cuando no se pudo descargar la página web de datos fiscales.

    Se agrega CsfScraperException como una interfaz vacía para identificar las excepciones generadas por esta librería.

    Se elimina ShellExecException y se sustituye por PdfToTextConvertException.

    Se agregan las anotaciones @throws a los métodos para identificar que generan excepciones.

    Refactorizaciones

    Pequeñas limpiezas de código y a partes específicas:

    • Se refactoriza el código de la clase interna CsfExtractor para mejorar su intención.
    • Se refactoriza el código de la clase PdfToText para que use ShellExec al buscar por el ejecutable pdftotext.

    Uso de Synfony/Process

    Se usa Symfony/Process en lugar de la clase interna ShellExec.

    Source code(tar.gz)
    Source code(zip)
  • v0.1.1(Jun 27, 2022)

    Se agregan los datos de RFC y IDCIF a la clase base Persona. No eran accesibles si se obtenían los datos directamente de un archivo PDF.

    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(Jun 22, 2022)

Owner
phpCfdi
PHP Tools and utilities for Mexican CFDI
phpCfdi
Herramienta para limpiar Comprobantes Fiscales Digitales v3.3

phpcfdi/cfdi-cleaner Herramienta para limpiar Comprobantes Fiscales Digitales por Internet mexicanos. ???? The documentation of this project is in spa

phpCfdi 10 Sep 24, 2022
Proyecto Elaborado para la materia de Administración de Bases de Datos

Hola ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⢟⢟⢻⢹⢫⡛⡻⡻⡻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⠿⣛⢍⠦⡱⡱⣑⠕⡕⡥⡱⡕⡕⣕⢢⢫⢹⢻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⢍⢆⢣⢣⢢⢣⢣⢳⢸⢰⢕⢕⡪⡪⣪⢪⢪⢆⡇⡇⣇⢎⢪⢛⢿⣿⣿⣿⣿⣿⣿⣿

Axel Reynosa 2 May 6, 2022
Realice un programa en cualquier lenguaje de programación en el cual implemente un sistema de registro de asistencias para los ayudantes y becarios del LTIC.

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Darwin Contreras 1 Jan 5, 2022
Repositorio del código fuente utilizado en la página web Lifo.es durante los años 2017 a 2022

Lifo.es Código fuente del juego de rol online Lifo modificado por mi (Sora) durante los años 2017 a 2022. Este código es una modificación del código b

null 5 Dec 28, 2022
This is an experiment to export all RFCs from the PHP wiki into Git, including the change history for each RFC (along with the date and author of each change). This is not meant to replace the wiki.

PHP Requests for Comments (RFCs) About This repository is an experiment to export all RFCs from the PHP wiki into Git, including the change history fo

Ben Ramsey 34 Jun 20, 2022
ReintegrApp è una Web Application gestionale sviluppata senza fini di lucro da Riccardo Riggi per organizzazioni di volontariato che operano nel campo dell'emergenza/urgenza

ReintegrApp ReintegrApp è una Web Application gestionale sviluppata senza fini di lucro da Riccardo Riggi per organizzazioni di volontariato che opera

Riccardo Riggi 3 Nov 27, 2021
aqui tienen una plantilla que pueden usar para crear paginas web, contiene html, css, javascript y php

Plantilla-html aqui tienen una plantilla que pueden usar para crear paginas web, contiene html, css, javascript y php. esta plantilla obviamente neces

PEKKA102 3 Sep 19, 2022
TIA es una Tía de Inteligencia Artificial que genera memes con Piolines y frases bonitas

TIA TIA es una Tía de Inteligencia Artificial que genera memes con Piolines y frases bonitas Requerimientos PHP 7.0 or higher GD Library Instructions

John Parker 2 Aug 20, 2022
Trabajo final de la materia Bases de Datos 1. Creación de una base de datos con MySQL y desarrollo de una página web con PHP para manipularla. UNAL sede Medellín, semestre 2022-1.

Trabajo final BD: i-Lunch Materia: Bases de Datos I Profesor: Francisco Javier Moreno Arboleda Institución: Universidad Nacional de Colombia sede Mede

Emmanuel López Rodríguez 2 Jul 9, 2022
Herramienta para limpiar Comprobantes Fiscales Digitales v3.3

phpcfdi/cfdi-cleaner Herramienta para limpiar Comprobantes Fiscales Digitales por Internet mexicanos. ???? The documentation of this project is in spa

phpCfdi 10 Sep 24, 2022
Proyecto Elaborado para la materia de Administración de Bases de Datos

Hola ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⢟⢟⢻⢹⢫⡛⡻⡻⡻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⠿⣛⢍⠦⡱⡱⣑⠕⡕⡥⡱⡕⡕⣕⢢⢫⢹⢻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⢍⢆⢣⢣⢢⢣⢣⢳⢸⢰⢕⢕⡪⡪⣪⢪⢪⢆⡇⡇⣇⢎⢪⢛⢿⣿⣿⣿⣿⣿⣿⣿

Axel Reynosa 2 May 6, 2022
Realice un programa en cualquier lenguaje de programación en el cual implemente un sistema de registro de asistencias para los ayudantes y becarios del LTIC.

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Darwin Contreras 1 Jan 5, 2022
Repositorio del código fuente utilizado en la página web Lifo.es durante los años 2017 a 2022

Lifo.es Código fuente del juego de rol online Lifo modificado por mi (Sora) durante los años 2017 a 2022. Este código es una modificación del código b

null 5 Dec 28, 2022
Código y documentación del sistema de los observatorios regionales en framework Laravel.

Sistema-Observatorios-Regionales Código del sistema de los observatorios regionales en framework Laravel. Descarga de elementos a utilizar COMANDOS Pa

null 3 Nov 18, 2022
Laravel package to generate and to validate a UUID according to the RFC 4122 standard. Only support for version 1, 3, 4 and 5 UUID are built-in.

Laravel Uuid Laravel package to generate and to validate a universally unique identifier (UUID) according to the RFC 4122 standard. Support for versio

Christoph Kempen 1.7k Dec 28, 2022
True asynchronous PHP I/O and HTTP without frameworks, extensions, or annoying code. Uses the accepted Fibers RFC to be implemented into PHP 8.1

PHP Fibers - Async Examples Without External Dependencies True asynchronous PHP I/O and HTTP without frameworks, extensions, or annoying code behemoth

Cole Green 121 Jan 6, 2023
This is an experiment to export all RFCs from the PHP wiki into Git, including the change history for each RFC (along with the date and author of each change). This is not meant to replace the wiki.

PHP Requests for Comments (RFCs) About This repository is an experiment to export all RFCs from the PHP wiki into Git, including the change history fo

Ben Ramsey 34 Jun 20, 2022
PHP Email address validator - A library for validating emails against several RFC.

EmailValidator A library for validating emails against several RFC. Supported RFCs This library aims to support RFCs: 5321, 5322, 6530, 6531, 6532, 10

Eduardo Gulias Davis 10.7k Jun 13, 2022
Proyecto con configuraciones basicas para iniciar una aplicacion en Laravel 7

LARAVEL CORK ADMIN Proyecto base de Laravel 7, usando la plantilla de CORK en su versión 1.9. Este proyecto contiene algunos paquetes extras que ayuda

TonyStore 3 Apr 25, 2022
Un proyecto que crea una API de usuarios para registro, login y luego acceder a su información mediante autenticación con JSON Web Token

JSON WEB TOKEN CON LARAVEL 8 Prueba de autenticación de usuarios con una API creada en Laravel 8 Simple, fast routing engine. License The Laravel fram

Yesser Miranda 2 Oct 10, 2021