Do czego służy generator kart kredytowych

Generator kart kredytowych tworzy numery o budowie prawdziwych kart płatniczych. Każdy zaczyna się od zakresu należącego do wybranej sieci, na przykład 4 dla Visy, ma właściwą długość i kończy się cyfrą kontrolną policzoną algorytmem Luhna. Formularz płatności, który sprawdza numer przed wysłaniem, przyjmie go i rozpozna sieć.

Za wygenerowanym numerem nie stoi żadne konto, saldo ani zgoda banku, więc nie da się nim zapłacić. Generator nie łączy się z żadną bramką ani bankiem, a numery powstają w przeglądarce. Do testów przelewów przyda się generator IBAN, a do danych klienta generator PESEL albo generator danych testowych.

Jak wygenerować numer karty

  1. Wybierz sieć karty albo zostaw Dowolna sieć, żeby każdy numer dostał losową sieć.
  2. Wybierz zapis. Grupy cyfr wyglądają jak na karcie (American Express i Diners Club mają inny podział niż pozostałe), a zapis ciągły pasuje do baz danych.
  3. Zostaw włączoną opcję Data ważności i CVV, jeśli formularz wymaga wszystkich pól. Data zawsze wypada w ciągu najbliższych pięciu lat.
  4. Ustaw liczbę numerów, od 1 do 100, i kliknij Generuj numery. Pojedynczy numer skopiujesz ikoną obok niego.

Pliki CSV i JSON zawierają numer bez spacji, nazwę sieci oraz datę ważności i CVV, jeśli są włączone. Plik TXT ma same numery. Pod listą wyników jest walidator: wklej dowolny numer, a narzędzie sprawdzi sumę Luhna i rozpozna sieć.

Numery z generatora a sandbox bramki płatniczej

Bramki płatnicze w trybie testowym zwykle nie przyjmują dowolnego numeru z poprawną sumą Luhna. Każda ma własną listę numerów testowych w dokumentacji i od nich zależy wynik symulowanej płatności: akceptacja, odmowa albo prośba o 3-D Secure. Stripe podaje na przykład:

Visa
4242 4242 4242 4242
Mastercard
5555 5555 5555 4444
Data i CVC
dowolna przyszła data, np. 12/34, i dowolne 3 cyfry (4 dla American Express)

Numery z tego generatora przydają się wcześniej: przy testach formularza, maski wprowadzania, rozpoznawania sieci i walidacji po stronie przeglądarki i serwera, zanim dane trafią do bramki. Do testów integracji z konkretną bramką używaj numerów z jej dokumentacji.

Budowa numeru karty i zakresy sieci

Numer karty opisuje norma ISO/IEC 7812. Pierwsze cyfry to numer wydawcy (IIN, często nazywany BIN), po którym rozpoznaje się sieć i bank. Dalej jest numer rachunku karty, a na końcu cyfra kontrolna. Tak wyglądają zakresy sieci obsługiwanych przez generator:

Zakresy początkowych cyfr i długości numerów kart według sieci
Sieć Początek numeru Długość Generator
Visa 4 13, 16, 19 16 cyfr, 4-4-4-4
Mastercard 51–55, 2221–2720 16 16 cyfr, 4-4-4-4
American Express 34, 37 15 15 cyfr, 4-6-5
Maestro 5018, 5020, 5038, 5893, 6304, 6759, 6761–6763 12–19 16 cyfr, 4-4-4-4
Discover 6011, 644–649, 65 16–19 16 cyfr, 4-4-4-4
JCB 3528–3589 16–19 16 cyfr, 4-4-4-4
Diners Club 30, 36, 38, 39 14–19 14 cyfr, 4-6-4

Mastercard używa zakresu 2221–2720 od 2016 roku, więc formularz, który rozpoznaje Mastercard tylko po cyfrach 51–55, odrzuci część prawdziwych kart. To dobry przypadek testowy: wybierz Mastercard i wygeneruj kilkanaście numerów, a część z nich zacznie się od 2.

Jak działa algorytm Luhna

Algorytm opracował Hans Peter Luhn z IBM, a patent USA nr 2 950 048 udzielono mu w 1960 roku. Sprawdzenie numeru przebiega tak:

  1. Idąc od prawej, podwój co drugą cyfrę, zaczynając od przedostatniej.
  2. Jeśli po podwojeniu wyjdzie więcej niż 9, odejmij 9 (16 daje 7, 12 daje 3).
  3. Dodaj wszystkie cyfry, podwojone i niepodwojone.
  4. Numer jest poprawny, jeśli suma dzieli się przez 10.
Sprawdzenie numeru 4532148803436464 algorytmem Luhna
Cyfra 4 5 3 2 1 4 8 8 0 3 4 3 6 4 6 4
Po podwojeniu 8 6 2 16 0 8 12 12
Wynik 8 5 6 2 2 4 7 8 0 3 8 3 3 4 3 4

Dla numeru 4532 1488 0343 6464 suma wynosi 70, więc numer jest poprawny. Generator robi to samo w drugą stronę: losuje wszystkie cyfry oprócz ostatniej i dobiera ostatnią tak, żeby suma była wielokrotnością 10.

Algorytm Luhna wykrywa każdą pomyłkę w jednej cyfrze i prawie każdą zamianę dwóch sąsiednich cyfr. Nie zauważy zamiany 09 na 90. Nie jest też zabezpieczeniem: cyfrę kontrolną może policzyć każdy, więc poprawna suma mówi tylko, że numer nie ma literówki.

Walidacja w kodzie

JavaScript

function isValidCardNumber(input) {
  const digits = input.replace(/[\s-]/g, '');
  if (!/^\d{12,19}$/.test(digits)) return false;
  let sum = 0;
  for (let i = 0; i < digits.length; i++) {
    let d = Number(digits[digits.length - 1 - i]);
    if (i % 2 === 1) {
      d *= 2;
      if (d > 9) d -= 9;
    }
    sum += d;
  }
  return sum % 10 === 0;
}

isValidCardNumber('4532 1488 0343 6464'); // true

Data ważności i kod CVV

Formularze płatności zwykle wymagają też daty ważności i trzycyfrowego kodu z tyłu karty (w American Express czterocyfrowego, z przodu). Generator dopisuje do każdego numeru datę z najbliższych pięciu lat i losowy kod.

CVV nie da się policzyć ani sprawdzić wzorem. Wylicza go bank wydawcy z numeru karty, daty ważności i tajnych kluczy, a weryfikuje dopiero podczas autoryzacji płatności. Formularz może więc sprawdzić tylko długość kodu: 3 cyfry albo 4 dla American Express.

Co warto przetestować w formularzu płatności

  • Rozpoznawanie sieci po pierwszych cyfrach, także Mastercard z zakresu 2221–2720 i kart innych niż Visa i Mastercard.
  • Długość numeru: 15 cyfr American Express i 14 cyfr Diners Club obok standardowych 16.
  • Maskę wprowadzania, która wstawia spacje w innych miejscach dla American Express (4-6-5) i dla pozostałych kart (4-4-4-4).
  • Odrzucanie literówek: zmień jedną cyfrę wygenerowanego numeru, a walidator powinien zgłosić błąd.
  • Pole CVV, które dla American Express wymaga 4 cyfr, a dla pozostałych sieci 3.

Numery testowe też warto traktować jak dane kart: nie zapisywać ich w logach ani w zrzutach błędów. Dzięki temu ten sam kod nie zacznie przypadkiem logować prawdziwych numerów po wdrożeniu. Zasady przechowywania danych kart opisuje standard PCI DSS.

Często zadawane pytania

Czy wygenerowanym numerem można zapłacić?

Nie. Numer z poprawną sumą Luhna to tylko ciąg cyfr o dobrej budowie. Nie ma za nim konta ani zgody banku na płatność, a data ważności i CVV są losowe. Próba zapłaty takim numerem zostanie odrzucona, a używanie cudzych lub zmyślonych danych karty do płatności jest niezgodne z prawem.

Czy wygenerowane numery zadziałają w sandboksie bramki płatniczej?

Zwykle nie. Bramki płatnicze w trybie testowym przyjmują własne numery testowe, opisane w ich dokumentacji. Stripe podaje na przykład 4242 4242 4242 4242 dla Visy i 5555 5555 5555 4444 dla Mastercard. Ten generator przydaje się do testów formularzy i walidacji przed wysłaniem danych do bramki.

Czy numer może przypadkiem należeć do prawdziwej karty?

Może. Generator używa prawdziwych zakresów numerów sieci i losuje resztę cyfr, a nie sprawdza ich w żadnym banku. Bez prawdziwej daty ważności i kodu CVV taki numer nie wystarcza do płatności, ale i tak nie należy go używać poza testami.

Skąd się bierze kod CVV?

CVV wylicza bank wydawcy z numeru karty, daty ważności i tajnych kluczy, których nikt poza bankiem nie zna. Dlatego nie da się go sprawdzić żadnym wzorem. Generator po prostu losuje 3 cyfry, a dla American Express 4.

Jak rozpoznać sieć karty po numerze?

Po pierwszych cyfrach. Visa zaczyna się od 4, Mastercard od 51–55 albo 2221–2720, American Express od 34 lub 37. Pełna tabela zakresów jest na tej stronie, a walidator w narzędziu rozpoznaje sieć w trakcie wpisywania.

Czy algorytm Luhna wykrywa każdy błąd?

Nie. Wykrywa każdą pomyłkę w jednej cyfrze i prawie każdą zamianę dwóch sąsiednich cyfr, ale nie zauważy zamiany 09 na 90. Nie chroni też przed celowym podrobieniem numeru, bo poprawną cyfrę kontrolną każdy może policzyć sam.