Termíny a ustálené výrazy
PSP
payment service provider - poskytovateľ platobnej služby
24pay
automatizovaný systém platobnej inštitúcie - poskytovateľ platobnej služby
Obchodník / Obchod / Merchant
online obchod poskytujúci tovar/služby, prijímajúci platby
Klient / Zákazník / Client
osoba nakupujúca tovar/služby, vykonávajúca platby
RURL
Redirection Return URL – návratová URL adresa obchodu, kam je zákazník presmerovaný po platbe
NURL
Notification Return URL – URL adresa, kde sú zasielané notifikácie o zmene stavu platby prostredníctvom protokolu HTTP/HTTPS metódou POST v rámci tela requestu
Integrácia s 24pay
Konfiguračné údaje
Nasledujúca sekcia popisuje množinu údajov, ktoré si navzájom medzi sebou vymenia obchodník a 24pay.
Obchodník uvádza nasledujúce údaje:
  • RURL
  • NURL
24pay poskytuje obchodu nasledovné údaje:
  • Mid
  • EshopId
  • Key
Procesný model
Účelom tejto sekcie je načrtnúť procesný model spracovania a realizácie platobnej relácie zobrazením interakcie medzi aktérmi: klient – obchodník – 24pay.
Platobná stránka obchodníka obsahuje odkaz na 24pay. Zákazník, ktorý si vybral 24pay ako želanú platobnú metódu, zašle zo systému obchodníka do 24pay žiadosť o realizáciu platby. Žiadosť obsahuje predpísanú množinu údajov potrebných pre spracovanie a realizáciu platobnej relácie.
Zákazník je presmerovaný na platobný portál bankovej inštitúcie. Následne potvrdí, alebo zruší platbu. 24pay realizuje potrebné kroky spracovania platobnej relácie, pošle notifikačnú správu o stave transakcie a presmeruje zákazníka späť na stránku obchodníka. V prípade nevyhovujúceho formátu/obsahu parametrov prijatej žiadosti je zákazník presmerovaný na stránku systému 24pay informujúcu o neúspešnej požiadavke na realizáciu platobnej relácie.
24pay zasiela notifikáciu o výsledku realizácie platobnej relácie obchodníkovi na adresu špecifikovanú konfiguračnou položkou NURL. Server side obchodníka má povinnosť reagovať odpoveďou HTTP status 200 OK, potvrdzujúcou prijatie odpovede.
24pay presmeruje zákazníka metódou GET na stránku obchodníka špecifikovanú konfiguračnou položkou RURL. Návratové adresy obsahujú reťazec parametrov informujúcich o výsledku spracovania platobnej relácie, na základe ktorých systém obchodníka oboznámi zákazníka o úspešnom, či neúspešnom spracovaní. Návratové adresy slúžia iba pre informatívne účely, na ich základe nie je možné vykonávať žiadne rozhodnutia.
Grafické prvky
Pre zobrazenie platobného tlačidla a loga na stránke použite logo 24pay, ktoré je uvedené na:
https://24-pay.sk/o-spolocnosti/dokumenty-na-stiahnutie/
Protokol platieb
Požiadavka na realizáciu platby od obchodníka
Pre zaslanie novej platobnej žiadosti je nutné na stránku webového sídla obchodu umiestniť príslušný formulár, ktorý presmeruje zákazníka na 24pay platobnú bránu.
URL 24pay platobná brána:
https://admin.24-pay.eu/pay_gate/paygt
Podmienkou je vytvorenie HTTPS požiadavky metódou POST. Údaje kódované vo forme application/x-www-form-urlencoded. Zoznam parametrov obsahuje nasledujúca tabuľka:
Parameter Povinný Formát Dĺžka Popis Príklad
Mid Alpha-numeric 8 Identifikátor obchodníka (case sensitive)
1a2B3c4D
EshopId Numeric 1..10 Identifikátor e-shopu
135
MsTxnId Alpha-numeric 1..32 Jednoznačný/jedinečný identifikátor platby poskytnutý obchodníkom (variabilný symbol)
1234567890
Amount #0.00 1..10,2 Suma platby. Oddeľovačom desatinnej časti je bodka. Desatinná časť je vždy zastúpená dvoma číslicami. Pri dokončení predautorizácie musí byť hodnota rovnaká alebo nižšia ako suma predautorizácie. V prípade zrušenia musí byť hodnota rovnaká ako suma predautorizácie.
1.00
CurrAlphaCode AAA 3 Mena platby ISO 4217
EUR
ClientId Alpha-numeric 3..10 Identifikátor zákazníka v systéme obchodníka (case sensitive)
12345
FirstName Alphabetic 2..50 Zákazník – krstné meno
Jožko
FamilyName Alphabetic 2..50 Zákazník – priezvisko
Mrkvička
Email email 6..128 Zákazník – emailová adresa
jozko.mrkvicka@demo.com
NotifyClient email 6..128 Emailová adresa zákazníka, kam sú zasielané dodatočné notifikácie o zmene stavu platby.
jozko.mrkvicka@demo.com
SaveTransactionEmail email 6..128 Emailová adresa zákazníka, kam je v danom intervale poslaný mail s offline linkom na platbu v prípade platby bez odpovede alebo zamietnutej platby.
jozko.mrkvicka@demo.com
Country AAA 3 Zákazník – kód krajiny bydliska ISO 3166-1
SVK
Timestamp yyyy-MM-ddHH:mm:ss 19 Časová pečiatka tvorby platobnej požiadavky. Oddeľovačom dátumovej a časovej položky je znak medzera. Timestamp a MsTxnId musia tvoriť unikátnu kombináciu.
2014-12-0113:00:00
Sign Alpha-numeric 32 Kontrolný súčet zasielaných parametrov.
LangCode aa 2 Kód jayka ISO 639-1. sk, cs, en, de, hu, es, fr, it, pl. Štandardne sk.
sk
RURL URL 256 URL adresa, kam je zákazník presmerovaný po zrealizovaní transakcie. V prípade prítomnosti prekryje konfigurovanú položku RURL.
http://mojobchod.sk/rurl
NURL URL 256 URL adresa obchodu, kam sú zasielané notifikácie o zmene stavu platby prostredníctvom HTTP/HTTPS POST. V prípade prítomnosti prekryje konfigurovanú položku NURL.
http://mojobchod.sk/nurl
NotifyEmail email 6..128 Emailová adresa, kam sú zasielané dodatočné notifikácie o zmene stavu platby.
platby@mojobchod.sk
RedirectSign true/false 4/5 Možnosť pridania podpisu pri presmerovaní.
false
PreAuthProvided true/false 4/5 Možnosť predautorizácie platby (iba pre platobné karty)
false
Phone Alpha-numeric 8..25 Zákazník – telefónny kontakt
0901 000 001
Street Alpha-numeric 3..50 Zákazník – ulica
Kvetná 123
City Alphabetic 2..50 Zákazník – mesto bydliska
Bratislava
Zip Alpha-numeric 1..10 Zákazník – poštové smerovacie číslo bydliska
821 08
Cart Base64 JSON Povinné iba v prípade platobnej metódy Na Splátky. Obsah košíka rozdelený na jednotlivé produkty a dopravu.
ewogICJkZWxpdmVyeU5hbWUiOiAiRFBEIiwKICAiZGVsaXNzAsCiAgIml0ZW1zIjogWwogICAgewogICAgICAiaXRlbU5hbWUiOiAiUHJvZHVrdCAxIiwKICAgICAgIml0ZW1EZXNjcmlwdGlvbiI6ICJQb3BpcyBwcm9kdWt0dSAxIiwKICAgICAgInF1YW50aXR5IjogMiwKICAgICAgIml0ZW1QcmljZSI6IDEuNDAKICAgIH0sCiAgICB7CiAgICAgICJpdGVtTmFtZSI6ICJQcm9kdWt0IDIiLAogICAgICAiaXRlbURlc2NyaXB0aW9uIjogIlBvcGlzIHByb2R1a3R1IDIiLAogICAgICAicXVhbnRpdHkiOiAxLAogICAgICAiaXRlbVByaWNlIjogMjQzLjUwCiAgICB9CiAgXQp9
Formát parametra Cart
{
    deliveryName * Alpha-numeric
    deliveryPrice * #0.00
    items[ *
        itemName* Alpha-numeric
        itemDescription Alpha-numeric
        quantity * numeric
        itemPrice * #0.00
    ]
}
Príklad json:
{
    "deliveryName": "DPD",
    "deliveryPrice": 3.70,
    "items": [
        {
            "itemName": "Produkt 1",
            "itemDescription": "Popis produktu 1",
            "quantity": 2,
            "itemPrice": 1.40
        },
        {
            "itemName": "Produkt 2",
            "itemDescription": "Popis produktu 2",
            "quantity": 1,
            "itemPrice": 243.50
        }
    ]
}
BASE64:
ewogICJkZWxpdmVyeU5hbWUiOiAiRFBEIiwKICAiZGVsaXZlcnlQcmljZSI6IDMuNzAsCiAgIml0ZW1zIj ogWwogICAgewogICAgICAiaXRlbU5hbWUiOiAiUHJvZHVrdCAxIiwKICAgICAgIml0ZW1EZXNjcmlwdGlv biI6ICJQb3BpcyBwcm9kdWt0dSAxIiwKICAgICAgInF1YW50aXR5IjogMiwKICAgICAgIml0ZW1QcmljZS I6IDEuNDAKICAgIH0sCiAgICB7CiAgICAgICJpdGVtTmFtZSI6ICJQcm9kdWt0IDIiLAogICAgICAiaXRl bURlc2NyaXB0aW9uIjogIlBvcGlzIHByb2R1a3R1IDIiLAogICAgICAicXVhbnRpdHkiOiAxLAogICAgIC AiaXRlbVByaWNlIjogMjQzLjUwCiAgICB9CiAgXQp9
Implementácia Android
V prípade, že chce obchodník zobraziť platobnú bránu v rámci svojej mobilnej aplikácie pre platformu Android, musí pre správne fungovanie Google Pay použiť pre zobrazenie platobnej brány technológiu Chrome Tabs.
val url = "URL_ADRESA_Z_KTOREJ_DOJDE_K_PRESMEROVANIU_NA_BRANU"
val customTabsIntent = CustomTabsIntent.Builder().apply {
    setShowTitle(true)
    setShareState(CustomTabsIntent.SHARE_STATE_OFF)
    setInstantAppsEnabled(false)
}.build()
customTabsIntent.launchUrl(this, Uri.parse(url))
Stav platby
Platba sa počas procesu dostáva do viacerých stavov..
Ak klient vykoná platbu a sme notifikovaní o jej výsledku transakcia zmení svoj stav takto:
  • Platba bola úspešne vykonaná = V poriadku
  • Ak platba nebola úspešná = Neúspešná
  • V špecifických prípadoch nemusíme ihneď obdržať informáciu o výsledku platby, vtedy má stav = Čakajúca
  • Pri predautorizovaných platbách dochádza ešte k jednému stavu medzi Žiadosťou o platbu a V poriadku/Neúspešná a to = Autorizovaná
  • Transakcie ktoré sú v stave Žiadosť o platbu dlhšie ako je doba dokedy očakávame odpoveď z banky, automaticky prechádzajú do stavu = Expirovaná
