Paypal IPN probléma

Paypal IPN probléma
2011-05-31T18:45:49+02:00
2011-06-02T01:45:03+02:00
2022-11-22T01:45:37+01:00
Linksys
Üdvözletem mindenkinek.
Nagyon régen nem írtam már ide, de most kénytelen vagyok mivel elakadtam.
Amint a címben is látszik paypal-al lenne gondom azon belül is az IPN részével.
Mindent sikerült megoldanom, a fizetést, jön is szépen a számlára a pénz. viszont az a gondom, hogy ha a felhasználó fizetés után nem kattint a "Back to domain.hu" linkre a paypal-on akkor én nem tudom meg hogy most sikeres volt a vásárlás vagy sem.
Vagy ha fizetés előtt egyszerűen becsukja a böngészőt.
Itt jön a képbe az IPN ami elméletileg arra való, hogy a háttérben meghív egy általam megadott PHP-filet és én ott szépen meg tudom mondani hogy a user mit csinált a paypal-oldalon.

A gond, hogy ha átirányítotok a paypal-oldalra és meggondolom magam, bezárom a böngészőt akkor én azt honnan tudom hogy ő bezárta?
Mivel nekem az IPN file nem hívodik meg :S .
Előre is köszönöm a válaszokat.
Mutasd a teljes hozzászólást!
Nálam a $this_script így néz ki:
$this_script = 'http://'.$_SERVER['HTTP_HOST'].'/'; //variable for this script (ie: 'http://www.oldalam.hu/')
Az átadott változó:
$p->addVar('notify_url', $this_script.'myinclude/paypal/ipn.php');
Ebben a könyvtárban: www.oldalam.hu/myinclude/paypal
Van egy fájl: ipn.php

Ez a fájl kap egy POST üzenetet, amely az IPN adathalmaz, és ebből lehet megállapítani, hogy mi is történt.
Gondolom, ha kilép fizetés nélkül, akkor nincs IPN üzenet. Ha fizet, akkor viszont van. De ilyenkor is lehet mindenféle probléma. Pl. várakozik valamire, vagy egyéb.

