Malý wrapper pro Gopay API

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

…a je to tak zámérně. Netřeba se však ničeho obávat, je to pár zavolání API z Markette/GoPay

Stejk
Člen | 13
+
0
-

Honza Kuchař napsal(a):

…a je to tak zámérně. Netřeba se však ničeho obávat, je to pár zavolání API z Markette/GoPay

A pravě to je ta chyba. Vubec nevím jaké. Něco malo tuším podle jejich notifi.ph z ukazkoveho balíčku ale spíš jsem mimo. Nějáké rady jak na to?

Stejk
Člen | 13
+
0
-

Honza Kuchař napsal(a):

…a je to tak zámérně. Netřeba se však ničeho obávat, je to pár zavolání API z Markette/GoPay

A kde předám GoPay notifyURL?? Nikde jsem nic takového nenašel :(

Felix
Nette Core | 1196
+
0
-

Stejk napsal(a):

Honza Kuchař napsal(a):

…a je to tak zámérně. Netřeba se však ničeho obávat, je to pár zavolání API z Markette/GoPay

A kde předám GoPay notifyURL?? Nikde jsem nic takového nenašel :(

Ta se nastavuje primo na GoPay v administraci/emailem.

Stejk
Člen | 13
+
0
-

Felix napsal(a):

Stejk napsal(a):

Honza Kuchař napsal(a):

…a je to tak zámérně. Netřeba se však ničeho obávat, je to pár zavolání API z Markette/GoPay

A kde předám GoPay notifyURL?? Nikde jsem nic takového nenašel :(

Ta se nastavuje primo na GoPay v administraci/emailem.

Děkuji za odpověď :)

mates
Člen | 36
+
0
-

Také jsem teď pracoval na propojení s GoPay. Zaslali mi sadu testů které mám provést. Předpokládám, že obdobný seznam testů obdržel každý. Zajímá mne jak jste se vypořádali se stavem TIMEOUTED.

Jde o tento test:
3) Ověření korektního zpracovávání stavu „TIMEOUTED“:
Proveďte prosím objednávku, zvolte platbu kreditní kartou, místo tlačítka uhradit prosím zavřete prohlížeč s platební bránou GoPay. Ve vašem e-shopu by měla být tato platba do 5-ti minut označena jako vypršená (TIMEOUTED). 5-ti minutový limit je nastaven pouze na testovací instanci platební brány GoPay. Na provozním prostředí jsou limity pro vypršení platby stanoveny v řádech hodin
.

Třída ReturnedPayment obsahuje metody isFraud, isPaid, isCanceled ale chyběla mi tam metoda isTimeouted, tak jsem si ji dopsal, a to obdobně jako metody předchozí s rozdílem že se ptám na kontantu TIMEOUTED, kterou API disponuje.

public function isTimeouted()
{
	$this->getStatus();
	return $this->result['sessionState'] === GopayHelper::TIMEOUTED;
}

Nicméně správný výsledek se nedostavil, resp. to vypadá, že GoPay vůbec notifikační skript nevyvolal a to ani po 24hod.

Felix
Nette Core | 1196
+
+1
-

Take jsem si dopsal isTimeouted, nejspise to poslu jako PR do Markette. TIMEOUTED mi funguje v pohode, na testovacim prostredi se mozna TIMEOUTED neposila nebo to trva moc dlouho.

Zkousel jsi to na ostre verzi?

mates
Člen | 36
+
0
-

Zatím ostrou ještě nemám, tu jsem právě měl obdržet až po úspěšném testování.
Mám to ve svém forku takto:
https://github.com/…dPayment.php

Ok, pokud to tedy na ostré funguje, tak to prohlásím za otestované :) Dík za info.

Jo, PR udělej, nebo pokud budeš chtít, zmáčknu to tam já.

Felix
Nette Core | 1196
+
0
-

mates napsal(a):

Zatím ostrou ještě nemám, tu jsem právě měl obdržet až po úspěšném testování.
Mám to ve svém forku takto:
https://github.com/…dPayment.php

Ok, pokud to tedy na ostré funguje, tak to prohlásím za otestované :) Dík za info.

Jo, PR udělej, nebo pokud budeš chtít, zmáčknu to tam já.

