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 获取更多信息。