2009-12-13 14 views
11

Esiste un motivo tecnico/legale/finanziario/contrattuale/di progettazione per non accettare i numeri delle carte di credito con spazi all'interno?C'è un buon motivo per cui molti siti Web non accettano carte di credito con spazi e trattini?

Così tanti siti Web non consentono di inserire spazi o trattini in un numero di carta di credito. L'ho sempre messo in una programmazione sciatta, ma ho già usato le API merchant. Se riesci a capire come elaborare una carta di credito, puoi capire come estrarre i caratteri da una stringa. I progettisti sanno che stanno generando una frustrazione per l'utente perché hanno messo un avvertimento sul sito web. Sono proprio lì sulla carta! C'è anche un wall of shame per questo.

Falso pigrizia, cattiva programmazione, insensibilità, sadismo ... tutti questi assumono il peggio nella persona che fa il codice. Il più generoso che posso inventare è che sono in realtà conservatore con qualsiasi cosa coinvolga denaro. Mi sono sempre chiesto se ci sia un motivo profondo e davvero importante per cui non dovresti accettare i numeri delle carte di credito con spazi all'interno di essi? Perché non dovresti assolutamente provare ad applicare alcuna euristica. Forse qualche bizzarra legge finanziaria risalente all'era del telegrafo? Forse sono eroi non celebrati, che ci proteggono da un male sconosciuto per paura di digitare il numero di carta di credito di Hastur tre volte.

+2

Beh, non si può certo essere restrizioni della larghezza di banda. –

+7

Penso che la definizione di "programmazione correlata" qui intorno sia un po 'fascista. Questioni che non sono direttamente collegate agli aspetti tecnici della programmazione, ma sono chiaramente le cose che molti programmatori devono affrontare nel corso del loro lavoro hanno un posto legittimo su SO. Questo chiaramente è legato alla programmazione da qualsiasi ragionevole definizione mentre sta cercando di capire perché i siti web sono ** programmati ** come sono. – dsimcha

+3

Riaprire. Vedi: http://meta.stackexchange.com/questions/5018/describing-close-reasons "not programming related": "Le domande su stackoverflow.com si riferiscono generalmente alla programmazione Questa domanda è molto lontana dalla programmazione. "... Dicendo che questa domanda è * MOLTO FAR AFIELD * è ridicolo. –

risposta

0

Non tutto ha un motivo valido. Penso semplicemente che il primo che l'ha fatto non ha permesso spazi perché è stato più facile; e poi tutti hanno seguito e non l'hanno messo in discussione.

+2

Tutto ha una ragione. Non tutto ha una ragione buona o valida. :) –

0

Non ricordo nulla nel mio accordo commerciale che stabiliva ciò che gli utenti dovevano inserire in un campo modulo per chiedere un numero di carta di credito. Non faccio di tutto per normalizzarlo, ma rimuovo spazi bianchi e trattini. Ci sono delle regole su ciò che puoi ri-visualizzare, ma quella è solo una quantità di contenuto e non una forma precisa.

Vedrai cose simili per numeri di telefono e numeri di previdenza sociale, quindi, non penso che sia un problema con il numero di carta di credito.

Principalmente penso che questo sia principalmente un problema di middleware. Avete il front-end sviluppato da un gruppo, il back-end sviluppato da un altro, e tra di essi c'è un componente middleware standard che a nessuno piace e che ognuno deve indirizzare. Il middleware è scritto il più rigorosamente possibile pensando che è responsabilità di entrambe le parti normalizzare tutti i dati. Poi inizia la presa delle dita e tutti vanno a casa piangendo e non è possibile utilizzare gli spazi nel numero di carta di credito.

8

Non c'è davvero nessuna buona ragione per altri che la pigrizia o i limiti di tempo.

Le buone UI devono adattarsi all'utente e ai molteplici modi in cui gli utenti pensano ai propri dati.

