Popis komunikace s platební bránou
Komunikace s platební bránou GoPay probíhá přes webové služby. Platby jsou založeny ze serverové strany prodejního místa pomocí webových služeb. Prodejní místo získá identifikátor platby paymentSessionId před samotným provedením/zrušením platby. Tímto je vytvořena unikátní vazba mezi objednávkou a platbou.
Po dokončení platby je provedena on-line kontrola platby prostřednictvím webové služby, která se nachází na adresách:
Komunikace s těmito webovými službami probíhá přes API. Webové služby zajišťují veškeré operace s platbami (vytvoření, ověření stavu, refundace, částečná refundace, atd.).
Princip Komunikace s platební bránou
Průběh platby s využitím úplné integrace je následovný:
- Zákazník se pohybuje na prodejním místě. Provádí výběr zboží/služby (plnění košíku).
- Poté, co zákazník potvrdí objednávku, je ze strany prodejního místa založena platba. Založení platby je provedeno přes GoPay webovou službu.
- Následně je zákazník přesměrován na platební bránu GoPay. Přesměrování je provedeno prodejním místem na dříve založenou platbu v kroku 2. Více o přesměrování na platební bránu naleznete zde.
- Zákazník si na platební bráně zvolí platební metodu, pomocí které bude chtít platbu uhradit.
- Zobrazené platební metody jsou ovlivněny parametry předávanými při vytvoření platby. Více informací o založení platby a jejích jednotlivých parametrech naleznete zde.
- GoPay platební brána je od poskytovatele platební metody informována, zda byla nebo nebyla platba uhrazena.
- Zákazník je přesměrován zpět na prodejní místo. V případě online plateb dostává GoPay platební brána informaci o provedení platby okamžitě a zákazník je přesměrován dle výsledku na successURL nebo failedURL. Pro případ plateb formou offline metod může zákazník přejít na stranu prodejního místa prostřednictvím successURL, aniž by byla platba dokončena.
- Po přesměrování zpět na prodejní místo je ze strany prodejního místa provedeno volání na stav platby. Na základě získaného stavu platby je nutné, aby byl stav platby zákazníkovi vhodně prezentován.
- HTTP notifikace o změně stavu platby zajišťuje bezpečné doručení informace o změně stavu platby. Doručení HTTP notifikace je provedeno do 15 sekund od provedení/zrušení/vypršení životnosti platby. Notifikace není nositelem informace o stavu platby. Je to pouze upozornění na to, že se stav platby změnil.
- Po přijetí notifikace je ze strany prodejního místa provedeno volání na stav platby. Volání se provádí skrze GoPay webovou službu. Pro správné získání informace o stavu plateb je nutné notifikace vždy zpracovávat. Notifikace je možné doručovat vícero způsoby. Více informací o jednotlivých variantách notifikací a jejich zpracování naleznete níže.
URL pro komunikaci s platební bránou
Pro komunikaci s platební bránou se využívá dvojice URL adres. Pro správu plateb je to webová služba, se kterou se komunikuje prostřednictvím API. Ta se nachází na adresách:
- Produkční webová služba - https://gate.gopay.cz/axis/EPaymentServiceV2?wsdl
- Testovací webová služba - https://gw.sandbox.gopay.com/axis/EPaymentServiceV2?wsdl
Pro samotné provedení platby je využita URL platební brány, na kterou se provádí přesměrování.
Platební brána se nachází na adresách:
- Produkční platební brána - https://gate.gopay.cz/gw/pay-full-v2
- Testovací platební brána - https://gw.sandbox.gopay.com/gw/pay-full-v2
Ověření stavu platby
Ověření stavu platby je prováděno při zpětném přesměrování z GoPay na prodejní místo, nebo po příchodu HTTP notifikace. URL přesměrování zpět na prodejní místo, ale i HTTP notifikace jsou doplněny shodnými parametry viz. Identita platby (paymentIdentity)).
Název parametru | Popis parametru | Povinný |
---|---|---|
paymentSessionId | Identifikace platby v systému GoPay. Celé číslo. | ANO |
targetGoId |
Identifikace prodejního místa v rámci GoPay. Celočíselný identifikátor - definován během integrace prodejního místa. |
ANO |
orderNumber | Identifikace objednávky v rámci prodejního místa. Alfanumerické označení objednávky max. 128 znaků. | ANO |
parentPaymentSessionId | Identifikace rodičovské platby. Používané u opakovaných plateb. | ANO |
encryptedSignature | Podpis platebního příkazu. Sestavení řetězce pro podpis, viz níže. | ANO |
p1 - p4 | Volitelný parametr (max. 512 znaků). | NE |
Řetězec pro podpis
Šifrovaný podpis je sestaven z vlastností Identity platby. Podpis je šifrován tajným klíčem označeným jako secureKey, který je předáván v rámci integrace prodejního místa.
Řetězec pro sestavení podpisu
targetGoId+'|'+paymentSessionId+'|'+parentPaymentSessionId+'|'+orderNumber+'|'+secureKey
Na successURL je zákazník přesměrován po provedení platby, nebo po úspěšném založení platby vybranou platební metodou (offline metody a internetová bankovnictví v nočních hodinách). Z toho důvodu je nutné provádět kontrolu stavu platby prostřednictvím GoPay služby - Stav platby.
Na failedURL je zákazník přesměrován, pokud je provedeno zrušení platby. I v tomto případě lze provádět kontrolu dotazem na stav platby. Zpracování HTTP notifikace zajišťuje doručení informace o provedení platby i v situaci, kdy na straně zákazníka dojde k přerušení připojení k internetu, atp. Z tohoto důvodu je zpracování notifikace povinnou součástí úplné integrace.
Vzorové implementace zpracování návratu na prodejní místo naleznete v přiložených zdrojových kódech.
Prostředí | Implementace ověření stavu platby |
---|---|
PHP | Kontrola parametrů přesměrování a stavu platby naleznete ve skriptu callback.php. Kontrola na základě příchozí notifikace je obsažena ve skriptu notify.php. |
JAVA | Kontrola po přesměrování zpět na platební bránu, nebo po příchodu HTTP notifikace je připravena ve třídě SimplePayment, metoda successUrl. |
ASP.NET | Kontrola parametrů přesměrování a stavu platby naleznete ve třídě Callback, metoda Call. Kontrola na základě příchozí notifikace je obsažena ve třídě Notify, metoda Notification. |
Python | Kontrola po přesměrování zpět na platební bránu, nebo po příchodu HTTP notifikace je připravena ve skriptu SimplePayment.py. |
RUBY | Kontrola po přesměrování zpět na platební bránu, nebo po příchodu HTTP notifikace je připravena ve skriptu SimplePayment.rb. |