Jelikož se zde poměrně hodně často vyskytují dotazy na integraci platební brány PayPal, rozhodl jsem se, dát zde kompletní postup.
Poznámka: Budeme používat platbu přes IPN.
Co budeme potřebovat?
Nejprve musíte vlastnit aktivní PayPal účet typu Premiere.(Account Type: Premier Status: Verified)
Dále chceme zajistit zpětnou odezvu od PayPal - to pokud někdo provede platbu. Proto je nutno nastavit adresu, kterou bude PayPal volat při platbě.
Postup nastavení PayPal účtu
1. Přihlášení do PayPal.
2. V podmenu zvolit položku "Profile".
3. Ve třetím sloupci s názvem "Selling Preferences" zvolit "Instant Payment Notification".
4. Zde IPN zapneme a nastavíme adresu pro zpětnou odezvu (http://www.mojestranka.cz/paypal.php)
Dále je potřeba vytvořit na naší stránce (eshopu) při dokončení objednávky nějaký prvek, kterým uživatel může platbu provést. Přitom známe chceme zaznamenávat tyto údaje:
1. Název zboží
2. Číslo objednávky
3. Celková částka k úhradě
Kód platební brány na naší straně
Zákazník po dokončení objednávky klikne na tlačítko, přihlásí se ke svému PayPal účtu nebo zadá údaje z kreditní karty a provede platbu. Našim úkolem nyní je zjistit, že platba proběhla v pořádku.PHP kód:
<?php
$vas_email = "muj@email.cz"; // = Login na PayPal
$nazev_zbozi = "Notebook Sony"; // Název zboží & objednávky
$cislo_objednavky = 12345; // Číslo objednávky pro naše vnitřní účely
$castka = 32000; // Musí být celé kladné číslo
?>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="<?=$vas_email?>">
<input type="hidden" name="lc" value="GB">
<input type="hidden" name="item_name" value="<?=$nazev_zbozi?>">
<input type="hidden" name="item_number" value="<?=$cislo_objednavky?>">
<input type="hidden" name="amount" value="<?=$celkova_castka?>.00">
<input type="hidden" name="currency_code" value="CZK">
<input type="hidden" name="shipping" value="0.00">
<input type="hidden" name="bn" value="PP-BuyNowBF:btn_buynowCC_LG_global.gif:NonHostedGuest">
<input type="submit" value="Zaplatit Pay Pal »" name="submit" />
<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>
Nyní tedy kód pro náš soubor na adrese www.mojestranka.cz/paypal.php
Zpracování platby
Pokud chceme celý proces zabezpečit, bude kód trochu složitější.PHP kód:
<?
// Načteme si údaje o provedené platby
$item_name = $_POST['item_name']; // Náš název zboží
$item_number = $_POST['item_number']; // Naše číslo objednávky
$payment_status = $_POST['payment_status']; // Status platby
$payment_amount = $_POST['mc_gross'];
$payment_currency = $_POST['mc_currency'];
$receiver_email = $_POST['receiver_email']; // Email toho, kdo platbu přijal
$payer_email = $_POST['payer_email']; // Email toho, kdo platbu odeslal
?>
Pokud chcete využít jiný programovací jazyk než PHP kód najdete na této adrese: https://www.paypal.com/us/cgi-bin/we...es-pop-outsidePHP kód:
<?php
// 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 ('ssl://www.paypal.com', 443, $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
}
else if (strcmp ($res, "INVALID") == 0) {
// log for manual investigation
}
}
fclose ($fp);
}
?>
?>
O úspěšném uskutečnění platby Vám v každém případě vždy přijde email od PayPal.
Snad je návod dostatečně jasný. Pište zde Vaše věcné poznámky či doplnění návodu :smoking:
Platební brána PayPal - řešení
Co se právě děje na Webtrhu?
- Eboost nabízí: 💡🔎💡 Audit PPC kampaní ZDARMA 💡🔎💡
- Zdeněk Baloun prodává: Prodej půjčovny střešních boxů a nosičů kol včetně webové stránky
- ARTEXE poptává: Wordpress špecialista
30.06.2009
13:53
nishkam
Co nabízím
Aplikaci pro pořadatele kurzů, školení, seminářů
Web | www.nishkam.eu |
Příspěvky |
784
|
Členem od |
01.05.2008
|
Dekuji Ondreji,
presne to je 1 z mych ukolu na tento tyden, tak Tvuj navod pouziji jako nakopnuti spravnym smerem. Alespon nemusim Googlovat a hrabat se v manualech PayPal
Sám sobě peníze poslat nemůžeš, proto je vhodné integraci ověřit s někým známým. Obvykle však platí, že pokud se po vyvolání stránky s paypal platbou zobrazí správné platební údaje, tak samotná platba v pořádku proběhne a paypal odezva je téměř zaručená.Lze prosím tě nějak ověřit správnou integraci? Díky Dan
08.10.2009
10:22
Martin Talavášek
Co nabízím
Vyslechnutí vašich nápadů a návrhů, programátorské a finanční investice.
Web | talavasek.cz |
Příspěvky |
1 984
|
Členem od |
07.01.2007
|
Nebo že by PayPal Sandbox? ;)Sám sobě peníze poslat nemůžeš, proto je vhodné integraci ověřit s někým známým. Obvykle však platí, že pokud se po vyvolání stránky s paypal platbou zobrazí správné platební údaje, tak samotná platba v pořádku proběhne a paypal odezva je téměř zaručená.
08.10.2009
12:31
Martin Talavášek
Co nabízím
Vyslechnutí vašich nápadů a návrhů, programátorské a finanční investice.
Web | talavasek.cz |
Příspěvky |
1 984
|
Členem od |
07.01.2007
|
Hmm, problém zřejmě nebude na straně PayPalu ;)S tím jsem se já trápil snad 14 dní a nerozběhal jsem ho :(
Výborný, díky. Nicméně možnosti možnosti na PayPal jsou širší. Dokázal bys stručně některé z nich popsat? A jejich plusy a mínusy? Přiblížit to lidem kteří nemají příliš zkušeností... Díky Kubicq
14.05.2010
16:39
Martin Talavášek
Co nabízím
Vyslechnutí vašich nápadů a návrhů, programátorské a finanční investice.
Web | talavasek.cz |
Příspěvky |
1 984
|
Členem od |
07.01.2007
|
To by vydalo na dlooouhý článek... píšu si to na víkend do Doit.im ;)Výborný, díky. Nicméně možnosti možnosti na PayPal jsou širší. Dokázal bys stručně některé z nich popsat? A jejich plusy a mínusy? Přiblížit to lidem kteří nemají příliš zkušeností... Díky Kubicq