Remélem tudtam segíteni.
Mutasd a teljes hozzászólást!

  • Pedig a IPN üzenet fogadása a megoldás. Írod, hogy nem hívódik meg az IPN fájlod, na ezt kell tisztába tenni.
    Sőt, amíg minden nem megy flottul, addig a teljes IPN üzenetet érdemes eltárolni, hogy az esetleges akármilyen jellegű problémára megoldást tudj adni.
    Visszatérve az IPN fájl meghívására, gondold végig, hogy milyen elérési útvonalon van, a PayPal üzenete éléri-e. Jó-e az URL, amit átadsz a PayPal-nak... Sajnos meg kell kinlódni...
    Mutasd a teljes hozzászólást!
  • na most egy kicsit belekavarodtam.
    Szóval az IPN függetlenül attól hogy a felhasználó mit csinál az oldalon (bezárja a paypal-t fizetés előtt, kifizeti, )
    meg hívódik. UGYE?

    én ezt küldöm ki a paypalnak:

    $p->add_field('business', 'my email'); $p->add_field('return', $this_script.'?action=success'); $p->add_field('cancel_return', $this_script.'?action=cancel&code='.$code); $p->add_field('notify_url', $this_script.'?action=ipn'); $p->add_field('item_name', utf8_decode('Kosár tartalmának rendezése')); $p->add_field('item_number', $code); $p->add_field('currency_code', "HUF"); $p->add_field('amount', $rend['fizetendo']);

    ez lenne az IPN-file elérési helye?:

    $p->add_field('notify_url', $this_script.'?action=ipn');

    Vagy az amit én megadtam a paypal-nak a ezen az oldalon:
    KÉP
    (Szerencsére találtam egy ilyen képet google-n annyi a különbség hogy én a felső checkbox-ot választottam (enabled))

    Üdv
    Mutasd a teljes hozzászólást!
  • Nálam a $this_script így néz ki:
    $this_script = 'http://'.$_SERVER['HTTP_HOST'].'/'; //variable for this script (ie: 'http://www.oldalam.hu/')
    Az átadott változó:
    $p->addVar('notify_url', $this_script.'myinclude/paypal/ipn.php');
    Ebben a könyvtárban: www.oldalam.hu/myinclude/paypal
    Van egy fájl: ipn.php

    Ez a fájl kap egy POST üzenetet, amely az IPN adathalmaz, és ebből lehet megállapítani, hogy mi is történt.
    Gondolom, ha kilép fizetés nélkül, akkor nincs IPN üzenet. Ha fizet, akkor viszont van. De ilyenkor is lehet mindenféle probléma. Pl. várakozik valamire, vagy egyéb.

    Remélem tudtam segíteni.
    Mutasd a teljes hozzászólást!
  • Már csak egy olyan kérdésem lenne, hogy az IPN milyen esetekben és mikor hívódik meg?

    Mert sandbox-ban INP test-el meghívtam a file-t és tökéletesen lefutott.
    Mutasd a teljes hozzászólást!
  • Az IPN - Instant Payment Notification nevében van, hogy azonnali fizetési értesítés. Tehát, ha van fizetés, akkor megy ki. Így, ha nem fejezte be, megszakította, kilépett közben, stb. akkor nincs IPN.
    Nem lehet, hogy most is megkapod az IPN üzenetet, csak nem tudod, hogyan kell földolgozni? Vizsgálod a $_POST tömböt, hogy mi van benne?
    Mutasd a teljes hozzászólást!
  • A feldolgozó jól működik.
    Ezt onnan tudom hogy sandbox test IPN létre hozza a TXT-file-t.

    $fajl = "paypal_jegyzokonyv/".$_POST['item_number'].".txt"; $fajl=fopen($fajl,"w+"); foreach($_POST as $key=>$val) { $fileba.="Kulcs: ".$key."\n Ertek: ".$val." \n\n"; } fputs($fajl,$fileba); fclose($fajl);
    Ez a kód generálja le a jegyzőkönyvet.

    De amúgy meg is válaszoltad a kérdésem, ha ő paypal belépés előtt vagy közben becsukja az ablakot MIELŐTT megpróbálna "Pay now" gombra kattintani akkor én arról nem kapok infót.

    Mivel én a paypal-nak adatkiküldéskor a kosarat lementem mysql-be, akkor az lesz a megoldás hogy időkorláttal törlöm a mysql-t.

    Szerintem ez lesz a megoldás, neked van jobb ötleted?
    Előre is köszi hali
    Mutasd a teljes hozzászólást!
  • törlöm a mysql-t

    Gondolom a sort törlöd. De nem ez a jó megoldás, hanem, hogy legyen egy "fizetve" meződ, amely addig nulla, amíg nem fizettek. Amint bejön a pénz, a fizetési időpontot teszed bele.
    Lényeg, hogy az adatbázisod a lehető legjobban tükrözze a forgalmadat. Ezért is említettem, hogy a IPN adatokat is adatbázisba érdemes menteni.
    Mutasd a teljes hozzászólást!
  • Hm igen elnézést a sorra gondoltam.
    Az addig rendbe van, de ha az ügyfél átirányítódik a paypal oldalra azt nekem már adatbázisban menteni kell, mert generálok hozzá egy egyedi rendelés code-ot.
    Na most ha a drága ügyfél fizetés előtt meggondolja magát és bezárja X-el a paypal-t (mert mondjuk még vásárolni akar), akkor az ő megrendelései menüpontban ez a rendelés fel lesz tüntetve, mint nem fizetett rendelés (és a kosárban is benne lesznek ezek a rendelések mivel azt csak sikeres IPN visszacsatoláskor törlöm), és ez a dolog gondot okozhat.
    Természetesen mentem a dolgokat adatbázisba, ez a TXT csak egy jegyzőkönyv a számomra + biztosíték gyanánt.
    Ezt akarom valahogy kivédeni, hogy ha fizetés előtt extrém módon ablak bezárással vissza tér az oldalamra, akkor ne legyen ott az a megrendelés. (És mint tudjuk nagy a userek állatkertje, és biztos lesz ilyen "extrém" eset )
    Üdv
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd