V minulém článku jsme vytvořili základní propojení objednávkového systému s PayPal. Nyní přistoupíme k provázání PayPalu s naším systémem, tak aby se platba ihned projevila v systému.
Dnes k demonstraci platební metody využiji náš systém pro registraci do katalogů Bleskováregistrace.cz, kde mají uživatelé jako jednu z mnoha možností k dobití kreditu právě PayPal.
Systém funguje následovně:
- Uživatel zvolí částku jakou chce dobít a potvrdí.

- V druhém kroku systém ukáže rekapitulaci platby (k platbě je připočten 3% poplatek, který si PayPal strhne.

- Přes PayButton je přesměrován na platební bránu PayPalu, kde nalezne opět rekapitulaci platby a dvě možnosti. Platbu přes svůj PayPal účet nebo kreditní kartou prostřednictvím PayPal.

- Všimněte si rozdílnosti oproti naší první variantě, a to odkazu Cancel and return to // <![CDATA[
var myText = 'Live trading, s.r.o.';
document.write('');document.write(myText);document.write('');
// ]]>Live trading, s.r.o.. Abychom tohoto docílili, musíme náš formulář pro PayButton rozšířit o několik dalších hodnot. Pokud uživatel klikne na tento odkaz, bude přesměrován zpět na náš systém a informován o neúspěchu transakce.

Samotná integrace
K úplné integraci tedy budeme potřebovat:
- databázovou tabulku, do které budeme ukládat informace o platbě
- php script, přes který bude komunikovat náš systém s PayPalem
- rozšíření formuláře pro PayButton
Tabulka pro ukládání informací o platbě
V tabulce potřebujeme editovat pouze informace typu:
- id platby
- uživatel
- částka
Do této tabulky musíme uložit informace o platbě ještě před konečným přesměrováním na platební bránu PayPal.
Soubor notify.php
Jak jsem již zmínil, tento soubor bude samotným srdcem celé komunikace. Po úspěšné platbě bude volán PayPal a přes POST mu bude předán jednoznačný identifikátor platby. Díky tomuto identifikátoru nalezne v naší tabulce informace o částce a uživateli a nakonec připíše dobitý kredit uživateli na jeho účet. Soubor může vypadat následovně:
1 2 3 4 5 6 7 8 9 10 11 | <?php //připojení na databázi MySQL include 'mysql.php'; //načtení informací o platbě $result = mysql_fetch_assoc(mysql_query("SELECT * FROM platby WHERE id = '".$_POST['custom']."'")); //o kolik uživateli navíšíme kredit $vic = $result['castka']; //aktualizace hodnoty kreditu na účtu uživatele $sql = "UPDATE users SET kredit = kredit + $vic WHERE id = '".$result['uzivatel']."'"; mysql_query($sql) or die (mysql_error()); ?> |
Rozšíření formuláře pro PayButton
Formulář se rozšíří o následující řádky:
1 2 3 4 5 6 7 8 9 10 11 | <!-- adresa, na které se nachází náš notify script --> <input type="hidden" name="notify_url" value="http://domena.cz/notify.php" /> <!-- url pro přesměrování v případě úspěšné platby, v ssid je uložen identifikátor platby, ssids obsahuje id session --> <input type="hidden" name="return" value="http://domena.cz/ok.php?ssid=$kod&ssids=$sid" /> <!-- url pro přesměrování v případě neúspěšné platby, nebo stornování platby zákazníkem, v ssid je uložen identifikátor platby, ssids obsahuje id session --> <input type="hidden" name="cancel_return" value="http://domena.cz/nok.php?ssid=$kod&ssids=$sid" /> <!-- jednoznačný identifikátor platby --> <input type="hidden" name="custom" value="$kod" /> |
Pár poznámek závěrem
Nyní vám gratuluji, jelikož jste zvládli propojit vlastní webovou aplikaci s platební bránou PayPal. U souboru notify.php se nabízí ještě varianta rozšíření o automatické generování faktur.



tento díl už není tak povedený…. některé texty chybí např.:
„Formulář se rozšíří o následující řádky:“ o které? o ty prázdné?
Je to v sekci PHP, ale z php tu je leda tak koncovka souboru .php. Chtělo by to napsat i krapet toho kódu který by měl uživatel použít… tohle jsou holá fakta…
Třeba by mě zajímalo, jak paypal vrací data po platbě? pole, objekt? asi těžko, takže přes get?
Jak se člověk dozví že platba je ok a nebo neproběhla?
tyhle a podobné věci by se měli v tomto článku rozhodně objevit…
A také to moc nekoresponduje s prvním dílem.
No, došlo někde k chybě a zobrazovač syntaxe nám nezobrazoval zdrojový kód, už se ukazují.
PayPal vrací data o platbě v poli. Určitě, jsou tam dvě stránky ok.php a nok.php, na které se to přesměrovává v případě stavu kdy platba proběhla, a kdy nebyla úspěšná.
Jak nekoresponduje s prvním dílem?
Ahoj, mohl by jsi doplnit kod souboru notify.php ? Nic se tam neukazuje (ani ve zdrojaku) … a take upresnit to rozsireni? Diky
Opraveno
zdravím,
zajimalo by me celkem dost veci…Cetl jsem si na PayPalu navod na integraci Pay Now Buttonu, coz je v podstate to same co tu píšeš.
No a přijde mi to celý trošinku složitější. Jakože to funguje tak, že uživatel klikne na button, to ho přesměruje na PayPal, on odsouhlasi transakci. Pak mi PayPal pošle přes post nějakou zprávu, kterou zpracuje muj IPN Listener a pošle ji skoro shodnou nazpět. PayPal mi pošle VERIFIED v případě, že je to ok. Tím je ověřená celá komunikace atd. No a teprve pak ja ty data co mi přišli přes ten post od PayPalu zpracovávám.
No ale nějak to nevidím v tom co si tady psal ty. Jakože píšeš, že informace jako ID platby, částka a uživatele si dáváš do tabulky. No ale já mám pocit že to má chodit jinak. A to tak, že se tyhle informace dovíš až právě z toho postu od PayPalu.
Já se v tom teda nevyznám, nějak se to pokoušim dohledávat kde se dá, tak mě právě zajímá, jak to že ti to funguje ok. Páč já se o takovýhle variantě na PP nedočetl.
Dík
No já k tomu řeknu jediný, prvně jsem to integroval na webhosting stronghost.cz, konzultoval s několika lidmi co to podobně mají vytvořené a vzniklo z toho toto řešení
Ty informace si uložíš, ale zároveň je pošleš na PayPal, pak proběhne zpětný post ze strany PayPal, ve kterém ti přijde to co si poslal, to ověříš vůči tabulkce …