Doğrulama aracı neleri kontrol eder?
Bir kart numarasında, hiçbir bankaya sormadan kontrol edilebilecek üç şey vardır. Doğrulama aracı üçünü de çalıştırır ve her birinin sonucunu ayrı ayrı gösterir:
- Kartı çıkaran kuruluş (IIN) aralığı. İlk haneler kart ağını belirtir: Visa için 4, Mastercard için 51–55 veya 2221–2720, American Express için 34 veya 37, Discover için 6011/644–649/65, JCB için 3528–3589 gibi.
- Uzunluk. Her marka belirli uzunluklara izin verir: Amex’te 15 hane, Diners Club kartlarının çoğunda 14, diğerlerinin büyük kısmında 16; bazı Visa, Discover, JCB, UnionPay ve Maestro kartlarında ise 19 haneye kadar.
- Luhn kontrol toplamı. Son hane bir kontrol hanesidir. Luhn formülü, tek hanedeki tüm yazım hatalarını ve yan yana iki hanenin yer değiştirmesinin çoğunu yakalar.
Üç kontrolün üçü de geçerse numara doğru biçimlendirilmiş demektir. Bir web sitesinin kendi başına bilebileceği de bundan ibarettir: hesabın var olup olmadığını, açık olup olmadığını ve bakiyesini yalnızca kartı çıkaran banka bilir ve bunu ödeme onayı sırasında kontrol eder.
Adım adım Luhn algoritması
Aşağıda 4111 1111 1111 1111 test numarası için yapılan hesaplama yer alıyor. Sağdan başlayarak her ikinci hanenin iki katı alınır; iki katı 9’dan büyükse sonuçtan 9 çıkarılır. Ardından tüm değerler toplanır:
| Rakam | 4 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| İki katı alınır mı? | 8 | – | 2 | – | 2 | – | 2 | – | 2 | – | 2 | – | 2 | – | 2 | – |
| Eklenen değer | 8 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 |
Toplam 30. 30, 10’a tam bölündüğü için numara testi geçer. Tek bir haneyi değiştirdiğinizde toplam da değişir ve artık 10’un katı olmaz. Yukarıdaki araçta deneyin: değiştirilmiş numaranın hangi kontrol hanesine ihtiyaç duyduğunu görürsünüz.
Kart numarasının yapısı
| Bölüm | Haneler | Anlamı |
|---|---|---|
| Sektör tanımlayıcısı (MII) | 1. hane | Sektör: 3 seyahat ve eğlence, 4–5 bankacılık ve finans, 6 ticaret ve bankacılık |
| Kart çıkaran kuruluş numarası (IIN / BIN) | İlk 6–8 hane | Kart ağı ve banka, kart türü (kredi, banka kartı, ön ödemeli) ve ülke |
| Hesap tanımlayıcısı | Ortadaki haneler | Kartı çıkaran kuruluş tarafından her kart için belirlenir |
| Kontrol hanesi | Son hane | Diğer tüm hanelerden Luhn algoritmasıyla hesaplanır |
Kendi ödeme formunuzda kart numarası doğrulama: pratik ipuçları
Checkout formunuza kart doğrulaması eklerken aşağıdaki kurallar hem kullanıcı deneyimini iyileştirir hem de gereksiz retleri önler:
- Önce temizleyin: kontrol etmeden önce boşlukları ve tireleri silin; kullanıcılar numarayı karttaki gibi gruplar hâlinde yazar ya da yapıştırır.
- Sırayla kontrol edin: önce uzunluğu ve IIN’i, en son Luhn toplamını kontrol edin ve her durum için ayrı bir hata mesajı gösterin; “Geçersiz kart” yerine “Numara eksik görünüyor” demek çok daha yardımcıdır.
- Yazarken doğrulayın ama engellemeyin: anlık geri bildirim verin, fakat tanımadığınız BIN’leri reddetmeyin. Yeni aralıklar sürekli eklenir; Mastercard’ın 2 serisi buna iyi bir örnektir.
- Luhn yalnızca bir format kontrolüdür: kartın geçerli olup olmadığına son kararı ödeme altyapısı ve kartı çıkaran banka verir.
- Tam kart numarasını asla loglamayın: geliştirme ve staging ortamlarında tam numaraları kaydetmeyin veya saklamayın (PCI DSS); bunun yerine test kartı numaraları kullanın.
Kart numarası doğrulama ne zaman işe yarar?
- Bir ödeme formunun, müşterinin yazdığı numarayı neden reddettiğini bulmak için.
- Test fixture’larını ve örnek verileri içe aktarmadan önce kontrol etmek için.
- Kendi doğrulama kodunuzu bir referans uygulamayla karşılaştırmak için.
- Kart numaralarının nasıl oluşturulduğunu öğrenmek ve derste anlatmak için.
Testleriniz için numaraya ihtiyacınız varsa kredi kartı oluşturucu, son kullanma tarihi ve CVV içeren 1.000 adede kadar test kartını tek seferde üretir ve CSV, JSON veya XML olarak dışa aktarır. Unutmayın: bu numaralar doğrulamadan geçse bile kurgusal verilerdir ve canlı moddaki hiçbir ödeme altyapısı bunları ödeme olarak kabul etmez.
Sıkça sorulan sorular
Sonuç geçerli çıkarsa kart gerçek mi demektir?
Hayır. Doğrulama aracı yalnızca formatı kontrol eder. Hesabın var olup olmadığını, aktif olup olmadığını veya bakiyesini yalnızca kartı çıkaran banka, bir ödeme onayı sırasında bilebilir.
Buraya gerçek bir kart numarası yapıştırmak güvenli mi?
Kontrol, cihazınızda JavaScript ile yapılır ve numara sunucumuza hiç gönderilmez. Yine de iyi bir alışkanlık olarak, gerçek kart numaralarını gerekmedikçe hiçbir web sitesine yapıştırmayın.
Luhn algoritması hangi hataları yakalar?
Tek bir hanedeki tüm yazım hatalarını ve yan yana iki hanenin yer değiştirmesinin büyük kısmını yakalar. Formlar bu yüzden, ödeme gönderilmeden önce anında uyarı vermek için Luhn kontrolünü kullanır.
Numaram neden geçersiz görünüyor?
Çoğu zaman sebep bir yazım hatasıdır: tek bir yanlış hane Luhn toplamını bozar. Doğrulama aracı numaranın hangi kontrol hanesine ihtiyaç duyduğunu gösterir, böylece farkı hemen görebilirsiniz.