Priebeh platby
Založenie platby – voliteľné
Krok založenia platby je voliteľný, je však vhodné ho implementovať v prípade, keď požadujete istotu zabezpečeného založenia platby. Vynechanie implementácie tohto kroku je možné v prípade, kedy jednotlivé platby nepotrebujete v systéme identifikovať, ale stačí vám informácia, že vám niekto zaplatil určitú čiastku.
Je to vhodné napríklad pri implementácii darcovských príspevkov alebo dobíjaní prostriedkov na virtuálny účet zákazníka, kedy vás zaujíma len to, kto dobíja a akú sumu, ale nepotrebujete rozlišovať jednotlivé dobitie zákazníka alebo obmedziť dobitie na minimálnu čiastku atď. Pre klasický e-shop, kde platíte za konkrétny tovar, je však vynechanie tohto kroku nevhodné.
Platbu e-shopu zakladá HTTP požiadavkou na server platobnej brány. Parametre platby, vrátane unikátneho referenčného čísla platby, sú odovzdané ako POST parametre HTTP protokolu. Táto komunikácia prebieha medzi serverom Klienta a serverom platobnej brány. Platiteľ ju nevidí a nemôže meniť parametre platby. Server platobnej brány vráti Klientovi unikátny identifikátor transaction ID (identifikátor v Comgate platobnom systéme) a URL adresu, na ktorú má presmerovať Platiteľ.
Príklad založenia platby na pozadí - HTTP request:
curl -X POST -i --data "merchant=123456&price=10000&curr=CZK&label=Beatles%20-0%Help&refId=2010102600&method=ALL&prepareOnly=true&secret=gx4q8OV3TJt6noJnfhjqJKyX3Z6Ych0y" https://payments.comgate.cz/v1.0/create
Príklad založenia platby na pozadí - HTTP response:
HTTP/2 200 OK
content-type: application/x-www-form-urlencoded; charset=UTF-8
code=0&message=OK&transId=AB12-CD34-EF56&redirect=https%3A%2F%2Fpayments.comgate.cz%2Fclient%2Finstructions%2Findex%3Fid%3DAB12-CD34-EF56
Komunikácia medzi systémom Klienta a platobnou bránou je zabezpečená pomocou hesla a IP whitelistu (prístup je povolený len z IP adries systému Klienta). Nevyhnutné je použitie protokolu HTTPS, ktorý znemožňuje prezradenie hesla pri prípadnom odpočúvaní komunikácie. Heslo je odovzdávané ako POST parameter (nie GET parameter) preto, aby sa neukladalo v logu komunikácie webového servera.
Presmerovanie na platobnú bránu
Po založení platby na pozadí dostane e-shop platobné URL na zobrazenie platobnej brány. Platobná brána môže byť zobrazená dvoma spôsobmi. Prvým spôsobom je presmerovanie platiteľa na adresu, ktorú dostal e-shop v HTTP odpovedi. Presmerovanie sa zvyčajne vykonáva odoslaním HTTP odpovede 302:
HTTP odpoveď 302
HTTP/2 302 Found
Location: https://payments.comgate.cz/client/instructions/index?id=AB12-CD34-EF56
Druhou možnosťou je zobrazenie platobnej brány priamo na stránke e-shopu pomocou iframe. Pre tento variant je potrebné vygenerovať platobné URL štandardným spôsobom, ale namiesto presmerovania zákazníka na bránu sa zobrazí na stránke e-shopu iframe s platobnou URL.
V prípade vynechania prvého kroku založenia platby na pozadí je platba založená až pri presmerovaní Platiteľa z webu Klienta na server platobnej brány alebo odoslaní webového formulára z webu Klienta na server platobnej brány. Parametre platby, vrátane unikátneho referenčného čísla platby, sú odovzdané ako GET alebo POST parametre HTTP protokolu.
Príklad založenia platby presmerovaním (odoslaním webového formulára) - HTTP request
curl -X POST -i --data "merchant=123456&price=10000&curr=CZK&label=Beatles%20-20Help&refId=2010102600&method=ALL" https://payments.comgate.cz/v1.0/create
Odovzdanie výsledku platby na pozadí
Implementácia tejto časti vám zaistí automatické predanie informácie o stave každej platobnej transakcie priamo na váš server v okamihu, keď je stav platby známy. Predanie výsledku platby na pozadí je povinné. Jeho implementácia a parametre sú popísané v sekcii Push Notifikácie.
Výsledok platby je Klientovi predaný HTTP požiadavkou zo servera platobnej brány na server Klienta. Identifikátory a výsledok platby sú odovzdané ako POST parametre HTTP protokolu. Táto komunikácia prebieha na pozadí.
Platiteľ je presmerovaný na webovú stránku Klienta a identifikátory platby sú predané ako GET parametre HTTP protokolu. Odoslanie tovaru alebo služby Platiteľovi musí byť viazané na predanie výsledku platby na pozadí, nie na výsledné presmerovanie Platiteľa na webovú stránku Klienta, pretože informácie predané presmerovaním môže Platiteľ ľahko pozmeniť.
Presmerovanie Platiteľa na web Klienta
Platiteľ je na základe stavu platby presmerovaný na jedno z troch URL, ktoré e-shop zvolil pri aktivácii služby. Identifikátory platby sú odovzdané ako GET parametre HTTP protokolu. Systém klienta musí byť schopný ošetriť dve základné situácie:
- Pri presmerovaní platiteľa na web klienta výsledok platby ešte nie je známy. Platba je v stave PENDING. Táto situácia je úplne bežná a e-shop ju nesmie platiteľovi prezentovať ako chybu. Systém čaká buď na pripísanie platby na bankový účet alebo na potvrdenie od poskytovateľa platby. Konečný výsledok platby sa e-shop dozvie neskôr buď odovzdaním výsledku platby na pozadí alebo e-mailom alebo na klientskom portáli.
- Ak sa platobná brána dozvie výsledok platby okamžite po uskutočnení platby platiteľom, potom je platiteľ smerovaný na príslušné URL (PAID alebo CANCELLED). Ak e-shop implementoval odovzdávanie výsledku platby na pozadí, potom sa presmerovanie na web Klienta vykoná až po úspešnom odovzdaní výsledku platby na pozadí. Platiteľovi nemožno odoslať tovar alebo službu, ktorú objednal, iba na základe URL použitej na presmerovanie, pretože platiteľ by mohol výsledok platby podstrčiť zmenou URL vo webovom prehliadači.
Príklad presmerovania Platiteľa na web Klienta - HTTP request
GET /result_ok.php?refId=2010102600&transId=AB12-EF34-IJ56 HTTP/2
Host: eshop.com