https://github.com/…opay/pull/20

Mam v zaloze jeste jeden pak.

hrach
Člen | 1838
+
+2
-

Pridal jsem @Felix a @hranicka jako maintainary. Ja bohuzel nemam cas a nyni ani uz prilezitost, migruji k payu.

mates
Člen | 36
+
0
-

Tak jsem úspěšně prošel testováním a ostrý provoz je OK. Ještě jedna malá věc kterou jsem musel upravit konstanta pro platební kanály v třídě Service.

class Service extends Nette\Object
{

	/** @const Platba kartou - Česká spořitelna, a.s. E-commerce 3-D Secure */
	const METHOD_CARD_CESKAS = 'cz_cs_c';
	//const METHOD_CARD_CESKAS = 'cz_cs_kb';
	/** @const Platba kartou - UniCredit Bank - Global payments */
	const METHOD_CARD_UNICREDITB = 'eu_gp_u';
	/** @const Platba kartou - KB */
	const METHOD_CARD_KB = 'eu_gp_kb';

Pro výběr platby kartou je třeba použít tu konstantu odpovídající řetězci ‚eu_gp_kb‘, pro niž jsem následně přidal konstantu s názvem METHOD_CARD_KB.

Felix
Nette Core | 1196
+
0
-

@mates Koukal jsem, ze toho tam je vic. Muzes projit http://help.gopay.com/…pro-eur-menu a http://help.gopay.com/…pro-czk-menu a doplnit konstanty? Je mozne, ze to gopay zmenil. Pak posli PR, diky.

mates
Člen | 36
+
0
-

Ano, může být toho být více, já jsem doplnil jen tu nejnutnější, tedy platební kartu. Zkusím na to mrknout. Asi než abych porovnával změny tak ty konstanty vytvořím podle manuálu znovu.

p.s.: Gratuluji za maintainera.

mates
Člen | 36
+
+1
-

@Felix Dodělal jsem kontrolu konstant platebních kanálů a přidal/odebral potřebné. Připraveno zde https://github.com/…/Service.php

Felix
Nette Core | 1196
+
+4
-

Gopay v2.1.0

Github: https://github.com/Markette/Gopay
Composer: https://packagist.org/…rkette/Gopay
Diff: https://github.com/…0.0...v2.1.0

  • Gopay API 2.5
  • Nette 2.0 – 2.3
  • Oprava bugu
  • Drobne upravy API
    • Service – aktualizovane konstatny plateb
    • Service – pridana volba – Platbu vybere uzivatel (METHOD_USER_SELECT)
    • Service – vymazani nepouzivanych method allowChannel, denyChannel, addRawChannel
    • Service – uprava addChannel metody
    • ReturnedPayment – nove metody isRefunded, isAuthorized
  • Pokryti testu 100% (krome oficialniho API forku)

Muzete vesele instalovat a testovat.

composer require markette/gopay:~2.1.0
Zdenal
Člen | 21
+
0
-

Ahoj,

snažím se rozchodit Markette\Gopay

ale stále se mi nezobrazují tlačítka pro provedení platby. Používám verzi markette/gopay 2.1.0

Muj kod je:

<?php

protected function createComponentGopayForm()
{
	$form = new Form();

	$gopay = $this->gopay;

	$gopay->bindPaymentButtons($form, array($this->gopaySubmittedForm));

	return $form;
}

public function gopaySubmittedForm(Gopay\PaymentButton $button)
{
	$channel = $button->getChannel();
}

?>

a v šabloně normálně volám formulář
{control gopayForm}

Nehlásí to žádnou chybu. A když se podívám do html zdroje tak tam je pouze

<form id=„frm-gopayForm“ method=„post“ action=„/data/tiwwo/www/admin/users/activate?lang=cs“ novalidate="">
<div>
<input type=„hidden“ value=„gopayForm-submit“ name=„do“>
</div>
</form>

Pomůže někdo? Děkuji.

Editoval Zdenal (1. 8. 2015 18:46)

Zdenal
Člen | 21
+
0
-

Zdenal napsal(a):

Ahoj,

snažím se rozchodit Markette\Gopay

ale stále se mi nezobrazují tlačítka pro provedení platby. Používám verzi markette/gopay 2.1.0

Muj kod je:

<?php

protected function createComponentGopayForm()
{
	$form = new Form();

	$gopay = $this->gopay;

	$gopay->bindPaymentButtons($form, array($this->gopaySubmittedForm));

	return $form;
}

public function gopaySubmittedForm(Gopay\PaymentButton $button)
{
	$channel = $button->getChannel();
}

?>

a v šabloně normálně volám formulář
{control gopayForm}

Nehlásí to žádnou chybu. A když se podívám do html zdroje tak tam je pouze

<form id=„frm-gopayForm“ method=„post“ action=„/data/tiwwo/www/admin/users/activate?lang=cs“ novalidate="">
<div>
<input type=„hidden“ value=„gopayForm-submit“ name=„do“>
</div>
</form>

Pomůže někdo? Děkuji.

Už jsem to vyřešil, přidáním metody addChanel

Ale mám jiný dotaz, upravil někdo plugin pro nové REST API?

Felix
Nette Core | 1196
+
0
-

GopayInline – alfa

Aktualne je to ve fazi testovani (na jednom portale), pokud vse dopadne dobre, tak muze vyjit verze 1.0.

Testujte: https://github.com/…/GopayInline

cc @Zdenal

Felix
Nette Core | 1196
+
+3
-

Bumped v3.0.0-alpha

COMPOSER: https://packagist.org/…rkette/Gopay
DIFF: https://github.com/…v3.0.0-alpha

Novinky

Ostatní:

