phpcfdi/rfc

处理墨西哥RFC的PHP库

v1.1.3 2024-09-09 20:11 UTC

README

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

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

您可以通过以下链接之一查看校验码的流程

开发

要了解这个库在开发领域的应用(用于扩展或修改),请阅读以下文档

支持

您可以通过在 Github 上创建一个 issue 来获取支持。

此外,这个库属于 PhpCfdi 社区,因此您可以使用相同的沟通渠道来从社区成员那里获得帮助。

兼容性

此库将保持与最新支持版本的 PHP 至少兼容。

我们还使用了 语义化版本 2.0.0,因此您可以使用此库而无需担心破坏您的应用程序。

贡献

欢迎贡献。请阅读 CONTRIBUTING 获取更多详细信息,并请记住检查待办事项文件 TODO 和更改日志文件 CHANGELOG

版权和许可证

phpcfdi/rfc 库版权所有 © PhpCfdi,并许可在 MIT 许可证(MIT)下使用。请参阅 LICENSE 获取更多信息。