Ieri ho fatto un miniacquisto all’Esselunga, visto che ormai siamo in fase 3, e sono andato a pagare alle casse automatiche. Qualcosa nel tempo l’ho imparato: quando seleziono il pagamento con Satispay, la schermata rimane stolidamente immobile e devo partire dal principio che il sistema stia aspettando che io tiri fuori il telefono e invii il pagamento. Diciamo che questo è un classico problema di interfaccia utente.
Quello che mi è successo stavolta è diverso. Ho inquadrato il codice a barre della tessera Fìdaty (sempre sul telefono), e l’ho inquadrato una seconda volta visto che non era apparentemente successo nulla. Subito è comparso un messaggio di errore: “Tessera passata due volte” e un pulsantone “Assistenza” che ho anche cliccato senza alcun risultato. Come capita spesso, l’unico modo per farmi notare è stato sbracciarmi. Ora, che l’interfaccia utente sia malfatta e non indichi che lo stato del sistema è mutato è un fatto. Ma il vero problema è un altro. Pensateci un attimo: qual è il problema pratico se la stessa carta fedeltà viene passata due, tre, quarantadue volte? Non stiamo facendo un pagamento. Quello che dovrebbe succedere in pratica è che il campo “carta_fedelta” può avere il valore NULL oppure un numero di tessera; il default è NULL e ogni volta che passi una tessera il valore viene sovrascritto. Matematicamente, l’inserzione di un numero di tessera dovrebbe insomma essere idempotente: in formule, A²=A. E invece nulla. Ma chi è che ha scritto quel codice?
Azzardo una spiegazione: la transazione avviene tramite HTTP, e se non ricevi a fronte della POST la validazione della Fidaty non puoi farne un altra fino a quando non ricevi (N)ACK. Dietro c’è un motore che serializza tutte le transazioni (perché così è molto più semplice). Succede anche in diversi siti.
questo potrebbe avere un senso (anche se potresti bufferizzare le transazioni a questo punto), ma allora cambia la schermata quando hai ricevuto i dati, un po’ come fanno i bancomat che hanno una sfilza di “attendere prego”…
Il pulsante “assistenza” non fa altro che accendere una lucina sopra la cassa automatica. È totalmente finto, un po’ come quei bottoni per chiudere le porte degli ascensori
Ah ah ah mi chiedo anche io lo stesso quando vado all’Esselunga (l’ultima volta era gennaio purtroppo).
Da Sainsbury’s le casse automatiche sono fatte bene, il software non ha passaggi obbligati e l’interfaccia non è stata fatta da ingegneri scorbutici. È rarissimo che si intoppi.