phpcfdi / rfc
处理墨西哥RFC的PHP库
Requires
- php: >=7.3
- ext-json: *
- ext-mbstring: *
Requires (Dev)
- fakerphp/faker: ^1.13
- phpunit/phpunit: ^9.5
README
PHP库,用于处理RFC。
🇺🇸 该项目的文档为西班牙语,因为这是目标受众的自然语言。
关于
在墨西哥,任何自然人或法人进行任何经济活动都需要在财政部和信贷公共部(SHCP)注册,称为联邦纳税人登记册(RFC)。
此库允许从PHP应用程序中处理此密钥。
安装
使用 composer
composer require phpcfdi/rfc
基本使用
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)
对象创建
对象 Rfc 可以通过四种方式创建
Rfc::parse(string): Rfc: 验证输入数据,如果无效则抛出异常。Rfc::parseOrNull(string): ?Rfc: 验证输入数据,如果无效则返回null。Rfc::unparsed(string): Rfc: 不验证输入数据,将字符字符串作为Rfc创建对象。Rfc::fromSerial(int): Rfc: 将RFC序列号转换为字符字符串表示。
不能通过构造函数 new Rfc 创建对象。请使用 Rfc::unparsed。
建议在创建对象且原始数据不可信时始终使用 Rfc::parse。
RFC中唯一重要的数据是字符字符串本身。因此,字符串转换和导出到JSON的转换返回此特定数据。
序列号
序列号表示为使用该库创建的数字,这是一个64位整数,可以存储为数据库中的长整数。
要获取RFC的序列号,可以使用方法 Rfc::calculateSerial()。
要从整数创建RFC,可以使用 Rfc::fromSerial()。
负责此转换的计算类经过优化,使用常量转换数组,因此其执行速度尽可能快。
通用和外国RFC
经常使用虚拟RFC,例如,用于未识别的柜台销售或与外国人进行的操作,在这种情况下,有常数 Rfc::RFC_GENERIC = 'XAXX010101000' 和 Rfc::RFC_FOREIGN = 'XEXX010101000' 分别。
可以使用方法 Rfc::newGeneric() 和 Rfc::newForeign() 创建具有这些数据的实例。
要确定RFC是否为通用,可以使用方法 Rfc::isGeneric(),对于外国RFC则使用 Rfc::isForeign()。
RFC生成器
数据生成器(虚构)很常见,此库提供类 RfcFaker,可以单独使用或与 FakerPHP/Faker 一起使用。
提供创建RFC键字符字符串的方法
RfcFaker::mexicanRfcFisica()用于自然人(13位)。RfcFaker::mexicanRfcMoral()用于法人(12位)。RfcFaker::mexicanRfc()无论是法人还是自然人都可以。
校验位
可以通过使用方法 Rfc::calculateCheckSum() 获取计算出的校验码,以及了解校验码是否与 Rfc::doesCheckSumMatch() 方法匹配。
此外,还提供了 CheckSum 类用于计算 RFC 的校验码。需要注意的是,尽管它应该始终一致,但在某些情况下这可能不成立(SAT,一切都好吗?),例如,Restaurantes TOKS 的情况,其 RFC 为 RT0840921REA(校验码 A)和 RT0840921RE4。
您可以通过以下链接之一查看校验码的流程
- 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
开发
要了解这个库在开发领域的应用(用于扩展或修改),请阅读以下文档
支持
您可以通过在 Github 上创建一个 issue 来获取支持。
此外,这个库属于 PhpCfdi 社区,因此您可以使用相同的沟通渠道来从社区成员那里获得帮助。
兼容性
此库将保持与最新支持版本的 PHP 至少兼容。
我们还使用了 语义化版本 2.0.0,因此您可以使用此库而无需担心破坏您的应用程序。
贡献
欢迎贡献。请阅读 CONTRIBUTING 获取更多详细信息,并请记住检查待办事项文件 TODO 和更改日志文件 CHANGELOG。
版权和许可证
phpcfdi/rfc 库版权所有 © PhpCfdi,并许可在 MIT 许可证(MIT)下使用。请参阅 LICENSE 获取更多信息。