Ciao a tutti, sto cercando di programmare il sito di un negozio on-line che vende cappelli pagabili tramite paypal.Ho strutturato un magazzino che tiene il conto del numero di cappelli rimasti, ogni volta che viene fatta una richiesta si controllano le giacenze e ,nel caso in cui la disponibilita' e' maggiore o uguale alla richiesta, si procede con il pagamento altrimenti no.Appare evidente che l'aggiornamento delle mie giacenze lo devo fare dopo che l'utente che effettivamente pagato, per far cio', poiche paypal ti da la possibilita' di decidere la pagina dove ridirigere il cliente dopo aver effettuato il pagamento, redigo il cliente ad una pagina di "ringraziamenti" che in realta' mi aggiorna le giacence nel magazzino. Se le disponibilita' ci sono avremo queste fasi:
richiesta N cappelli => controllo disponibilita' => pagamento N cappelli => aggiornamento giacenza
Ora i miei problemi sono 2:
1)Nel mio magazzino rimangono 10 cappelli. L'utente pippo decide di comprare 10 cappelli, invia la richiesta, viene fatto il controllo nel magazzino ed inizia la procedura di pagamento. Mentre pippo sta immettendo i dati per pagare arriva paperino che chiede anche lui 10 cappelli, poiche' il db non e' stato ancora aggiornato il controllo della disponibilita' risulta TRUE ed anche paperino comincia ad immettere i dati per pagare.Contemporaneamente pippo ha finito di pagare ed e' arrivato alla famosa pagina di "ringraziamenti" quindi mi ha aggiornato il magazzino a 0;successivamente anche paperino finisce le procedure di pagamento ad arriva alla pagina di "ringraziamenti" risultato? Ho venduto 10 cappelli a pippo e 10 a paperino avendone solo 10 in magazzino; come posso evitare questo spiacevole inconveniente?
2)Nel mio magazzino ci sono 1000 cappelli. L'utente pippo compra 10 cappelli segue tutta la procedura ed arriva alla famosa pagina di "ringraziamenti" ma che in realta' mi aggiorna il magazzino sottraendo i 10 cappelli di pippo dai 1000 rimasti dal magazzino (900).Ora il mio buon pippo cosa fa? comincia a premere F5 a "rotella" aggiornando la pagina ogni volta e sottraendo 10 cappelli dal magazzino senza averli comprati.........Come risolvo questo problema?
Vi ringrazio anticipatamente per i vostri interventi