iiifx-production/ukraine-identification-number

乌克兰识别号码

v1.0.3 2021-11-11 17:39 UTC

This package is not auto-updated.

Last update: 2024-09-13 03:34:11 UTC


README

乌克兰纳税人识别号。INN解析器和生成器。

算法

INN号码由十个数字组成

$number = "{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}"

计算校验和:将INN的前9个数字的乘积相加

$sum =
    ( $number{0} * -1 ) +
    ( $number{1} * 5 ) +
    ( $number{2} * 7 ) +
    ( $number{3} * 9 ) +
    ( $number{4} * 4 ) +
    ( $number{5} * 6 ) +
    ( $number{6} * 10 ) +
    ( $number{7} * 5 ) +
    ( $number{8} * 7 )

获取校验数:将校验和除以11取模,然后除以10

$digit = ( $sum % 11 ) % 10

如果校验数与INN的第10个数字相同,则号码正确

$digit === $number{9}

性别根据INN的第9个数字确定:偶数-女性,奇数-男性

$sex = ( $number{8} % 2 ) ? MALE : FEMALE

年龄根据INN的前5个数字确定:这是从1899-12-31起的天数

安装

使用Composer

$ composer require iiifx-production/ukraine-identification-number

使用

INN解析器

use iiifx\Identification\Ukraine\Parser;

# Номер ИНН
$number = '2245134075';

# Создаем парсер
$parser = Parser::create($number);
# Или так
$parser = new Parser($number);

# Проверяем правильность ИНН
if ($parser->isValidNumber()) {
    echo $parser->getNumber(); # 2245134075

    # Определяем пол владельца ИНН
    echo $parser->getPersonSex(); # Parser::SEX_MALE
    echo $parser->isPersonMale(); # true
    echo $parser->isPersonFemale(); # false

    # Определяем возраст и дату рождения
    echo $parser->getPersonAge(); # 55
    echo $parser->getPersonBirth('Y-m-d'); # 1961-06-20
    echo $parser->getPersonBirthDatetime()->format('d.m.Y H:i:s'); # 20.06.1961 00:00:00

    # Контрольная сумма и число
    echo $parser->getControlSum(); # 192
    echo $parser->getControlDigit(); # 5
}

INN生成器

use iiifx\Identification\Ukraine\Builder;

# Создаем генератор
$builder = new Builder();
# Или вот так
$builder = Builder::create(Builder::SEX_MALE, new DateTime('2010-05-12'));

# Указывам пол
$builder->setPersonSex(Builder::SEX_MALE);
$builder->setPersonMale();
$builder->setPersonFemale();

# Указываем возраст
$builder->setPersonAge(55);
$builder->setPersonBirthDatetime(new DateTime('1962-11-03'));

# Генерируем ИНН
echo $builder->createNumber(); # 2295209520

测试

已删除,需要重新配置

许可证

Software License