Apa yang diperiksa validator
Ada tiga hal yang bisa dicek dari sebuah nomor kartu tanpa menghubungi bank. Validator ini menjalankan ketiganya dan menampilkan hasil masing-masing:
- Rentang penerbit (IIN). Digit pertama menunjukkan jaringan kartunya: 4 untuk Visa, 51–55 atau 2221–2720 untuk Mastercard, 34 atau 37 untuk American Express, 6011/644–649/65 untuk Discover, 3528–3589 untuk JCB, dan seterusnya.
- Panjang nomor. Setiap merek hanya mengizinkan panjang tertentu: 15 digit untuk Amex, 14 untuk sebagian besar Diners Club, 16 untuk kebanyakan merek lain, dan hingga 19 untuk sebagian kartu Visa, Discover, JCB, UnionPay, dan Maestro.
- Checksum Luhn. Digit terakhir adalah digit pemeriksa. Rumus Luhn menangkap setiap salah ketik pada satu digit dan sebagian besar pertukaran dua digit yang bersebelahan.
Jika ketiganya lolos, nomor tersebut berformat benar. Hanya itu yang bisa diketahui sebuah situs secara mandiri: apakah rekeningnya ada, masih aktif, dan memiliki dana hanya diketahui bank penerbit, dan itu baru diperiksa saat pembayaran diotorisasi.
Algoritma Luhn, langkah demi langkah
Berikut perhitungan untuk nomor uji 4111 1111 1111 1111. Setiap digit kedua dari kanan digandakan; jika hasilnya lebih dari 9, dikurangi 9. Lalu semua nilai dijumlahkan:
| Digit | 4 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Digandakan? | 8 | – | 2 | – | 2 | – | 2 | – | 2 | – | 2 | – | 2 | – | 2 | – |
| Nilai yang dijumlahkan | 8 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 |
Totalnya 30. Karena 30 habis dibagi 10, nomor ini lolos. Jika Anda mengubah satu digit saja, totalnya ikut berubah dan tidak lagi kelipatan 10 — coba di validator di atas untuk melihat digit pemeriksa yang dibutuhkan nomor yang sudah diubah.
Struktur nomor kartu
| Bagian | Digit | Arti |
|---|---|---|
| Major Industry Identifier (MII) | Ke-1 | Industri: 3 perjalanan & hiburan, 4–5 perbankan & keuangan, 6 perdagangan & perbankan |
| Nomor identifikasi penerbit (IIN / BIN) | 6–8 pertama | Jaringan dan bank penerbit, jenis kartu (kredit, debit, prabayar), dan negara |
| Identitas rekening | Digit tengah | Ditentukan penerbit untuk masing-masing kartu |
| Digit pemeriksa | Terakhir | Dihitung dengan algoritma Luhn dari semua digit lainnya |
Tips memvalidasi nomor kartu di formulir checkout Anda
Jika Anda membangun validasi kartu sendiri, beberapa kebiasaan berikut membuat checkout lebih ramah pengguna sekaligus lebih aman:
- Bersihkan input dulu. Hapus spasi dan tanda hubung sebelum memeriksa, karena banyak orang mengetik nomor kartu dalam kelompok empat digit.
- Cek panjang dan IIN sebelum Luhn. Dengan begitu Anda bisa memberi pesan kesalahan yang spesifik, misalnya «nomor terlalu pendek» atau «merek kartu tidak didukung», bukan sekadar «nomor tidak valid».
- Validasi sambil pengguna mengetik, tetapi jangan memblokir BIN yang belum dikenal. Rentang baru terus bermunculan — seperti Mastercard seri 2 — dan daftar yang usang akan menolak pelanggan yang sah.
- Ingat bahwa Luhn hanya cek format. Keputusan akhir tetap ada di payment gateway dan bank penerbit saat otorisasi.
- Jangan pernah mencatat atau menyimpan nomor kartu lengkap di lingkungan dev atau staging. Itu menyeret sistem Anda ke cakupan PCI DSS; pakai nomor kartu uji sebagai gantinya.
Kapan memakai validator kartu kredit
- Mencari tahu mengapa formulir checkout menolak nomor yang diketik pelanggan.
- Memeriksa fixture dan data uji sebelum diimpor.
- Membandingkan kode validasi Anda sendiri dengan implementasi acuan.
- Mempelajari atau mengajarkan cara nomor kartu disusun.
Kalau yang Anda butuhkan adalah nomor untuk testing, generator kartu kredit kami bisa membuat hingga 1.000 kartu uji sekaligus, lengkap dengan tanggal kedaluwarsa dan CVV, siap diekspor ke CSV, JSON, atau XML. Ingat, meskipun lolos validasi ini, nomor tersebut tetap data fiktif: tidak ada payment gateway dalam mode live yang akan menerimanya sebagai pembayaran.
Pertanyaan yang sering diajukan
Kalau hasilnya valid, apakah kartunya benar-benar ada?
Tidak. Validator hanya memeriksa format. Apakah rekeningnya ada, masih aktif, atau memiliki dana hanya bisa dipastikan oleh bank penerbit melalui otorisasi pembayaran.
Amankah menempelkan nomor kartu asli di sini?
Pengecekan dijalankan dengan JavaScript di perangkat Anda dan nomornya tidak pernah dikirim ke server kami. Meski begitu, sebagai kebiasaan yang baik, jangan menempelkan nomor kartu asli ke situs mana pun bila tidak perlu.
Kesalahan apa saja yang terdeteksi oleh algoritma Luhn?
Algoritma ini menangkap semua salah ketik pada satu digit dan sebagian besar pertukaran dua digit yang bersebelahan. Itulah sebabnya formulir memakainya untuk memberi peringatan instan sebelum pembayaran dikirim.
Mengapa nomor saya dinyatakan tidak valid?
Biasanya karena salah ketik: satu digit yang keliru sudah cukup membuat jumlah Luhn gagal. Validator menunjukkan digit pemeriksa yang seharusnya, jadi Anda langsung tahu di mana bedanya.