phpcfdi/rfc
Composer 安装命令:
composer require phpcfdi/rfc
包简介
PHP library to deal with Mexican RFC
README 文档
README
Librería de PHP para trabajar con RFC.
🇺🇸 The documentation of this project is in spanish as this is the natural language for the intended audience.
Acerca de
En México, toda persona física o moral para realizar cualquier actividad económica requiere de un registro ante la Secretaría de Hacienda y Crédito Público (SHCP) llamado Registro Federal de Contribuyentes (RFC).
Esta librería permite trabajar con esta clave desde el aplicativo de PHP.
Instalación
Usa composer
composer require phpcfdi/rfc
Uso básico
use PhpCfdi\Rfc\Rfc; // suponiendo que llega un formulario con rfc => COSC8001137NA $rfc = Rfc::parse($_POST['rfc']); echo $rfc->getRfc(); // COSC8001137NA echo $rfc; // COSC8001137NA echo json_encode(['data' => $rfc]); // {"data": "COSC8001137NA"} var_dump($rfc->isFisica()); // bool(true) var_dump($rfc->isMoral()); // bool(false) var_dump($rfc->isGeneric()); // bool(false) var_dump($rfc->isForeign()); // bool(false)
Creación de objetos
El objeto Rfc se puede crear a partir de cuatro formas:
Rfc::parse(string): Rfc: Se validan los datos de entrada y surge una excepción si son inválidos.Rfc::parseOrNull(string): ?Rfc: Se validan los datos de entrada y retorna nulo si son inválidos.Rfc::unparsed(string): Rfc: No se validan los datos de entrada, se creará el objeto con la cadena de caracteres como Rfc.Rfc::fromSerial(int): Rfc: Se convierte el número de serie del RFC a su representación de cadena de caracteres.
No se puede crear un objeto a partir del constructor new Rfc. Use Rfc::unparsed en su lugar.
Se recomienda que, siempre que se crea el objeto y los datos de origen no son de confianza, se utilice Rfc::parse.
El único dato importante dentro del RFC es la cadena de caracteres misma. Por ello se ha implementado que la conversión a cadena de caracteres y la exportación a JSON devuelvan específicamente este dato.
Números de serie
La representación del número de serie corresponde a un número creado con esta misma librería, este número es un entero de 64 bits que se puede almacenar como un entero largo en una base de datos.
Para obtener el número de serie de un RFC puede usar el método Rfc::calculateSerial().
Para crear un Rfc a partir de un entero puede usar Rfc::fromSerial().
La clase responsable de los cálculos involucrados en esta conversión está optimizada con arreglos constantes de conversión por lo que su ejecución es lo más veloz que puede ser.
RFC genérico y foráneo
Es frecuente utilizar RFC que son virtuales, por ejemplo, para operaciones sin identificar como una
venta de mostrador u operaciones con extranjeros, en estos casos están las constantes
Rfc::RFC_GENERIC = 'XAXX010101000' y Rfc::RFC_FOREIGN = 'XEXX010101000' respectivamente.
Puede usar los métodos Rfc::newGeneric() y Rfc::newForeign() para crear instancias con estos datos.
Si se desea saber que el RFC es genérico se puede usar el método Rfc::isGeneric() y para RFC extranjero Rfc::isForeign().
Generador de RFC
Es común usar generadores (ficticios) de datos, esta librería provee la clase RfcFaker que se puede utilizar
por sí sola o en conjunto con FakerPHP/Faker.
Provee métodos para crear una cadena de caracteres que es una clave RFC:
RfcFaker::mexicanRfcFisica()para persona física (13 posiciones).RfcFaker::mexicanRfcMoral()para persona moral (12 posiciones).RfcFaker::mexicanRfc()indistintamente una persona moral o física.
Dígito verificador
Se puede obtener el dígito verificador calculado con el método Rfc::calculateCheckSum(),
así como conocer si el dígito verificador coincide con el método Rfc::doesCheckSumMatch().
La además provee la clase CheckSum para realizar el cálculo del dígito verificador de un RFC.
Cabe mencionar que, si bien debería ser siempre coincidente, hay algunos casos donde esto
no se respeta (SAT, ¿todo bien?), por ejemplo, el caso de Restaurantes TOKS ha tenido
los RFC RT0840921REA (dígito A) y también RT0840921RE4.
Puede ver el procedimiento del dígito verificador en alguno de estos enlaces:
- https://www.studocu.com/es-mx/document/universidad-del-valle-de-mexico/administracion/algoritmo-para-generar-el-rfc-con-homoclave-para-personas-fisicas-y-morales/12002840
- https://solucionfactible.com/sfic/capitulos/timbrado/rfc-digito-verificador.jsp
Desarrollo
Para entender esta librería en el ámbito de desarrollo (para extender o modificar), lee los siguientes documentos:
- Revisa la guía de contribución.
- Consideraciones generales de la librería.
- Conversión de un RFC a entero y viceversa.
- Generador de RFC ficticios.
Soporte
Puedes obtener soporte abriendo un ticker 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/rfc library is copyright © PhpCfdi
and licensed for use under the MIT License (MIT). Please see LICENSE for more information.
phpcfdi/rfc 适用场景与选型建议
phpcfdi/rfc 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 81.7k 次下载、GitHub Stars 达 25, 最近一次更新时间为 2020 年 04 月 09 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「mexico」 「sat」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 phpcfdi/rfc 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 phpcfdi/rfc 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 phpcfdi/rfc 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Servicio Postal Mexicano (Sepomex) not official laravel library
Servicio Postal Mexicano PHP Library (Unofficial)
Librería para descargar los XSLT de la Cadena Original del Servicio de Administración Tributaria (SAT)
Parse and validate CFDIs against SAT México
Librería para generar Comprobantes Fiscales para la versión 3.3
Grupo de clases para administrar los archivos CER y KEY emitidos por el SAT y generar el SELLO y CERTIFICADO el CFDI
统计信息
- 总下载量: 81.7k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 25
- 点击次数: 22
- 依赖项目数: 3
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2020-04-09