Cao
A sto nesacuvas podatke o uplati koja ide na paypal u bazu. Zatim paypalu saljes svoj verifikacioni broj (koji je vec povezan sa korisnikom (recimo tvoj id korisnika) ).
Na taj nacin te nije briga kad ce uplata biti obavljena i da li ce korisnik slucajno posle placanja da ugasi browser pa ti uopste neces ni dobiti informaciju da je on platio. Imaces taj verifikacioni broj na osnovu koga mozes da pratis uplatu. A kad (i ako) se vrati na tvoju welcome stranu onda jednostano obrisi taj record iz trenutne tabele i premesti ga u pravu tabelu (gde pratis uplate).
Na taj nacin ti nuliras efekat refresh-a i redirektovanja na drugu stranu (jer uvek proveravas trenutnu tabelu).
Ja se nebih oslanjao samo na sesiju.
Opis procedure
Korisnik kupuje na tvom sajtu, ti podaci se smestaju u sesiju, u trenutku redirektovanja na paypal ti podaci prelaze u trenutnu tabelu o uplatama. Uplata se izvrsava na paypalu i
a.) (ako je sve ok) vraca te na tvoj sajt. Gde ti proveravas uplatu sa podacima iz trenutne tabele (tipa da li je ista cena uplacena itd..). Ako je sve ok taj podatak premestas u tabelu u kojoj cuvas uplate, a iz trenutne tabele brises. Rezultat ovoga je da koliko god puta korisnik pritisnuo refresh podatak ce biti samo jednom obradjen (jer vise ne postoji u trenutnoj tabeli).
b.) (korisnik izvrsi uplatu ali ne dodje nazad na tvoj sajt) u ovom slucaju nemas podatak o tome da je on ista uplatio i da je transakcija obavljena. Te korisnik recimo nedobije to sto je zeleo i pise ti mail u kome navodi da je uplatio. Ti mozes proveriti da li se verifikacioni brojevi sa uplate slazu sa brojevima iz trenutne baze i mailom mu poslati link (odatle se nastavlja procedura a :) ).
Svi sretni i zadovoljni :)
---------------------------------------------------------------------
Just do it.