Notifikácia o stave spracovania platby od 24pay
Po ukončení spracovania žiadosti na realizáciu platby zo strany obchodu 24pay notifikuje o stave spracovania platby. Správa je odoslaná v rámci HTTP POST požiadavky adresovanej na NURL.
Údaje týkajúce sa danej platby sú prenášané vo forme štruktúry majúcej XML formát ako hodnota parametra params.
Príklad notifikácie:
<?xml version="1.0" encoding="UTF-8"?>
<Response sign="21f22ef2af21d3819cd0cff06ef55943">
    <Transaction>
        <Identification>
            <MsTxnId>1234567890</MsTxnId>
            <PspTxnId>0987654321</PspTxnId>
        </Identification>
        <Presentation>
            <Amount>1.00</Amount>
            <Currency>EUR</Currency>
        </Presentation>
        <Customer>
            <Contact>
                <Email> jozko.mrkvicka@demo.com</Email>
                <Phone>0901 000 001</Phone>
            </Contact>
            <Address>
                <Street>Kvetná 123</Street>
                <Zip>821 08</Zip>
                <City>Bratislava</City>
                <Country>SVK</Country>
            </Address>
            <Name>
                <Given>Jožko</Given>
                <Family>Mrkvička</Family>
            </Name>
        </Customer>
        <Processing>
            <Timestamp>2014-12-01 13:01:00.548</Timestamp>
            <Result>OK</Result>
            <Reason code="00">Successful Processing</Reason>
            <PSPCategory>2</PSPCategory>
            <CreditCard/>
        </Processing>
    </Transaction>
