Integrace PayPal – jednoduše, snadno a rychle (2.)

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ě:

  1. Uživatel zvolí částku jakou chce dobít a potvrdí.
  2. V druhém kroku systém ukáže rekapitulaci platby (k platbě je připočten 3% poplatek, který si PayPal strhne.
  3. 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.
  4. 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.

O Petr Láslo

Student ČVUT FJFI katedry softwarového inženýrství v ekonomii. Mezi jeho zájmy patří programování a sport. Autor má zkušenosti s PHP 5, MySQL, XHTML a CSS. Zajímá se o platformu .NET, jazyk C#, ASP.NET a WPF.