  • Oddělení README pro větev v2.x
  • Oddělené examples pro větev v2.x

Porovnání verzi 2.1 až 3.0 zde – http://blog.jfx.cz/…y-3-generace

Editoval Felix (14. 10. 2015 15:37)

uocriota
Člen | 8
+
0
-

@Felix Ahoj.
Potřeboval bych od tebe radu. :)
Aktuálně máme v projektu Markette\Gopay 2.1 a chceme nahodit novou verzi.
Má otázk je, kterou? Markette\Gopay 3.0 a nebo Markette\GopayInline?
Nechápu ten rozdíl :(

Felix
Nette Core | 1196
+
0
-

@uocriota

Ahoj, za prve, super ze to u vad pouzivate, mam radost.

Jestli gopay 3.0 nebo gopay-inline je na vas. Gopay-inline bude asi lepsi volba nebot je to pres nove REST API. Stara verze jede pres SOAP. Rekl bych, ze casem budou aktualizovat jenom ten rest.

uocriota
Člen | 8
+
0
-

@Felix Díky :)
Ještě taková jedna věc. Je normální, že v response amout vrací 32100 místo 321??
Jak to případně řešíš?

her-ur
Člen | 20
+
0
-

@uocriota Nevím, jak to řeší nebo neřeší knihovna Markette, ale jinak, je to normální. Jak uvádí dokumentace Gopay API, je to částka v haléřích. Stačí dělit/násobit 100.

Felix
Nette Core | 1196
+
0
-

@uocriota Presne jak pise @her-ur.

Jinak, uz si to presne nepamatuji. Ale v kodu jsem nasel: https://github.com/…ePayment.php#L77

uocriota
Člen | 8
+
0
-

@Felix @her-ur Díky moc. Já se snažím dělení v php vyhýbat. TAk se raději ptám, jestli jen špatně nevidim a to číslo někde i bez dělení je :D

Nemáte nějaký příklad implementace inline plateb v Nette. našel jsem jeden příklad přímo na gopay, ale …

Felix
Nette Core | 1196
+
0
-

@uocriota Uplne jednoduchou ukazku na inline platby mas primo v readme u GopayInline.

https://github.com/…/GopayInline#…

Pripadne z oficialni dokumentace.

https://doc.gopay.com/cs/?php


PS: Ten jejich oficialni PHP klient vypada dost jako nase Markette. xD

Editoval Felix (31. 3. 2016 18:18)

Čamo
Člen | 798
+
0
-

Zdravím,
potreboval by som nastaviť SK jazyk pre Gopay formulár. Ale zdá sa že to nieje možné. Založil som issue, ale nikto nereaguje. Pritom to vyzerá len na malú úpravu.