</Response>
<Result> označuje stav platby. Môže nadobúdať nasledujúce hodnoty:
  • OK – platba úspešná
  • FAIL – platba neúspešná
  • PENDING – platba bola odoslaná na spracovanie. Po spracovaní platby je odoslaná nová notifikácia, kde bude <Result> buď OK alebo FAIL.
  • AUTHORIZED – žiadosť o predautorizáciu bola úspešná. Dokončenie alebo zrušenie platby je možné vykonať do 7 dní.
  • REVERSAL – vrátenie platby bolo úspešné.
<PSPCategory> označuje kategóriu platobnej metódy, ktorú klient využil na platbu.
  • 1 – platby kartou
  • 2 – okamžité platby
  • 3 – bankové prevody
  • 4 – ostatné
Presmerovanie zákazníka do systému obchodníka
Po dokončení platby je klient presmerovaný späť do systému obchodníka na RURL, ktoré uvádza obchod. Presmerovanie je vykonané HTTP GET požiadavkou, pričom reťazec dopytu obsahuje parametre nesúce informáciu o úspešnom, či neúspešnom výsledku spracovania platby.
Je nutné si uvedomiť, že RURL slúži iba pre informatívne účely. Na základe údajov prijatých v rámci presmerovania späť na systém obchodníka nie je možné vykonávať žiadne rozhodnutia.
Parameter Formát Dĺžka Popis Príklad
MsTxnId Numeric 1..256 Jednoznačný/jedinečný identifikátor platby poskytnutý obchodníkom (variabilný symbol)
1234567890
Amount #0.00 1..10,2 Suma platby. Oddeľovačom desatinnej časti je bodka. Desatinná časť je vždy zastúpená dvoma číslicami.
1.00
CurrCode AAA 3 Mena platby ISO 4217
EUR
Result OK/FAIL/PENDING/AUTHORIZED 2/4/7 OK - platba úspešná.
FAIL – platba neúspešná.
PENDING – platba odoslaná na spracovanie
AUTHORIZED – žiadosť o predautorizáciu úspešná
OK
Sign Alpha-numeric 32 Kontrolný súčet zasielaných parametrov. Posielaný iba v prípade, že pri požiadavke bol zaslaný parameter ‘RedirectSign=true‘.
21f22ef2af21d3819cd0cff06ef55943
Príklad presmerovania:
http://mojobchod.sk/rurl?MsTxnId=1234567890&Amount=1.00&CurrCode=EUR&Result=OK
Dokončenie/zrušenie predautorizovanej platby
Dokončenie alebo zrušenie predautorizácie je možné volať iba pri platbách, ktoré sú založené ako predautorizované a sú v stave AUTHORIZED.
Podmienkou je vytvorenie HTTPS požiadavky metódou POST. Údaje kódované vo forme application/x-www-form-urlencoded.
https://admin.24-pay.eu/pay_gate/auth
Zoznam parametrov obsahuje nasledujúca tabuľka:
Parameter Povinný Formát Dĺžka Popis Príklad
Mid Alpha-numeric 8 Identifikátor obchodníka (case sensitive)
1a2B3c4D
EshopId Numeric 1..10 Identifikátor e-shopu
135
MsTxnId Alpha-numeric 1..32 Jednoznačný/jedinečný identifikátor platby poskytnutý obchodníkom (variabilný symbol)
1234567890
PspTxnId Alpha-numeric 1..32 Jednoznačný/jedinečný identifikátor platby generovaný 24-pay, posielaný v notifikačnej správe po predautorizácii
0987654321
Amount #0.00 1..10,2 Suma platby. Oddeľovačom desatinnej časti je bodka. Desatinná časť je vždy zastúpená dvoma číslicami.
1.00
CurrAlphaCode AAA 3 Mena platby ISO 4217
EUR
Timestamp yyyy-MM-ddHH:mm:ss 19 Časová pečiatka tvorby platobnej požiadavky. Oddeľovačom dátumovej a časovej položky je znak medzera. Timestamp a MsTxnId musia tvoriť unikátnu kombináciu.
2014-12-0113:00:00
Target OK/FAIL 2/4 OK - platba úspešná.
FAIL – platba neúspešná.
OK
Sign Alpha-numeric 32 Kontrolný súčet zasielaných parametrov.
NURL URL 256 URL adresa obchodu, kam sú zasielané notifikácie o zmene stavu platby prostredníctvom HTTP/HTTPS POST. V prípade prítomnosti prekryje konfigurovanú položku NURL.
http://mojobchod.sk/nurl
V odpovedi obdrží obchodník nasledujúce informácie vo formáte json:
{
    “MsTxnId“:“1234567890“,
    “PspTxnId“:“0987654321“
    “Amount“:“1.00“,
    “CurrCode“:“EUR“,
    “Target”:”OK”,
    “Status“:“OK“
}
Táto odpoveď potvrdzuje prijatie na spracovanie. Potvrdenie o zmene stavu transakcie je zasielané notifikačnou správou na NURL to však iba v prípade, že je po zaslaní požiadavky Status OK alebo FAIL, v prípade ERROR notifikačná správa nie je zasielaná, nakoľko nedôjde k zmene stavu platby.:
Vrátenie platby
Vrátenie platby je možné vykonať iba pri platbách, ktoré už boli úspešne dokončené. Vrátenie platby je spoplatnené podľa cenníka.
Podmienkou je vytvorenie HTTPS požiadavky metódou POST. Údaje kódované vo forme application/x-www-form-urlencoded.
https://admin.24-pay.eu/pay_gate/refund
Zoznam parametrov obsahuje nasledujúca tabuľka:
Parameter Povinný Formát Dĺžka Popis Príklad
Mid Alpha-numeric 8 Identifikátor obchodníka (case sensitive)
1a2B3c4D
EshopId Numeric 1..10 Identifikátor e-shopu
135
MsTxnId Alpha-numeric 1..32 Jednoznačný/jedinečný identifikátor platby poskytnutý obchodníkom (variabilný symbol)
1234567890
PspTxnId Alpha-numeric 1..32 Jednoznačný/jedinečný identifikátor platby generovaný 24-pay, posielaný v notifikačnej správe po predautorizácii
0987654321
Amount #0.00 1..10,2 Suma platby. Oddeľovačom desatinnej časti je bodka. Desatinná časť je vždy zastúpená dvoma číslicami.
1.00
CurrAlphaCode AAA 3 Mena platby ISO 4217
EUR
Timestamp yyyy-MM-ddHH:mm:ss 19 Časová pečiatka tvorby platobnej požiadavky. Oddeľovačom dátumovej a časovej položky je znak medzera. Timestamp a MsTxnId musia tvoriť unikátnu kombináciu.
2014-12-0113:00:00
Sign Alpha-numeric 32 Kontrolný súčet zasielaných parametrov.
V odpovedi obdrží obchodník nasledujúce informácie vo formáte json:
{
    “MsTxnId“:“1234567890“,
    “PspTxnId“:“ 0987654321“
    “Amount“:“1.00“,
    “CurrCode“:“EUR“,
    “Status“:“OK“
}
Status OK alebo FAIL označuje priamu zmenu platby – úspešné alebo neúspešné vrátenie platby. Pri statuse PENDING bola požiadavka prijatá na spracovanie. Status ERROR znamená zlé vstupné údaje.
Potvrdenie ozmene stavu transakcie je zasielané notifikačnou správou na NURL (sekcia 3.2) to však iba v prípade, že je po zaslaní požiadavky Status OK,FAIL alebo PENDING, v prípade ERROR notifikačná správa nie je zasielaná, nakoľko nedôjde k zmene stavu platby.
SIGN
Pre každú požiadavku na realizáciu platby zo strany obchodu a notifikáciu o statuse spracovania platby zo strany 24pay, je vytvorený kontrolný súčet. Prostredníctvom kontrolného súčtu možno overiť integritu a autenticitu údajov.
Bezpečnostný klúč
Pre každého obchodníka je vygenerovaný bezpečnostný kľúč key. Obchodník získa key v hexadecimálnom zápise - reťazec 64 znakov.
Okrem bezpečnostného kľúča, je pre výpočet kontrolného súčtu potrebný aj inicializačný vektor IV. Inicializačný vektor je vytvorený zreťazením parametra Mid so svojou reverznou podobou. Týmto spôsobom získaná sekvencia 16 znakov reprezentuje inicializačný vektor IV.
Kontrolný súčet
Pri komunikácii je vytvorený kontrolný súčet, resp. bezpečnostný podpis nasledovným spôsobom:
  1. Zreťazením podpisom chránených parametrov v predpísanom poradí sa vytvorí MESSAGE, ktorého obsah bude predmetom šifrovania.
  2. Vytvorený reťazec je transformovaný na HASH/MD (message digest) pevnej dĺžky (20B = 160 bits) pomocou hashovacej funkcie SHA1.
  3. Takto získaný "odtlačok" MD je následne šifrovaný symetrickým algoritmom AES použitím:
    1. inicializačného vektora IV
    2. a definovaného bezpečnostného kľúča key
  4. Výstupom je bezpečnostný podpis dĺžky 32 B = 256 bits. Prvých 16 B podpisu je konvertovaných na reťazec zodpovedajúci hexadecimálnemu zápisu tejto časti podpisu. Pôvodný otvorený text MD je týmto spôsobom transformovaný na šifrovaný text reprezentujúci bezpečnostný podpis o dĺžke 32 znakov.
