[ jelena_t @ 15.05.2008. 15:20 ] @
Koristim opciju paypal-a sa buy now button-ima. Posto samo ulogovani korisnici sajta imaju opciju da plate proizvod preko paypal-a, ja bih morala da sacuvam negde sesije da znam koji korisnik mi je uplatio proizvod. Kad ga on "baci" na paypal sajt, sesije se gube, tako da kad ga vrati na moj sajt, ja ne mogu da budem sigurna kako da povezem korisnika sa uplatom. Zanima me da li je neko imao iskustva sa ovim i da li postoji mogucnost u Website Payment Standard (recimo za buy now button-e) da mu prosledim session promenljivu u kojoj cuvam id korisnika i kad se zavrsi transakcija sa paypalom i korisnik se vrati na moj sajt da sesija bude ocuvana da bih mogla da upisem tu transakciju u nasu bazu.
Nadam se da ne zvuci konfuzno...Hvala unapred na bilo kakvoj pomoci
[ dakipro @ 15.05.2008. 15:34 ] @
Nisam koristio paypal, ali sa nekim drugim servisima se obicno posalje neki parametar (id korisnika u tvom slucaju) pa kad se zavrsi placanje servis ga vrati na neki tvoj link (zavisi kako je podeseno) i obicno ume da prosledi i tvoj parametar koji si poslala servisu.
Dok ti ne odgovori neko ko je to konkretno radio, probao nesto ovako da potrazis po dokumentaciji. A probaj i paypal podrsku da iscimas
[ jelena_t @ 15.05.2008. 15:56 ] @
To i pokusavam, samo ne znam na koji nacin da im prosledim promenljivu a da mi je sacuvaju i vrate natrag... ovo sto sam probala do sad ne funkcionise, tj izgubi mi se promenljiva...a ne znam sta oni rade ne vidim kod njihove skripte.
Tnx
[ agvozden @ 16.05.2008. 08:43 ] @
Pokusacu da pronadjem klasu koju sam koristio za ovo...

Fazon je u tome da ne upisujes transakciju u momentu kada se korisnik vrati sa paypal-a. U stvari trebas da imas upisano u pay pal nalogu adresu koju ce on kontaktirati u slucaju uplate. E, onda proveravas kljuceve, mozes dodatno da ih verifikujes.
Korisniku samo ispises poruku gde se recimo zahvaljujes na poverenju...
[ misk0 @ 16.05.2008. 09:12 ] @
A mozes li definisati varijablu u linku kojim mu govoris kud da preusmjeri korisnika kad zavrsi sa transakcijom? Recimo nesto kako backurl=www.tvojsajt.com/korisnikeid=33 ?
[ jelena_t @ 16.05.2008. 11:12 ] @
Hvala vam na pomoci...sad mi ispade da u stvari i ne unisti sesiju,
korisnik se uloguje->ode na buy now->izvrsi uplatu tamo->vrati ga na moju stranicu-> ostaje mi user id u session promenljivoj...doduse sad imam novih problema posto kad mi vrati podatke sa paypal-a, ja upisem u bazu ko je platio i koliko medjutim kad refreshujem stranicu on ponovo upisuje transakciju u moju bazu a naravno ne ponovi se uplata na paypal-u...al sa tim cu se vec snaci nekako valjda...inace koristim onaj PDT i on mi je sam izgenerisao kod, samo sam unela neke dodatke...
[ dakipro @ 16.05.2008. 11:23 ] @
Naravno da se sesija ne unistava (osim ako ne ugasi browser), ali se nemozes osloniti na taj princip da ce on da se vrati sa paypala uvek sa placenom transakcijom. Moze da klikne Back, moze da ga paypal odbije, da je trenutno servis nefunkcionalan... Bar se ja ne bi na to oslonio, pogotovo kazem, kad je placanje u pitanju.
[ jelena_t @ 16.05.2008. 11:35 ] @
Pa ako ode na back, nece ni doci do te stranice gde upisujem transakciju u bazu, a svakako pre upisa u bazu ima provera da li je transakcija na paypal-u zavrsena uspesno tj.

