Проверка ИНН по контрольной сумме PHP/JavaScript

Проверка ИНН по контрольной сумме PHP/JavaScript


freelanceland
Ищете фрилансера для выполнения задач?

Алгоритм проверки ИНН 10 знаков:

1. Вычисляется контрольная сумма со следующими весовыми коэффициентами: (2,4,10,3,5,9,4,6,8,0)
2. Вычисляется контрольное число как остаток от деления контрольной суммы на 11
3. Если контрольное число больше 9, то контрольное число вычисляется как остаток от деления контрольного числа на 10
4. Контрольное число проверяется с десятым знаком ИНН. В случае их равенства ИНН считается правильным.

 Алгоритм проверки ИНН 12 знаков.

1. Вычисляется контрольная сумма по 11-ти знакам со следующими весовыми коэффициентами: (7,2,4,10,3,5,9,4,6,8,0)
2. Вычисляется контрольное число(1) как остаток от деления контрольной суммы на 11
3. Если контрольное число(1) больше 9, то контрольное число(1) вычисляется как остаток от деления контрольного числа(1) на 10
4. Вычисляется контрольная сумма по 12-ти знакам со следующими весовыми коэффициентами: (3,7,2,4,10,3,5,9,4,6,8,0).
5. Вычисляется контрольное число(2) как остаток от деления контрольной суммы на 11
6. Если контрольное число(2) больше 9, то контрольное число(2) вычисляется как остаток от деления контрольного числа(2) на 10
7. Контрольное число(1) проверяется с одиннадцатым знаком ИНН и контрольное число(2) проверяется с двенадцатым знаком ИНН.
В случае их равенства ИНН считается правильным.

Валидация ИНН с помощью Javascript


function checkINN(inputNumber){
    //преобразуем в строку
    inputNumber = "" + inputNumber;
    //преобразуем в массив
    inputNumber = inputNumber.split('');
    //для ИНН в 10 знаков
    if((inputNumber.length == 10) && (inputNumber[9] == ((2 * inputNumber[  0] + 4 * inputNumber[1] + 10 * inputNumber[2] + 3 * inputNumber[3] + 5 * inputNumber[4] + 9 * inputNumber[5] + 4 * inputNumber[6] + 6 * inputNumber[7] + 8 * inputNumber[8]) % 11) % 10)){
        return true;
    //для ИНН в 12 знаков
    }else if((inputNumber.length == 12) && ((inputNumber[10] == ((7 * inputNumber[ 0] + 2 * inputNumber[1] + 4 * inputNumber[2] + 10 * inputNumber[3] + 3 * inputNumber[4] + 5 * inputNumber[5] + 9 * inputNumber[6] + 4 * inputNumber[7] + 6 * inputNumber[8] + 8 * inputNumber[9]) % 11) % 10) && (inputNumber[11] == ((3 * inputNumber[ 0] + 7 * inputNumber[1] + 2 * inputNumber[2] + 4 * inputNumber[3] + 10 * inputNumber[4] + 3 * inputNumber[5] + 5 * inputNumber[6] + 9 * inputNumber[7] + 4 * inputNumber[8] + 6 * inputNumber[9] + 8 * inputNumber[10]) % 11) % 10))){
        return true;
    }else{
        return false;
    }


Валидация ИНН с помощью PHP


function valid_inn($inn, $jurface = 1) {
    if ($jurface == 1) {
        //для юр лица код 10 знаков
        if (preg_match('#([\d]{10})#', $inn, $m)) {
$inn = $m[0];
            $code10 = (($inn[0] * 2 + $inn[1] * 4 + $inn[2] *10 + $inn[3] * 3 +
                        $inn[4] * 5 + $inn[5] * 9 + $inn[6] * 4 + $inn[7] * 6 +
                        $inn[8] * 8) % 11 ) % 10;
            if ($code10 == $inn[9]) return $inn;
        }
    } else {
        //для физ.лиц и ИП - 12 знаков
        if (preg_match('#([\d]{12})#', $inn, $m)) {
$inn = $m[0];
            $code11 = (($inn[0] * 7 + $inn[1] * 2 + $inn[2] * 4 + $inn[3] *10 +
                        $inn[4] * 3 + $inn[5] * 5 + $inn[6] * 9 + $inn[7] * 4 +
                        $inn[8] * 6 + $inn[9] * 8) % 11 ) % 10;
            $code12 = (($inn[0] * 3 + $inn[1] * 7 + $inn[2] * 2 + $inn[3] * 4 +
                        $inn[4] *10 + $inn[5] * 3 + $inn[6] * 5 + $inn[7] * 9 +
                        $inn[8] * 4 + $inn[9] * 6 + $inn[10]* 8) % 11 ) % 10;
                        
            if ($code11 == $inn[10] && $code12 == $inn[11]) return $inn;
        }
    }
    return false;
}




http://ru.wikipedia.org/wiki/Идентификационный_номер_налогоплательщика — формулы расчета взял с вики.

Также читают

Сохранить файл с удаленного сервера
Шпаргалка по командам MySQL
PHP

Возврат к списку