Požiadavka na realizáciu platby od obchodníka
Obchodník zasiela bezpečnostný podpis v rámci komunikácie ako hodnotu parametra SIGN.
Predmetom zreťazenia sú nasledujúce parametre:
MESSAGE = Mid Amount CurrencyAlphaCode MsTxnId FirstName FamilyName Timestamp
Notifikácia o stave spracovania platby od 24pay
Obchodník z parametrov notifikácie vytvorí rovnakým spôsobom kontrolný bezpečnostný podpis a porovná ho s hodnotou prijatého parametra SIGN.
Predmetom zreťazenia sú nasledujúce parametre:
MESSAGE = Mid Amount Currency PspTxnId MsTxnId Timestamp Result
Presmerovanie zákazníka do systému obchodníka
Posielaný iba v prípade, že pri požiadavke bol zaslaný parameter ‘RedirectSign=true‘
Obchodník zo zaslaných parametrov pri presmerovaní vytvorí rovnakým spôsobom kontrolný bezpečnostný podpis a porovná ho s hodnotou prijatého parametra SIGN.
Predmetom zreťazenia sú nasledujúce parametre:
MESSAGE = MsTxnId Amount CurrCode Result
Dokončenie/zrušenie predautorizovanej platby
Obchodník zasiela bezpečnostný podpis v rámci komunikácie ako hodnotu parametra SIGN.
Predmetom zreťazenia sú nasledujúce parametre:
MESSAGE = Mid Amount CurrencyAlphaCode MsTxnId PspTxnId Target Timestamp
Vrátenie platby
Obchodník zasiela bezpečnostný podpis v rámci komunikácie ako hodnotu parametra SIGN.
Predmetom zreťazenia sú nasledujúce parametre:
MESSAGE = Mid Amount CurrencyAlphaCode MsTxnId PspTxnId Timestamp
Predloha tvorby podpisu
Príklady zdrojového kódu
PHP
public function computeSIGN($mid, $key, $message){
    $hash = hash("sha1", $message, true);
    $iv = $mid . strrev($mid);
    $key = pack('H*', $key);
    $crypted = openssl_encrypt( $hash, 'AES-256-CBC', $key, 1, $iv );
    $sign = strtoupper(bin2hex(substr($crypted, 0, 16)));
    return $sign;
}
Java
public String generateSign(String message, String key, String iv) {
    try {
        Security.addProvider(new BouncyCastleProvider());
        byte[] keyBytes = Hex.decodeHex(key.toCharArray());
        byte[] ivBytes = iv.getBytes();

        SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, "AES");
        IvParameterSpec ivSpec = new IvParameterSpec(ivBytes);
        Cipher encryptCipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
        encryptCipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivSpec);

        byte[] sha1Hash = DigestUtils.sha1(message);
        byte[] encryptedData = encryptCipher.doFinal(sha1Hash);
        return Hex.encodeHexString(encryptedData).substring(0,32);
    } catch (Exception e) {
        logger.error("ERROR!", e);
        return null;
    }
}
.NET framework 3.5 (C#)
public static string AesEncrypt( string message, byte[] Key, byte[] IV, PaddingMode paddingMode , CipherMode cipherMode)
{
    byte[] hash = GetSha1(message);
    AesManaged aes= new AesManaged();
    aes.Key = Key;
    aes.IV = IV;
    aes.Mode = cipherMode;
    aes.Padding = paddingMode;
    ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);

    byte[] encrypted = null;

    using (MemoryStream ms = new MemoryStream()) {
        using (var cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
        {
            cs.Write(hash, 0, hash.Length);
        }
        encrypted = ms.ToArray();
    }
    return ConvertByteArrayToHexString(encrypted);
}
.NET framework 3.5 (VB)
Public Shared Function AesEncrypt(message As String, Key As Byte(), IV As Byte(), paddingMode As PaddingMode, cipherMode As CipherMode) As String
    Dim hash As Byte() = GetSha1(message)

    Dim aes As New AesManaged()
    aes.Key = Key
    aes.IV = IV
    aes.Mode = cipherMode
    aes.Padding = paddingMode

    Dim encryptor As ICryptoTransform = aes.CreateEncryptor(aes.Key, aes.IV)
    Dim encrypted As Byte() = Nothing

    Using ms As New MemoryStream()
    Using cs = New CryptoStream(ms, encryptor, CryptoStreamMode.Write)
            cs.Write(hash, 0, hash.Length)
        End Using
        encrypted = ms.ToArray()
    End Using

    Return ConvertByteArrayToHexString(encrypted)
End Function
Testovanie
Pre potreby jednoduchej implementácie platobnej brány do prostredia e-shopu, prípadne iného e-commerce subjektu sme pre Vás vytvorili niekoľko testovacích nástrojov.
V prípade ďalších otázok nás môžete kontaktovať prostredníctvom emailu na adrese: podpora@24-pay.sk
Testovacia brána
Pre potreby testovania platieb je k dispozícii testovacia bránu. URL adresa testovacej brány má tvar: https://test.24-pay.eu/pay_gate/paygt
Na komunikáciu s testovacou bránou je potrebné použiť nasledujúce údaje:
Mid demoOMED
EshopId 11111111
Key 1234567812345678123456781234567812345678123456781234567812345678
(8 x 12345678)
Odpoveď „pending“ je špeciálny stav, kedy v danej chvíli nevieme povedať či platba prebehla úspešne alebo neúspešne. Dodatočná notifikačná správa (OK,FAIL) je posielaná neskôr, keď získame informáciu o stave danej platby (asynchrónny model komunikácie).
V prípade, že sú všetky poslané parametre správne, dostanete sa na platobný formulár s rôznymi platobnými metódami. Po zvolení akejkoľvek platobnej metódy budete presmerovaný na obrazovku pre výber odpovede:
<form method="post" action="https://test.24-pay.eu/pay_gate/paygt">
    <input type="hidden" name="Mid" value="demoOMED">
    <input type="hidden" name="EshopId" value="11111111">
    <input type="hidden" name="PreAuthProvided" value="false">
    <input type="hidden" name="MsTxnId" value="10000">
    <input type="hidden" name="Amount" value="10.50">
    <input type="hidden" name="CurrAlphaCode" value="EUR">
    <input type="hidden" name="ClientId" value="100">
    <input type="hidden" name="FirstName" value="Test">
    <input type="hidden" name="FamilyName" value="Payment">
    <input type="hidden" name="Email" value="test@test.sk">
    <input type="hidden" name="Street" value="Kalov">
    <input type="hidden" name="Zip" value="01001">
    <input type="hidden" name="City" value="Žilina">
    <input type="hidden" name="Country" value="SVK">
    <input type="hidden" name="Timestamp" value="2014-05-05 14:57:13">
    <input type="hidden" name="Sign" value="51762BFDA1DEBF57B8F655FC113F6062">
    <!-- PARAMETER DEBUG POUZIVAJTE LEN PRI TESTOVANI -->
    <input type="hidden" name="Debug" value="true">
</form>
Platobný formulár pri správnom volaní
Platobný formulár pri nesprávnom podpise a debug mode
Testovacie prostredie
Prehľad Vašich testovacích platieb si môžete pozrieť v našom testovacom prostredí na adrese:
https://test.24-pay.eu/sup_gui/pages/Login.jsf.
Prístup do spomínaného prostredia je možný až na základe žiadosti zákazníka.
V testovacom prostredí je možné dodatočne nasimulovať odpoveď OK,FAIL pre platby ktoré sú v stave PENDING.
Po úspešnom otestovaní Vašej implementácie brány 24-pay v testovacom režime môžete prejsť na ostrú prevádzku zmenou MID, EshopId, KEY a volanú adresu brán podľa údajov zaslaných v zmluve.