2016-09-29 2 views
2

Я работаю над мобильным платежным приложением. Пользователь может добавить все свои карты, как оплату (например, кредитные/дебетовые/кассовые карты), так и неплатежи (карточки с лояльностью, чтобы заработать очки) в приложении.Как отличить номер платежной карты (например, кредитные/дебетовые карты) и номера неплатежей?

При добавлении карты я хочу различать эти карты двух типов и хочу показать их в отдельных списках в приложении.

Я, хотя алгоритм Луна будет делать, но даже неплатежные карты будут вычислять контрольную цифру согласно алгоритму Луна.

Просьба предложить, если есть какой-либо другой механизм, который я могу использовать для прагматического разграничения между этими двумя типами карт.

благодаря

+1

Я предлагаю, чтобы ваши пользователи приложений могли группировать карты по своему усмотрению или использовать регулярные выражения для быстрого анализа числа номеров для общих диапазонов. Есть много готовых примеров использования, просто Google. Обычные регулярные выражения не на 100% правильны. Поддержка таблиц BIN карты будет более сложной из-за размера таких таблиц и постоянных обновлений. –

+0

В дополнение к замечанию выше, ISO/IEC 7812 является стандартом для * самых * платежных карт, и поэтому вы можете быть достаточно уверенными, чтобы номера платежных карт начинались с 4/5/6. Там могут быть некоторые карты лояльности в пределах этих диапазонов, хотя, особенно в диапазоне 6. Кроме того, некоторые эмитенты карт (JCB для одного) полностью следуют различным стандартам (карты JCB начинаются с 3). Вкратце - позвольте пользователям разобраться! – PaulG

+0

@PaulG - На самом деле, 7812 распространяется на * все * кредитные карты, включая JCB. [Эта таблица] (https://en.wikipedia.org/wiki/Payment_card_number#Issuer_identification_number_.28IIN.29) содержит все основные диапазоны BIN (первые несколько цифр). Стоит отметить, что карты American Express также начинаются с 3, но их очень легко отличить от JCB на основе второй цифры. – Bobson

ответ

0

Как @ ISO8583-Инфоподдержка подразумеваемой в их comment, единственный хороший способ сделать это поиск диапазон BIN. BIN - это первые несколько цифр карточки (технически, до 6), которые выдаются в диапазонах эмитентам карт. Так, например, Visa «владеет» 4*, поэтому любая карта, начинающаяся с 4, является картой Visa. MasterCard «владеет» 2221*-2720* и 51*-55*, так что любая карта, которая начинается с 51, 52, 53, 54 или 55 является MasterCard, а карты, которые начинаются с 56 нет. (Это на самом деле карта Maestro, которая является суббрендом MasterCard, но она по-прежнему технически раздельна - дебет, другой - кредит). Все, что не признано в публичной BIN, почти наверняка является карточкой лояльности.

Это может быть таблица базы данных, но это необязательно - вы можете легко скопировать ее в свое приложение. Но обязательно сделайте его регулируемым. MasterCard начнет вводить номера карт, которые начинаются с 2 в этом октябре ... если вы не можете изменить свое приложение, чтобы поддержать это, вы будете раздражать пользователей.

This table on Wikipedia имеет все основные диапазоны BIN. Существует также at least one company, который продает API, который выходит на гораздо более подробные сведения и хранится в гораздо большей степени, чем в Википедии.