WebPay – platba kartou přes bránu 3-D Secure

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
PetrP
Člen | 587
+
0
-

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
+
0
-

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
+
0
-

Pokud to opravdu funguje, tak to je naprosto super! To je jedna z veci, ktera mi dlouho chybela. Diky moc

PetrP
Člen | 587
+
0
-

Tak záleží jak moc jednotlivé banky dodržujou stejné api (měli by). Když mi pošlete specifikaci banky pro kterou to potřebujete tak řeknu jestli to je ok, nebo to doimplementuju.

Honza Kuchař
Člen | 1662
+
0
-

Budeš tuhle komponentu předvádět na poslední sobotě?

PetrP
Člen | 587
+
0
-

Nemám žádnou přednášku připravenou, ale klidně si o ní na osobní rovině popovídám.

PytelCZ
Člen | 21
+
0
-

pokud vim, vetsinou je v pozadavkach, at se vsechny pokusy o autorizaci karty a podobne loguji do DB, mas i tohle poresene?

PetrP
Člen | 587
+
0
-

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 Kuchař
Člen | 1662
+
0
-

Ahoj, kolik tak orientačně stojí to uzavření smlouvy s bankou? Díky

Honza Marek
Člen | 1664
+
0
-

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.

PetrP
Člen | 587
+
0
-

Honza Marek napsal(a):

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.

Díky moc, dlužím ti pivo.

PetrP
Člen | 587
+
0
-

honzakuchar napsal(a):

Ahoj, kolik tak orientačně stojí to uzavření smlouvy s bankou? Díky

Vůbec netuším, smlouvu uzavíral client. V žádných podkladech který mám já to není zmíněno.

nAS
Člen | 277
+
0
-

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
+
0
-

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
+
0
-

Zdá se mi API PayPalu velmi podobné. Schéma na straně 86 v tomto pdf: https://cms.paypal.com/…ionGuide.pdf

PetrP
Člen | 587
+
0
-

Je to podobné a nebyl by problém to implementovat. Problém je že nemám motivaci to zprovoznit. ;] Tedy že to nepotřebuju. Až budu mít projekt kde to bude potřeba tak to rozšířím.

Honza Kuchař
Člen | 1662
+
0
-

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í. :)

PetrP
Člen | 587
+
0
-

Nevím no, takový store může fungovat jen když bude nette hooodně rozšířený.

Protože:

  • češi nejsou moc na placení (ano jsme banda zlodějská).
  • ceny musí být nízký (ako iphone aplikace) a pak musí být velké množství lidí kteří o ně mají zájem.

Tedy podle mě zatím utopie.

Honza Kuchař
Člen | 1662
+
0
-

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)

norbe
Backer | 405
+
0
-

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

PetrP
Člen | 587
+
0
-

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.

norbe
Backer | 405
+
0
-

Aha, díky za info, až zjistím podrobnější informace, hodím to sem.

PetrP
Člen | 587
+
0
-

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. ;]

Ondřej Mirtes
Člen | 1536
+
0
-

GET parametry můžeš zamaskovat pomocí routování, včetně signálů :)

PetrP
Člen | 587
+
0
-

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
+
0
-

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)

PetrP
Člen | 587
+
0
-

To máš dobře, mě v čtení aktuálních zpráv v GReadru poněkud zdržuje těch skoro 1000 co jsem pozadu. Měli by jsme přestat nette tolika propagovat ;]

despiq
Člen | 320
+
0
-

cojavim tak ti muze banka poslat nazpet jedno pole v tom postu ve kterem muzes mit co chces, myslim ze je to MERORDERNUM, proste ho posles jim a oni ho poslou nazpet uplne stejny

mluvim o Cs a.s.

Editoval despiq (5. 3. 2010 3:13)

Panda
Člen | 569
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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ě. ;]

despiq
Člen | 320
+
0
-

Ja bych vedel
PayMUZO urcite nabizi nasledne zjistovani stavu plateb, takze pokud by nedoslo k onresponse pak by mela fungovat kontrola plateb co nemely zpetnou odpoved

norbe
Backer | 405
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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.

PetrP
Člen | 587
+
0
-

David Grudl napsal(a):

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.

Rozhodně, to je můj bug. Já jen že ten člověk psal že to nefungovalo ani když tam sám do té funkce & dá.

Setmedia
Člen | 3
+
0
-

Nemáte někdo konkrétní příklad? Addon je super, ale jsem v tom trošku ztracený:/

PetrP
Člen | 587
+
0
-

Konkrétní příklad čeho? https://componette.org/search/?… nestačí?

Setmedia
Člen | 3
+
0
-

Myslel jsem spíš php skript, kde by bylo reálné použití – od include třídy, přes nastavení až po zavolání funkce s příslušnými parametry.

despiq
Člen | 320
+
0
-

Pokud nevis jak tuto komponentu pouzit pomoci navodu ktery je u komponenty, pak mas mezery ve znalostech ktere bys mel nejprve vyplnit.

Setmedia
Člen | 3
+
0
-

S Nette pracuji nově, proto jsem prosil o příklad. Nevěděl jsem, že je takový problém postnout kousek php kódu:/

despiq
Člen | 320
+
0
-

to je prave ten problem, ten kousek kodu je u ty komponenty uz napsanej, pokud budu pastovat neco vic pak jedine celou aplikaci

Acnnair
Člen | 34
+
0
-

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.

PetrP
Člen | 587
+
0
-

Problém je že v onCreate přepíšeš WebPayRequest::setResponseUrl. V WebPay::createWebPayRequest() se automaticky nastaví signál který spustí událost onResponse.

PetrP
Člen | 587
+
0
-

Acnnair napsal(a):

… tvojej komponente som doplňoval namespaces …

Prosimtě když už si doplnil namespaces, pošli mi to vydám i tu verzi.

Acnnair
Člen | 34
+
0
-

Vďaka za rady, upravená verzia letí mailom.

talpa
Člen | 44
+
0
-

ahoj mate tu opravenou verzi?:) Ja jen ze ja mam take svou verzi s namespace tak jestli to nechcete vydat aby se to sloucilo :)

drakul
Člen | 37
+
0
-

Zdravím,
prosím vás neměl byste někdo upravenou verzi pro Nette 2.0 s novými namespace?
Díky moc