PayPal hitelesítés
Sziasztok,
PayPal fizetést kellene megvalósítanom. A teljes oldal kiinduló kódja adott volt, így a paypal funkcióé is "csak" a hibákat kellett kiszűrnöm belőle. Az oldalon a látogató tetszés szerinti összegekkel fizethet online szolgáltatásért.
Ott tartok, hogy átugrik a látogató a Paypal oldalra, ott fizet, visszatér. A fogadó oldalban lefut egy érvényesítés - megkérdezi a Paypal-től, hogy érvényesnek tekinthető-e az tranzakció.
A probléma, hogy sikeres tranzakciónál is mindig FAIL választ kapok. Alább a használt kódjaim:
--- Ez az indító űrlap:--- Erre a paypal meghívja a valaszfogado_scrptem.php -t GET-el így:
http://.../valaszfogado_scriptem.php?merchant_return_link=Return+to+Merchant
Tehát mindig ezzel a query stringgel tér vissza GET módban.
--- A scriptemben lefut az érvényesítés:----- Eddig a használt kódok.
A Paypal nem igazolja vissza a sikeres tranzakciót sem, mindig FAIL a válasza.
Gondolom, a "cmd=_notify-synch" azt mondja a Paypal-nak, hogy érvényesítési
kérés következik.
Viszont az $auth_token szerepe nem világos.
Kérdésem:
Mi nem jó a fenti kódban? Illetve hogyan lehetne rábírni a helyes működésre?
Az is segítség lenne, ha tudnám, pontosan milyen kérést vár el a Paypal az érvényesítés kezdeményezésekor. A Paypal helpjét már bogarásztam, de nem jutottam vele sokra.
Köszönettel.
■ PayPal fizetést kellene megvalósítanom. A teljes oldal kiinduló kódja adott volt, így a paypal funkcióé is "csak" a hibákat kellett kiszűrnöm belőle. Az oldalon a látogató tetszés szerinti összegekkel fizethet online szolgáltatásért.
Ott tartok, hogy átugrik a látogató a Paypal oldalra, ott fizet, visszatér. A fogadó oldalban lefut egy érvényesítés - megkérdezi a Paypal-től, hogy érvényesnek tekinthető-e az tranzakció.
A probléma, hogy sikeres tranzakciónál is mindig FAIL választ kapok. Alább a használt kódjaim:
--- Ez az indító űrlap:
<form method="post" action="https://www.paypal.com/cgi-bin/webscr">
<input type="hidden" name="cmd" value="_xclick" />
<input type="hidden" name="bn" value="wa_dw_2.0.4" />
<input type="hidden" name="business" value="sajat_paypal##kukac##email.hu" />
<input type="hidden" name="receiver_email" value="sajat_paypal##kukac##email.hu" />
<input type="hidden" name="amount" value="100" />
<input type="hidden" name="currency_code" value="HUF" />
<input type="hidden" name="return" value="http://.../valaszfogado_scriptem.php" />
<input type="hidden" name="item_name" value="Subscription" />
<input type="hidden" name="undefined_quantity" value="0" />
<input type="hidden" name="no_shipping" value="1" />
<input type="hidden" name="no_note" value="1" />
</form>
http://.../valaszfogado_scriptem.php?merchant_return_link=Return+to+Merchant
Tehát mindig ezzel a query stringgel tér vissza GET módban.
--- A scriptemben lefut az érvényesítés:
<?php
$req = "cmd=_notify-synch";
$tx_token = $_GET['tx'];
$auth_token = "ZpnErSeMfYzm_hMXS9ldyHtbLlp5t15bww03vmIK-x1k9sfdZ6SyILPuStG";
$req .= "&tx=".$tx_token."&at=".$auth_token;
$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);
if ($fp)
{
fputs($fp, $header.$req);
// adatok beolvasasa
$res = "";
$headerdone = false;
while(!feof($fp))
{
$line = fgets ($fp, 1024);
if (strcmp($line, "\r\n") == 0)
{
// fejlec olvasasa
$headerdone = true;
}
elseif ($headerdone)
{
// törzs olvasása
$res .= $line;
}
} //endwhile
// valasz feldolgozasa
$lines = explode("\n", $res);
//ha sikeres a hitelesites:
if (strcmp ($lines[0], "SUCCESS") == 0)
{
// itt csinalok valamit, ha a tranzakcio sikeres volt
}
else $errorMsg = "A PayPal nem igazolta vissza a sikeres tranzakciot.";
} //adatcsatorna eddig
fclose ($fp);
?>
A Paypal nem igazolja vissza a sikeres tranzakciót sem, mindig FAIL a válasza.
Gondolom, a "cmd=_notify-synch" azt mondja a Paypal-nak, hogy érvényesítési
kérés következik.
Viszont az $auth_token szerepe nem világos.
Kérdésem:
Mi nem jó a fenti kódban? Illetve hogyan lehetne rábírni a helyes működésre?
Az is segítség lenne, ha tudnám, pontosan milyen kérést vár el a Paypal az érvényesítés kezdeményezésekor. A Paypal helpjét már bogarásztam, de nem jutottam vele sokra.
Köszönettel.
PDT, Auto Return
Megtaláltam ezt és ezt az itt használt PDT-ról (Payment Data Transfer) a Paypal-on. Észrevettem, hogy a Paypal válaszában nem küldi el a $_GET[tx] változót, benne egy tranzakció tokent. Innentől valószínű, hogy a labda a megrendelőnél van:
"Note: You must enable Auto Return to use Payment Data Transfer"
Ha ezt nem aktiválta a fogadó accoutjánál, akkor a PP nem küldi el a $_GET[tx] változót a válaszában, tehát nem is lehet érvényesíteni azt.