Код, который вы связали, имеет неполный список БИН / диапазон для Обнаружения, опускает клуб Diner's (который теперь все равно принадлежит Обнаружению), перечисляет типы карт, которые больше не существуют и должны быть объединены в другие типы enRoute, Carte Blanche) и игнорирует все более важный тип тележки Maestro International.
Как подтвердил @Alex, можно определить тип карты по номеру BIN, и многие компании делают это, но делать это последовательно и правильно не тривиально: бренды карт постоянно меняются, и отслеживать вещи становится все сложнее по мере того, как вы попробуйте обрабатывать региональные дебетовые карты (Laser в Ирландии, Maestro в Европе и т. д.) - я не нашел ни одного бесплатного и поддерживаемого (правильного) фрагмента кода или алгоритма для этого.
Как указала @MitMaro, Википедия содержит высокоуровневый список идентификаторов карт , а также более конкретный список номеров БИН и диапазонов , что является хорошим началом и, как прокомментировал gbjbaanb, Barclays имеет публично опубликованный список (но, похоже, по какой-то причине он не включает Discover - предположительно, они не обрабатываются в сети Discover?)
Как ни банально, правильный алгоритм / метод / функция идентификации карты требует работы для поддержания, поэтому, если ваша процедура обнаружения не является критической / информационной (например, предложение @ Simon_Weaver), ИЛИ вы собираетесь вставить чтобы поддерживать его в актуальном состоянии, я бы порекомендовал вам пропустить автоматическое обнаружение.