Zdravím Vás :) Prosím Vás, nemáte někdo zkušenosti s integrací PayPal brány na web? Podařilo se mi dát na web tlačítko, které mi správně vygeneruje potřebné údaje, přihlásím se a dám Pay Now. Platba v pořádku přijde. Problém je, že mě to po zpracování nepřesměruje zpět na web (a to i když mám zapnutý a nastavený IPN), tudíž nemůžu dál pracovat s daty a zapsat je do databáze. Uvítám každou užitečnou radu. Děkuji předem.
Fórum › PHP
Integrace PayPal brány
a predavas ten odkaz, kam te to ma presmerovat tomu paypalu? Takhle nejak fungovaly veci jako vodafone mobilni penezenka a tak... mozna je to u paypalu stejny
#2 KIIV
no podle popisu IPN nema nic spolecneho s presmerovanim.. je to jen notifikacni kanal o transakcich u tveho uctu... kterej musis samozrejme taky vhodne zpracovat a odpovedet tomu paypal serveru
#5 Forest
tak tvrdi tam ze kdyz ti to na tu stranku prijde tak mas overit odeslanim na nejake dalsi rozhrani a tam ti to pak vrati VERIFIED pokud to bylo uspesne... bude muset odpovedet nekdo kdo s tim opravdu delal ... nemam chut studovat dokumentaci dopodrobna :D
mimochodem taky tam mluvi o sandboxu.. bys mozna usetril pri testovani kdybys to pouzil
u toho pay buttonu muzes nahodit:
data-env="sandbox"
a nemelo by se to pak platit.. bude to testovaci... aspon to tvrdi ten generator "customized" buttonu... pak to akorat nesmis zapomenout povypinat :D
Zdravím,
proč utrácíš dolary? Dá se tam použít ten testovací sandbox account, který nevezme nic.
Funguje to tak všude, klient pošle požadavek a ty dostaneš od paypal odpověď.
Jo a Tobě to vlastně nevrací zpět, narvi tam tento kus kódu ještě (nestačí jen tlačítko):
<input type='hidden' name='return' value='http://mysite.com/user_credits/purchase_credits'>
<input type='hidden' name='rm' value='1'>
A nebo prostě v tom nastavení musí být... udělej tyto kroky (je to anglicky):
1. Log in and click the Profile subtab under My Account.
2. Click the Website Payment Preferences link under Selling Preferences.
3. Click the On radio button to enable Auto Return.
4. Enter the Return URL. Note: You must meet the Return URL requirements in order to set up Auto Return.
Takže tak, snad nemusím překládat.
#12 RePRO
Tak přesměrování už funguje, díky :) Ale nechce to zpracovat proměnné ...
Notice: Undefined index: item_name
Notice: Undefined index: item_number
Notice: Undefined index: payment_status
Notice: Undefined index: mc_gross
Notice: Undefined index: mc_currency
Notice: Undefined index: receiver_email
Notice: Undefined index: payer_email
Podle chyb usuzuji, že v proměnných nic není. Ale proč?
#14 KIIV
Mám to teď takto:
<?php
$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"];
$receiver_email = $_POST["receiver_email"];
$payer_email = $_POST["payer_email"];
echo "<h1>Summary order</h1>";
echo "Item name: ".$item_name."<br />";
echo "Item number: ".$item_number."<br />";
echo "Payment status: ".$payment_status."<br />";
echo "Payment amount: ".$payment_amount."<br />";
echo "Payment currency: ".$payment_currency."<br />";
echo "Receiver: ".$receiver_email."<br />";
echo "Payer: ".$payer_email."";
?>
no a tvrdi ti to, ze tam ani jedno z nich neni (v $_POST) proto je dobry vypsat si i ten celej $_POST a $_GET jestli to jen nedostavas jinde nebo jinak nez cekas
Přesně, jak píše KIIV.
Zkusíme:
function nice_printr($data) {
echo "<pre>";
print_r($data);
echo "</pre>";
}
No a pak zavoláme:
nice_printr($_POST);
nice_printr($_GET);
#17 RePRO
Výsledek:
#20 Forest
pokud si ty vypisy neprohodil tak ano a 'st' je status a tak... kazdopadne bys urcite mel overovat aspon ze se to vratilo ze spravne adresy a idealne to presmerovat nekam dal, aby to nebylo tolik videt co se ceka
(pripadne to overit jeste tema triggerama pres to druhe rozhrani - ze ti to prijde zase jinde)
No vidíš to, přišla ti odpověď co se týče ID transakce (hash), status (tedy jestli na to měl dotyčný peníze, nebo co provedl za akci), částka, měna a id subjektu.
S tím se dá samozřejmě pracovat, a nemusíš ani nikam přesměrovávat jak píše KIIV. Prostě ten výstup zpracuješ (tedy zpracuješ výstupní url). Nikdo to URL neví, takže buď v pohodě -- protože to url je zašifrované... což je zabezpečovací proces.
Takže si uděláš pak switch v tom souboru něco jako:
if (isset($_GET)) {
switch ($_GET['st']) {
case "Completed":
// uložíme danému uživatelovi peníze na účet:
$user->getUserById($id_user)->setVallet($_GET['amt']);
break;
}
}
Nezapomeň si někam ukládat historii transakcí. Tedy koncové stavy. A pak vidíš další stav peněženky a jaká akce se stala, to znamená:
ID_TRANSAKCE | AKCE | ID_USER | ODEBRANA_CASTKA | KONCOVY_STAV | DATUM
1 | DOBITI_PENEZENKY | 2 | 500 | 2000 | 4.10.2010
2 | DOBITI_PENEZENKY | 2 | 500 | 1500 | 4.10.2010
Jinak přes ten IF to taky můžeš udělat... :-)
#26 RePRO
Tak historie transakcí by měla být přímo v PayPalu účtu příjemce, ne? Pokud teda dojdou peníze na PayPal v pořádku. V opačném případě je mi to "jedno" a napíšu, že platba nemohla být dokončena. Z 99% by neprošla jen kvůli nedostatku peněz plátce (můj úsudek)
No, já se spíš snažím naznačit, že pokud uděláme pouhé nabití peněženky, tedy něco ve smyslu:
$query = sprintf("UPDATE users SET penezenka = penezenka + $_GET['amt']
WHERE id_user = '%s'", mysql_real_escape_string($id_user));
Tak změníme sice hodnotu, ale zpětně nikdy nebudeme vědět za co.
#30 RePRO
No, že teď je to vlastně o tom, že já zákazníkovi nachystám přihlašovací okno do PayPalu, on mi pošle dolary a já mu je přičtu do databáze. A opačným procesem jsem myslel to, že zákazník by si ty peníze vybral z databáze na PayPal. To znamená, jak udělat operaci bez logování. On by vybral částku, která by se mu odečetla z databáze a z mého PayPalu by mu ta částka došla na jeho PayPal účet.
Takhle to povím, dá se to udělat, já bych to třeba naimplementovat dokázal, ale to je to poslední, spíše jde o to to pochopit. Je to samozřejmě horší na implementaci... Lepší, než vysvětlování bude asi odkaz:
http://stackoverflow.com/questions/1559808/paypal-api-send-money-to-any-paypal-account
Vyhovující? :)
#32 RePRO
No je to složitější, ale snad se s tím poperu. Důležitější pro mě bylo to, co jsme tu řešili doteď a jsem happy, že už konečně fungují proměnné. Opravdu mě nenapadlo, že hodnoty z inputu hidden budou v GET namísto POST a ještě zkrácené tvary. Pravděpodobně bezpečnost. Každopádně patří Vám oběma (RePRO, KIV) velké díky a jsem Vaším dlužníkem :-))
To vůbec, jsme tu od toho, abysme pomáhali -- když víme. Kolega KIIV Ti ještě něco odborného k té druhé problematice napíše. Já kdyžtak budu reagovat později (někdy odpoledne),
Až to budeš mít vyřešené, ,můžeš sem dát nějaký podrobnější popis toho, jak jsi to kompletně zprovoznil? Byl bych ti vděčný. D9ky
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Platba z PayPal na PayPal — založil marioff
Cofidis - implementace brány — založil Jirka
Integrace — založil Spectator
Derivace,integrace — založil janysek_
Moderátoři diskuze