I numeri di carta sembrano intercambiabili a colpo d’occhio, ma il loro formato di numero di carta di credito non è una sola forma ripetuta: la lunghezza cambia con la rete, le cifre iniziali hanno un significato e la cifra finale è aritmetica anziché assegnazione. Sapere come si incastrano i pezzi è ciò che ti permette di distinguere un numero ben formato da uno solo apparentemente plausibile, e spiega gran parte dei comportamenti di validazione strani che incontri nei moduli di pagamento.
Le sezioni seguenti scompongono il numero nelle sue parti, descrivono come leggere un numero raggruppato nel modo in cui viene stampato, e si concludono con i dettagli pratici che decidono se la gestione dell’input sopravvive al contatto con utenti reali.
Le tre parti di un numero di carta
Ogni numero di carta è una concatenazione di tre campi, scritti senza separatori quando viene memorizzato:
- Il prefisso emittente. Storicamente chiamato bank identification number e oggi indicato come issuer identification number, questo blocco iniziale dice al sistema di routing a quale rete appartiene la carta e, nella maggior parte dei casi, quale istituzione l’ha emessa. Non ha una larghezza fissa; sono in uso sia forme più corte sia più lunghe, e la lunghezza è registrata anziché supposta.
- Le cifre del conto. Questa è la parte assegnata dall’emittente. Il suo unico requisito è di essere unica all’interno dell’intervallo dell’emittente. Non è un numero cliente decodificabile, e due cifre consecutive del conto non hanno alcuna relazione tra loro.
- La cifra di controllo. Una cifra calcolata da tutte le altre con l’algoritmo di Luhn. Esiste per intercettare gli errori di battitura e nient’altro.
Letti insieme, il quadro è semplice: l’inizio del numero dice da dove viene la carta, il centro è assegnazione arbitraria e la fine è una protezione contro gli errori di battitura.
Perché i numeri di carta hanno lunghezze diverse?
La lunghezza non è mai stata standardizzata su un unico valore perché la numerazione delle carte è nata da diversi schemi nazionali e di settore, in seguito armonizzati anziché riscritti. Lo standard internazionale che governa il formato fissa un limite massimo di diciannove cifre e lascia la lunghezza esatta a ciascuna rete e prodotto.
In pratica incontri un piccolo insieme di lunghezze. Sedici cifre è la più comune ed è quella che le persone immaginano quando sentono la parola carta. Quindici cifre è lo standard per American Express. Esistono anche forme a tredici e quattordici cifre, in gran parte in prodotti più vecchi o regionali, e alcune reti usano una disposizione più lunga per particolari tipi di carta.
La conseguenza importante per la validazione è che una regola scritta come esattamente sedici cifre è sbagliata. Rifiuta carte autentiche e rifiuta anche dati di test perfettamente validi. Una regola corretta accetta un intervallo, confronta il prefisso con le aspettative di quella rete e solo allora esegue la somma di controllo.
Cosa ti dice la prima cifra?
La cifra iniziale è un marcatore di settore, non un nome di rete, e la mappatura è pubblica. Restringe il tipo di emittente che stai affrontando prima che il resto del prefisso identifichi il programma specifico.
| Cifra iniziale | Segmento di settore |
|---|---|
| 1 e 2 | Compagnie aeree |
| 3 | Viaggi e intrattenimento |
| 4 e 5 | Banche e finanza |
| 6 | Distribuzione e banche |
| 7 | Petrolio |
| 8 | Telecomunicazioni |
| 9 | Assegnazione nazionale |
La prima cifra da sola non identifica mai una rete. Gli intervalli delle carte vivono all’interno di quei segmenti: il numero quattro appartiene al segmento bancario, e un intervallo al suo interno è associato a una rete, mentre un intervallo diverso nello stesso segmento appartiene a un’altra. È per questo che il riconoscimento della marca necessita di più di una cifra, e che un rilevatore costruito sul solo primo carattere etichetterà male una quota sorprendente di input.
Come si legge un numero di carta raggruppato?
Su una carta e nella maggior parte delle interfacce le cifre appaiono in gruppi, e il raggruppamento segue la rete anziché una regola universale. Quattro gruppi da quattro è la disposizione familiare per una carta a sedici cifre; American Express è convenzionalmente mostrato come quattro, sei e cinque, in linea con le sue quindici cifre. Alcune interfacce separano il primo gruppo di sei per rendere visibile il prefisso emittente, altre lasciano il numero indiviso.
Per un lettore, il raggruppamento è un aiuto mnemonico. Per uno sviluppatore è solo presentazione, e la distinzione causa bug reali: un campo che rifiuta un numero incollato perché l’incolla conteneva spazi sta rifiutando il formato con cui la carta stessa è stampata. Memorizza le cifre, mostra i gruppi e converti tra i due ai margini.
Formattazione non è validazione
È allettante trattare una forma ben nota come prova di autenticità. Non lo è. Qualsiasi prefisso può essere combinato con qualsiasi cifra centrale e calcolata una cifra finale corrispondente, così una stringa che sembra esattamente una carta familiare può essere del tutto sintetica.
Tutto ciò che è descritto in questo articolo riguarda la struttura. Non dice nulla sul fatto che un conto esista, che una carta sia attiva o che un pagamento sarà approvato, perché nessuna di queste domande può essere risolta esaminando le cifre. Tutti i numeri prodotti dal generatore di questo sito rientrano esattamente in quella categoria: correttamente formati, mai emessi.
Per gli sviluppatori: ripulire l’input senza perdere informazioni
La verità scomoda sui campi dei numeri di carta è che gli utenti li digitano in modi imprevedibili. Incollano da un’email con spazi, includono un carattere finale da un campo precedente, digitano un trattino dove andrebbe uno spazio. Ripulire è necessario; farlo con noncuranza è il modo in cui un input valido viene distrutto.
Una sequenza praticabile è questa. Elimina gli spazi ai margini. Rimuovi i separatori che intendi tollerare anziché ogni carattere non numerico, così una lettera produce un errore chiaro invece di essere cancellata silenziosamente. Mantieni il risultato come stringa per tutta la sua vita, perché un tipo numerico eliminerà uno zero iniziale e cambierà il significato del valore. Confronta la lunghezza ripulita con l’intervallo della rete per il prefisso rilevato. Esegui la somma di controllo per ultima.
Poi decidi come mostrerai ciò che hai ricevuto. Un campo che si riformatta mentre l’utente digita è piacevole su una tastiera desktop e può essere apertamente ostile su un telefono, dove il cursore salta e il backspace si comporta in modo inatteso. Se raggruppi le cifre durante la digitazione, prova il caso di correggere un errore nel mezzo della stringa, non solo alla fine.
Tieni separati anche i messaggi di errore. Troppo corto, caratteri non supportati, prefisso sconosciuto e somma di controllo fallita sono quattro problemi diversi, e un modulo che li segnala tutti come “numero di carta non valido” rende il debug lento per l’utente e per te.
Verificare un numero nello strumento carte
Se ti serve un numero di una forma specifica — una rete, una lunghezza, un prefisso — il generatore di numeri di carta li produce senza un conto e ti lascia scegliere la rete esplicitamente o lasciare la scelta casuale. La modalità di completamento è utile quando possiedi già una parte di un valore e vuoi che le cifre sconosciute vengano riempite in modo coerente con il resto.
Due pagine correlate approfondiscono l’argomento. Il confronto tra reti elenca gli intervalli pubblicati e le lunghezze che li accompagnano, e la guida alla validazione trasforma i consigli sull’ordine esposti sopra in una sequenza concreta di controlli.
Passi successivi
Verifica un modulo esistente rispetto all’ordine qui descritto — lunghezza, poi caratteri, poi prefisso, poi somma di controllo — e conferma che ogni fallimento produca il proprio messaggio. Poi genera un piccolo insieme di numeri che copra deliberatamente più di una lunghezza, così la prossima persona che modifica la regola di validazione ha qualcosa su cui testare.