// check the payment_status is Completed
if(eregi("Completed", $keyarray['payment_status'])) {
.....ovde treba da ubacim jos neke provere.... i onda upis

A jel imas ideju kako drugacije da se obezbedim?
[ dakipro @ 16.05.2008. 11:46 ] @
Pa ja bih cimao tehnicku podrsku da ti kazu kako je to najbolje izvesti. Mislim, i njima je u interesu da ti pomognu, inace im spomeni kako ces da menjas servis ako to ne moze bezbedno da se izvede :)
Licno gotovo uvek koristim Autnorize.net kompletnu integraciju, tako sigurno znam sta se desava i zasto. Iako mi je ok i fora sa dugmicima za placanje, samo da bude na neki od nacin koje smo gore nabrojali, ili da ti trigeruju neki link nakon transakcije, da vrate korisnika negde (dinamicki zbog id-ja) ili nesto slicno, mada su to uglavnom najbolji nacini koji se koriste za feedback.
[ jelena_t @ 16.05.2008. 12:04 ] @
Hmm...pa tamo sam i postavila link za return stranicu na koju ih paypal redirektuje nakon uplate, na tu stranicu inace ne mogu doci ako ukucaju taj isti url posto postoji token koji moraju biti prosledjen da bi se izvrsila transakcija...plus jos neki parametri.
Samo jos treba da podesim to sa upisivanjem u bazu da ne upise vise puta istu transakciju, imam tamo neki $auth_token_id koji mora biti razlicit za svaku transakciju na paypal-u cini mi se...sad se i ja vec gubim pomalo :)
Hvala na pomoci
[ dakipro @ 16.05.2008. 12:13 ] @
Hehe, ocigledno previse naporno radis :)
Nakon sto korisnik dodje na url na koji ih paypal vrati, ti upisi transakciju, ucini tu sve sto programer mora da ucini, i odmah redirektuj usera na neku ThankYou stranicu bez prikazivanja sadrzaja na toj "prihvatnoj" stranici. Tako nemas problem sa refreshom ili upisom dva puta iste transakcije.
Ako sam dobro razumeo pitanje/problem...
[ jelena_t @ 16.05.2008. 12:30 ] @
E , vidis to bi mozda moglo da resi problem..nisam se ni setila, hehe, sad cu probati. Hvala
[ misk0 @ 17.05.2008. 14:18 ] @
Citat:
dakipro:Nakon sto korisnik dodje na url na koji ih paypal vrati, ti upisi transakciju, ucini tu sve sto programer mora da ucini, i odmah redirektuj usera na neku ThankYou stranicu bez prikazivanja sadrzaja na toj "prihvatnoj" stranici. Tako nemas problem sa refreshom ili upisom dva puta iste transakcije.

Dok sam citao temu, spremao sam se da napishem ovakav odogovor. To je nacin kako se rade stvari i sprecava refresh i dupli upis.
[ jelena_t @ 17.05.2008. 14:59 ] @
Ubacila sam i to, ali za svaki slucaj imam i bolju proveru, posto mi paypal generise jedinstveni transaction_id , koji ja pokupim i upisem u bazu, pa ubacim proveru da li je vec koristen taj transaction_id, ako nije onda je ok ako jeste ne izvrsi se transakcija..
U svakom slucaju, sve je ok. Hvala svima na pomoci
[ milosijaa @ 05.08.2008. 02:02 ] @
Cini mi se da jos niko nije pomenuo IPN.

AKo zaista zelis da budes sigurna da je uplata prosla kako treba neophodno je da :

1. Aktiviras IPN za odgovarajuci PayPal account
2. Napravis skript koji ce da protrci kroz niz koji ti vraca paypal i izvrsi verifikaciju cele price. Takodje u ovom skriptu bi trebao da "zivi" kod koji ti azurira bazu o uspesnoj ili neuspeloj uplati..

[ jelena_t @ 05.08.2008. 08:19 ] @
Da, na kraju sam i koristila kombinaciju ipn i pdt.. .pa ako ipn slucajno ne upise uspelu transakciju u bazu pdt ce upisati sigurno, plus sam naucila kako da prosledjujem custom variable paypal-u ;)
[ b0ris @ 17.08.2008. 14:47 ] @
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 :)