Ean.php
5 years ago
Iban.php
5 years ago
Inn.php
5 years ago
Luhn.php
5 years ago
TCNo.php
5 years ago
Inn.php
35 lines
| 1 | <?php |
| 2 | namespace Faker\Calculator; |
| 3 | |
| 4 | class Inn |
| 5 | { |
| 6 | /** |
| 7 | * Generates INN Checksum |
| 8 | * |
| 9 | * https://ru.wikipedia.org/wiki/%D0%98%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80_%D0%BD%D0%B0%D0%BB%D0%BE%D0%B3%D0%BE%D0%BF%D0%BB%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%89%D0%B8%D0%BA%D0%B0 |
| 10 | * |
| 11 | * @param string $inn |
| 12 | * @return string Checksum (one digit) |
| 13 | */ |
| 14 | public static function checksum($inn) |
| 15 | { |
| 16 | $multipliers = array(1 => 2, 2 => 4, 3 => 10, 4 => 3, 5 => 5, 6 => 9, 7 => 4, 8 => 6, 9 => 8); |
| 17 | $sum = 0; |
| 18 | for ($i = 1; $i <= 9; $i++) { |
| 19 | $sum += intval(substr($inn, $i-1, 1)) * $multipliers[$i]; |
| 20 | } |
| 21 | return strval(($sum % 11) % 10); |
| 22 | } |
| 23 | |
| 24 | /** |
| 25 | * Checks whether an INN has a valid checksum |
| 26 | * |
| 27 | * @param string $inn |
| 28 | * @return boolean |
| 29 | */ |
| 30 | public static function isValid($inn) |
| 31 | { |
| 32 | return self::checksum(substr($inn, 0, -1)) === substr($inn, -1, 1); |
| 33 | } |
| 34 | } |
| 35 |