È abbastanza facile per l'interfaccia utente adattarsi all'utente che immette trattini o spazi nella carta di credito.

+1

Sì, è solo un'interfaccia utente. Forniscile con i campi dell'indirizzo che non ti aspetti di aggiungere virgole dopo i nomi, così finisci con le doppie virgole. E i campi data che ti costringono a digitare "02 09 2009" quando il 2 9 09 sarebbe altrettanto significativo e corretto. E pagine che dimenticano la metà dei dettagli che hai digitato se ottieni uno dei "torti" sopra. –

1

La mia prima risposta sarebbe "ridurre la complessità al minimo assoluto", ma suppongo che si possa anche obiettare che offusca i dati se c'è una superficie di attacco da qualche parte - un router/sniffer/uomo-ingannevole the-middle - "xxxx xxxx xxxx xxxx" è quasi certamente un numero di carta di credito, ma "xxxxxxxxxxxxxxxx" potrebbe essere un numero di cose. Naturalmente, questo non si terrà l'hacking indietro molto determinato, e si spera è in gran parte mitigato dalla SSL ecc

sottolineo, non credo che questa sia una buona ragione, ma può essere un motivo ...

+0

Ovviamente l'elaborazione potrebbe (e dovrebbe in questo caso) essere eseguita lato client, quindi la versione formattata non lascia mai la macchina ...Ma penso che l'invio di numeri di carta di credito in chiaro sia assolutamente scandaloso. – KernelJ

+0

@KernelJ - chi ha menzionato il testo in chiaro? Ho detto SSL. –

+0

Se il tuo dodgy router sta generando numeri di carta di credito validi, mettilo su EBay e vai in pensione. : P – Schwern

-1

Penso che sia solo una questione di pigrizia e meno programmazione perché si può fare accettare con E senza trattino. o persino creare caselle di testo diverse per ciascuna parte (utilizzando 4 o 5 caselle di testo piccole anziché utilizzare una casella di testo gigante.) o forse è solo perché le persone potrebbero confondersi

+1

Oooh, le singole caselle sono più malvagie che buone a causa della disparità di lunghezza e layout dei numeri delle carte di credito. Una carta AmEx, ad esempio, utilizza 3 gruppi. Sono sicuro che potresti inventare una sorta di intelligente Javascripty che ha cambiato il layout della scatola in base al tipo di carta di credito, ma sono sicuro che lascerai alcuni utenti che non penseranno di impostare il tipo prima il numero perplesso. – Schwern

-1

Ho sempre trovato questo molto strano dal suo banale per rimuovere non cifre da una stringa.

Questo è ancora più confusa, dato che ogni tipo di carta (Visa/MC/Amex/Discover) ha una codifica unica utilizzando check digits. Così, quando entro in un numero di carta di credito e selezionare VISA come tipo di carta un validatore intelligente verificherà che il numero È un numero Visa. Quindi, se hai intenzione di convalidare correttamente un numero CC, dovrai rimuovere le non-cifre da qualsiasi stringa fornita dall'utente.

Ci sono tre ragioni principali che posso pensare perché la validazione carta viene eseguito in modo insoddisfacente:

  • controllo di convalida cifre che non anticipare i non-numeri.
  • Un programmatore pigro/in difficoltà passa tutti gli argomenti senza pre-convalida a un gateway di pagamento e consente al gateway di convalidare le informazioni della carta di credito. Un gateway di pagamento è molto più rigido con il suo argomento/convalida dei dati, quindi dovrebbe essere un'interfaccia utente.
  • Errori sulle implicazioni legali immaginarie della modifica dei dati cc forniti dall'utente.
+2

In realtà, le cifre delle cifre di controllo non sono diverse tra le carte. Quasi tutti usano l'algoritmo di Luhn (e questo non codifica nulla). Puoi distinguere i numeri di carta validi dalle prime cifre, a volte persino identificando la banca emittente. –

Problemi correlati