GoPay technická dokumentace
Tento dokument popisuje integraci platební brány GoPay pomocí našeho REST API a je určen pro vývojaře. Pokud vlastníte eshopovou platformu a hledáte GoPay pluginy, navštivte článek Obecný postup integrace.
Tato dokumentace obsahuje průvodce integrací platební brány GoPay a REST API referenci. K integraci můžete použít také jednu z námi nabízených knihoven.
PHP
- PHP >= 8.1
- GitHub: https://github.com/gopaycommunity/gopay-php-api
- Packagist: https://packagist.org/packages/gopay/payments-sdk-php
- Instalace:
composer require gopay/payments-sdk-php
Python
- Python >= 3.6
- GitHub: https://github.com/gopaycommunity/gopay-python-api
- PyPi: https://pypi.org/project/gopay/
- Instalace:
pip install gopay
.NET (C#)
- .NET Standard >= 2.0
- GitHub: https://github.com/gopaycommunity/gopay-dotnet-api
- NuGet: https://www.nuget.org/packages/GoPay.NET
- Instalace:
dotnet add package GoPay.NET
Java
- Java >= 11
- GitHub: https://github.com/gopaycommunity/gopay-java-api.git
- Maven: https://mvnrepository.com/artifact/cz.gopay
- Instalace:
git clone https://github.com/gopaycommunity/gopay-java-api.git
cd gopay-java-api
mvn package
API Endpoints
Sandbox enviroment - https://gw.sandbox.gopay.com/api
Production enviroment - https://gate.gopay.cz/api
Zabezpečení je zajištěno protokolem OAuth2.0. Základem komunikace s GoPay platební bránou je přístupový token.
Token lze generovat ve dvou stupních oprávnění. payment-create
umožní pomocí tokenu pouze zakládat platby, zatímco payment-all
umožní pomocí tokenu provádět veškeré API operace.
Popis API volání pro získání tokenu a ukázky pro jednotlivé knihovny naleznete v sekci Získání přístupového tokenu v API Referenci.
Pro získání přístupového tokenu je nutno od GoPay obdržet údaje Client ID
a Client Secret
. Získání tokenu je provedeno API voláním, ve kterém jsou přístupové údaje předávány. Je použita HTTP Basic autentizace podle RFC 7617.
Přístupové údaje jsou předány ve formě <ClientId>:<ClientSecret>
zakódované v base64 a předané v hlavičce Authorization
, např.:
Authorization: Basic PENsaWVudElkPjo8Q2xpZW50U2VjcmV0Pg==
Pro všechny ostatní API operace probíhá autorizace pomocí získaného tokenu. Token má životnost 30 minut a lze ho používat opakovaně na více operací, dokud mu životnost neskončí.
Celý token je předáván v HTTP hlavičce Authorization
za označením Bearer
, např.:
Authorization: Bearer AAArt6RuTM69kX6UUGZ6p9hyMPrTUVXmMDdkC4BNnQvQcbNyUTvQtCv45R969
Tato kapitola obsahuje obecný popis, jakým probíhá vytvoření platby, vyvolání platební brány, dále jakou má platba životnost a jakým způsobem se mění její stavy. Popisy jednotlivých kroků jsou popsány v samostatných částech dokumentace.
Přehled kroků
- Získat prostřednictvím API přístupový token
- Založit pomocí tokenu a dat z objednávky platbu
- Pomocí získané
gw_url
(URL platby) vyvolat platební bránu - Při přesměrování zákazníka na návratovou URL získat ID platby a dotázat se s jeho pomocí na stav platby
- Při přijetí asynchronní HTTP notifikace získat ID platby a dotázat se s jeho pomocí na stav platby
Prvním krokem k vytvoření platby je získání tokenu. Toto je provedeno pomocí API volání v rámci REST API. U některých software knihoven je token získán automaticky při inicializaci.
Dalším krokem je samotné založení platby. Toto je provedeno pomocí API volání pro založení platby, v němž předáte parametry platby a údaje o zákazníkovi. Dále předáte return_url
, na kterou bude zákazník přesměrován zpět z brány, a notification_url
na kterou bude zaslána HTTP notifikace. K oběma bude v query parametru přidáno ID platby. Také zde určíte, jaké platební metody budou pro platbu k dispozici - viz sekce Nastavení platebních metod.
Na API volání je jako odpověď vrácen JSON, který obsahuje dvě důležité informace:
- ID platby - v parametru
id
, což je jedinečný identifikátor platby v rámci systému GoPay. Pomocí něj lze provádět dotaz na stav platby. - URL platební brány - v parametru
gw_url
- pomocí této URL lze zákazníka přesměrovat na platební bránu nebo vyvolat inline bránu.
Dále v závislosti na typu platby může odpověď obsahovat další informace. Detailní popisy pro založení jednotlivých druhů plateb naleznete v samostatné sekci Platby.
Pomocí získané gw_url
je možné vyvolat platební bránu, která může být v jedné ze 3 verzí
- Redirect varianta. Na získanou
gw_url
zákazníka přesměrujete (např. HTTP redirectem, HTML formulářem apod.) Zákazník opustí e-shop a přejde na zabezpečené prostředí GoPay platební brány pod doménougate.gopay.cz
. - Inline varianta. Je potřeba implementovat JavaScriptem na straně eshopu. Eshop se musí nacházet na doméně s HTTPS zabezpečením. Zákazník není přesměrován z eshopu, platební brána se otevře přes něj jako overlay. Pokud v některém kroku platby dojde k přesměrování na stránky třetí strany (online banking, 3DS), vrátí se zákazník na bránu ve variantě Redirect. Ukázky a detailnější popis platební brány naleznete v našem centru nápovědy v článku Co je inline platební brána?.
- Mobilní varianta. Na mobilních zařízeních je vždy vyvolána mobilní verze redirect brány, i pokud máte v eshopu implementovanou inline variantu. Mobilní brána je optimalizována pro zobrazení a ovládání na mobilních zařízeních.
Detailní informace k vyvolání platební brány a návod, jak implementovat Inline variantu, naleznete v sekci Vyvolání platební brány
Na platební bráně má zákazník na výběr platební metody, které byly povoleny při Založení platby. Zákazníkovi se zobrazí buďto seznam platebních metod, nebo lze jednu předvybrat. Bližší informace jsou v sekci Nastavení platebních metod.
Dále má zákazník možnost platební bránu zavřít křížkem. Tím je přesměrován zpět na návratovou URL, aniž by proběhl pokus o uhrazení platby. Platba v tomto případě zůstává ve stavu CREATED
.
V okamžiku, kdy se zákazník pokusí platbu uhradit tlačítkem pro potvrzení platby (může na něm být Zaplatit
, či jiná textace), přiřadí se k platbě platební metoda a stav platby se změní na PAYMENT_METHOD_CHOSEN
. Pokud se zákazník nachází např. na formuláři se zadáním čísla karty, ale ještě neklikl na tlačítko Zaplatit
, není platební metoda vybrána.
Poté, co je platební metoda zvolena, dojde k autorizaci platby. Pro každou platební metodu se tento proces může lišit. Výsledkem může být jedna z těchto situací:
- Platba je uhrazena. Autorizace dopadla úspěšně a částka platby je připsána na GoPay účet obchodníka. Platba je ve stavu
PAID
(popřípaděAUTHORIZED
u předautorizací). - Platba je zamítnuta. V některém bodu došlo k zamítnutí platby ze strany partnera (např. banka nebo 3DS centrum zákazníka). Platba je ve stavu
CANCELED
. - Zatím neznáme výsledek platby. Nemáme od protistrany ještě výsledek o tom, jak platba dopadla. Toto může přetrvávat i poté, co se zákazník vrátí do eshopu. Jakmile bude výsledek znám, bude k platbě odeslána notifikace.
Pokud je platba v některém z těchto stavů, již není možné měnit platební metodu, ani se k ní vrátit.
Zákazník je přesměrován zpět na eshop poté, co dokončí platbu. Bránu může také zavřít sám a tím dojde k návratu na eshop. Přesměrován je na return_url
, která byla předána při založení platby. K URL jsou připojeny query parametry:
id
- obsahuje ID platby, podle kterého lze dotázat její stavparent_id
- pouze u opakované platby - obsahuje ID zakládající platby
Pomocí parametrů eshop provede dotaz na stav platby a zákazníka o výsledku informuje.
Pokud dojde ke změně stavu platby, je odeslána HTTP notifikace. Skládá se z notification_url
, která byla předána při založení platby. K URL jsou připojeny query parametry:
id
- obsahuje ID platby, podle kterého lze dotázat její stavparent_id
- pouze u opakované platby - obsahuje ID zakládající platby
Na tuto URL je odeslán HTTP GET
request. Pouze u změny stavu platby z CREATED
na PAYMENT_METHOD_CHOSEN
k odeslání notifikace nedochází.
Notifikace informace o stavu platby nenese, pouze id. Stav je potřeba ověřit pomocí API volání. Stav platby se může změnit vícekrát (např. jednou při zaplacení na PAID
a později při refundaci na REFUNDED
).
Platba může mít následující stavy:
CREATED
- platba vytvořenaPAYMENT_METHOD_CHOSEN
- čeká se na výsledek platbyTIMEOUTED
- životnost platby vypršelaPAID
- platba byla uhrazenaCANCELED
- platba byla zamítnutaAUTHORIZED
- platba byla předautorizovánaPARTIALLY_REFUNDED
- část platby byla refundovánaREFUNDED
- celá platba byla refundována
Proces platby má 2 životnosti:
- Životnost 1 - od vytvoření platby po potvrzení platební metody na bráně - vždy stejná pro každou platbu ve stavu CREATED
- Životnost 2 - od potvrzení platební metody na bráně po výsledek / koncový stav platby - liší se pro jednotlivé platební metody
Pokud do vypršení první životnosti nedojde k pokusu platbu uhradit, nastane stav TIMEOUTED
. Pokud do vypršení druhé životnosti není znám výsledek platby, také nastane stav TIMEOUTED
.
Standardní platba je jednorázová platba, kterou lze uhradit jakoukoliv platební metodou. Její průběh je popsán v sekci Popis vytvoření a průběhu platby.
K založení standardní platby využijete API volání pro založení platby. Stačí předat pouze povinné parametry requestu. U standardní platby je vždy potřeba její autorizace ze strany zákazníka.
Všechny ostatní typy plateb jsou zakládány stejným API voláním, které je obohacené o dodatečné parametry.
Všechny typy plateb lze navzájem kombinovat. Platba tedy může být například opakovatelná na vyžádání a předautorizovaná současně.
Příklady pro všechna SDKs a podrobný popis API volání naleznete v sekci Založení platby.
Založení minimální platby
POST /api/payments/payment HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
{
"amount": 10000,
"currency": "CZK",
"order_number": "123456",
"payer": {
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"callback": {
"return_url": "https://example.com/your-return-url",
"notification_url": "https://example.com/your-notify-url"
}
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"order_number": "123456",
"state": "CREATED",
"amount": 10000,
"currency": "CZK",
"payer": {
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"gw_url": "https://gw.sandbox.gopay.com/gw/v3/..."
}
Opakovaná platba slouží ke strhávání prostředků z karty zákazníka na pozadí. Zákazník tedy musí na platební bránu pouze jednou.
Opakovaná platba má dva druhy:
AUTO
- platba je strhávána automaticky v předem daných intervalech. Nelze měnit částku, ani jiné parametry platby.ON_DEMAND
platba je strhávána požadavkem přes REST API. Strhávat lze v nepravidelných intervalech a lze měnit částku i jiné parametry.
Průběh opakovaných plateb je následující:
- Zakládající platba - probíhá stejně jako standardní platba, zákazník je přesměrován na platební bránu, kde musí platbu dokončit, a tím vznikne zakládající platba.
- Následné platby - probíhají buď automaticky, nebo jsou vytvořeny API voláním. V něm je reference na jejich zakládající platbu. Probíhají na pozadí, není nutná interakce zákazníka.
Opakovatelné platby jsou automaticky k dispozici pouze na testovacím prostředí. Pro jejich aktivaci na provozním prostředí kontaktujte naše oddělení zákaznické podpory a uveďte konkrétně, který typ opakovaných plateb si přejete aktivovat. Váš portál musí splňovat podmínky uvedené v článku Jaké informace musím prezentovat pro opakované platby? našeho centra nápovědy.
Přejete-li si, aby zakládající opakovatelná platba nebyla stržena, založte ji zároveň jako předautorizovanou, po zaplacení platbu v rámci předautorizace nestrhávejte a ani nerušte. Po uplynutí 4 dnů se prostředky automaticky uvolní a v rámci aktivního opakování mohou začít probíhat následné platby.
Automatická opakovaná platba je založena API voláním pro založení platby. V requestu je předán objekt recurrence.
U automatické platby je povinné předat tyto parametry:
recurrence_cycle
určuje cyklus opakované platby, tedy zda opakovaná platba bude prováděna každý Xtý den, týden či měsíc. Nabývá hodnot uvedených v číselníku Recurrence cycle.recurrence_period
určuje periodu opakování platby (nikoliv frekvenci), tedy kolik dnů, týdnů či měsíců má uplynout mezi dvěma platbami.recurrence_date_to
určuje platnost opakované platby. Do tohoto data ji bude systém platební brány automaticky strhávat. Hodnota musí být vyšší než aktuální datum a vyšší než poslední den, kdy se má platba strhnout.
Ve objektu se určuje perioda, nikoliv frekvence. Příklad:
{
"recurrence_cycle": "MONTH",
"recurrence_period": 2,
"recurrence_date_to": "2025-12-31"
}
S tímto voláním bude opakovaná platba provedena jednou za 2 měsíce, nikoliv 2x měsíčně.
Pokud si přejete platby opakovat ročně, nastavte
recurrence_cycle
naMONTH
arecurrence_period
na12
, pak bude opakování probíhat každých 12 měsíců, tedy jednou ročně
Následné opakované platby mají stejné parametry jako zakládající platba, nelze tedy měnit např. částku apod. Pokud je následná platba zamítnuta, další pokus o stržení platby proběhne až v následujícím termínu opakování.
Podrobný popis API volání a příklady pro jednotlivé knihovny naleznete v sekci založení standardní platby. U opakované platby je potřeba předat povinný objekt recurrence.
Založení AUTO opakované platby
POST /api/payments/payment HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
{
"amount": 10000,
"currency": "CZK",
"order_number": "123456",
"payer": {
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"recurrence": {
"recurrence_cycle": "DAY",
"recurrence_period": 7,
"recurrence_date_to": "2099-12-31"
},
"callback": {
"return_url": "https://example.com/your-return-url",
"notification_url": "https://example.com/your-notify-url"
}
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"order_number": "123456",
"state": "CREATED",
"amount": 10000,
"currency": "CZK",
"payer": {
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"recurrence": {
"recurrence_cycle": "DAY",
"recurrence_period": 7,
"recurrence_date_to": "2099-12-31",
"recurrence_state": "REQUESTED"
},
"gw_url": "https://gw.sandbox.gopay.com/gw/v3/..."
}
Opakovaná platba na vyžádání je zakládána stejným API voláním, jako automatická a je tedy rovněž potřeba předat povinný objekt recurrence.
V tomto objektu je potřeba předat tyto povinné parametry:
recurrence_cycle
vždyON_DEMAND
recurrence_date_to
určuje platnost opakované platby. Do tohoto data ji bude systém platební brány strhávat na základě vašich API požadavků. Hodnota musí být vyšší než aktuální datum a vyšší než poslední den, kdy se má platba strhnout.
Parametr recurrence_period
se u tohoto druhu opakované platby vůbec nepoužívá. Stržení následných plateb probíhá pomocí k tomu určeného API volání. V něm se zadává částka, ID objednávky a další parametry platby.
V době, kdy je vrácena odpověď na API volání, ještě platba zpravidla nebývá uhrazena. O výsledku platby je možné se informovat pomocí dotazu na stav platby na základě HTTP notifikace, kterou vám zašleme při změně stavu platby.
Příklady pro všechna SDKs a podrobný popis API volání naleznete v sekci Založení platby a Stržení opakované platby.
Založení ON_DEMAND opakované platby
POST /api/payments/payment HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
{
"amount": 100,
"currency": "CZK",
"order_number": "123456",
"payer": {
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"recurrence": {
"recurrence_cycle": "ON_DEMAND",
"recurrence_date_to": "2099-12-31"
},
"callback": {
"return_url": "https://example.com/your-return-url",
"notification_url": "https://example.com/your-notification-url"
}
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"order_number": "123456",
"state": "CREATED",
"amount": 100,
"currency": "CZK",
"payer": {
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"recurrence": {
"recurrence_cycle": "ON_DEMAND",
"recurrence_date_to": "2099-12-31",
"recurrence_state": "REQUESTED"
},
"gw_url": "https://gw.sandbox.gopay.com/gw/v3/..."
}
Stržení následné platby
POST /api/payments/payment/3123456789/create-recurrence HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
{
"amount": 10000,
"currency": "CZK",
"order_number": "123456"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456780,
"parent_id": 3123456789,
"order_number": "123456",
"state": "CREATED",
"amount": 10000,
"currency": "CZK",
"payer": {
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"lang": "cs",
"gw_url": "https://gw.sandbox.gopay.com/gw/v3/..."
}
Zrušení opakované platby je možné následujícími způsoby:
- Ze strany obchodníka pomocí API volání pro zrušení opakované platby
- Ze strany obchodníka prostřednictvím GoPay obchodního účtu
- Ze strany zákazníka prostřednictvím e-mailu se stavem platby, který mu zasíláme
- Ze strany GoPay (zpravidla na žádost zákazníka)
- Automaticky v okamžiku, kdy dojde k vypršení platnosti karty zákazníka
- Automaticky v okamžiku, kdy nastane datum předané jako
date_to
při založení platby
Pokud se přes API pokusíte zrušit opakování, které již v minulosti zrušené bylo, končí volání chybou s popisem, že opakování již je zrušeno.
Při zrušení opakování platby standardně nedochází k odeslání HTTP notifikace. Pokud si ji přejete v tomto případě dostávat, kontaktujte technickou podporu GoPay.
Příklady pro všechna SDKs a podrobný popis API volání naleznete v sekci Zrušení opakované platby.
Zrušení opakované platby
POST /api/payments/payment/3123456789/void-recurrence HTTP/1.1
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"result": "FINISHED"
}
V odpovědi na dotaz na stav platby je u mateřské opakovatelné platby vrácen navíc objekt recurrence, který popisuje opakování platby. Ten obsahuje i parametr recurrence_state, který popisuje stav opakování platby. Podle jeho hodnoty lze ověřit, zda k dané zakládající platbě lze provádět následné opakované platby, či nikoliv.
Dotaz na stav opakované platby. Viz Dotaz na stav platby.
GET /api/payments/payment/3123456789 HTTP/1.1
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"order_number": "123456",
"state": "PAID",
"payment_instrument": "PAYMENT_CARD",
"amount": 100,
"currency": "CZK",
"payer": {
"payment_card": {
"card_number": "440507******4448",
"card_expiration": "9912",
"card_brand": "Visa",
"card_issuer_country": "CZE",
"card_issuer_bank": "CESKA SPORITELNA, A.S (CZECH SAVINGS BANK)"
},
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"recurrence": {
"recurrence_cycle": "ON_DEMAND",
"recurrence_date_to": "2099-12-31",
"recurrence_state": "STARTED"
},
"lang": "cs",
"gw_url": "https://gw.sandbox.gopay.com/gw/v3/...",
}
Standardně lze provádět nejvýše jednu následnou opakovanou platbu na vyžádání za kalendární den. Výjímkou je den, kdy je založena mateřská opakovatelná platba, ta se již do tohoto limitu počítá, takže ve stejný den nelze vytvořit následnou opakovanou platbu.
V případě, že opakování nebude úspěšné, budete pravděpodobně chtít provést další pokus platbu strhnout. Takovýto pokus je možné provést nejdříve následující kalendární den, nebo 24 hodin od posledního pokusu. Při pokusu strhnout platbu dříve dojde k zamítnutí pokusu kvůli limitu jednoho opakování denně.
Nedoporučujeme také opakování hned po první neúspěšné opakované platbě rušit. Doporučujeme provést celkem alespoň 3 pokusy v rozmezí nejméně 24h od sebe, než zrušíte opakovanou platbu a zákazníkovi předplacenou službu. Můžete také brát v potaz víkendy a pokusy o opakování provádět pouze v pracovní dny, kdy je větší pravděpodobnost, že zákazníkovi přibydou na účtě chybějící finance.
Před provedením dalšího pokusu o opakování platby vždy nejdříve vyčkejte na obdržení HTTP notifikace k předchozímu pokusu a zkontrolujte jeho stav. Tím se vyhnete možnému duplicitnímu stržení platby. Také doporučujeme rozlišovat mezi situacemi, kdy k vytvoření platby došlo, ale byla následně zamítnutá a situacemi, kdy k vytvoření vůbec nedošlo (vrátil se API error).
Předautorizované platby umožňují vytvoření blokace (předautorizace) finančních prostředků na kartě zákazníka namísto stržení. Vytvořenou blokaci zaručujeme po dobu 4 dnů. Během této doby může obchodník platbu buď strhnout nebo uvolnit. Platbu je možné strhnout buďto v plné výši, anebo pouze část autorizované částky. Předautorizované platby se hodí například pro platby za zboží, u kterého v době nákupu není jisté, zda bude dostupné.
Předautorizované platby jsou automaticky k dispozici pouze na testovacím prostředí. Pro jejich aktivaci na provozním prostředí kontaktujte naše oddělení technické podpory. Uveďte také výslovně, zda chcete aktivovat i částečné strhávání plateb.
Předautorizovaná platba je založena API voláním pro založení platby, ve kterém je potřeba předat parametr preauthorization
s hodnotou true
. Po založení platby je vrácen objekt popisující její stav a parametry. Průběh autorizace platby je stejný jako u standardní platby, jak je popsáno v sekci Popis vytvoření a průběhu platby.
Poté, co zákazník předautorizovanou platbu dokončí, platba přechází do stavu AUTHORIZED
. O změně stavu platby informujeme prodejní místo pomocí automatické HTTP notifikace na notifikační URL adresu předanou při založení platby. V tomto okamžiku je na účtě klienta provedena blokace částky, která zatím není stržena (zaúčtována).
Založení předautorizované platby
POST /api/payments/payment HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
{
"amount": 10000,
"currency": "CZK",
"order_number": "123456",
"preauthorization": true,
"payer": {
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"callback": {
"return_url": "https://example.com/your-return-url",
"notification_url": "https://example.com/your-notification-url"
}
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"order_number": "123456",
"state": "CREATED",
"amount": 10000,
"currency": "CZK",
"payer": {
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"preauthorization": {
"requested": true,
"state": "REQUESTED"
},
"gw_url": "https://gw.sandbox.gopay.com/gw/v3/..."
}
Autorizovanou platbu je možno strhnout dvěma způsoby:
- Stržení platby v plné výši. Využijete k tomu API volání, ve kterém není potřeba předávat žádné parametry. Volání strhne blokaci z účtu zákazníka a finanční prostředky připíše na GoPay obchodní účet obchodníka.
- Částečné stržení. Lze jej provést pomocí API volání pro částečné stržení. V něm je potřeba v parametru
amount
specifikovat částku platby, která musí být nižší nebo rovna celkové autorizované částce. V případě stržení menší částky, než na kterou byla platba původně autorizována, dochází k aktualizaci údajů původní platby dle nového volání. Zbylá částka je zákazníkovi automaticky uvolněna zpět na platební kartu.
Platba následně přechází do stavu PAID
.
Stržení předautorizované platby
POST /api/payments/payment/3123456789/capture HTTP/1.1
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"result": "FINISHED"
}
Částečné stržení předautorizované platby
POST /api/payments/payment/3123456789/capture HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
{
"amount": 5000
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"result": "FINISHED"
}
Již autorizovanou platbu lze také zrušit prostřednictvím API volání pro zrušení předautorizace. Blokace finančních prostředků na účtu zákazníka je následně uvolněna a platba přechází do stavu CANCELED
.
Zrušení předautorizované platby
POST /api/payments/payment/3123456789/void-authorization HTTP/1.1
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"result": "FINISHED"
}
Předautorizovanou platbu lze také založit s nulovou částkou. Proběhne pouze ověření karty, ale nebude blokována žádná částka. To lze zkombinovat např. se zakládající opakovanou platbou (režim ON_DEMAND
) pokud chcete nabídnout zkušební období zdarma. Dále lze s iniciační platbou pro vytvoření karetního tokenu, pokud chcete získat token bez toho, abyste zákazníkovi něco účtovali.
Takto založenou platbu nelze strhnout (volání skončí chybou), ale lze ji zrušit.
Kombinace platby s nulovou částkou a zakládající opakované platby není aktuálně podporována Raiffeisenbank! Takovéto platby nelze autorizovat kartami Raiffeisenbank a EQUA bank.
Založení předautorizované platby s nulovou částkou
POST /api/payments/payment HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
{
"amount": 0,
"currency": "CZK",
"order_number": "123456",
"preauthorization": true,
"payer": {
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"callback": {
"return_url": "https://example.com/your-return-url",
"notification_url": "https://example.com/your-notification-url"
}
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"order_number": "123456",
"state": "CREATED",
"amount": 0,
"currency": "CZK",
"payer": {
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"preauthorization": {
"requested": true,
"state": "REQUESTED"
},
"gw_url": "https://gw.sandbox.gopay.com/gw/v3/..."
}
U plateb kartou je možné získávat unikátní otisk karty (tzv. card_fingerprint
). Pomocí něj lze porovnat, zda dvě platby byly uhrazeny jednou a tou samou kartou. Pokud je karta použita prostřednictvím Apple Pay nebo Click To Pay, bude se otisk lišit od případu, kdy byla ručně zadána.
Při uložení karty s vyžádáním karetního tokenu (viz Platba karetním tokenem) je card_fingerprint
vždy generován.
card_fingerprint
bude součástí objektu payment card
v dotazu na stav platby.
Funkce vytváření fingerprintu není automaticky aktivní. Pro její aktivaci kontaktuje technickou podporu GoPay.
Při platbě kartou je možno vyžádat si uložení karty. V tom případě dojde i k přiřazení karetního tokenu, který můžete předat v následných platbách. U takových plateb nebude zákazník muset zadávat údaje z karty ručně.
Pro aktivaci vytváření karetních tokenů na testovacím i provozním prostředí kontaktujte naše oddělení technické podpory.
Přehled postupu pro získání tokenu:
- Založit platby s parametrem
request_card_token
- Poté, co ji zákazník uhradí, provést dotaz na stav platby
- Z odpovědi získat hodnotu
card_id
- Provést dotaz na detaily karty
- Z odpovědi získat hodnotu
card_token
Pro vytvoření karetního tokenu proveďte standardní založení platby pomocí API volání, kde je v objektu payer
potřeba předat v poli request_card_token
hodnotu true
. V poli allowed_payment_instruments
předejte jako jedinou hodnotu PAYMENT_CARD
.
Poté, co je uhrazena, provedete dotaz na stav platby. V odpovědi nalezneme objekt payer
, který obsahuje card_id
. Díky tomuto identifikátoru můžete získat detaily karty včetně tokenu a jeho stavu.
Založení platby s vyžádáním tokenu
POST /api/payments/payment HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
{
"amount": 10000,
"currency": "CZK",
"order_number": "123456",
"payer": {
"allowed_payment_instruments": ["PAYMENT_CARD"],
"request_card_token": "true",
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"callback": {
"return_url": "https://example.com/your-return-url",
"notification_url": "https://example.com/your-notify-url"
}
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"order_number": "123456",
"state": "CREATED",
"amount": 10000,
"currency": "CZK",
"payer": {
"allowed_payment_instruments": ["PAYMENT_CARD"],
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": 8179544857
},
"gw_url": "https://gw.sandbox.gopay.com/gw/v3/..."
}
Dotaz na stav platby s vyžádáním tokenu
GET /api/payments/payment/3123456789 HTTP/1.1
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"order_number": "123456",
"state": "PAID",
"payment_instrument": "PAYMENT_CARD",
"amount": 10000,
"currency": "CZK",
"payer": {
"allowed_payment_instruments": ["PAYMENT_CARD"],
"payment_card": {
"card_number": "440507******4448",
"card_expiration": "9912",
"card_brand": "Visa",
"card_issuer_country": "CZE",
"card_issuer_bank": "CESKA SPORITELNA, A.S (CZECH SAVINGS BANK)"
},
"contact": {
"email": "john.doe@example.com"
},
"card_id": "9876543210"
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"lang": "en",
"gw_url": "https://gw.sandbox.gopay.com/gw/v3/...",
}
Pomocí k tomu určeného API volání můžete díky hodnotě card_id
získat detaily uložené karty.
Detaily obsahují:
- Údaje karty, jako vymaskovaný PAN a expiraci
card_fingerprint
, díky kterému můžete ověřit, zda daná karta již je uloženácard_token
, který můžete použít pro následné platby
Před čtením dalších údajů o kartě vždy nejprve kontrolujte, zda parametr card_status nabývá hodnoty active
. Pokud ne, nebude objekt obsahovat další údaje.
Dotaz na stav aktivní karty
GET /api/payments/cards/9876543210 HTTP/1.1
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
HTTP/1.1 200 OK
Content-Type: application/json
{
"card_id": 9876543210,
"card_number": "440507******4448",
"card_expiration": "9912",
"card_brand": "Visa",
"card_issuer_country": "CZE",
"card_issuer_bank": "CESKA SPORITELNA, A.S (CZECH SAVINGS BANK)"
"card_fingerprint": "0c823534ec582c97fa85c0bf7b020ee25a0a5af13974709bb329a709a79c2b3e",
"card_token": "YZ4E8f2jJA8cEDz1s0lO4BMXo6skkvItJddyrLhSyPa01T/cvrl+DwKsEqehFG7SQxJZUsBcgZ6sei4AKxrHHap7BofFr+SH3oHJyta0axiBB7MST3IWqrsq5ZtfukBrgwPBocNDPd/RnQs=",
"status": "ACTIVE"
}
Dotaz na stav smazané karty
GET /api/payments/cards/9876543210 HTTP/1.1
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
HTTP/1.1 200 OK
Content-Type: application/json
{
"card_id": 9876543210,
"status": "DELETED"
}
Pro použití tokenu založte platbu pomocí standardního API volání. V objektu payer předejte v parametru allowed_card_token
dříve získaný card_token
. Tím zákazník nebude muset zadávat údaje z karty. 3DS ověření může být stále vyžadováno.
V objektu payer
také předejte pole allowed_payment_instruments
a v něm pouze hodnotu PAYMENT_CARD
. To je u tohoto typu platby vyžadováno.
Založení platby s použitím karetního tokenu
POST /api/payments/payment HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
{
"amount": 10000,
"currency": "CZK",
"order_number": "123456",
"payer": {
"allowed_payment_instruments": ["PAYMENT_CARD"],
"allowed_card_token": {{YOUR-CARD-TOKEN}},
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"callback": {
"return_url": "https://example.com/your-return-url",
"notification_url": "https://example.com/your-notify-url"
}
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"order_number": "123456",
"state": "CREATED",
"amount": 10000,
"currency": "CZK",
"payer": {
"allowed_payment_instruments": ["PAYMENT_CARD"],
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"gw_url": "https://gw.sandbox.gopay.com/gw/v3/..."
}
Karta může být smazána ze strany obchodníka a to k tomu určeným API voláním, anebo ze strany GoPay (např. z důvodu nepoužívání). Pokud je karta smazána, změní se card_status na deleted
a údaje o kartě již nebudou k dispozici. O změně stavu informujeme pomocí HTTP notifikace.
Smazání karty
DELETE /api/payments/cards/987654321 HTTP/1.1
Authorization: Bearer {{YOUR-TOKEN}}
HTTP/1.1 204 No Content
Pro použití funkce platby tokenem je nutno u GoPay zaregistrovat URL, na kterou budou zasílány HTTP notifikace.
Ty jsou odesílány ve chvíli, kdy:
- Došlo k revokaci tokenu ze strany GoPay nebo obchodníka
- Došlo k aktualizaci údajů o kartě (např. při vypršení platnosti staré karty)
HTTP notifikace je GET požadavek s query parametrem card_id
nesoucí dříve získané ID karty.
Například: GET https://example.com/card-notify?card_id=123456
Pomocí ID je pak následně potřeba provést dotaz na detaily karty a ověřit card_status, případně aktualizovat údaje.
V anonymním režimu PSD2 probíhá platba takto:
- Zákazník je přesměrován na svojí banku, kde udělí souhlas s využíváním služeb AISP a PISP ze strany společnosti GoPay
- Zákazník je přesměrován zpět na platební bránu, kde vybírá účet a potvrzuje platbu
- Zákazník je přesměrován na svoji banku, kde autorizuje transakci
- Zákazník je vrácen zpět na platební bránu, kde dojde k dokončení platby
V zapamatovaném režimu si GoPay uchovává souhlas z předchozí anonymní platby a obchodníkovi předává token. Ten je možné použít u následných plateb - zákazník tak nebude muset znova udělovat souhlas a přejde rovnou k autorizaci platby. Souhlas platí 90 dnů, poté musí zákazník udělit nový.
Zapamatovaný režim není automaticky aktivní. Pro jeho aktivaci kontaktujte naše oddělení technické podpory. Obchodník musí projít kontrolou ze strany GoPay.
Tato funkcionalita je podporována všemi bankami, pro které na produkci podporujeme PSD2 platby.
Bez předání bankovních údajů
Poté, co zákazník v rámci PSD2 platby udělí souhlas pro GoPay, dojde k vypsání jeho účtů. Zákazník vybere, který účet chce použít a pokračuje k autorizaci platby.
Je použito standardní API volání pro založení platby, kdy je potřeba předat objekt payer tímto způsobem:
allowed_payment_instruments
musí být vždy nastaveno pouze naBANK_ACCOUNT
allowed_swifts
musí vždy být nastaveno na konkrétní banku zákazníka- pro banku musíte mít zapnuté PSD2 platby
S předáním bankovních údajů
Pokud znáte bankovní údaje zákazníka a chcete získat token k jednomu konkrétnímu účtu, můžete v API předat bankovní údaje. Poté, co zákazník v rámci PSD2 platby udělí souhlas pro GoPay, dojde k načtení jeho účtů. Pokud se žádný účet neshoduje s předanými údaji, platba je zamítnuta. Pokud je nalezena shoda, pokračuje zákazník k autorizaci platby.
Je použito standardní API volání pro založení platby, kdy je potřeba předat objekt payer tímto způsobem:
allowed_payment_instruments
musí být vždy nastaveno pouze naBANK_ACCOUNT
allowed_swifts
musí vždy být nastaveno na konkrétní banku zákazníka- je potřeba předat objekt
bank_account
a v něm údaje o účtu zákazníka buďto v českém, nebo v mezinárodním formátu - pro banku musíte mít zapnuté PSD2 platby
Založení platby bez předání bankovních údajů
POST /api/payments/payment HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
{
"amount": 10000,
"currency": "CZK",
"order_number": "123456",
"payer": {
"allowed_payment_instruments": ["BANK_ACCOUNT"],
"allowed_swifts": ["AIRACZPP"],
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{GOID}}
},
"callback": {
"return_url": "https://example.com/your-return-url",
"notification_url": "https://example.com/your-notify-url"
}
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"order_number": "123456",
"state": "CREATED",
"amount": 10000,
"currency": "CZK",
"payer": {
"allowed_payment_instruments": ["BANK_ACCOUNT"],
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"gw_url": "https://gw.sandbox.gopay.com/gw/v3/..."
}
Založení platby s předáním bankovních údajů v českém formátu
POST /api/payments/payment HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
{
"amount": 10000,
"currency": "CZK",
"order_number": "123456",
"payer": {
"allowed_payment_instruments": ["BANK_ACCOUNT"],
"allowed_swifts": ["AIRACZPP"],
"bank_account": {
"account_number": "1234562",
"bank_code": "3030"
},
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{GOID}}
},
"callback": {
"return_url": "https://example.com/your-return-url",
"notification_url": "https://example.com/your-notify-url"
}
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"order_number": "123456",
"state": "CREATED",
"amount": 10000,
"currency": "CZK",
"payer": {
"allowed_payment_instruments": ["BANK_ACCOUNT"],
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"gw_url": "https://gw.sandbox.gopay.com/gw/v3/..."
}
Založení platby s předáním bankovních údajů v mezinárodním formátu
POST /api/payments/payment HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
{
"amount": 10000,
"currency": "CZK",
"order_number": "123456",
"payer": {
"allowed_payment_instruments": ["BANK_ACCOUNT"],
"allowed_swifts": ["AIRACZPP"],
"bank_account": {
"iban": "CZ8930300000000001234562"
},
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{GOID}}
},
"callback": {
"return_url": "https://example.com/your-return-url",
"notification_url": "https://example.com/your-notify-url"
}
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"order_number": "123456",
"state": "CREATED",
"amount": 10000,
"currency": "CZK",
"payer": {
"allowed_payment_instruments": ["BANK_ACCOUNT"],
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"gw_url": "https://gw.sandbox.gopay.com/gw/v3/..."
}
V okamžiku, kdy je první platba uhrazena, dochází standardně k odeslání HTTP notifikace, viz Odeslání notifikace. Z ní získáte ID platby a s jeho pomocí provedete dotaz na stav platby. V odpovědi na tento dotaz je vrácen token účtu jako součást objektu bank_account
v objektu payer
.
Dotaz na stav platby s PSD2 zapamatovaným režimem
GET /api/payments/payment/3123456789 HTTP/1.1
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"order_number": "123456",
"state": "PAID",
"payment_instrument": "BANK_ACCOUNT",
"amount": 10000,
"currency": "CZK",
"payer": {
"allowed_payment_instruments": ["BANK_ACCOUNT"],
"bank_account": {
"account_number": "1234562",
"bank_code": "3030",
"iban": "CZ8930300000000001234562",
"account_name": "John Doe",
"account_token": "3c8bdc18281a9d5f60ab9675d9b0953805050157bf60fb37e2060a04a58e79bf"
},
"contact": {
"email": "john.doe@example.com",
"country_code": "CZE"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"lang": "en",
"gw_url": "https://gw.sandbox.gopay.com/gw/v3/...",
}
Pro použití tokenu založte platbu pomocí standardního API volání. V objektu payer předejte objekt bank_account
a v něm dříve získaný account_token
. Zákazník nebude muset procházet udělením souhlasu ani vybírat účet, pouze autorizuje platbu.
V objektu payer
také předejte pole allowed_payment_instruments
a v něm pouze hodnotu BANK_ACCOUNT
. To je u tohoto typu platby vyžadováno.
Založení platby s použitím tokenu účtu
POST /api/payments/payment HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
{
"amount": 1000,
"currency": "CZK",
"order_number": "123456",
"payer": {
"allowed_payment_instruments": ["BANK_ACCOUNT"],
"bank_account": {
"account_token": "{{YOUR-ACCOUNT-TOKEN}}"
},
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"callback": {
"return_url": "https://example.com/your-return-url",
"notification_url": "https://example.com/your-notify-url"
}
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"order_number": "123456",
"state": "CREATED",
"amount": 1000,
"currency": "CZK",
"payer": {
"allowed_payment_instruments": ["BANK_ACCOUNT"],
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"gw_url": "https://gw.sandbox.gopay.com/gw/v3/..."
}
Na platební bráně jsou k dispozici všechny platební metody, které jsou aktivní v eshopu (v případě Apple Pay pouze na zařízeních, která tuto metodu podporují). Nastavení platebních metod na úrovni eshopu je popsané v článku Jak nastavím, které platební metody chci mít aktivní?.
Při založení platby je možné dostupné platební metody dále upřesnit předáním následujících parametrů v objektu payer:
allowed_payment_instruments
- pole platebních metod, které budou na bráně k dispozicidefault_payment_instrument
- kód platební metody, která bude předvybranáallowed_swifts
- swifty bank, ze kterých bude možno platbu uhraditdefault_swift
- předvybraná banka
Povolené platební metody
Povolené platební metody lze ovládat pomocí pole allowed_payment_instruments
- Případ 1: pole
allowed_payment_instruments
vůbec nepředáte, zákazníkovi se zobrazí rozcestník všech platebních metod, které má eshop povolené - Případ 2: předáte více metod, zákazníkovi se zobrazí rozcestník, kde si bude moct jednu z předaných metod vybrat
- Případ 3: předáte přesně jednu hodnotu, po otevření platební brány se rovnou zobrazí zákazníkovi
Z tohoto pole jsou také odstraněny všechny metody, které nejsou aktivní na eshopu.
Předvybraná platební metoda
Předvybranou platební metodu lze určit předáním parametru default_payment_instrument
.
Ovlivňuje pouze případy 1 a 2 viz výše, na případ 3 nemá vliv. Pokud tento parametr nepředáte, zobrazí se zákazníkovi rozcestník s výběrem platebních metod. Tímto parametrem můžete po otevření brány zákazníkovi rovnou zobrazit konkrétní platební metodu. Ten však stále bude mít možnost si platební metodu změnit. Předvybraná metoda musí být prvkem množiny nabízených metod v závislosti na nastavení povolených metod viz výše.
allowed_payment_instruments
se v objektu payer
vůbec nevyskytuje
"payer": {
"contact": {
"email": "john.doe@example.com"
}
}
allowed_payment_instruments
obsahuje několik hodnot
"payer": {
"allowed_payment_instruments": ["PAYMENT_CARD", "BANK_ACCOUNT", "PAYPAL"]
"contact": {
"email": "john.doe@example.com"
}
}
allowed_payment_instruments
obsahuje přesně jednu hodnotu
"payer": {
"allowed_payment_instruments": ["PAYMENT_CARD"]
"contact": {
"email": "john.doe@example.com"
}
}
Pouze předvybraná metoda - musí být aktivní na eshopu
"payer": {
"default_payment_instrument": "PAYMENT_CARD",
"contact": {
"email": "john.doe@example.com"
}
}
Předvybraná metoda i povolené metody - předvybraná metoda musí bý v množině povolených
"payer": {
"allowed_payment_instruments": ["PAYMENT_CARD", "BANK_ACCOUNT", "PAYPAL"],
"default_payment_instrument": "PAYMENT_CARD",
"contact": {
"email": "john.doe@example.com"
}
}
Pro využití těchto parametrů je potřeba v allowed_payment_instruments
předávat hodnotu BANK_ACCOUNT
.
Online vs Offline převod
Nabízíme dva typy bankovních převodů. Offline převod je zobrazení platebních údajů, zákazník následně musí sám zadat platební příkaz. Platbu lze uhradit z jakékoliv banky, pokud jsou dobře uvedné platební údaje (číslo účtu, částka, VS). U online převodu přesměrujeme zákazníka přímo do jeho bankovnictví, kde má příkaz předpřipravený. Platbu lze uhradit pouze z jeho banky pomocí předpřipraveného platebního příkazu.
Povolené SWIFTy
Banky, ze kterých je možné převodem platit, můžete určit pomocí pole allowed_swifts
.
- Případ 1: pole
allowed_swifts
vůbec nepředáte. Zákazník platbu bankovním převodem bude moci uhradit z jakékoliv banky. - Případ 2: v
allowed_swifts
předáte jeden či více SWIFTů. K dispozici budou pouze ty banky, jejichž SWIFT jste předali v poliallowed_swifts
. - Případ 3: v poli
allowed_swifts
předáte pouze jeden SWIFT a zároveň v poliallowed_payment_instruments
předáte pouze hodnotuBANK_ACCOUNT
. Pokud je pro tuto banku dostupný online převod, bude zákazník po otevření brány automaticky přesměrován přímo do bankovnictví banky.
Předvybraný SWIFT
Předvybrat banku lze předáním jejího SWIFTu v parametru default_swift
. Banka s předvybraným SWIFTem bude v seznamu bank zobrazena jako první a bude zvýrazněna.
GoPay nabízí platby typu BNPL (Buy Now Pay Later), neboli odložená platba. Aktuálně jsou k dispozici dvě takovéto metody - TWISTO
a SKIPPAY
- viz číselník PaymentInstrument. Tyto platby jsou k dispozici ve dvou režimech:
- Odložená platba - Zákazník uhradí dodavateli celou částku později (v API
DEFERRED_PAYMENT
) - Platba na třetiny - Zákazník uhradí během platby třetinu částky, zbytek uhradí dodavateli ve dvou dalších splátkách (v API
PAY_IN_THREE
)
Při založení platby lze tyto režimy ovlivnit. V objektu Payer lze nastavit tyto parametry:
- allowed_bnpl_types - Typy BNPL plateb, které budou k dispozici
- default_bnpl_type - Předvybraný typ BNPL platby
Tyto parametry má smysl předávat, máte-li alespoň jednu z těchto platebních metod na eshopu povolené a předáváte ji v parametru allowed_payment_instruments
Nastavení se projeví u všech dodavatelů. Možné hodnoty jsou uvedeny v číselníku BNPL Types
Zobrazení či nezobrazení jednotlivé metody a BNPL typu je také dané částkou platby, protože každý poskytovatel udává limity, pro které je způsob platby dostupný:
- Twisto odložená platba - bez limitu
- Twisto platba na třetiny - Od 1 500 CZK výše
- Skip Pay odložená platba - 0 až 50 000 CZK
- Skip Pay platba na třetiny - 3 000 až 100 000 CZK
Oba dodavatelé, oba povolené typy
"payer": {
"allowed_payment_instruments": ["TWISTO", "SKIPPAY"],
"allowed_bnpl_types": ["DEFERRED_PAYMENT", "PAY_IN_THREE"],
"contact": {
"email": "john.doe@example.com"
}
}
Oba dodavatelé, jeden povolený typ
"payer": {
"allowed_payment_instruments": ["TWISTO", "SKIPPAY"],
"allowed_bnpl_types": ["DEFERRED_PAYMENT"],
"contact": {
"email": "john.doe@example.com"
}
}
Jeden dodavatel, jeden povolený typ
"payer": {
"allowed_payment_instruments": ["TWISTO"],
"allowed_bnpl_types": ["DEFERRED_PAYMENT"],
"contact": {
"email": "john.doe@example.com"
}
}
Jeden předvybraný typ
"payer": {
"allowed_payment_instruments": ["TWISTO", "SKIPPAY"],
"allowed_bnpl_types": ["DEFERRED_PAYMENT", "PAY_IN_THREE"],
"default_bnpl_type": "DEFERRED_PAYMENT",
"contact": {
"email": "john.doe@example.com"
}
}
Platební metoda Apple Pay je vázána na platební metodu Platební karta. Je tedy potřeba mít na vašem e-shopu povolené platby kartou.
Apple Pay je k dispozici pouze na zařízeních, které takovéto platby umožňují (typicky Apple zařízení disponující Touch ID nebo Face ID). Doporučujeme ji tedy zobrazovat v objednávce pouze klientům, kteří takto zaplatit mohou. K tomu slouží JavaScript, který ověří, zda klient tyto podmínky splňuje. Více se dozvíte na stránkách Apple pro vývojaře.
První kontrola je window.ApplePaySession
, která ověřuje, zda je k dispozici Apple Pay JS API, což je pouze v prohlížeči Safari. Tuto kontrolu je možné volat i na nezabezpečeném připojení (HTTP). Tuto variantu doporučujeme v případě, že váš web nemá TLS zabezpečení.
Druhá kontrola window.ApplePaySession.canMakePayments()
ověřuje, zda zařízení, přes které zákazník na web přistupuje, umožňuje platby přes Apple Pay.
Tato kontrola vyžaduje, aby web podporoval HTTPS protokol, lze ji tedy použít pouze pokud máte TLS zabezpečení. Jedná se o spolehlivější kontrolu a pokud možno, doporučujeme používat obě.
Oficiální Apple developer portal také poskytuje informace ohledně:
- Použití loga Apple Pay a dalšího artworku v sekci Marketing
- Návod na vlastní úpravy Apple Pay tlačítka v sekci Styling the Apple Pay Button using CSS
Doporučené logo najdete ke stažení v článku Jaká používat loga a názvy platebních metod?
Ověření dostupnosti Apple Pay
if (window.ApplePaySession) {
// podmínka projde pokud je k dispozici Apple Pay JS API
}
if (window.ApplePaySession && window.ApplePaySession.canMakePayments()) {
// podmínka projde pouze v případě, že používané zařízení podporuje Apple Pay
}
Vytvoří skryté Apple Pay tlačítko pomocí stylů dostupných v Safari. Pomocí JavaScriptu se zobrazí pouze v prohlížeči Safari a na zařízeních, která Apple Pay podporují.
<form action="/create-apple-payment" method="post">
<button type="submit" id="apple-pay-button" lang=en style="
display: none;
-webkit-appearance: -apple-pay-button;
-apple-pay-button-type: plain;
-apple-pay-button-style: black;"></button>
</form>
<script>
if(window.ApplePaySession && window.ApplePaySession.canMakePayments()) {
document.querySelector("#apple-pay-button").style.display = "inline-block";
}
</script>
K vyvolání platební brány potřebujete gw_url
, kterou získáte v API odpovědi při úspěšném založení platby.
Vyvolání redirect varianty brány je pouhé přesměrování zákazníka na gw_url
. Zákazník je přesměrován na zabezpečené prostředí GoPay, kde se zobrazí platební brána a je možné dokončit platbu. V prvním kroku je nutné získat gw_url
platby. Ta je vrácena v odpovědi požadavku na založení platby. Ve druhém kroku je potřeba zákazníka na získanou URL přesměrovat.
Toho lze dosáhnout několika způsoby:
- Odkazem
- HTTP Redirectem
- JavaScriptem
Způsoby 2. a 3. mají tu výhodu, že klient je na platební bránu přesměrován hned z první stránky checkoutu. U prvního způsobu je nejprve přesměrován na další stránku, kde musí znova kliknout na tlačítko či odkaz. Při popisu postupu předpokládáme, že v checkoutu zákazník vyplňuje formulář, jehož odesláním dochází k vytvoření platby.
Postup přesměrování odkazem:
- formulář je odeslán metodou POST na server
- server vytvoří platbu a získává
gw_url
- server vrací novou html stránku, kam je
gw_url
umístěna jako odkaz (pomocí např. PHP či template systému) - zákazník je na platební bránu přesměrován kliknutím na odkaz
Postup přesměrování HTTP Redirectem:
- formulář je odeslán metodou POST na server
- server vytvoří platbu a získává
gw_url
- server vrací HTTP Redirect (např.
302 Found
) a v hlavičce Location předávágw_url
- prohlížeč při přijetí odpovědi automaticky přesměrovává zákazníka na platební bránu
Postup přesměrování JavaScriptem:
- k formuláři se připojí
event listener
, který čeká na odeslání (submit
) formuláře. Po odeslání volá callback funkci, která:- zabrání výchozí akci, která by způsobila refresh stránky
- serializuje data z formuláře do formátu JSON
- pomocí
AJAX
volání odesílá data na server
- server v rámci komunikace s GoPay systémem získává
gw_url
platby - server vrací
gw_url
platby v odpovědi na AJAX request - následně je zákazník JavaScriptem přesměrován na platební bránu (např. pomocí
window.location
)
V JavaScriptových příkladech se pro zjednodušení nezabýváme zpracováním výjimek, proto chybí ověření výsledku AJAX volání a try-catch blocky. V produkci by toto měl vývojař ošetřit.
V příkladu předpokládáme, že na endpointu /pay
dojde ke zpracování formuláře a vytvoření platby. Vrácena je nová stránka, kde je gw_url
serverem dosazena jako odkaz.
<!-- První stránka, např. /checkout -->
<form action="/pay" method="post">
<!-- Obsah checkout formuláře -->
<button type="submit">Potvrdit</button>
</form>
<!-- Druhá stránka, /pay. gw_url je dosazena serverem -->
<a href="https://gw.sandbox.gopay.com/gw/v3/dfgvmwTKK5hrJx2aGG8ZnFyBJhAvF">
<button>Zaplatit</button>
</a>
V příkladu předpokládáme, že na endpointu /pay
dojde ke zpracování formuláře, vytvoření platby a následnému HTTP Redirectu na gw_url
.
<!-- První stránka, např. /checkout -->
<form action="/pay" method="post">
<!-- Obsah checkout formuláře -->
<button type="submit">Potvrdit</button>
</form>
<!-- Serverová HTTP odpověď -->
HTTP/1.1 302 Found
Location: https://gw.sandbox.gopay.com/gw/v3/dfgvmwTKK5hrJx2aGG8ZnFyBJhAvF
V příkladu předpokládáme, že endpoint /create-payment
příjímá JSON s obsahem formuláře, vytváří platbu a následně vrací JSON, který obsahuje gw_url
. Uvedený příklad je kompatibilní s moderními prohlížeči.
<form action="/create-payment" method="post" id="payment-form">
<!-- Obsah checkout formuláře -->
<button type="submit">Zaplatit</button>
</form>
<script>
document.addEventListener("DOMContentLoaded", () => {
// přidání listeneru k checkout formuláři
const paymentForm = document.querySelector("#payment-form");
paymentForm.addEventListener("submit", async (event) => {
// zabránění výchozí akci, která by způsobila refresh stránky
event.preventDefault();
// serializace dat z formuláře do formátu JSON
const formData = new FormData(paymentForm);
const formObject = Object.fromEntries(formData.entries());
// asynchronní založení platby na serveru
const response = await fetch(paymentForm.action, {
method: paymentForm.method,
headers: {
"Content-Type": "application/json",
Accept: "application/json"
},
body: JSON.stringify(formObject)
});
// zpracování odpovědi a přesměrování na gw_url, vrácenou serverem
const result = await response.json();
window.location.replace(result.gw_url);
})
})
</script>
Verze inline platební brány je vyvolána přímo nad eshopem. Zákazník není přesměrován na doménu GoPay, ale nachází se stále na adrese eshopu, který je v pozadí platební brány stále vidět. Další informace a ukázky vzhledu inline brány naleznete v centru nápovědy v článku Co je inline platební brána?. Pokud při procesu platby dojde k přesměrování (např. do 3DS, do online bankovnictví), vrací se zákazník na standardní redirect bránu.
Pro využití inline platební brány na prodejních místech je nutné mít TLS certifikát (podpora HTTPS). Pokud není HTTPS dostupné, dojde k vyvolání standardní redirect brány
K vyvolání inline je potřeba nejprve získat gw_url
. Místo toho, aby na ní byl zákazník přesměrován, je platební brána vyvolána:
- Formulářem
- JavaScriptem
Podobně jako u redirect platební brány má vyvolání JavaScriptem tu výhodu, že se platební brána zvedá v jednom kroku a zákazníkovi tedy stačí odeslat jeden formulář. U vyvolání formulářem je proces dvoukrokový.
Postup vyvolání formulářem:
- Formulář je odeslán metodou POST na server.
- Server vytvoří platbu a získává
gw_url
. - Server vrací novou html stránku, s formulářem, kam je
gw_url
umístěna jako action (pomocí např. PHP či template systému). Formulář musí mít metoduPOST
, atributid
nastavený nagopay-payment-button
a musí do něj být vložený script (viz příklad). - Zákazník odesláním formuláře vyvolává inline platební bránu.
Postup vyvolání JavaScriptem:
- V hlavičce dokumentu vložit link na náš JavaScript (
https://gw.sandbox.gopay.com/gp-gw/js/embed.js
na testovacím prostředí ahttps://gate.gopay.cz/gp-gw/js/embed.js
na produkčním prostředí). - K formuláři se připojí
event listener
, který čeká na odeslání (submit
) formuláře. Po odeslání volá callback funkci, která:- zabrání výchozí akci, která by způsobila refresh stránky
- serializuje data z formuláře do formátu JSON
- pomocí
AJAX
volání odesílá data na server
- Server v rámci komunikace s GoPay systémem získává
gw_url
platby. - Server vrací
gw_url
platby v odpovědi na AJAX request. - Následně se volá
_gopay.checkout()
metoda, která jako argument přijímá konfigurační objekt. - V konfiguračním objektu metody je
gw_url
předána jakogatewayUrl
ainline
je nastaveno natrue
(viz příklad).
V JavaScriptových příkladech se pro zjednodušení nezabýváme zpracováním výjimek, proto chybí ověření výsledku AJAX volání a try-catch blocky. V produkci by toto měl vývojař ošetřit.
V příkladu předpokládáme, že na endpointu /pay
dojde ke zpracování formuláře a vytvoření platby. Vrácena je nová stránka, kde je gw_url
serverem dosazena do formuláře.
<!-- První stránka, např. /checkout -->
<form action="/pay" method="post">
<!-- Obsah checkout formuláře -->
<button type="submit">Potvrdit</button>
</form>
<!-- Druhá stránka, /pay. gw_url je dosazena serverem -->
<form action="https://gw.sandbox.gopay.com/gw/v3/dfgvmwTKK5hrJx2aGG8ZnFyBJhAvF" method="POST" id="gopay-payment-button">
<button type="submit">Zaplatit</button>
<script type="text/javascript" src="https://gw.sandbox.gopay.com/gp-gw/js/embed.js"></script>
</form>
V příkladu předpokládáme, že endpoint /create-payment
příjímá JSON s obsahem formuláře, vytváří platbu a následně vrací JSON, který obsahuje gw_url
. Uvedený příklad je kompatibilní s moderními prohlížeči.
<!-- V hlavičce html dokumentu -->
<script src="https://gw.sandbox.gopay.com/gp-gw/js/embed.js" defer></script>
<!-- V tělě html dokumentu -->
<form action="/create-payment" method="post" id="payment-form">
<!-- Obsah checkout formuláře -->
<button type="submit">Zaplatit</button>
</form>
<script>
document.addEventListener("DOMContentLoaded", () => {
// přidání listeneru k checkout formuláři
const paymentForm = document.querySelector("#payment-form");
paymentForm.addEventListener("submit", async (event) => {
// zabránění výchozí akci, která by způsobila refresh stránky
event.preventDefault();
// serializace dat z formuláře do formátu JSON
const formData = new FormData(paymentForm);
const formObject = Object.fromEntries(formData.entries());
// asynchronní založení platby na serveru
const response = await fetch(paymentForm.action, {
method: paymentForm.method,
headers: {
"Content-Type": "application/json",
Accept: "application/json"
},
body: JSON.stringify(formObject)
});
// zpracování odpovědi a vyvolání inline platební brány
const result = await response.json();
_gopay.checkout({gatewayUrl: result.gw_url, inline: true});
})
})
</script>
Platební brána je aktuálně čistě webová aplikace. Pokud je tedy integrována do mobilní aplikace, je nutno s tím počítat. To se týká i všech jejích platebních metod - včetně Apple Pay a Google Pay. Aktuálně není možné tyto platební metody využít bez platební brány pouhým vyvoláním nativního dialogu přímo z aplikace, je nutná interakce zákazníka s platební bránou.
Nepoužívejte WebView. WebView nedisponuje plnou funkčností prohlížeče a platební brána a metody jako Apple Pay a Google Pay nebudou pomocí těchto technologií fungovat. Toto se týká např. technologií WebView pro Android a WKWebView pro Apple.
Používejte technologie, které mají funkčnost plnohodnotného prohlížeče - což znamená Chrome Custom Tabs pro Android a SFSafariViewController pro iOS.
Po provedení nebo zrušení platby je zákazník navrácen zpět na prodejní místo. Návrat je možné provést dvěma způsoby. První z nich je provedení přesměrování na return_url
, která bylo definováno při založení platby. Kdykoliv v průběhu platby dojde k nějakému přesměrování (např. do 3DS či online bankovnictví), bude zákazník vrácen na return_url
.
Pokud byla vyvolána inline brána JavaScriptem, je možno předat callback funkci jako druhý parametr metody _gopay.checkout
. V takovém případě nedochází k žádnému přesměrování.
V API volání pro založení platby je předán parametr return_url
v objektu callback
. Na ni je zákazník z brány přesměrován metodou GET
, jako query parametr id
je předáno ID platby, ze které se zákazník vrací. Pomocí tohoto ID je následně potřeba provést dotaz na stav platby.
V odpovědi získáte parametr state
, který popisuje stav platby. Následné zpracování stavu je popsané v sekci Zpracování stavu platby.
Pokud byla vyvolána inline brána JavaScriptem, je možno předat callback funkci jako druhý parametr metody _gopay.checkout
. V takovém případě nedochází k přesměrování zákazníka na return_url
, ale je volána callback funkce přímo na stránce, na které došlo k vyvolání platební brány.
Callback funkci je jako argument předán objekt, který obsahuje return_url
platby jako parametr url
včetně query parametru id
.
Ve funkci doporučujeme pomocí AJAX volání provést dotaz na stav platby. V tomto případě je nutno mít na vašem serveru endpoint, který přijme ID platby, provede dotaz na stav platby pomocí REST API a následně vrátí stav platby. Callback funkce jej může následně dále zpracovat.
ID platby můžete získat z url, která je předána jako argument callback funkci (první příklad), případně ho můžete mít uložené v proměnné již od asynchornního založení platby (druhý příklad - vychází z vyvolání inline brány JavaScriptem).
V JavaScriptových příkladech se pro zjednodušení nezabýváme zpracováním výjimek, proto chybí ověření výsledku AJAX volání a try-catch blocky. V produkci by toto měl vývojař ošetřit.
V příkladu předpokládáme, že jsme platbu již založili a v proměnné gwUrl
máme uloženou gw_url
platby. Dále předpokládáme, že endpoint /status
přijme ID platby jako query paramter, provede dotaz na stav platby pomocí REST API a odpověď následně přepošle frontendu.
// Při vyvolání platební brány je předána callback funkce, které je jako argument automaticky předán objekt, obsahující return_url platby
_gopay.checkout({gatewayUrl: gwUrl, inline: true}, async (checkoutResult) => {
// získání ID platby z return_url
const returnUrl = new URL(checkoutResult.url);
const paymentId = new URLSearchParams(returnUrl.search).get("id");
// asynchronní dotaz na stav platby
const statusResponse = await fetch(`/status?id=${paymentId}`);
const statusResult = await statusResponse.json();
// následuje zpracování stavu platby, zde je pouze vypsán do konzole
console.log(`Stav platby: ${statusResult.state}`);
});
V příkladu předpokládáme, že endpoint /create-payment
přijímá JSON s obsahem formuláře, vytváří platbu a následně vrací JSON, který obsahuje gw_url
a ID platby. Dále předpokládáme, že endpoint /status
přijme ID platby jako query paramter, provede dotaz na stav platby pomocí REST API a odpověď následně přepošle frontendu. Uvedený příklad je kompatibilní s moderními prohlížeči.
<!-- V hlavičce html dokumentu -->
<script src="https://gw.sandbox.gopay.com/gp-gw/js/embed.js" defer></script>
<!-- V tělě html dokumentu -->
<form action="/create-payment" method="post" id="payment-form">
<!-- Obsah checkout formuláře -->
<button type="submit">Zaplatit</button>
</form>
<script>
document.addEventListener("DOMContentLoaded", () => {
// přidání listeneru k checkout formuláři
const paymentForm = document.querySelector("#payment-form");
paymentForm.addEventListener("submit", async (event) => {
// zabránění výchozí akci, která by způsobila refresh stránky
event.preventDefault();
// serializace dat z formuláře do formátu JSON
const formData = new FormData(paymentForm);
const formObject = Object.fromEntries(formData.entries());
// asynchronní založení platby na serveru
const response = await fetch(paymentForm.action, {
method: paymentForm.method,
headers: {
"Content-Type": "application/json",
Accept: "application/json"
},
body: JSON.stringify(formObject)
});
// zpracování odpovědi, ID platby, vrácené serverem, ukládáme do proměnné
const result = await response.json();
const paymentId = result.id;
// Při vyvolání platební brány je předána callback funkce, argument nepotřebujeme, protože ID platby již máme
_gopay.checkout({gatewayUrl: result.gw_url, inline: true}, async (checkoutResult) => {
// asynchronní dotaz na stav platby
const statusResponse = await fetch(`/status?id=${paymentId}`);
const statusResult = await statusResponse.json();
// následuje zpracování stavu platby, zde je pouze vypsán do konzole
console.log(`Stav platby: ${statusResult.state}`);
});
});
});
</script>
Podle stavu platby při návratu může nastat jedna ze čtyř situací:
- Platba byla úspěšná (stavy
PAID
čiAUTHORIZED
) - Platba byla zrušena (stavy
CANCELED
čiTIMEOUTED
) - Neproběhl pokus platbu uhradit (stav
CREATED
) - Čeká se na výsledek platby (stav
PAYMENT_METHOD_CHOSEN
)
Průběh stavů, kterých platba nabývá, je popsán v sekci Popis vytvoření a průběhu platby.
Stavem AUTHORIZED
je označena předautorizovaná platba, autorizace tedy proběhla úspěšně a platbu bude možné následně strhnout pomocí API volání.
Pokud je platba při návratu ve stavu CREATED
, zákazník neprovedl pokus platbu uhradit a platební bránu zavřel. Může nastat také, pokud bránu zavřel, protože chtěl zvolit jinou platební metodu. V takovém případě mu tedy lze nabídnout založení nové platby s jinou platební metodou.
Pokud je stav platby při návratu PAYMENT_METHOD_CHOSEN
, znamená to, že se zákazník pokusil platbu uhradit, ale ještě nemáme výsledek platby. To může nastat například u bankovních převodů, kdy se čeká na připsání platby na účet GoPay. Tato platba ještě může být v budoucnu uhrazena, proto nedoporučujeme nabízet zákazníkovi provedení nové platby. O následné změně stavu platby budete informováni prostřednictvím HTTP notifikace.
Operace slouží k získání přístupového tokenu, který je používán ve všech dalších API operacích. Přístupové údaje jsou předávány v hlavičce Authorization
zakódované v base64 ve formátu ClientID:ClientSecret
podle RFC 7617.
Request headers
Vždy application/json
Vždy application/x-www-form-urlencoded
Request body
Rozsah práv tokenu
Vždy client_credentials
Responses
Body
Vždy bearer
Přístupový token
Obnovovací token - nepoužívá se
Životnost tokenu v sekundách
HTTP požadavek pro získání tokenu
POST /api/oauth2/token HTTP/1.1
Accept: application/json
Content-Type: application/x-www-form-urlencoded
Authorization: Basic PENsaWVudElkPjo8Q2xpZW50U2VjcmV0Pg==
scope=payment-all&grant_type=client_credentials
HTTP/1.1 200 OK
Content-Type: application/json
{
"token_type":"bearer",
"access_token":"AAAnu3YnAHRk298EsmyttFQMcbCcvmwTKK5hrJx2aGG8ZnFyBJhAvFWNmbWVSD7p",
"expires_in":1800,
"refresh_token": "ObrapXqkh3SaWifBQ4PS0kYRIbXGqUDr4t6PECZFE0lFox5uXtWNb/QzeDrk8wsWDVOn+vvCAPCPAnr+B8aon+JpW5hPVwlNj71eupst+k8="
}
Inicializace GoPay v cURLu
// příklad získání tokenu s rozsahem práv pro vytvoření platby a provedení dotazu na stav platby na testovacím prostředí
curl -v -N https://gw.sandbox.gopay.com/api/oauth2/token \
-X "POST" \
-H "Accept: application/json" \
-H "Content-Type: application/x-www-form-urlencoded" \
-u "<ClientId>:<ClientSecret>" \
-d "grant_type=client_credentials&scope=payment-create"
Inicializace GoPay v PHP
// Předpokládáme, že v proměnných $goid, $clientId a $clientSecret máte uložené
// testovací přístupové údaje
$gopay = GoPay\payments([
'goid' => $goid,
'clientId' => $clientId,
'clientSecret' => $clientSecret,
'gatewayUrl' => 'https://gw.sandbox.gopay.com/api'
]);
// Token získá SDK interně, není třeba volat žádnou metodu pro získání tokenu
// V dalších příkladech bude použit objekt $gopay vytvořený v tomto příkladu
Inicializace GoPay v Pythonu
import gopay
# Předpokládáme, že v proměnných goid, client_id a client_secret máte uložené
# testovací přístupové údaje
api = gopay.payments({
"goid": goid,
"client_id": client_id,
"client_secret": client_secret,
"gateway_url": "https://gw.sandbox.gopay.com/api"
})
# token získá SDK interně, není třeba volat žádnou metodu pro získání tokenu
# v dalších příkladech bude použit objekt gopay vytvořený v tomto příkladu
Inicializace GoPay v .NET frameworku v C#
var gopay = new GPConnector("https://gw.sandbox.gopay.com/api", {{YOUR-CLIENT-ID}}, {{YOUR-CLIENT-SECRET}});
gopay.GetAppToken();
Inicializace GoPay v Javě
IGPConnector connector = HttpClientGPConnector.build("https://gw.sandbox.gopay.com/api");
connector.getAppToken({{YOUR-CLIENT-ID}},{{YOUR-CLIENT-SECRET}});
{id}
/refund{id}
{id}
/refundsZaložení platby. Předáním parametrů preauthorization
a recurrence
je platba založena jako předautorizovaná, potažmo opakovaná.
Request headers
Bearer autentizace pomocí dříve získaného tokenu
Vždy application/json
Vždy application/json
Request body
Celková částka platby v háléřích/centech
Měna platby
Identifikace objednávky v rámci e-shopu, alfanumerické znaky
Popisuje příjemce platby
Předává nastavení platebních metod pro danou platbu a údaje o plátci
Návratová URL a notifikační URL pro oznámení změny stavu platby
Popis objednávky, alfanumerické znaky
Pokud se jedná o předautorizovanou platbu, je předáván s hodnotou true
Pokud se jedná o opakovanou platbu, je předáván objekt, popisující opakování platby
Detailně rozepsané jednotlivé položky objednávky
Doplňkové parametry platby
Jazyk na platební bráně
Responses
Body
ID platby
ID objednávky
Stav platby
Celková částka platby v háléřích/centech
Měna platby
Údaje o plátci a platebních metodách
Popisuje příjemce platby
Doplňkové parametry platby
Jazyk na platební bráně
Údaje o opakování platby, pokud je platba opakovaná
Údaje o předautorizaci, pokud je platba předautorizovaná
URL pro vyvolání platební brány
Založení platby s minimálními povinnými parametry
POST /api/payments/payment HTTP/1.1
Authorization: Bearer {{YOUR-TOKEN}}
Content-Type: application/json
Accept: application/json
{
"amount": 10000,
"currency": "CZK",
"order_number": "123456",
"payer": {
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"callback": {
"return_url": "https://example.com/your-return-url",
"notification_url": "https://example.com/your-notify-url"
}
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"order_number": "123456",
"state": "CREATED",
"amount": 10000,
"currency": "CZK",
"payer": {
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"gw_url": "https://gw.sandbox.gopay.com/gw/..."
}
Založení standardní platby v úplné podobě
POST /api/payments/payment HTTP/1.1
Authorization: Bearer {{YOUR-TOKEN}}
Content-Type: application/json
Accept: application/json
{
"amount": 10000,
"currency": "CZK",
"order_number": "123456",
"order_description": "Test order",
"payer": {
"allowed_payment_instruments": [
"PAYMENT_CARD", "BANK_ACCOUNT", "GPAY", "APPLE_PAY"
],
"default_payment_instrument": "PAYMENT_CARD",
"allowed_swifts": [
"GIBACZPX", "CEKOCZPP", "FIOBCZPP", "AGBACZPP", "AIRACZPP"
],
"default_swift": "GIBACZPX",
"contact": {
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"phone_number": "+420123456789",
"city": "Test city",
"street": "Test street 10",
"postal_code": "10000",
"country_code": "CZE"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"callback": {
"return_url": "https://example.com/your-return-url",
"notification_url": "https://example.com/your-notify-url"
},
"items": [
{"type": "ITEM", "name": "Test item", "amount": 10000}
],
"additional_params": [
{"name": "Test name", "value": "Test value"}
],
"lang": "CS"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"order_number": "123456",
"state": "CREATED",
"amount": 10000,
"currency": "CZK",
"payer": {
"allowed_payment_instruments": [
"CLICK_TO_PAY",
"APPLE_PAY",
"PAYMENT_CARD",
"GPAY",
"BANK_ACCOUNT"
],
"default_payment_instrument": "PAYMENT_CARD",
"default_swift": "GIBACZPX",
"contact": {
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"phone_number": "+420123456789",
"city": "Test city",
"street": "Test street 10",
"postal_code": "10000",
"country_code": "CZE"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"additional_params": [
{"name": "Test name", "value": "Test value"}
],
"lang": "cs",
"gw_url": "https://gw.sandbox.gopay.com/gw/v3/..."
}
Založení standardní platby v cURLu (varianty minimální a úplná)
// založení standardní platby s minimálními povinnými parametry
Request:
curl -X POST "https://gw.sandbox.gopay.com/api/payments/payment" \
-H "Authorization: Bearer {{YOUR-TOKEN}}" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"amount": 10000,
"currency": "CZK",
"order_number": "123456",
"callback": {
"return_url": "https://www.example.xy/return",
"notification_url": "https://www.example.xy/notify"
}
}'
Response:
{"id":1234567890,"order_number":"123456","state":"CREATED","amount":10000,"currency":"CZK","payer":{},"target":{"type":"ACCOUNT","goid":{{YOUR-GOID}}},"gw_url":"https://gw.sandbox.gopay.com/gw/v3/xxxxxxxxxxxxxxxxxxxxxxxxx"}
// založení standardní platby s rozšířenými objekty payer, items, additional_params
Request:
curl -X POST "https://gw.sandbox.gopay.com/api/payments/payment" \
-H "Authorization: Bearer {{YOUR-TOKEN}}" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"payer": {
"allowed_payment_instruments": [
"PAYMENT_CARD",
"BANK_ACCOUNT"
],
"default_payment_instrument": "PAYMENT_CARD",
"allowed_swifts": [
"FIOBCZPP",
"BREXCZPP"
],
"default_swift": "FIOBCZPP",
"contact": {
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"phone_number": "+420777456123",
"city": "Test city",
"street": "Test street 10",
"postal_code": "10000",
"country_code": "CZE"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"items": [
{
"type": "DISCOUNT",
"name": "Test item",
"amount": 10000,
"count": 1,
"ean": 1234567890123,
"product_url": "https://www.eshop.xy/kniha/fantasy"
}
],
"amount": 10000,
"currency": "CZK",
"order_number": "123456",
"order_description": "Test order",
"lang": "CS",
"callback": {
"return_url": "https://www.example.xy/return",
"notification_url": "https://www.example.xy/notify"
},
"additional_params": [
{
"name": "Doplňující informace",
"value": "123"
}
]
}'
Response:
{"id":1234567890,"order_number":"1234","state":"CREATED","amount":10000,"currency":"CZK","payer":{"allowed_payment_instruments":["PAYMENT_CARD","BANK_ACCOUNT"],"default_payment_instrument":"PAYMENT_CARD","default_swift":"FIOBCZPP","contact":{"first_name":"John","last_name":"Doe","email":"john.doe@example.com","phone_number":"+420777456123","city":"Test city","street":"Test street 10","postal_code":"10000","country_code":"CZE"}},"target":{"type":"ACCOUNT","goid":{{YOUR-GOID}}},"additional_params":[{"name":"Doplňující informace","value":"123"}],"lang":"cs","gw_url":"https://gw.sandbox.gopay.com/gw/v3/xxxxxxxxxxxxxxxxxxxxxxxxx"}
Minimální a úplná platba v jazyce PHP
use GoPay\Definition\Payment\Currency;
use GoPay\Definition\Payment\PaymentInstrument;
use GoPay\Definition\Payment\BankSwiftCode;
// Array s platbou s minimálními parametry
$payment = [
'amount' => 10000,
'currency' => Currency::CZECH_CROWNS,
'order_number' => '123456',
'payer' => [
'contact' => [
'email' => 'john.doe@example.com'
]
],
'callback' => [
'return_url' => 'https://example.com/your-return-url',
'notification_url' => 'https://example.com/your-notify-url'
]
];
// Array s úplnou platbou
$fullPayment = [
'amount' => 10000,
'currency' => Currency::CZECH_CROWNS,
'order_number' => '123456',
'order_description' => 'Test order',
'payer' => [
'allowed_payment_instruments' => [
PaymentInstrument::PAYMENT_CARD,
PaymentInstrument::BANK_ACCOUNT,
PaymentInstrument::GPAY,
PaymentInstrument::APPLE_PAY
],
'default_payment_instrument' => PaymentInstrument::PAYMENT_CARD,
'allowed_swifts' => [
BankSwiftCode::CESKA_SPORITELNA,
BankSwiftCode::CSOB,
BankSwiftCode::FIO_BANKA,
BankSwiftCode::MONETA_MONEY_BANK,
BankSwiftCode::AIRBANK
],
'default_swift' => BankSwiftCode::CESKA_SPORITELNA,
'contact' => [
'first_name' => 'John',
'last_name' => 'Doe',
'email' => 'john.doe@example.com',
'phone_number' => '+420123456789',
'city' => 'Test city',
'street' => 'Test street 10',
'postal_code' => '10000',
'country_code' => 'CZE'
]
],
'callback' => [
'return_url' => 'https://example.com/your-return-url',
'notification_url' => 'https://example.com/your-notify-url'
],
'items' => [
['type' => 'ITEM', 'name' => 'Test item', 'amount' => 10000]
],
'additional_params' => [
['name' => 'Test name', 'value' => 'Test value']
]
];
// Není potřeba předávat objekt `target`, je doplněn automaticky
// Vlastní API call pro vytvoření platby
$response = $gopay->createPayment($payment);
// Kontrola, zda vytvoření platby bylo úspěšné a získání těla API odpovědi
if ($response->hasSucceed()) {
$responseBody = $response->json;
// k jednotlivým parametrům je pak možnost přistupovat podle jméma
$gatewayUrl = $responseBody['gw_url'];
}
Minimální a úplná platba v jazyce Python
from gopay.enums import Currency, PaymentInstrument, BankSwiftCode, Language
# Dictionary s minimální platbou
payment = {
"amount": 10000,
"currency": "CZK",
"order_number": "123456",
"payer": {
"contact": {
"email": "john.doe@example.com"
}
},
"callback": {
"return_url": "https://example.com/your-return-url",
"notification_url": "https://example.com/your-notify-url",
},
}
# Dictionary s úplnou platbou
full_payment = {
"amount": 10000,
"currency": Currency.CZECH_CROWNS,
"order_number": "123456",
"order_description": "Test order",
"payer": {
"allowed_payment_instruments": [
PaymentInstrument.PAYMENT_CARD,
PaymentInstrument.BANK_ACCOUNT,
PaymentInstrument.GPAY,
PaymentInstrument.APPLE_PAY,
],
"default_payment_instrument": PaymentInstrument.PAYMENT_CARD,
"allowed_swifts": [
BankSwiftCode.CESKA_SPORITELNA,
BankSwiftCode.CSOB,
BankSwiftCode.FIO_BANKA,
BankSwiftCode.MONETA_MONEY_BANK,
BankSwiftCode.AIRBANK,
],
"default_swift": BankSwiftCode.CESKA_SPORITELNA,
"contact": {
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"phone_number": "+420123456789",
"city": "Test city",
"street": "Test street 10",
"postal_code": "10000",
"country_code": "CSE",
},
},
"callback": {
"return_url": "https://example.com/your-return-url",
"notification_url": "https://example.com/your-notify-url",
},
"items": [
{"type": "ITEM", "name": "Test item", "amount": 10000}
],
"additional_params": [
{"name": "Test name", "value": "Test value"}
],
"lang": Language.CZECH,
}
# Není potřeba předávat objekt `target`, je doplněn automaticky
# Vlastní API call pro vytvoření platby
response = api.create_payment(payment)
# Kontrola, zda vytvoření platby bylo úspěšné a získání těla API odpovědi
if response.success:
response_body = response.json
# K jednotlivým parametrům odpovědi je možno přistupovat podle jména
gateway_url = response_body["gw_url"]
Minimální platba ve frameworku .NET. Je možno rozšířit dalšími parametry.
using GoPay.Common;
using GoPay.Model.Payment;
using GoPay.Model.Payments;
// Objekt minimální platby
var payment = new BasePayment()
{
Amount = 1000,
Currency = Currency.CZK,
OrderNumber = "123456",
Payer = new Payer
{
Contact = new PayerContact
{
Email = "john.doe@example.com"
}
},
Target = new Target
{
GoId = long.Parse(_configuration["GoPay:GoId"] ?? "0"),
Type = Target.TargetType.ACCOUNT
},
Callback = new Callback
{
ReturnUrl = "https://example.com/your-return-url",
NotificationUrl = "https://example.com/your-notify-url"
}
};
// Objekt úplné platby
var fullPayment = new BasePayment()
{
Amount = 1000,
Currency = Currency.CZK,
OrderNumber = "123456",
OrderDescription = "Test order",
Payer = new Payer
{
AllowedPaymentInstruments = new List<PaymentInstrument>
{
PaymentInstrument.PAYMENT_CARD,
PaymentInstrument.BANK_ACCOUNT,
PaymentInstrument.GPAY,
PaymentInstrument.APPLE_PAY
},
DefaultPaymentInstrument = PaymentInstrument.PAYMENT_CARD,
AllowedSwifts = new List<string>
{
"GIBACZPX",
"CEKOCZPP",
"FIOBCZPP",
"AGBACZPP",
"AIRACZPP"
},
DefaultSwift = "GIBACZPX",
Contact = new PayerContact
{
FirstName = "John",
LastName = "Doe",
Email = "john.doe@example.com",
PhoneNumber = "+420123456789",
City = "Test city",
Street = "Test street 10",
PostalCode = "10000",
CountryCode = Country.CZE
}
},
Target = new Target
{
GoId = long.Parse(_configuration["GoPay:GoId"] ?? "0"),
Type = Target.TargetType.ACCOUNT
},
Callback = new Callback
{
ReturnUrl = "https://example.com/your-return-url",
NotificationUrl = "https://example.com/your-notify-url"
},
Items = new List<OrderItem>
{
new OrderItem {
ItemType = ItemType.ITEM,
Name = "Test item",
Amount = 1000
}
},
AdditionalParams = new List<AdditionalParam>
{
new AdditionalParam {
Name = "Test name",
Value = "Test value"
}
},
Lang = "CZ"
};
// API Call pro vytvoření platby. Výsledkem bude objekt třídy Payment
try
{
var result = connector.CreatePayment(payment);
}
catch (GPClientException e)
{
System.Console.WriteLine(e);
}
{id}
/refundRefundace platby umožňuje navrácení finančních prostředků za již provedenou platbu zpět zákazníkovi. Refundaci je možno provést v plné výši, nebo částečnou.
Path variables
ID platby k refundaci
Request headers
Vždy application/json
Vždy application/x-www-form-urlencoded
Bearer autentizace pomocí dříve získaného tokenu
Request body
Částka k navrácení
Responses
Body
ID platby
Výsledek operace
Refundace platby
POST /api/payments/payment/{id}/refund HTTP/1.1
Accept: application/json
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer {{YOUR-TOKEN}}
amount=10000
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"result": "FINISHED"
}
Refundace platby v cURLu
// příklad provedení vrácení (refundace) části či plné částky k platbě na testovacím prostředí
curl -X POST "https://gw.sandbox.gopay.com/api/payments/payment/3123456789/refund" \
-H "Accept: application/json" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: Bearer {{YOUR-TOKEN}}" \
-d 'amount=10000'
Refundace platby v PHP
// Předpokládáme, že v proměnné $paymentId máte uložené ID platby
// API call pro refundaci. Druhý parametr je částka k refundaci
$response = $gopay->refundPayment($paymentId, 10000);
// Kontrola, zda refundace byla úspěšná a získání těla API odpovědi
if ($response->hasSucceed()) {
$responseBody = $response->json;
}
Refundace platby v Pythonu
# Předpokládáme, že v proměnné payment_id máte uložené ID platby
# API call pro refundaci. Druhý parametr je částka k refundaci
response = api.refund_payment(payment_id, 10000)
# Kontrola, zda byla refundace úspěšná a záskání těla API odpovědi
if response.success:
response_body = response.json
{id}
Funkcionalita stav platby umožní prodejnímu místu zjistit, jaký je aktuální stav dříve vytvořené platby. V případě předautorizované a opakované platby obsahuje také odpověď informace o opakování platby či předautorizaci. Objekt payer může obsahovat údaje o platební kartě či bankovním účtu, pokud klient uhradil platbu tímto způsobem.
Path variables
ID dotazované platby
Request headers
Vždy application/json
Bearer autentizace pomocí dříve získaného tokenu
Responses
Body
ID platby
ID objednávky
Stav platby
Podstav platby
Celková částka platby v haléřích/centech
Měna platby
Zvolená platební metoda
Údaje o plátci a platebních metodách
Popisuje příjemce platby
Doplňkové parametry platby
Jazyk na platební bráně
Údaje o opakování platby, pokud je platba opakovaná
Údaje o předautorizaci, pokud je platba předautorizovaná
URL platební brány
Dotaz na stav platby
GET /api/payments/payment/3123456789 HTTP/1.1
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"order_number": "123456",
"state": "PAID",
"payment_instrument": "PAYMENT_CARD",
"amount": 10000,
"currency": "CZK",
"payer": {
"payment_card": {
"card_number": "440507******4448",
"card_expiration": "9912",
"card_brand": "Visa",
"card_issuer_country": "CZE",
"card_issuer_bank": "CESKA SPORITELNA, A.S (CZECH SAVINGS BANK)",
"card_fingerprint": "0c823534ec582c97fa85c0bf7b020ee25a0a5af13974709bb329a709a79c2b3e"
},
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": {{YOUR-GOID}}
},
"lang": "en",
"gw_url": "https://gw.sandbox.gopay.com/gw/v3/..."
}
Dotaz na stav platby v cURLu
// příklad dotazu na stav platby na testovacím prostředí
curl -X GET "https://gw.sandbox.gopay.com/api/payments/payment/3123456789" \
-H "Accept: application/json" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: Bearer {{YOUR-TOKEN}}"
Dotaz na stav platby v PHP
// Předpokládáme, že v proměnné $paymentId máte uložené ID platby
// API call pro dotaz na stav platby
$response = $gopay->getStatus($paymentId);
// Kontrola, zda bylo volání úspěšné a získání těla API odpovědi
if ($response->hasSucceed()) {
$responseBody = $response->json;
// K jednotlivým parametrům je pak možnost přistupovat podle jména
$paymentStatus = $responseBody['state'];
}
Dotaz na stav platby v Pythonu
# Předpokládáme, že v proměnné payment_id máte uložené ID platby
# API call dotazu na stav platby
response = api.get_status(payment_id)
# Kontrola, zda bylo volání úspěšné a získání těla API odpovědi
if response.success:
response_body = response.json
# K jednotlivým parametrům odpovědi je možno přistupovat podle jména
payment_status = response_body["state"]
{id}
/refundsTato funkcionalita umožňuje prodejnímu místu získat výpis historie refundací ke konkrétní platbě.
Path variables
ID dotazované platby
Request headers
Vždy: application/json
Bearer autentizace pomocí dříve získaného tokenu
Responses
Body
ID dotazované platby
Stav refundace
Refundovaná částka v haléřích/centech
Měna refundace
Datum requestu pro refundaci
Datum poslední změny refundace
GET /api/payments/payment/3123456789/refunds HTTP/1.1
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"state": "FAILED",
"amount": 50000,
"currency": "CZK",
"date_requested": "2024-04-04",
},
{
"id": 3123456789,
"state": "SUCCESS",
"amount": 20000,
"currency": "CZK",
"date_requested": "2024-04-05",
"date_last_change": "2024-04-05"
}
// příklad dotazu na historii refundací na testovacím prostředí
curl -X GET "https://gw.sandbox.gopay.com/api/payments/payment/3123456789/refunds" \
-H "Accept: application/json" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: Bearer {{YOUR-TOKEN}}"
{id}
/create-recurrence{id}
/void-recurrence{id}
/create-recurrencePomocí požadavku je možné strhnout novou platbu na základě dříve založené opakované platby v režimu ON_DEMAND (na vyžádání).
Path variables
ID zakládající platby
Request headers
Vždy application/json
Vždy application/json
Bearer autentizace pomocí dříve získaného tokenu
Request body
Částka platby v haléřích/centech
Měna platby
Identifikace objednávky v rámci e-shopu, alfanumerické znaky
Popis objednávky
Detailně rozepsané jednotlivé položky objednávky
Doplňkové parametry platby
Responses
Body
ID platby
ID zakládající platby
ID objednávky
Stav platby
Částka platby v haléřích/centech
Měna platby
Platební metoda
Údaje o plátci a platebních metodách
Popisuje příjemce platby
Doplňkové parametry platby
Jazyk na platební bráně
Vytvoření následné opakované platby
POST /api/payments/payment/3123456789/create-recurrence HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer {{YOUR-TOKEN}}
{
"amount": 1000,
"currency": "CZK",
"order_number": "123456",
"order_description": "Test recurrence"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456790,
"parent_id": 3123456789,
"order_number": "123456",
"state": "CREATED",
"amount": 1000,
"currency": "CZK",
"payment_instrument": "PAYMENT_CARD",
"payer": {
"contact": {
"email": "john.doe@example.com"
}
},
"target": {
"type": "ACCOUNT",
"goid": 8123456789
},
"lang": "CS"
}
Vytvoření následné opakované platby v cURLu
// příklad vytvoření následné opakované platby na vyžádání na testovacím prostředí
curl -X POST "https://gw.sandbox.gopay.com/api/payments/payment/3123456789/create-recurrence" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {{YOUR-TOKEN}}" \
-d '{
"amount": 1000,
"currency": "CZK",
"order_number": "123456",
"order_description": "Test recurrence"
}'
Vytvoření následné opakované platby v PHP
// Předpokládáme, že v proměnné $parentId máte uložené ID zakládající platby
use GoPay\Definition\Payment\Currency;
// Array s následnou platbou
$payment = [
'amount' => 1000,
'currency' => Currency::CZECH_CROWNS,
'order_number' => '123456',
'order_description' => 'Test recurrence'
];
// Vlastní API call pro vytvoření následné platby
$response = $gopay->createRecurrence($parentId, $payment);
// Kontrola, zda vytvoření platby bylo úspěšné a získání těla API odpovědi
if ($response->hasSucceed()) {
$responseBody = $response->json;
}
Vytvoření následné opakované platby v Pythonu
# Předpokládáme, že v proměnné parent_id máte uložené ID zakládající platby
from gopay.enums import Currency
# Dictionary s následnou platbou
payment = {
"amount": 1000,
"currency": Currency.CZECH_CROWNS,
"order_number": "123456",
"order_description": "Test recurrence",
}
# API call pro založení následné platby
response = api.create_recurrence(parent_id, payment)
# Kontrola, zda bylo volání úspěšné a získání těla API odpovědi
if response.success:
response_body = response.json
{id}
/void-recurrenceUmožňuje zrušit opakování dříve vytvořené platby.
Path variables
ID zakládající opakované platby
Request headers
Vždy application/json
Bearer autentizace pomocí dříve získaného tokenu
Responses
Body
ID platby
Výsledek operace
Zrušení opakování
POST /api/payments/payment/3123456789/void-recurrence HTTP/1.1
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"result": "FINISHED"
}
Zrušení opakování v cURLu
// příklad zrušení opakování na testovacím prostředí
curl -X POST "https://gw.sandbox.gopay.com/api/payments/payment/3123456789/void-recurrence" \
-H "Accept: application/json" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: Bearer {{YOUR-TOKEN}}"
Zrušení opakování v PHP
// Předpokládáme, že v proměnné $parentId máte uložené ID zakládající platby
// API call pro zrušení opakování platby
$response = $gopay->voidRecurrence($parentId);
// Kontrola, zda bylo volání úspěšné a získání těla API odpovědi
if ($response->hasSucceed()) {
$responseBody = $response->json;
}
Zrušení opakování v Pythonu
# Předpokládáme, že v proměnné parent_id máte uložené ID zakládající platby
# API call pro zrušení opakované platby
response = api.void_recurrence(parent_id)
# Kontrola, zda bylo volání úspěšné a záskání těla API odpovědi
if response.success:
response_body = response.json
{id}
/capture{id}
/capture{id}
/void-authorization{id}
/capturePomocí volání je možné strhnout plnou částku autorizace na základě dříve vytvořené předautorizované platby.
Path variables
ID platby předautorizace
Request headers
Vždy application/json
Bearer autentizace pomocí dříve získaného tokenu
Responses
Body
ID platby
Výsledek operace
Stržení předautorizace
POST /api/payments/payment/3123456789/capture HTTP/1.1
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"result": "ACCEPTED"
}
Stržení předautorizace v cURLu
// příklad stržení předautorizace na testovacím prostředí
curl -X POST "https://gw.sandbox.gopay.com/api/payments/payment/3123456789/capture" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {{YOUR-TOKEN}}" \
-d '{
"amount": 10000,
"items": [
{
"type": "ITEM",
"name": "Test item",
"amount": 10000,
"count": 1
}
]
}'
Stržení předautorizace v PHP
// Předpokládáme, že v proměnné $paymentId máte uložené ID předautorizované platby
// API call pro stržení předautorizace
$response = $gopay->captureAuthorization($paymentId);
// Kontrola, zda bylo volání úspěšné a získání těla API odpovědi
if ($response->hasSucceed()) {
$responseBody = $response->json;
}
Stržení předautorizace v Pythonu
# Předpokládáme, že v proměnné payment_id máte uložené ID předautorizované platby
# API call pro stržení předautorizace
response = api.capture_authorization(payment_id)
# Kontrola, zda bylo volání úspěšné a záskání těla API odpovědi
if response.success:
response_body = response.json
{id}
/capturePomocí volání je možné strhnout určitou výši částky autorizace na základě dříve vytvořené předautorizované platby. Požadovaná částka stržení nemůže být vyšší než původní částka předautorizované platby. Je zásadní předat hlavičku Content-Type: application/json
.
Path variables
ID platby předautorizace
Request headers
Vždy application/json
Vždy application/json
Bearer autentizace pomocí dříve získaného tokenu
Request body
Celková částka v haléřích/centech
Detailně rozepsané jednotlivé položky platby
Responses
Body
ID platby
Výsledek operace
Částečné stržení předautorizace
POST /api/payments/payment/3123456789/capture HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer {{YOUR-TOKEN}}
{
"amount": 5000,
"items": [
{"type": "ITEM", "name": "Test item", "amount": 5000}
]
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"result": "FINISHED"
}
Částečné stržení předautorizace v cURLu
// příklad částečného stržení předautorizace na testovacím prostředí
curl -X POST "https://gw.sandbox.gopay.com/api/payments/payment/3123456789/capture" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {{YOUR-TOKEN}}" \
-d '{
"amount": 49900,
"items": [
{
"type": "ITEM",
"name": "Test item",
"amount": 49900,
"count": 1
}
]
}'
Částečné stržení předautorizace v PHP
// Předpokládáme, že v proměnné $paymentId máte uložené ID předautorizované platby
// Array s detaily strhávané částky
$payment = [
'amount' => 5000,
'items' => [
['type' => 'ITEM', 'name' => 'Test item', 'amount' => 5000]
]
];
// API call pro stržení předautorizace
$response = $gopay->captureAuthorizationPartial($paymentId, $payment);
// Kontrola, zda bylo volání úspěšné a získání těla API odpovědi
if ($response->hasSucceed()) {
$responseBody = $response->json;
}
Částečné stržení předautorizace v Pythonu
# Předpokládáme, že v proměnné payment_id máte uložené ID předautorizované platby
# Dictionary s detaily strhávané částky
payment = {
"amount": 5000,
"items": [
{"type": "ITEM", "name": "Test item", "amount": 5000}
]
}
# API call pro částečné stržení předautorizace
response = api.capture_authorization_partial(payment_id, payment)
# Kontrola, zda bylo volání úspěšné a záskání těla API odpovědi
if response.success:
response_body = response.json
{id}
/void-authorizationProvede uvolnění prostředků předautorizace dříve vytvořené platby.
Path variables
ID platby předautorizace
Request headers
Vždy application/json
Bearer autentizace pomocí dříve získaného tokenu
Responses
Body
ID platby
Výsledek operace
Zrušení předautorizace
POST /api/payments/payment/3123456789/void-authorization HTTP/1.1
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3123456789,
"result": "FINISHED"
}
Zrušení předautorizace v cURLu
// příklad zrušení předautorizace na testovacím prostředí
curl -X POST "https://gw.sandbox.gopay.com/api/payments/payment/3123456789/void-authorization" \
-H "Accept: application/json" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: Bearer {{YOUR-TOKEN}}"
Zrušení předautorizace v PHP
// Předpokládáme, že v proměnné $paymentId máte uložené ID předautorizované platby
// API call pro zrušení předautorizace
$response = $gopay->voidAuthorization($paymentId);
// Kontrola, zda bylo volání úspěšné a získání těla API odpovědi
if ($response->hasSucceed()) {
$responseBody = $response->json;
}
Zrušení předautorizace v Pythonu
# Předpokládáme, že v proměnné payment_id máte uložené ID předautorizované platby
# API call pro zrušení předautorizace
response = api.void_authorization(payment_id)
# Kontrola, zda bylo volání úspěšné a záskání těla API odpovědi
if response.success:
response_body = response.json
{card_id}
{card_id}
{card_id}
Slouží k získání detailů uložené platební karty.
Path variables
ID karty
Request headers
Vždy application/json
Bearer autentizace pomocí dříve získaného tokenu
Responses
Body
ID uložené karty
Maskovaný PAN tokenu (virtuální karty)
Expirace karty
Schéma platební karty
Země vydavatele karty
Vydavatel karty
Unikátní identifikátor konkrétní platební karty
Token pro použití v následných platbách
Stav záznamu
Maskované číslo skutečného PANu (fyzické karty)
Odkaz na obrázek designu platební karty
Dotaz na detaily aktivní karty
GET /api/payments/cards/9876543210 HTTP/1.1
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
HTTP/1.1 200 OK
Content-Type: application/json
{
"card_id": 9876543210,
"card_number": "440507******4448",
"card_expiration": "9912",
"card_brand": "Visa",
"card_issuer_country": "CZE",
"card_issuer_bank": "CESKA SPORITELNA, A.S (CZECH SAVINGS BANK)"
"card_fingerprint": "0c823534ec582c97fa85c0bf7b020ee25a0a5af13974709bb329a709a79c2b3e",
"card_token": "YZ4E8f2jJA8cEDz1s0lO4BMXo6skkvItJddyrLhSyPa01T/cvrl+DwKsEqehFG7SQxJZUsBcgZ6sei4AKxrHHap7BofFr+SH3oHJyta0axiBB7MST3IWqrsq5ZtfukBrgwPBocNDPd/RnQs=",
"status": "ACTIVE",
"real_masked_pan": "481747******1733",
"card_art_url": "https://gopay.com/api/payments/card-art/Mjc5MTg5ODI0MzIz"
}
Dotaz na detaily smazané karty
GET /api/payments/cards/9876543210 HTTP/1.1
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
HTTP/1.1 200 OK
Content-Type: application/json
{
"card_id": 9876543210,
"status": "DELETED"
}
Dotaz na detaily karty v cURLu
// ukázka dotazu na detaily karty na testovacím prostředí
curl -X GET "https://gw.sandbox.gopay.com/api/payments/cards/9876543210" \
-H "Accept: application/json" \
-H "Authorization: Bearer {{YOUR-TOKEN}}"
Dotaz na detaily karty v PHP
// Předpokládáme, že v proměnné $cardId máte uložené ID karty
// API call pro dotaz na stav platby
$response = $gopay->getCardDetails($cardId);
// Kontrola, zda bylo volání úspěšné a získání těla API odpovědi
if ($response->hasSucceed()) {
$responseBody = $response->json;
// K jednotlivým parametrům je pak možnost přistupovat podle jména
$cardStatus = $responseBody['status'];
}
Dotaz na detaily karty v Pythonu
# Předpokládáme, že v proměnné card_id máte uložené ID karty
# API call pro získání detailů karty
response = api.get_card_details(card_id)
# Kontrola, zda bylo volání úspěšné a získání těla API odpovědi
if response.success:
response_body = response.json
# K jednotlivým parametrům odpovědi je možno přistupovat podle jména
card_status = response_body["status"]
{card_id}
Slouží ke smazání dříve uložené karty.
Path variables
ID karty
Request headers
Bearer autentizace pomocí dříve získaného tokenu
Responses
Smazání karty
DELETE /api/payments/cards/9876543210 HTTP/1.1
Authorization: Bearer {{YOUR-TOKEN}}
HTTP/1.1 204 No Content
Smazání karty v cURLu
// ukázka smazání karty na testovacím prostředí
curl -X DELETE "https://gw.sandbox.gopay.com/api/payments/cards/987654321" \
-H "Authorization: Bearer {{YOUR-TOKEN}}"
// potvrzení se nevrátí, stav si můžete zkontrolovat novým získáním detailů karty - viz příklad response:
{"card_id":987654321,"status":"DELETED"}
Smazání karty v PHP
// Předpokládáme, že v proměnné $cardId máte uložené ID karty
// API call pro dotaz na stav platby
$response = $gopay->deleteCard($cardId);
Smazání karty v Pythonu
# Předpokládáme, že v proměnné card_id máte uložené ID karty
# API call pro smazání karty
response = api.delete_card(card_id)
{goid}
/payment-instruments/{currency}
{goid}
/payment-instruments{goid}
/payment-instruments/{currency}
Vrací seznam povolených platebních metod pro danou měnu, jejich českých popisků a log platebních metod. U bankovních převodů jsou předávány popisky a loga pro jednotlivé banky.
Path variables
Request parameters
Jazyk platebních metod. Můžete také předat all
pro vypsání všech jazyků.
Request headers
Vždy application/json
Bearer autentizace pomocí dříve získaného tokenu
Responses
Body
Popisy skupin platebních metod
Seznam povolených platebních metod pro danou měnu na e-shopu, jejich popisky a loga
Dotaz na povolené platební metody pro měnu
GET /api/eshops/eshop/{{YOUR-GOID}}/payment-instruments/CZK HTTP/1.1
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
HTTP/1.1 200 OK
Content-Type: application/json
{
"groups": {
"card-payment": {
"label": {
"cs": "Platební karta"
}
},
"bank-transfer": {
"label": {
"cs": "Rychlý bankovní převod"
}
},
"wallet": {
"label": {
"cs": "Elektronické peněženky"
}
},
"others": {
"label": {
"cs": "Ostatní"
}
}
},
"enabledPaymentInstruments": [
{
"paymentInstrument": "PAYMENT_CARD",
"label": {
"cs": "Platební karta"
},
"image": {
"normal": "https://static1.gopay.com/images/payment-method/miniature/PAYMENT_CARD.svg",
"large": "https://static1.gopay.com/images/payment-method/default/PAYMENT_CARD.svg"
},
"group": "card-payment",
"enabledSwifts": null
},
{
"paymentInstrument": "BANK_ACCOUNT",
"label": {
"cs": "Bankovní převod"
},
"image": {
"normal": "https://static1.gopay.com/images/payment-method/miniature/BANK_ACCOUNT.svg",
"large": "https://static1.gopay.com/images/payment-method/default/BANK_ACCOUNT.svg"
},
"group": "bank-transfer",
"enabledSwifts": [
{
"swift": "GIBACZPX",
"label": {
"cs": "Platba 24"
},
"image": {
"normal": "https://static1.gopay.com/images/bank/miniature/GIBACZPX.svg",
"large": "https://static1.gopay.com/images/bank/default/GIBACZPX.svg"
},
"isOnline": true
},
{
"swift": "CEKOCZPP",
"label": {
"cs": "ČSOB"
},
"image": {
"normal": "https://static1.gopay.com/images/bank/miniature/CEKOCZPP.svg",
"large": "https://static1.gopay.com/images/bank/default/CEKOCZPP.svg"
},
"isOnline": true
},
{
"swift": "OTHERS",
"label": {
"cs": "Jiná banka"
},
"image": {
"normal": "https://static1.gopay.com/images/bank/miniature/OTHERS.svg",
"large": "https://static1.gopay.com/images/bank/default/OTHERS.svg"
},
"isOnline": false
}
]
},
{
"paymentInstrument": "PAYPAL",
"label": {
"cs": "PayPal"
},
"image": {
"normal": "https://static1.gopay.com/images/payment-method/miniature/PAYPAL.svg",
"large": "https://static1.gopay.com/images/payment-method/default/PAYPAL.svg"
},
"group": "wallet",
"enabledSwifts": null
}
]
}
Dotaz na povolené platební metody v cURLu
// příklad dotazu na seznam povolených metod pro CZK účet ke GoID pro testovací prostředí
curl -X GET "https://gw.sandbox.gopay.com/api/eshops/eshop/{{YOUR-GOID}}/payment-instruments/CZK" \
-H "Accept: application/json" \
-H "Authorization: Bearer {{YOUR-TOKEN}}"
Dotaz na povolené platební metody v PHP
// Předpokládáme, že v proměnné $goid máte uložené vaše GoID
use GoPay\Definition\Payment\Currency;
// API call pro získání platebních metod, druhý parametr je zvolená měna
$response = $gopay->getPaymentInstruments($goid, Currency::CZECH_CROWNS);
// Kontrola, zda bylo API volání úspěšné a získání těla API odpovědi
if ($response->hasSucceed()) {
$responseBody = $response->json;
// získání array s kódy platebních metod
$instruments = array_map(
fn ($el) => $el['paymentInstrument'],
$responseBody['enabledPaymentInstruments']
);
}
Dotaz na povolené platební metody v Pythonu
# Předpokládáme, že v proměnné goid máte uložené vaše GoID
from gopay.enums import Currency
# API call pro získání platebních metod, druhý parametr je zvolená měna
response = api.get_payment_instruments(goid, Currency.CZECH_CROWNS)
# Kontrola, zda bylo API volání úspěšné a získání těla API odpovědi
if response.success:
response_body = response.json
# Získání listu s kódy platebních metod
payment_instruments = [
el["paymentInstrument"]
for el in response_body["enabledPaymentInstruments"]
]
{goid}
/payment-instrumentsVrací seznam všech povolených platebních metod na eshopu, jejich českých popisků a log platebních metod. U bankovních převodů jsou předávány popisky a loga pro jednotlivé banky.
Path variables
Request parameters
Jazyk platebních metod. Můžete také předat all
pro vypsání všech jazyků.
Request headers
Vždy application/json
Bearer autentizace pomocí dříve získaného tokenu
Responses
Body
Popisy skupin platebních metod
Objekt, obsahující všechny povolené platební metody na e-shopu, jejich popisky a loga
Povolená platební metoda na eshopu. Názvy parametrů nabývají hodnot z číselníku Payment instrument
Dotaz na všechny povolené platební metody
GET /api/eshops/eshop/{{YOUR-GOID}}/payment-instruments?lang=cs HTTP/1.1
Accept: application/json
Authorization: Bearer {{YOUR-TOKEN}}
HTTP/1.1 200 OK
Content-Type: application/json
{
"groups": {
"card-payment": {
"label": {
"cs": "Platební karta"
}
},
"bank-transfer": {
"label": {
"cs": "Rychlý bankovní převod"
}
},
"wallet": {
"label": {
"cs": "Elektronické peněženky"
}
},
"others": {
"label": {
"cs": "Ostatní"
}
}
},
"enabledPaymentInstruments": {
"PAYMENT_CARD": {
"label": {
"cs": "Platební karta"
},
"image": {
"normal": "https://static1.gopay.com/images/payment-method/miniature/PAYMENT_CARD.svg",
"large": "https://static1.gopay.com/images/payment-method/default/PAYMENT_CARD.svg"
},
"currencies": [
"CZK",
"EUR"
],
"group": "card-payment",
"enabledSwifts": null
},
"BANK_ACCOUNT": {
"label": {
"cs": "Bankovní převod"
},
"image": {
"normal": "https://static1.gopay.com/images/payment-method/miniature/BANK_ACCOUNT.svg",
"large": "https://static1.gopay.com/images/payment-method/default/BANK_ACCOUNT.svg"
},
"currencies": [
"CZK",
"EUR"
],
"group": "bank-transfer",
"enabledSwifts": {
"GIBACZPX": {
"label": {
"cs": "Česká spořitelna"
},
"image": {
"normal": "https://static1.gopay.com/images/bank/miniature/GIBACZPX.svg",
"large": "https://static1.gopay.com/images/bank/default/GIBACZPX.svg"
},
"currencies": {
"CZK": {
"isOnline": true
}
}
},
"SUBASKBX": {
"label": {
"cs": "VÚB banka"
},
"image": {
"normal": "https://static1.gopay.com/images/bank/miniature/SUBASKBX.svg",
"large": "https://static1.gopay.com/images/bank/default/SUBASKBX.svg"
},
"currencies": {
"EUR": {
"isOnline": true
}
}
},
"OTHERS": {
"label": {
"cs": "Jiná banka"
},
"image": {
"normal": "https://static1.gopay.com/images/bank/miniature/OTHERS.svg",
"large": "https://static1.gopay.com/images/bank/default/OTHERS.svg"
},
"currencies": {
"CZK": {
"isOnline": false
},
"EUR": {
"isOnline": false
}
}
}
}
},
"PAYPAL": {
"label": {
"cs": "PayPal"
},
"image": {
"normal": "https://static1.gopay.com/images/payment-method/miniature/PAYPAL.svg",
"large": "https://static1.gopay.com/images/payment-method/default/PAYPAL.svg"
},
"currencies": [
"CZK"
],
"group": "wallet",
"enabledSwifts": null
}
}
}
Dotaz na všechny povolené platební metody v cURLu
// příklad dotazu na seznam všech povolených platebních metod ke zvolenému GoID pro testovací prostředí
curl -X GET "https://gw.sandbox.gopay.com/api/eshops/eshop/{{YOUR-GOID}}/payment-instruments" \
-H "Accept: application/json" \
-H "Authorization: Bearer {{YOUR-TOKEN}}"
Dotaz na všechny povolené platební metody v PHP
// příklad dotazu na seznam všech povolených platebních metod ke zvolenému GoID pro testovací prostředí
$response = $gopay->getPaymentInstrumentsALL('8123456789');
// Kontrola, zda bylo API volání úspěšné a získání těla API odpovědi
if ($response->hasSucceed()) {
$responseBody = $response->json;
echo json_encode($responseBody);
}
Funkcionalita umožňuje generovat výpisy z GoPay obchodního účtu. Metoda vrací obsah souboru ve zvoleném formátu výpisu.
Request headers
Vždy application/json
Vždy application/json
Předává se string Bearer, za kterým následuje vytvořený přístupový token
Request body
Počáteční datum výpisu
Koncové datum výpisu
Jedinečný identifikátor e-shopu v systému platební brány
Měna účtu, ze kterého má být výpis vygenerován
Určuje formát souboru generovaného výpisu
Responses
Jako tělo odpovědi se vrací obsah výpisu v požadovaném formátu
Výpis pohybů účtu
POST /api/accounts/account-statement HTTP/1.1
Accept: application/octet-stream
Content-Type: application/json
Authorization: Bearer {{YOUR-TOKEN}}
{
"date_from": "2022-12-01",
"date_to": "2022-12-02",
"goid": {{YOUR-GOID}},
"currency": "CZK",
"format": "CSV_A"
}
HTTP/1.1 200 OK
Content-Type: application/octet-stream
"ID pohybu";"Datum";"Typ";"Protistrana";"ID objednávky/VS";"Částka";"Počáteční stav";"Koncový stav";"Měna";"ID Referenčního pohybu"
...
Výpis pohybů účtu v cURLu
// příklad výpisu ve formátu CSV_A k CZK účtu na testovacím prostředí
curl -X POST "https://gw.sandbox.gopay.com/api/accounts/account-statement" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {{YOUR-TOKEN}}" \
-d '{
"date_from": "2022-12-01",
"date_to": "2022-12-02",
"goid": {{YOUR-GOID}},
"currency": "CZK",
"format": "CSV_A"
}'
Výpis pohybů účtu v PHP
// předpokládáme, že v proměnné $goid máte uložené vaše GoID
use GoPay\Definition\Payment\Currency;
use GoPay\Definition\Account\StatementGeneratingFormat;
// Array s tělem požadavku
$body = [
'date_from' => '2022-12-01',
'date_to' => '2022-12-02',
'currency' => Currency::CZECH_CROWNS,
'format' => StatementGeneratingFormat::CSV_A,
'goid' => $goid
];
// API call pro získání výpisu
$response = $gopay->getAccountStatement($body);
// Kontrola, zda vytvoření platby bylo úspěšné
if ($response->hasSucceed()) {
// Extrakce obsahu odpovědi
$data = $response->__toString();
$file = 'statement.csv';
// Vytvoření souboru
file_put_contents($file, $data);
}
Výpis pohybů účtu v Pythonu
# Předpokládáme, že v proměnné goid máte uložené vaše GoID
from gopay.enums import Currency, StatementGeneratingFormat
# Dictionary s tělem požadavku
request_body = {
"date_from": "2022-12-01",
"date_to": "2022-12-02",
"currency": Currency.CZECH_CROWNS,
"format": StatementGeneratingFormat.CSV_A,
"goid": goid,
}
# API call pro vygenerování výpisu
response = api.get_account_statement(request_body)
if response.success:
statement = response.raw_body.decode("utf-8")
Popisuje příjemce platby/e-shop.
Vždy ACCOUNT
Jedinečný identifikátor eshopu v systému platební brány
{
"type": "ACCOUNT",
"goid": 8123456789
}
Položka platby
Typ položky
Název položky, alfanumerické znaky
Celková částka položek v haléřích/centech
Počet položek
DPH sazba, pouze pro Českou Republiku
EAN kód produktu
URL adresa produktu
Minimální podoba položky
{
"type": "ITEM",
"name": "Test item",
"amount": 1000
}
Úplná podoba položky
{
"type": "ITEM",
"name": "Test item",
"amount": 1000,
"count": 1,
"vat_rate": 21,
"ean": 4006381333931,
"product_url": "https://example.com/product"
}
Informace o zákazníkovi
Jméno zákazníka
Příjmení zákazníka
Validní e-mail zákazníka
Telefonní číslo zákazníka s předvolbou
Město zákazníka
Ulice zákazníka
Poštovní směrovací číslo zákazníka
Třípísmenný kód státu zákazníka podle standardu ISO 3166-1 alpha-3
Minimální podoba objektu contact
{
"email": "john.doe@example.com"
}
Úplná podoba objektu contact
{
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"phone_number": "+420123456789",
"city": "Test city",
"street": "Test street 10",
"postal_code": "10000",
"country_code": "CZE"
}
Objekt popisující údaje o zákazníkovi a nastavení platebních metod pro danou platbu. Nastavuje také různé typy plateb, např. vyžádání karetního tokenu a tokenu účtu.
Kontaktní údaje zákazníka
Seznam povolených platebních metod
["PAYMENT_CARD", "BANK_ACCOUNT", "GPAY", "APPLE_PAY"]
Předzvolená platební metoda
Seznam povolených SWIFTů pro online bankovní převody
["GIBACZPX", "CEKOCZPP", "FIOBCZPP", "AGBACZPP", "AIRACZPP"]
Předzvolený SWIFT
Povolené typy platby stylu BNPL (Buy Now Pay Later) (developer preview)
["DEFERRED_PAYMENT", "PAY_IN_THREE"]
Předzvolený typ platby BNPL (Buy Now Pay Later) (developer preview)
Údaje o bankovním účtu zákazníka
Údaje o platební kartě klienta
Vyžádá uložení karty a vytvoření tokenu pro další platby
ID uložené platební karty pro účely platby tokenem
Token uložené platební karty
Email použité GoPay peněženky (pouze u platební metody GOPAY
)
Minimální objekt payer, který je nutno předat při založení platby
{
"contact": {
"email": "john.doe@example.com"
}
}
Úplný objekt payer, který je možno předat při založení standardní platby
{
"allowed_payment_instruments": ["PAYMENT_CARD", "BANK_ACCOUNT", "GPAY", "APPLE_PAY"],
"default_payment_instrument": "PAYMENT_CARD",
"allowed_swifts": ["GIBACZPX", "CEKOCZPP", "FIOBCZPP", "AGBACZPP", "AIRACZPP"]],
"default_swift": "GIBACZPX",
"contact": {
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"phone_number": "+420123456789",
"city": "Test city",
"street": "Test street 10",
"postal_code": "10000",
"country_code": "CZE"
}
}
Objekt payer ze stavu platby, která byla uhrazena platební kartou
{
"contact": {
"email": "john.doe@example.com"
},
"payment_card": {
"card_number": "440507******4448",
"card_expiration": "9912",
"card_brand": "Visa",
"card_issuer_country": "CZE",
"card_issuer_bank": "CESKA SPORITELNA, A.S (CZECH SAVINGS BANK)"
}
}
Objekt payer ze stavu platby, která byla uhrazena bankovním převodem
{
"contact": {
"email": "john.doe@example.com"
},
"bank_account": {
"prefix": "000000",
"account_number": "9878039",
"bank_code": "2010",
"iban": "CZ5120100000000009878039",
"bic": "FIOBCZPP",
"account_name": "John Doe"
}
}
Popisuje adresy, na které bude předáváno ID vytvořené platby - adresu, na kterou bude zákazník přesměrován a adresu, kam budou zasílány HTTP push notifikace.
URL pro návrat klienta z platební brány do e-shopu (včetně protokolu)
URL pro zasílání asynchronních HTTP notifikací
{
"return_url": "https://example.com/your-return-url",
"notification_url": "https://example.com/your-notify-url"
}
Objekt popisující údaje o platební kartě. Pouze pro čtení vracen v dotazu na stav platby, pokud zákazník platil kartou. Parametr card_fingerprint
je předáván pouze pokud je tato funkce aktivována.
Maskovaný PAN (číslo karty)
Datum expirace
Asociace platební karty
Země vydání platební karty
Vydavatelská banka
Výsledek 3D Secure autorizace, pouze u identifikační platby
Unikátní identifikátor konkrétní platební karty
Objekt platební karty
{
"card_number": "440507******4448",
"card_expiration": "9912",
"card_brand": "Visa",
"card_issuer_country": "CZE",
"card_issuer_bank": "CESKA SPORITELNA, A.S (CZECH SAVINGS BANK)"
}
Údaje o bankovním účtu plátce. Pouze pro čtení vracen v dotazu na stav platby, pokud klient platil účtem. IBAN a SWIFT jsou předávány pouze u zahraničních účtů.
Předčíslí účtu
Číslo účtu v domestic formátu
Kód banky v domestic formátu
IBAN
SWIFT/BIC
Jméno majitele účtu
Uložený token pro PSD2 zapamatovaný režim
{
"prefix": "000000",
"account_number": "9878039",
"bank_code": "2010",
"account_name": "John Doe",
"iban": "CZ5120100000000009878039"
}
Dodatečné parametry platby
Název parametru
Hodnota parametru
{
"name": "Test name",
"value": "Test value"
}
Objekt popisující opakování platby. U opakované platby ON_DEMAND se nepředává parametr recurrence_period
. Parametr recurrence_state
je vracen v dotazu na stav platby.
Časový úsek opakování
Perioda opakování platby
Doba platnosti opakované platby (výlučně do) ve formátu YYYY-MM-DD
Stav opakování platby
Objekt recurrence předaný při založení AUTO opakované platby
{
"recurrence_cycle": "MONTH",
"recurrence_period": 1,
"recurrence_date_to": "2025-12-31",
}
Objekt recurrence předaný při založení ON_DEMAND opakované platby
{
"recurrence_cycle": "ON_DEMAND",
"recurrence_period": 12,
"recurrence_date_to": "2025-12-31"
}
Objekt recurrence, který se vrací ve stavu platby
{
"recurrence_cycle": "WEEK",
"recurrence_period": 1,
"recurrence_date_to": "2025-12-31",
"recurrence_state": "STOPPED"
}
Objekt popisující předautorizaci platby. Vrací se pouze ve stavu platby.
Zda byla předautorizace založena
Stav předautorizace platby
{
"requested": true,
"state": "REQUESTED"
}
Objekt popisující chybu
Rozsah chyby
Kterého parametru se chyba týká, pokud se nejedná o globální chybu
Lokalizovaná message. Lokalizace založená na Accept-Language v hlavičce. Defaultně je nastaveno na en-US, dále je možné použít českou lokalizaci pomocí hlavičky Accept-Language: cs.
Technický popis chyby
Číselné označení typu chyby
Kódové označení typu chyby
Chyba v konkrétním parametru
{
"scope": "F",
"field": "goid",
"message": "Payee not found",
"error_code": "320",
"error_name": "PAYEE_NOT_FOUND"
}
Obecná chyba
{
"scope": "G",
"description": "System error",
"error_code": "100",
"error_name": "SYSTEM_ERROR"
}
Obsahuje popisky skupiny platebních metod.
Popis platební metody
Název platební metody v češtině
{
"label": {
"cs": "Platební karta"
}
}
Seznam všech skupin povolených platebních metod.
Popisuje skupinu platebních metod. Názvy parametrů nabývají hodnot z číselníku Group
{
"card-payment": {
"label": {
"cs": "Platební karta"
}
}
}
Popisuje povolené swifty pro bankovní převody.
Ikony banky
URL velké ikony
URL menší ikony
Zda je pro tento SWIFT možný online bankovní převod
Popisek platební metody
Český popisek
SWIFT banky
{
"image": {
"large": "https://gate.gopay.cz/images/checkout/GIBACZPX@2x.png",
"normal": "https://gate.gopay.cz/images/checkout/GIBACZPX.png"
},
"isOnline": true,
"label": {
"cs": "Platba 24"
},
"swift": "GIBACZPX"
}
Popisuje povolené platební metody.
Řada objektů popisující jednotlivé povolené SWIFTY (pouze pro bankovní převody)
Do které skupiny se platební metoda řadí
Ikony platební metody
URL velké ikony
URL malé ikony
Popisky platební metody
Český popisek
Označení platební metody v rámci API
{
"enabledSwifts": [{
"image": {
"large": "https://gate.gopay.cz/images/checkout/GIBACZPX@2x.png",
"normal": "https://gate.gopay.cz/images/checkout/GIBACZPX.png"
},
"isOnline": true,
"label": {
"cs": "Platba 24"
},
"swift": "GIBACZPX"
}],
"group": "bank-transfer",
"image": {
"large": "https://gate.gopay.cz/images/checkout/payment_card@2x.png",
"normal": "https://gate.gopay.cz/images/checkout/payment_card.png"
},
"label": {
"cs": "Bankovní převod"
},
"paymentInstrument": "BANK_ACCOUNT"
}
Popisuje povolené swifty pro bankovní převody.
Ikony banky
URL velké ikony
URL menší ikony
Zda je pro tento SWIFT možný online bankovní převod
Popisek platební metody
Český popisek
SWIFT banky
Měna, pro kterou je SWIFT dostupný. Název parametru nabývá hodnot z číselníku Currency.
Značí, zda je SWIFT spojený s online převodem.
{
"image": {
"large": "https://gate.gopay.cz/images/checkout/GIBACZPX@2x.png",
"normal": "https://gate.gopay.cz/images/checkout/GIBACZPX.png"
},
"isOnline": true,
"label": {
"cs": "Platba 24"
},
"swift": "GIBACZPX",
"currencies": {
"CZK": {
"isOnline": "true"
}
}
}
Popisuje povolené platební metody pro všechny měny.
Objekt popisující povolené SWIFTy pro bankovní převod. Názvy parametrů nabývají hodnot z číselníku Swift.
Objekt popisující každý jednotlivý SWIFT.
Do které skupiny se platební metoda řadí
Ikony platební metody
URL velké ikony
URL malé ikony
Popisky platební metody
Český popisek
Měny, pro které je daná platební metoda dosupná
{
"enabledSwifts": {
"GIBACZPX": {
"image": {
"large": "https://gate.gopay.cz/images/checkout/GIBACZPX@2x.png",
"normal": "https://gate.gopay.cz/images/checkout/GIBACZPX.png"
},
"isOnline": true,
"label": {
"cs": "Platba 24"
},
"swift": "GIBACZPX",
"currencies": {
"CZK": {
"isOnline": "true"
}
}
}
},
"group": "bank-transfer",
"image": {
"large": "https://gate.gopay.cz/images/checkout/bank_account@2x.png",
"normal": "https://gate.gopay.cz/images/checkout/bank_account.png"
},
"label": {
"cs": "Bankovní platba"
},
"currencies": [
"CZK"
]
}
Seznam dostupných měn
Česká koruna
Euro
Polský złoty
Americký dolar
Britská libra
Maďarský forint
Rumunský nový lei
Bulharský lev
Chorvatská kuna
Seznam dostupných platebních metod.
Platební karta
Bankovní převod
Google Pay
Apple Pay
PayPal účet
mPlatba (mobilní platba)
Premium SMS
PaySafeCard kupón
Bitcoin peněženka
Click To Pay VISA/MasterCard
Twisto (developer preview)
Skip Pay (developer preview)
Seznam dostupných SWIFT/BIC kódů pro účely určení platebních metod.
QR Platba
Česká Spořitelna
Komerční Banka
ČSOB
Raiffeisenbank
UniCredit Bank
Moneta Money Bank
FIO Banka
mBank
AirBank
ING Bank
Oberbank
VÚB Praha
Hello bank!
CREDITAS
Max banka
J&T Banka
Tatra Banka
VÚB
UniCredit Bank SK
Slovenská Sporiteľňa
ČSOB SK
Poštová Banka
OTP Banka Slovensko
Prima Banka Slovensko
Citibank Europe
Fio banka SK
mBank SK
ING Bank SK
J&T Banka SK
Oberbank SK
Privatbanka
BKS Bank
Raiffeisenbank SK
Komerční banka SK
Seznam možných stavů plateb
Platba vytvořena
Platba uhrazena
Platba zamítnuta
Platební metoda potvrzena
Platbě vypršela životnost
Platba předautorizována
Platba vrácena
Platba částečně vrácena
Seznam podstavů plateb
Čekáme na provedení online platby.
Čekáme na provedení offline platby.
Bankovní platba potvrzena avízem.
Bankovní platba potvrzena výpisem.
Bankovní platba nebyla potvrzena.
Schváleno s nulovou částkou
Zamítnutí platby v autorizačním centru banky zákazníka z důvodu dosažení limitů na platební kartě.
Zamítnutí platby v autorizačním centru banky zákazníka z důvodu problémů na straně vydavatele platební karty.
Zamítnutí platby v autorizačním centru banky zákazníka z důvodu problému na straně vydavatele platební karty.
Zamítnutí platby v autorizačním centru banky zákazníka z důvodu zablokované platební karty.
Zamítnutí platby v autorizačním centru banky zákazníka z důvodu nedostatku peněžních prostředků na platební kartě.
Zamítnutí platby v autorizačním centru banky zákazníka z důvodu expirované platební karty.
Zamítnutí platby v autorizačním centru banky zákazníka z důvodu zamítnutí CVV/CVC kódu.
Zamítnutí platby v systému 3D Secure banky zákazníka.
Zamítnutí platby v systému 3D Secure banky zákazníka.
Zamítnutí platby v systému 3D Secure banky zákazníka.
Zamítnutí platby v systému 3D Secure banky zákazníka.
Zamítnutí platby v systému 3D Secure banky zákazníka.
Zamítnutí platby v systému 3D Secure banky zákazníka.
Zamítnutí platby v systému 3D Secure banky zákazníka.
Zamítnutí platby v autorizačním centru banky zákazníka z důvodu problémů na platební kartě.
Zamítnutí platby v autorizačním centru banky zákazníka z důvodu problémů na platební kartě.
Zamítnutí platby v autorizačním centru banky zákazníka z důvodu problémů na účtu platební karty.
Zamítnutí platby v autorizačním centru banky zákazníka z důvodu problémů na účtu platební karty.
Zamítnutí platby v autorizačním centru banky zákazníka z důvodu technických problémů v autorizačním centru banky zákazníka.
Zamítnutí platby v autorizačním centru banky zákazníka z důvodu chybného zadání čísla platební karty.
Zamítnutí platby v autorizačním centru banky zákazníka, platba nebyla povolena na platební kartě zákazníka.
Neznámá konfigurace
Zamítnutí platby v autorizačním centru banky zákazníka z důvodu dosažení nastavených limitů na platební kartě.
Nastal technický problém spojený s autorizačním centrem banky zákazníka.
Platba nebyla provedena.
Platba nebyla provedena.
Platba nebyla provedena. Platební údaje nebyly zadány v časovém limitu na platební bráně.
Platba nebyla provedena. Konkrétní důvod zamítnutí je sdělen přímo zákazníkovi.
Platba nebyla provedena. Součet kreditovaných částek překročil uhrazenou částku.
Platba nebyla provedena. Uživatel není oprávněn k provedení operace.
Platba nebyla provedena. Částka k úhradě překročila autorizovanou částku.
Platba zatím nebyla provedena.
Platba nebyla provedena z důvodu opakovaného zadání platby.
Při platbě nastal technický problém na straně banky.
SMS se nepodařilo doručit.
Platební karta je vydaná v regionu, ve kterém nejsou podporovány platby kartou.
Držitel platební karty zrušil platbu.
Platba byla zamítnuta v autorizačním centru banky zákazníka z důvodu zablokované platební karty.
Duplicitni reversal transakce
Duplicitní transakce
Bankovní platba byla zamítnuta.
Platba zrušena uživatelem.
SMS byla odeslána. Zatím se ji nepodařilo doručit.
Platba byla přijata. Platba bude připsána po zpracování v síti Bitcoin.
Platba nebyla uhrazena v plné výši.
Platba byla provedena po splatnosti.
Zákazník neudělil souhlas s provedením PSD2 platby
PSD2 platba zamítnuta
PSD2 požadovaný účet nenalezen
Stav uložené platební karty.
Uložená karta je aktivní
Uložená karta byla smazána
Typy položek platby
Produkt/služba
Poštovné
Sleva
Rozsah práv tokenu
Umožňuje pouze zakládání plateb
Umožňuje provádět veškeré operace
Jazyk rozhraní platební brány
Čeština
Slovenština
Angličtina
Němčina
Ruština
Francouzština
Maďarština
Polština
Rumunština
Bulharština
Chorvatština
Italština
Španělština
Ukrajinština
Estonština
Litevština
Lotyšština
Slovinština
Portugalština
Popis výsledku operace
Požadavek přijat
Operace provedena
Operace skončila chybou
Cyklus opakovaných plateb
Denní perioda opakování
Týdenní perioda opakování
Měsíční perioda opakování
Opakovaná platba na vyžádání
Popisuje stav opakování platby
Opakovaní platby vytvořeno, čeká se na autorizaci iniciační platby
Opakování platby aktivní
Opakování platby zrušeno
Seznam možných stavů refundací
Refundace proběhla úspěšně
Refundace neproběhla
Refundace vyžádána
Popisuje stav předautorizace platby.
Přeadutorizace založena
Předautorizováno
Předautorizace strhnuta
Předautorizace zrušena
Formát vygenerovaného výpisu. Popis jednotlivých formátů naleznete v článku Jak nastavím výpis pohybů z GoPay obchodního účtu?.
Výsledek 3D Secure autorizace
Platební karta nepodporuje 3D Secure ověření
Plné 3D Secure ověření
Částečné 3D Secure ověření
3D Secure ověření nebylo provedeno
Číselník skupin platebních metod.
Platby kartou
Bankovní převody
Elektronické peněženky
Ostatní metody
Popis rozsahu chyby
Chyba se týká konkrétního parametru
Globální chyba
Chybové kódy, popisující důvod výskytu chyby
Systémová chyba
Povinný
Chybný formát
Již existuje
Nelze změnit
Nelze smazat
Nejednoznačné
Neplatný požadavek
Neoprávněný přístup
Způsob přidělení práv není podporován
Chybné přístupové údaje
Přístup přes PIN byl deaktivován
Platbu nelze vytvořit
Platbu nelze provést
Platba v chybném stavu
Platba nebyla nalezena
E-shop byl deaktivován
Příjemce nemůže přijmout platbu
Platbu nelze vrátit
Platbu nelze vrátit
Chybná částka
Nedostatek peněz na účtu
Provedení opakované platby selhalo
Provedení opakované platby není podporováno
Opakování platby zastaveno
Překročen limit počtu pokusů o provedení opakované platby
Opakované platby nejsou povoleny
Stržení platby selhalo
Stržení platby již provedeno
Zrušení předautorizace selhalo
Zrušení předautorizace provedeno
Součet částek položek objednávky items nesouhlasí s částkou platby
Neplatný PSD2 token účtu
Účet nenalezen
Karetní token není platný
Chybný Payment instrument u platby s karetním tokenem
Karetní token není povolený
Nebylo nalezeno id uložené karty
Představuje typy platby pro metody stylu BNPL (Buy Now Pay Later)
Zákazník uhradí celou částku později
Platba bude rozdělena na tři úhrady
Aktuální API
Používejte vždy aktuální API, specifikace je dostupná v této dokumentaci. V případě použití knihovny použijte aktuální verzi z našeho GitHubu. Pokud by v SDK nějaká funkcionalita chyběla, kontatkujte integrace@gopay.cz
TLS
E-shopy musí být na připojení zabezpečeném přes HTTPs, verze TLS musí být 1.2 nebo vyšší
Hlavička Referer
Zákazníci musí být na platební bránu přesměrování přímo z domény e-shopu. Tj. v hlavičce Referer musí být předávána registrovaná doména eshopu.
Pokud toto není možné a zákazník je na bránu přesměrován z domény řešení, je nutno mít pro každý eshop unikátní doménu, která bude předávána.
Nejlépe pomocí subdomén - např. first-eshop.platform.com
, second-eshop.platform.com
atd.
Cesty za lomítkem nejsou předávány při výchozí Referrer-Policy, což je strict-origin-when-cross-origin. Při přechodu na bránu z adresy platform.com/first-eshop
by bylo předáno pouze platform.com
Správné názvy údajů
V administraci zobrazujte vždy názvy údajů, které používá GoPay - tj. Client ID, Client Secret a GoID. Nepoužívejte jiné názvy.
Ověření údajů
V okamžiku, kdy se obchodník pokusí uložit údaje, proveďte kontrolu správnosti: Client ID a Client Secret - ověříte pomocí vytvoření tokenu, viz Získání přístupového tokenu.
- Pokud se nepodaří vytvořit token, informujte uživatele, že tyto údaje jsou neplatné
GoID - ověříte následně pomocí dotazu na platební metody, viz Povolené platební metody
- Pokud API call selže, informujte uživatele, že GoID je neplatné
Testovací režim (volitelné)
V administraci umožněte zvolit testovací režim. Pokud toto uživatel zvolí, budou veškerá API komunikace eshopu směřována oproti sandbox URL.
Sandboxové údaje ověřte stejným způsobem jako provozní, jen oproti sandbox URL.
Dotaz na povolené platební metody
Při zobrazení checkoutu provolejte enpoint pro získání povolených platebních metod pro daný eshop a měnu, viz Povolené platební metody. Dotaz provádějte pouze jednou.
Názvy a loga platebních metod
Názvy platebních metod zobrazujte v jazyce eshopu - v API callu výše použijte query parametr lang
. Např call na /api/eshops/eshop/{GOID}/payment-instruments?lang=en
vrátí názvy metod v angličtině.
Odkazy na loga platebních metod jsou také součástí API Callu a použijte prosím tato loga.
Prezentace platebních metod
V Checkoutu zobrazujte všechny dostupné platební metody a nechte zákazníka zvolit si zde. Nenabízejte pouze jednu možnost (např. platba pomocí GoPay).
Pro platbu převodem můžete buďto zobrazovat každou banku zvlášť, nebo pouze jednu možnost bankovního převodu (názvy a loga jednotlivých bank i platební metody jsou v API odpovědi viz výše).
Apple Pay
Možnost platby Apple Pay zobrazujte v košíku pouze pokud je zákazníkovi k dispozici. Ověřit lze pomocí JavaScriptu, viz Integrace Apple Pay
Pokud JavaScript neprojde, platební metodu v košíku skryjte.
Platební nástroje
Při vytvoření platby předávejte tu platební metodu. Je možno předat ve dvou verzích.
- V poli
allowed_payment_instruments
- pokud předáte v tomto poli pouze jednu platební metodu, bude to jediná, která bude na bráně k dispozici a zákazník ji nebude moci změnit - V parametru
default_payment_instrument
- zákazníkovi se zobrazí zvolená platební metoda, ale zákazník ji bude moci změnit na jinou dostupnou
Doporučujeme druhou variantu, kdy může zákazník platební metodu změnit.
Více informací a příklady jsou k dispozici v sekci Určení platebních metod
Pokud zobrazujete v checkoutu i jednotlivé banky, implementujte to samé i pro SWIFTy, viz Určení bank
Kontaktní údaje zákazníka
Předávejte v objectu contact
všechny posbírané údaje zákazníka. Toto mimo jiné může vést k nižšímu výskytu 3DS ověření.
Více informací v sekci Contact
Předání jazyka
V parametru lang
v požadavku na založení platby předávejte jazyk eshopu, aby se ve stejném jazyce zobrazila i platební brána. Dosupné jazyk jsou dostupné v sekci Lang. Pokud jazyk není k dispozici, parametr nepředávejte.
Dotazy na stav platby
Kdykoliv, kdy příjde notifikace o změnu stavu platby (viz Odeslání notifikace), proveďte API call pro dotaz na stav platby. Pokud je potřeba, stav zaktualizujte ve vašem objednávkovém systému.
Při návratu do eshopu pomocí redirect url (viz Návrat do eshopu) také proveďte dotaz na stav platby a zaktualizujte ho. Stav platby také zobrazte zákazníkovi s odpovídající informací (viz dále).
Zpracování stavu platby
Zákazníkovi při návratu z brány zobrazte odpovídající informaci a případně nabídněte vytvoření nové platby.
Stav | Popis | Nová platba |
---|---|---|
PAYMENT_METHOD_CHOSEN | Zákazník provedl pokus o platbu a není ještě znám výsledek. Zákazníka informujte, že se čeká na výsledek platby. Výsledek platby bude oznámen pomocí HTTP notifikace. | NE |
PAID | Platba byla v pořádku uhrazena. Zákazníka o tom informujte a pokračujte ve zpracování objednávky. | NE |
CANCELED | Platba byla zamítnuta. Zákazníka o tom informute. | ANO |
TIMEOUTED | Vypršel limit pro dokončení platby. Zákazníka informujte, že platba nebyla úspěšná. Je možno použít stejnou logiku jako u CANCELED. | ANO |
CREATED | Zákazník neprovedl pokus platbu uhradit a vrátil se do eshopu. Zákazníka informujte, že platba nebyla úspěšná. Možno použít stejnou logiku jako u CANCELED. | ANO |
AUTHORIZED | Pouze pokud nabízíte předautorizované platby. Platba byla zautorizovaná a čeká na stržení obchodníkem. Zákazníka informujte o úspěchu autorizace. | NE |
Další informace o stavech platby jsou k dispozici v sekci Stavy a životnost plateb
Vytvoření nové platby
Pokud platba nebyla úspěšná po návratu zákazníka, umožněte provést novou platbu. Umožněte zákazníkovi změnit platební metodu a vytvořte následně novou platbu. Týká se stavů, u kterých je v tabulce výše v sloupečku Nová platba uvedeno ANO.