Перейти к содержимому
Tutorial

Подтвердите кредитные карты с помощью проверки Луна за один вызов API

| 5 min read

Выявляйте опечатки и подделки номеров карт до того, как они попадут в вашу платежную систему. Один POST возвращает действительность Luhn, бренд (Visa, Mastercard, Amex) и кредит или дебет. Уровень бесплатного пользования, без SDK.

Payment cards representing credit card validation at checkout
Photo by CardMapr.nl on Unsplash

Опечатка в номере карты обходится вам дважды: пользователь видит сбивчивое сообщение об отказе, а ваш процессор взимает комиссию за неудавшуюся авторизацию. Вы можете поймать большинство из них до того, как они покинут территорию. браузер. Алгоритм Луна представляет собой контрольную сумму, которой удовлетворяет каждый действительный номер карты, поэтому число, которому в случае неудачи он гарантированно недействителен и никогда не должен достигать Stripe или Adyen.

Эта конечная точка запускает проверку Луна и определяет марку карты за один POST. Вот полный вызов.

Запрос

Отправьте номер в виде строки. Пробелы и тире удаляются автоматически, поэтому 4111 1111 1111 1111 и 4111-1111-1111-1111 оба работают. Ответ говорит вам три вещи:

  • valid: проходит контрольная сумма Луна или нет.
  • brand: Visa, Mastercard, Amex, Discover, JCB, Diners Club или UnionPay.
  • type: кредит или дебет, от идентификационного номера эмитента.

Подтвердите при оформлении заказа в Node.js

Вызовите конечную точку, прежде чем отправлять что-либо на свой процессор. Неудачная проверка Луна возвращает чистый результат. ошибку, которую вы можете показать пользователю, и вы пропустите плату за авторизацию, которую пришлось бы заплатить за поддельный номер:

Блокировка неправильного ввода в форме React

Форма React Hook запускает асинхронный валидатор перед отправкой, поэтому недопустимый номер никогда не запускает заказ. Переведите вызов прямо на register:

Держите область PCI небольшой. Конструкция с наименьшим риском токенизирует карту в браузере посредством ваш процессор и проверяет только первые цифры логотипа бренда. Запустить полный проверка на стороне сервера, когда она вам действительно нужна, а не при каждом нажатии клавиши, и никогда не регистрируйте полное число.

Что он делает и чего не говорит вам

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

Валидатор кредитных карт — одна из примерно 200 специализированных конечных точек на botoi, наряду с IBAN и НДС проверка для остальной части вашего платежного потока. Все они находятся за одним ключом API с 5 запрос/мин бесплатно. Попробуйте позвонить в интерактивная игровая площадка или подключите MCP-сервер для проверки карт от Клода.

FAQ

Что на самом деле доказывает проверка Луна?
Алгоритм Луна представляет собой контрольную сумму, которая выявляет опечатки и случайно сгенерированные подделки. Номер, который не соответствует требованиям Luhn, гарантированно недействителен, поэтому вы можете отклонить его до того, как он достигнет вашего платежного процессора. Число, которое передает Лун, имеет правильный формат, но это не означает, что карта существует или на ней имеются средства. Это подтверждается только авторизацией через ваш процессор. Используйте Luhn для дешевой фильтрации очевидного мусора, а затем позвольте Stripe или Adyen взять на себя реальную работу.
Сохраняет ли API номера отправляемых мной карт?
Нет. Номер проверяется на стороне сервера и никогда не сохраняется и не протоколируется. Тем не менее, разумный подход заключается в том, чтобы вообще никогда не отправлять по сети полный PAN. Запустите обнаружение бренда на стороне клиента, состоящего из первых 6–8 цифр пользовательского интерфейса, и зарезервируйте вызов полной проверки для случаев, когда он вам действительно нужен на стороне сервера, вне области PCI.
Какие марки карт он определяет?
Visa, Mastercard, American Express, Discover, JCB, Diners Club и UnionPay на основе идентификационного номера эмитента (начальные цифры). В ответе также сообщается, выглядит ли номер как кредитный или дебетовый продукт, что полезно для логики маршрутизации или надбавки, где это различие имеет значение.
Могу ли я отображать логотип бренда карты при вводе текста пользователем?
Да, и это наиболее ценное использование. Определите бренд по первым нескольким цифрам и замените соответствующий логотип до того, как пользователь закончит печатать. Это убеждает пользователя в том, что форма работает, и снижает вероятность того, что моя карта принята? билеты поддержки. Отклоните вызов или запустите обнаружение бренда на префиксе локально и зарезервируйте полную проверку для отправки.
Достаточно ли проверки Луна для проверки соответствия PCI?
Нет. Проверка Луна — это проверка входных данных, а не контроль соответствия. Если ваши серверы касаются полного номера карты, вы находитесь в области PCI независимо от проверки. Самый простой вариант — токенизация через процессор в браузере и проверка только префикса для пользовательского интерфейса. Этот API помогает на уровне проверки; это не меняет ваших обязательств по объему.

Начните разработку с botoi

150+ API-эндпоинтов для поиска, обработки текста, генерации изображений и утилит для разработчиков. Бесплатный тариф, без банковской карты.