WebPay – platba kartou přes bránu 3-D Secure
- PetrP
- Člen | 587
Protože nefunguje dokumentace (a ani přidávání addonů) házím komponentu sem.
Potřeboval jsem implementovat platbu kartou. Vznikla z toho tahle komponenta, kterou dávám ostatním dobrým lidem od nette k dispozici. ;]
(Omluvte velikost nadpisů, ale fórum má k dispozici jen h4,h5,h6 ;])
…
EDIT
Dokumentace již funguje, takže zde: https://componette.org/search/?…
Editoval PetrP (30. 11. 2009 19:37)
- Cifro
- Člen | 245
Pre slovenské banky je možné využiť aj knižnicu(e) MONOGRAM EPayment
MONOGRAM EPayment knižnice implementujú platobné systémy niektorých slovenských bánk. MONOGRAM
EPayment knižnice sú dostupné ako v PHP tak aj v C# verzii a teda použiteľné vo väčšine webových projektov.
Možno sa bude dať použiť aj s touto komponentou, ktorá vyzerá dobre :)
Editoval Cifro (27. 11. 2009 18:06)
- Honza Kuchař
- Člen | 1662
Pokud to opravdu funguje, tak to je naprosto super! To je jedna z veci, ktera mi dlouho chybela. Diky moc
- PetrP
- Člen | 587
PytelCZ napsal(a):
pokud vim, vetsinou je v pozadavkach, at se vsechny pokusy o autorizaci karty a podobne loguji do DB, mas i tohle poresene?
Nevím přesněv jakých požadavcích myslíš. Jestli od banky nebo od klienta.
Jinak aspoň moje banka, všechny požadavky loguje u sebe (mám k nim přístup).
Ukládat do modelu si můžeš implementovat sám v událostech, já osobně zpracovávám jen úspěšné zaplacení (WebPay::$onResponse).
Při logování chybných požadavků je potřeba myslet i na to že majitel karty může prostě uprostřed platby zavřít prohlížeč takže k WebPay::$onError nikdy nedojde.
- Honza Marek
- Člen | 1664
Výhružka, že člověk bude moci upravovat jen svojí addonu naštěstí nebyla splněna, tak jsem mohl do dokumentace doplnit spoustu čárek a opravit jedno i/y.
- nAS
- Člen | 277
honzakuchar napsal(a):
Ahoj, kolik tak orientačně stojí to uzavření smlouvy s bankou? Díky
Klient teď taky uzavíral smlouvu, tak jsem se ho nenápadně zeptal a prý standardně to je kolem 11 000,–, ale pokud má člověk rozjetý nějaký trochu větší byznys, tak to jde usmlouvat až na 0,–. :) Dále se platí procenta z obchodu, začínající opět nevýhodněji kolem 4–4,5%, čím větší obchod, tím míň.
- Honza Kuchař
- Člen | 1662
Díky za info o smlouvách s bankami. Jak funguje paypal v tomto směru? Musím také uzavřít nějakou smlouvu? Zprovozňoval to už někdo s paypal? Paypal používají třeba tady: http://www.visualcron.com/Order.aspx
- Honza Kuchař
- Člen | 1662
Zdá se mi API PayPalu velmi podobné. Schéma na straně 86 v tomto pdf: https://cms.paypal.com/…ionGuide.pdf
- Honza Kuchař
- Člen | 1662
Jasný, chápu. ;)
Už aby David udělal ten Apple store na doplňky. Už se fakt moc těším (opravdu, nemyslím to ironicky), až si za kvalitní doplňky zaplatím. Budou kvalitnější, protože lidé budou mít mnohem větší motivaci je udělat kvalitní. Když budou kvalitní, zaplatí více lidí. :) Ale před tím by možná stačilo nějaké hodnocení. :)
- Honza Kuchař
- Člen | 1662
Nevím za zkoušku to stojí. Takhle z těch doplňků máme stejně akorát
hovno starosti. (myslím z pohledu autora)
Moc se mi líbí přístup Texy! Zadarmo pod GPL – podpora opensource; pro komerční využití placené. Přesně takhle jsem si to představoval. Funguje takhle třeba i ExtJS.
//EDIT: Překlep
Editoval honzakuchar (24. 2. 2010 11:39)
- PetrP
- Člen | 587
norbe napsal(a):
Můžu se zeptat z čeho jsi čerpal při tvorbě týhle komponenty? Klient se na mne obrátil kvůli platební bráně PayMUZO, je to to samé? Hledal jsem na netu a našel pouze drobný nástřel o co se jedná a žádný odkaz na API nebo něco z čeho by se dali načerpat potřebné informace :(
API a návod ti pošle banka na instalačním CD. Bez nakouknutí do api nedokážu poznat jestli je stejné. Předpokládám že budou stejné nebo hodně podobné všechny. Když mi pošleš podrobnější informace tak se na to kouknu.
- PetrP
- Člen | 587
Tak jenom informace která by se mohla někomu hodit. Dnes jsem zkoumal dokumentaci brány české spořitelny a je to děs.
Asi u nich ještě neslyšeli o elektronických podpisech. ;] A řekli si když to jde jednoduše uděláme to složitě.
Funguje to u nich cca takto:
Request lze zaslat jen přes post, takže není možné ho vytvořit v systému přesměrováním.
Banka Request kontroluje tak že na předem smluvenou adresu (pouze https) ho zašle a já řeknu že je ok. Ta adresa nesmý obsahovat žádné get data. Takže to nemůže směřovat na signál componenty.
Když uživatel zaplatí tak banka pošle ještě na další https stránku (zase nesmí mít get params) a já znova potvrdim že je to znova ok ;] (ještě tady probíhá kontrola nějakého předem smluveného heslo)
A pak je uživatel přesměrovanej na stránku, která nesmý zase mít žádné get parametry. A bez kontextu, takže mu můžu leda říct „asi jste si něco koupil“.
U normální banky to funguje takto:
Odešlu podepsanej požadavek. Banka to vyřídí z uživatelem. a dostanu podepsanou odpověd. ;]
- PetrP
- Člen | 587
To ano, ale v první řádě na signály component se už neroutuje tak dobře. a pak jak to chceš zpracovat jako komponentu.
Tedy aby jsme si rozuměli, není problém to zprasit, problém je zpracovat to jako znovupoužitelnej celek. Kterej má jednoduché ovládání a ideálně žádně nastavování kolem.
Hele děláš i něco jiného něž že jenom checkuješ fórum? ;]
Editoval PetrP (4. 3. 2010 23:53)
- Ondřej Mirtes
- Člen | 1536
Jasně, udělat to hezky je problém, když tě ta banka tak omezuje.
BTW: Jo, ale když jsem v Google Readeru, tak ho mám tak vychovanýho, že mi každých pár minut obnovuje feed s fórem :o)
- Panda
- Člen | 569
Omlouvám se, že zde otravuji příspěvkem mimo mísu, ale zdá se, že by to někdo tady mohl vědět.
Podporují tyto brány od bank i jinou možnost platby, než karty typu VISA? Konkrétně mi jde o nějaké automatizované přijímání plateb provedených prostým převodem na účet. Kolega už asi týden obvolává banky a tam ho většinou jen odkáží na web, ze kterého nic nevyčteme…
- despiq
- Člen | 320
MasterCard? :)
tomu bych rikal spis parovani plateb, jo to by se mi taky hodilo, nicmene asi to
neni uplne nejsnadnejsi vec, ale, myslim ze KB ma nejake api nebo spis externi
aplikaci pres kterou se da dostat do homebankingu a pak importovat nebo
exportovat nejake udaje, tak sem nemusel ani chodit moc daleko
http://www.mojebanka.cz/…/index.shtml
tak to bude snadny :) jen to asi nebude zadarmo a je to pro wokna, tak tezko rict jestli to na linuxu zvladne wine jinak je to proste program
Editoval despiq (12. 3. 2010 12:17)
- norbe
- Backer | 405
PetrP napsal(a):
norbe napsal(a):
… Klient se na mne obrátil kvůli platební bráně PayMUZO, je to to samé? Hledal jsem na netu a našel pouze drobný nástřel o co se jedná a žádný odkaz na API nebo něco z čeho by se dali načerpat potřebné informace :(
… Když mi pošleš podrobnější informace tak se na to kouknu.
Tak jsem konečně zjistil podrobnosti o platební bráně PayMUZO, nejedná se o nic jiného než o GP WebPay. Platba s využitím komponenty již funguje bez problému. Díky za ní :)
Jen bych se chtěl, jakým způsobem ošetřujete situaci, kdy klient provede
platbu, ale z nějakého důvodu selže přesměrování na URL obchodníka
(nedojde k vyvolání $wp->onResponse
události).
- PetrP
- Člen | 587
norbe napsal(a):
Jen bych se chtěl, jakým způsobem ošetřujete situaci, kdy klient provede platbu, ale z nějakého důvodu selže přesměrování na URL obchodníka (nedojde k vyvolání
$wp->onResponse
události).
Zatím nijak.
Napadá tě jak to řešit?
Momentálně to (ne)řeším tak že doufám že když se uživateli během platby nedostane do konečného bodu kde mu to řekne že zaplatil (protože spadne můj server, nebo internet uživateli) tak zavolá a bude se to řešit individuálně. ;]
- norbe
- Backer | 405
Při nasazení na produkční server (u FORPSI) jsem narazil na problém
s nestandartním chováním funkce http_build_query
. Místo
&
vkládá hodnoty &
(dokonce i pokud do
funkce předám &
jako oddělovač) a kvůli tomu pak při
přesměrování na GPE nedojde k rozpoznání parametrů z URL. Prozatím
jsem to vyřešil pomocí str_replace
.
- PetrP
- Člen | 587
norbe napsal(a):
Mohl by si prosím spustit tenhle test a hodit my výsledek.
$a = array('a','b');
foreach (array(NULL, '&', '&', 'X') as $d)
{
if ($d !== NULL) ini_set('arg_separator.output', $d);
Debug::dump(ini_get('arg_separator.output'));
Debug::dump(http_build_query($a));
Debug::dump(http_build_query($a, NULL, '&'));
Debug::dump(http_build_query($a, NULL, '&'));
Debug::dump(http_build_query($a, NULL, 'X'));
}
A dále ještě výpis z phpinfo()
.
- norbe
- Backer | 405
Omlouvám se za prodlevu, ale kvůli dodělávání bakalářky jsem se na to dřív nedostal.
Nastavení arg_separator.output
na &
pomohlo
(původní hodnota byla &
) – nějak mně nenapadlo že
by v tom mohl být rozdíl oproti nastavení oddělovače parametrem. Možná
by bylo dobré, aby to komponenta hlídala automaticky a házela nějakou
vyjímku v případě špatného nastavení.
Díky za pomoc
- David Grudl
- Nette Core | 8218
Třetí parametr http_build_query by měl mít přednost a protože na konfiguraci PHP se nelze spoléhat, je nutné ho vždycky uvádět.
- Acnnair
- Člen | 34
V prvom rade by som chcel poďakovať za super komponentu. No dostal som sa
k problému, ktorý neviem vyriešiť. Komponentu si vytvorím, napojím na
formulár, nastavím potrebné parametre (URL brány, číslo obchodníka,
certifikáty…). Odoslanie na bránu, zaplatenie na bráne mi krásne funguje.
V onCreate
si pomocou $request->setResponseUrl()
nastavím URL na odpoveď na ktorú ma presmeruje aj so všetkými parametrami
z banky čo sú v url. No ako docieliť aby sa pri odpovedi z banky zavolala
udalosť onResponse
?
Ďakujem.