anglemx / mexico-rfc
PHP 工具,用于处理墨西哥 SAT(税务机构)的 RFC(税号)
Requires
- php: >=7.2
- ext-bcmath: *
- ext-intl: *
- ext-json: *
- ext-mbstring: *
Requires (Dev)
- phpunit/phpunit: ^7.5
README
PHP 工具,用于处理墨西哥 SAT(税务机构)的 RFC(税号)
RFC
什么是 RFC? Registro Federal de Contribuyentes 是墨西哥税务机构 SAT Servicio de Administración Tributaria 和 SHCP Secretaría de Hacienda y Crédito Público 的注册。
如何使用
从姓名和出生日期数据计算个人的 RFC
这计算了 Homoclave ,它是一个 __
然而,请注意 这只是一个基线 ___ SAT 可以随时更改此 __ 代码
特别是最后 3 位数字称为 homoclave。
整个目的就是为了防止 __
如果两个人的姓名完全相同,并且出生在同一天 __ 那么他们将是同音异义词 __ 共享相同的基础 __
SAT 将会更改其中一个人的 homoclave 或两个人的。
还需要更多的测试和验证,RFC 有很多异常和边缘情况必须考虑。
$dob = \DateTime::createFromFormat('Y-m-d', '1989-07-15'); $rfc = RFC::createForNaturalPerson('Jose Ramiro', 'Gutierrez', 'Hernández', $dob); echo $rfc->getRfc(); // GUHR890715 echo $rfc->getRfcComplete(); // GUHR890715G54
验证现有的 RFC 字符串
此工具还可以用于验证现有的 RFC 字符串并从中推断一些元数据。
echo (RFC::isValid('INVALID_12313') ? 'Yes' : 'No'); // No echo (RFC::isValid('GUHR890715G54') ? 'Yes' : 'No'); // Yes echo (RFC::isValidWithoutHomoclave('GUHR890715') ? 'Yes' : 'No'); // Yes
从有效的 RFC 字符串中提取元数据
验证并从 RFC 字符串中推断一些元数据,例如法律实体的类型。
TODO:推断出生日期。
$rfc = RFC::createFromRfcString('GUHR890715G54'); if ($rfc === null) { die('Invalid RFC string'); } echo ($rfc->isGeneric() ? 'Yes' : 'No'); // No echo ($rfc->isNaturalPerson() ? 'Yes' : 'No'); // Yes
测试
php vendor/bin/phpunit tests/BuildTest.php php vendor/bin/phpunit tests/ValidationTest.php
待办事项
- 完成编写此 README
- 清理 RFC 类,它现在非常混乱。还要清理 RFC 验证测试。实现一些测试私有/受保护方法的方法?
- 找到一个大列表的姓名、出生日期和 RFC 进行测试。
参考
https://cec.cele.unam.mx/include/howToRFC.php https://solucionfactible.com/sfic/capitulos/timbrado/rfc-clave-direfenciadora-homonimia.jsp https://solucionfactible.com/sfic/capitulos/timbrado/rfc-digito-verificador.jsp https://solucionfactible.com/sfic/capitulos/timbrado/rfc-anexos.jsp https://solucionfactible.com/sfic/resources/files/palabrasInconvenientes-rfc.pdf