PDA

Pogčedajte punu verziju : PayPal + Sandbox = smarachina :)


dootzky
15. 10. 2006., 19:23
Yo ppl,

evo pokusavam za jednog ortaka da provalim kako bi trebalo da radi ovaj sandbox za PayPal, i namucih se ziv, a bez preterano rezultata. :1027:

Naime, uspeo sam da otvorim 2 accounta u Sandboxu, koji je, jel'te, simulacija pravog PayPala, i sve sto mi je potrebno je da dobijem potvrdu da je transakcija uspela, tj. da je 'covek' platio tamo na payPalu, da bih mogao u svojoj bazi da smanjim qty za taj proizvod i sl.

Ok, evo je forma na sajtu, sa nekim zakucanim vrednostima, radi testa:


<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="upload" value="1">
<input type="hidden" name="business" value="sales@widgetco.com">
<input type="hidden" name="item_name_1" value="Big Widget">
<input type="hidden" name="amount_1" value="100.00">
<input type="hidden" name="item_name_2" value="Little Widget">
<input type="hidden" name="amount_2" value="15.00">
<input type="submit" value="jebem jebem">
<input name="notify_url" type="hidden" size="10" value="http://www.mojNekiSajt.com/stuff/success.php"/>
</form>


eto, to je kao ok. ove boldovane vrednosti su bitne da su 'unique', i eto taj mail je isto iskreiran i postoji, znaci tamo 'dajem' pare, a ulogujem se sa tmp racuna 'petar.petrovic@gmail.com'. i ovaj deo kao uspe. yey.

problem nastaje kada ja platim. i taj deo kao uspe, tamo se skine ovih test $115, i kao super, ali ne baci me nazad, tj. ne desi se "redirect" na moju success.php stranicu, i ja onda nikada necu znati da li je tamo stvarno placeno ili ne, a ne smem "napamet" da skidam proizvode iz baze i sl. :1064:

Dakle moje pitanje je -> kako da ga nateram da me vrati na ovu stranicu? Citao sam i, iskreno, usrao sam se od citanja, toliko da sada ne znam ni sta sam procitao, ali neki tamo support-madafaka-dasa kaze na njihovom forumu da taj redirect nazad NE RADI, osim ukoliko je taj covek sto je platio na sajtu (u nasem slucaju petar.petrovic@gmail.com) vec nema aktivan PayPal nalog. U fazonu onda mu oni "ponude" da otvori PayPal nalog, umesto da ga vrate na moj sajt. Neat. :1053:

A pored toga, ovo je sample kod koji sam nasao, koji bi kao trebao da mi radi posao prilikom tog IPN testiranja, ali do tu nisam ni stigao, jer me ovaj nikada ne redirektuje. :1027:


PHP 4.1
<?

// read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-validate';

foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}

// post back to PayPal system to validate
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ('www.paypal.com', 80, $errno, $errstr, 30);

// assign posted variables to local variables
$item_name = $_POST['item_name'];
$item_number = $_POST['item_number'];
$payment_status = $_POST['payment_status'];
$payment_amount = $_POST['mc_gross'];
$payment_currency = $_POST['mc_currency'];
$txn_id = $_POST['txn_id'];
$receiver_email = $_POST['receiver_email'];
$payer_email = $_POST['payer_email'];

if (!$fp) {
// HTTP ERROR
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0) {
// check the payment_status is Completed
// check that txn_id has not been previously processed
// check that receiver_email is your Primary PayPal email
// check that payment_amount/payment_currency are correct
// process payment

echo "ako vidimo ovo, znaci da je USPELO!!! item je: $item_name <BR>";

}
else if (strcmp ($res, "INVALID") == 0) {
// log for manual investigation
}
}
fclose ($fp);
}
?>


i kazem jos jednom -> lako cu ja da procesujem njegove $_POST vrednosti, kada mi ih jednom vrati (valjda ce to lakse da ide, hehe), jer kako ja kapiram, ovako to treba da radi:

1) kupac dodje na moj sajt, stavi u shopping cart sta mu treba, ode na checkout
2) ja ga bacam na paypal pomocu one forme, i tamo prosledim proizvode + cene
3) paypal mu uzme podatke, CC number, i sta sve jos treba.
4) kada zavrsi placanje, PayPal bi trebalo da ga baci kod mene na sajt, da li preko "success" stranice ili IPN (Instant Payment Notification.. jel' da? :D), i onda ja uzmem te podatke, odradim u bazi sta trebam, i vratim njima iste te podatke sa istom enkripcijom, sifrom i sta-mu-sve-jos-treba. :)

i to je to?
i am right or am i lost? :1073: :lost:

hvala na pomoci,
poz,
dootzky

Dušan Dželebdžić
15. 10. 2006., 19:55
AutoReturn, bez nekog naročitog razloga, ne radi ako posetilac nije paypal korisnik. Tačnije radi - ali korisnik mora da klikne na link "Return to merchant".

Ovaj sistem sa vraćanjem korisnika se zove PDT (Payment Data Transfer). IPN je mnogo bolje rešenje.