Есть ли ХОРОШАЯ причина, почему многие веб-сайты не принимают кредитные карты с пробелами и тире в них?

Существует ли какая-либо техническая/юридическая/финансовая/контрактная/конструктивная причина не принимать номера кредитных карт с пробелами в них?

Так много веб-сайтов не позволяют вам помещать пробелы или тире в номер кредитной карты. Я всегда ставил это на неряшливое программирование, но раньше я использовал торговые API. Если вы можете выяснить, как обрабатывать кредитную карту, вы можете выяснить, как удалить символы из строки. Дизайнеры знают, что они генерируют разочарование пользователя, потому что они помещают предупреждение прямо на веб-сайт. Они прямо на карте! Там даже стена стыда для этого.

Ложная лень, плохое программирование, черствость, садизм... все это воспринимает худшее в человеке, выполняющем код. Самые щедрые, которые я могу придумать, - они действительно консервативны с чем-то, что связано с деньгами. Я всегда задавался вопросом, есть ли какая-то глубокая и действительно важная причина, почему вы не должны принимать номера кредитных карт с пробелами в них? Почему вы не должны пытаться применять какие-либо эвристики. Может быть, какое-то причудливое финансовое право, относящееся к телеграфному возрасту? Возможно, они невоспетые герои, защищая нас от какого-то неизвестного зла, чтобы три раза не вводить номер кредитной карты Хастура.

Ответ 1

На самом деле нет веской причины, что это лень или временные ограничения.

Хороший пользовательский интерфейс должен адаптироваться к пользователю и несколько способов, которыми пользователи могут думать о своих данных.

Для пользовательского интерфейса достаточно легко адаптироваться к пользователю, введя тире или пробелы в кредитной карте.

Ответ 2

Моим первым ответом было бы "уменьшить сложность до абсолютного минимума", но я думаю, вы также можете утверждать, что он запутывает данные, если где-то есть поверхность атаки - изворотливый маршрутизатор/сниффер/человек в -middle - "xxxx xxxx xxxx xxxx" - почти наверняка номер кредитной карты, но "xxxxxxxxxxxxxxxx" может быть несколько вещей. Конечно, это не сдержит много решительных взломов и, надеюсь, в значительной степени смягчается SSL и т.д.

Я подчеркиваю, я не думаю, что это хорошая причина, но это может быть причина...

Ответ 3

Не все имеет вескую причину. Я просто думаю, что первый парень, который сделал это, не допускал пробелов, потому что это было легче; и затем все последовали и не стали сомневаться в этом.

Ответ 4

Я не помню ничего в своем торговом соглашении, в котором указано, что пользователи должны были ввести в поле формы, запрашивая номер кредитной карты. Я не очень стараюсь нормализовать его, но я удаляю пробелы и дефисы. Существуют правила о том, что вы можете повторно отобразить, но это всего лишь количество контента, а не точная форма.

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

В основном я думаю, что это в основном проблема промежуточного программного обеспечения. У вас есть интерфейс, разработанный одной группой, бэкэнд, разработанный другим, и между ними есть готовый компонент промежуточного программного обеспечения, которому никто не нравится, и каждый должен настроить таргетинг. Среднее программное обеспечение написано настолько строго, насколько возможно, думая, что ответственность обеих сторон за нормализацию всех данных. Затем начинается перфорирование, и все начинают плакать, и вы не можете использовать пробелы в своем номере кредитной карты.

Ответ 5

Я думаю, что это просто вопрос лени и менее программирование, потому что можно заставить его принять с AND без тире. или даже создавать разные текстовые поля для каждой части (используя 4 или 5 небольших текстовых полей вместо использования гигантского текстового поля. или, может быть, просто потому, что люди могут запутаться

Ответ 6

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

Это еще более запутанно, учитывая, что каждый тип карты (Visa/MC/Amex/Discover) имеет уникальную кодировку, используя контрольные цифры, Поэтому, когда я ввожу номер кредитной карты и выбираю VISA в качестве типа карты, интеллектуальный валидатор проверяет, что номер является номером Visa. Итак, если вы собираетесь правильно проверить номер CC, вам придется удалить нецифровые цифры из любой строки, предоставленной пользователем.

Есть три основные причины, по которым я могу думать о том, почему проверка карты выполняется плохо:

  • Проверьте правильность проверки, которая не предполагает отсутствие номеров.
  • ленивый/проблемный программист передает все аргументы без предварительной проверки на платежный шлюз и позволяет шлюзу проверять информацию о кредитной карте. Платежный шлюз гораздо более жестко связан с его проверкой аргументов/данных, тогда должен быть пользовательский интерфейс.
  • Непонимание о мнимых юридических последствиях изменения данных, предоставленных пользователем cc.