Il nostro cliente vende diversi prodotti in un negozio online (il nostro software) per un prezzo particolarmente basso al primo acquisto. Ulteriori acquisti di ciascun prodotto rientreranno nel prezzo normale.
es. il prodotto costa 10 EUR al primo acquisto (quantità fissata a 1) e 20 EUR ciascuno sugli acquisti successivi (qualsiasi quantità).
Per impedire ai clienti di giocare brutti scherzi e tentare di ordinare i prodotti più di una volta, confrontiamo e-mail, nome / indirizzo prima di accettare qualsiasi ordine. Anche se ci sono ancora modi per aggirare questo, blocciamo la maggior parte dei tentativi ingenui. Di conseguenza, i clienti di solito ordinano una volta e non tornano mai più (va bene, il loro unico scopo è la promozione del prodotto).
Tuttavia, abbiamo appena riscontrato un caso in cui un cliente ha ingannato il nostro sistema. Ma prima, lascia che ti spieghi come funziona il nostro checkout: quando premi il pulsante "acquista", generiamo una transazione unica con tutti i dettagli dell'ordine e reindirizza il cliente al gateway di pagamento (ad esempio PayPal Standard). Non appena riceviamo una notifica di pagamento valida e di successo dal fornitore di servizi di pagamento (ad esempio PayPal IPN), questa transazione viene convertita in un ordine effettivo. Poiché i prodotti ordinati sono ora considerati acquistati, bloccheremmo ulteriori tentativi di acquisto per il prezzo più basso.
Il cliente ha fatto quanto segue per ingannare la convalida: ha aperto una seconda scheda del browser della pagina di riepilogo con "pulsante Acquista". Ha premuto il pulsante "Acquista" in ogni scheda con due schede del browser (1a scheda con ID transazione 1234 e 2a scheda con ID transazione 1235 - stessa sessione). Il cliente ha quindi pagato entrambe le transazioni (ad esempio su PayPal) e ha quindi generato correttamente due ordini con gli stessi prodotti per il prezzo basso.
Anche se è possibile rilevare un caso del genere o addirittura negare il secondo acquisto qui (convalida aggiuntiva dopo la notifica di pagamento), dovremmo comunque occuparci del denaro pagato dal cliente. C'è un modo tecnico per impedire che un acquisto simultaneo inizi con?