NAV
.NET (C#) PHP JAVA curl HTTP form
slovenčina

Prehľad platobného procesu

Úvod

TrustPay Merchant API (platobná služba) je internetový platobný nástroj, ktorý môžu obchodníci používať na prijímanie platieb od klientov. Vďaka integrácii tejto služby môžu obchodníci spracovávať okamžité bankové prevody aj platby kartou.

API koncový bod:
Live - https://amapi.trustpay.eu/
Na testovacie účely prosím použite ten istý API koncový bod s testovacími prihlasovacími údajmi.

Platobný proces

Spracovanie platieb

Okamžité bankové prevody

Nastavenie platby v02

API koncový bod:

Live - https://amapi.trustpay.eu/mapi5/wire/paypopup
Na testovacie účely prosím použite ten istý API koncový bod s testovacími prihlasovacími údajmi.
Príklad HTML :

        <script type="text/javascript" src="https://mapi.trustpay.eu/mapi5/Scripts/TrustPay/popup.js"></script>
<iframe id="TrustPayFrame" src="https://amapi.trustpay.eu/mapi5/Card/PayPopup?accountId=4107111111..."></iframe>
<a href="#" class="show-popup">Pay via TrustPay</a>
        

Implementácia obchodníka musí na svojej stránke obsahovať odkaz na Merchant API JavaScript a načítať platobnú bránu TrustPay vo vnútri IFrame. Obsiahnutý JavaScript upraví IFrame tak, aby bol skrytý. Obsahuje tiež kód potrebný na zobrazenie platobnej brány zo skrytého IFrame ako vyskakovacie okno prekrývajúce e-shop obchodníka. Aby mohli používatelia zobraziť vyskakovacie okno platobnej brány, musí obchodník niekde na svojej stránke zahrnúť nejaký odkaz/tlačidlo/atď. s triedou CSS „show-popup“ („zobraziť vyskakovacie okno“). Správca udalosti Onclick, ktorá zobrazuje vyskakovacie okno, sa automaticky pridá k tomuto prvku. Pozrite si príklad vpravo.

URL IFrame by mala obsahovať nasledujúce parametre:

Príklad nastavenia platby:

public string GetSetUpPaymentUrl() 
{
    string baseUrl = "https://amapi.trustpay.eu/mapi5/wire/paypopup";
    long accountId = 4107111111;
    decimal amount = 1.5M;
    string currency = "EUR";
    string reference = "123456789";
    string notificationUrl = "https://example.handler.com/result.php";
    int paymentType = 0;
        
    string secretKey = "123456";
    string sigData = string.Format(
        CultureInfo.InvariantCulture,
        "{0}/{1:0.00}/{2}/{3}/{4}", accountId, amount, currency, reference, paymentType);
    string signature = GetSignature(secretKey, sigData);

    string url = string.Format(
    CultureInfo.InvariantCulture,
        "{0}?AccountId={1}&Amount={2:0.00}&Currency={3}&Reference={4}&NotificationUrl={5}&PaymentType={6}&Signature={7}",
        baseUrl, accountId, amount, currency, HttpUtility.UrlEncode(reference),
        HttpUtility.UrlEncode(notificationUrl), paymentType, signature);

    Response.Redirect(url);
}

function getSetUpPaymentUrl()
{
    $baseUrl = "https://amapi.trustpay.eu/mapi5/wire/paypopup";
    $accountId = 4107111111;
    $amount = 1.5;
    $currency = "EUR";
    $reference = "123456789";
    $notificationUrl = "https://example.handler.com/result.php";
    $paymentType = 0;

    $secretKey = "123456";
    $sigData = sprintf("%d/%s/%s/%s/%d", $accountId, number_format($amount, 2, '.', ''), $currency, $reference, $paymentType);
    $signature = GetSignature($secretKey, $sigData);

    $url = sprintf(
        "%s?AccountId=%d&Amount=%s&Currency=%s&Reference=%s&NotificationUrl=%s&PaymentType=%d&Signature=%s",
        $baseUrl, $accountId, number_format($amount, 2, '.', ''), $currency,
        urlencode($reference), urlencode($notificationUrl), $paymentType, $signature);
    return $url;
}

import java.util.Locale;
import java.net.URLEncoder;

public String GetSetUpPaymentUrl()
{
    String baseUrl = "https://amapi.trustpay.eu/mapi5/wire/paypopup";
    long accountId = 4107111111;
    double amount = 1.5d;
    String currency = "EUR";
    String reference = "123456789";
    String notificationUrl = "https://example.handler.com/result.php";
    int paymentType = 0;

    try
    {
        String secretKey = "123456";
        String sigData = String.format(Locale.ROOT, "%d/%.2f/%s/%s/%d", accountId, amount, currency, reference, paymentType);
        String signature = GetSignature(secretKey, sigData);

        String url = String.format(
            Locale.ROOT,"%s?AccountId=%d&Amount=%.2f&Currency=%s&Reference=%s&NotificationUrl=%s&PaymentType=%d&Signature=%s", 
            baseUrl, accountId, amount, currency, URLEncoder.encode(reference, "UTF-8"), 
            URLEncoder.encode(notificationUrl, "UTF-8"), paymentType, signature);
        return url;
    }catch(Exception ex){}
}
Názov Popis Formát Požadované
AccountId Obchodnícky účet alebo ID projektu (ID účtu alebo projektu prideleného spoločnosťou TrustPay) Numeric(10) Áno
Amount Výška platby (presne na 2 desatinné miesta) Numeric(13,2)
en-US format
Áno
Currency Mena platby (rovnaká ako mena obchodníckeho účtu) Char(3) Áno
Reference Referencia (identifikácia platby obchodníka) Varchar(35)1 Áno
PaymentType Typ platby
Pre nákup musí byť nastavené na 0
Numeric(1) Áno
Signature Dátový podpis vypočítaný zo zreťazených hodnôt parametrov AccountId, Amount, Currency, Reference a PaymentType, ak sú tieto parametre k dispozícii. Ako oddeľovač sa používa lomítko („/“). Char(64) Áno
Url Spätná (Return) URL (prepíše akékoľvek predvolené Spätné (Return) URL, možno ju ďalej prepísať Return URL, Cancel URL, Error URL) Varchar(256) Nie
ReturnUrl Return URL (prepíše predvolenú Succes Return URL ) Varchar(256) Nie
CancelUrl Cancel URL (prepíše predvolenú Cancel Return URL) Varchar(256) Nie
ErrorUrl Error URL (prepíše predvolenú Error URL) Varchar(256) Nie
NotificationUrl Notifikačná URL (prepíše predvolenú notifikačnú URL) Varchar(256) Nie
Localization Predvolený jazyk pre stránku TrustPay Char(2) Nie
Country Predvolená krajina klienta Char(2) Nie
Description Popis (text popisu platby, ktorý sa zobrazí používateľovi) Varchar(140) Nie
Email E-mail zákazníka Varchar(254) Nie

1 Referencia nemôže obsahovať znaky < a >

Výsledok platby v02

Po zaplatení je zákazník presmerovaný na jednu z Return URL adries poskytnutých obchodníkom:

S presmerovaniami sa vždy odosielajú tieto parametre:

Príklad výsledku platby:
https://example.handler.com/result.php?Reference=1234567890&ResultCode=0&PaymentRequestId=4337417657
Názov Popis Formát
Reference Referencia (identifikácia platby obchodníka) Varchar(500)
ResultCode Kód výsledku Numeric(4)
PaymentRequestId ID žiadosti o platbu (odosielané keď je k dispozícii, je možné ho použiť pri otázkach týkajúcich sa neúspešných platieb) Numeric(10)

Platby kartou

Platby kartou Visa a MasterCard fungujú podobným spôsobom ako okamžité bankové prevody, pričom rozdiely sú popísané v tejto kapitole.

Notifikácie o úspešnosti sa odosielajú s kódom výsledku (ResultCode) 3 - autorizovaný, čo tiež znamená, že platba bola úspešná. Všetky platby v dohodnutom období budú prevedené na váš účet TrustPay neskôr v rámci jednej transakcie. Nebudete dostávať žiadne ďalšie notifikácie týkajúce sa jednotlivých kartových transakcií.

Skúšobné karty v02

Keď skúšate svoju implementáciu v mapi prostredí s testovacími prihlasovacími údajmmi, na vykonanie simulovaných platieb môžete použiť tieto skúšobné karty:

Číslo karty Výsledok pri použití tejto karty
4200 0000 0000 0000
4200 0000 0000 1234
4200 0000 0000 5555
Platba je úspešná
4200 0000 0000 0001 Platba zlyhá s výsledkom vypršanej platnosti karty
4200 0000 0000 0002 Platba zlyhá s výsledkom prekročeného limitu karty
4200 0000 0000 0003 Platba zlyhá s výsledkom zlyhania pri overovaní 3DS
4200 0000 0000 0004 Platba zlyhá s výsledkom nedostatku finančných prostriedkov
4200 0000 0000 0005 Platba zlyhá s výsledkom neplatného CVV
4200 0000 0000 0006 Platba zlyhá s výsledkom neplatného dátumu skončenia platnosti
4200 0000 0000 0007 Platba zlyhá s výsledkom príliš veľa neúspšných pokusov
Akékoľvek iné číslo karty Platba zlyhá s výsledkom neplatného čísla karty

Nákup v02

API koncový bod:
Live - https://amapi.trustpay.eu/mapi5/Card/PayPopup
Na testovacie účely prosím použite ten istý API koncový bod s testovacími prihlasovacími údajmi.
Príklad HTML kódu:

<script type="text/javascript" src="https://mapi.trustpay.eu/mapi5/Scripts/TrustPay/popup.js"></script>
<iframe id="TrustPayFrame" src="https://amapi.trustpay.eu/mapi5/Card/PayPopup?accountId=4107111111..."></iframe>
<a href="#" class="show-popup">Pay via TrustPay</a>

Implementácia obchodníka musí na svojej stránke obsahovať odkaz na Merchant API JavaScript a načítať platobnú bránu TrustPay vo vnútri IFrame. Obsiahnutý JavaScript upraví IFrame tak, aby bol skrytý. Obsahuje tiež kód potrebný na zobrazenie platobnej brány zo skrytého IFrame ako vyskakovacie okno prekrývajúce e-shop obchodníka. Aby mohli používatelia zobraziť vyskakovacie okno platobnej brány, musí obchodník niekde na svojej stránke zahrnúť nejaký odkaz/tlačidlo/atď. s triedou CSS „show-popup“ („zobraziť vyskakovacie okno“). Správca udalosti Onclick, ktorá zobrazuje vyskakovacie okno, sa automaticky pridá k tomuto prvku. Pozrite si príklad vpravo.

URL IFrame by mala obsahovať nasledujúce parametre:

Príklad nastavenia platby:

public string GetPurchaseUrl() 
{
    string baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
    long accountId = 4107111111;
    decimal amount = 1.5M;
    string billingcity = "Bratislava";
    string billingcountry = "SK";
    string billingpostcode = "83103";
    string billingstreet = "Za kasarnou 1";
    string cardholder = "TrustPay";
    string currency = "EUR";
    string email = "info@trustpay.eu";
    string reference = "123456789";
    int paymentType = 0;

    string secretKey = "123456";
    string sigData = string.Format(
        CultureInfo.InvariantCulture,
        "{0}/{1:0.00}/{2}/{3}/{4}/{5}/{6}/{7}/{8}/{9}/{10}", accountId, amount, currency, reference, paymentType, billingcity, billingcountry, billingpostcode, billingstreet, cardholder, email);
        string signature = GetSignature(secretKey, sigData);

    string url = string.Format(
        CultureInfo.InvariantCulture,
        "{0}?AccountId={1}&Amount={2:0.00}&Currency={3}&Reference={4}&PaymentType={5}&Signature={6}&BillingCity={7}&BillingCountry={8}&BillingPostcode={9}&BillingStreet={10}&CardHolder={11}&Email={12}",
        baseUrl, accountId, amount, currency, HttpUtility.UrlEncode(reference), paymentType, signature, billingcity, billingcountry, billingpostcode, billingstreet, cardholder, email);

    return url;
}


function getPurchaseUrl()
{
    $baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
    $accountId = 4107111111;
    $amount = 1.5;
    $billingcity = "Bratislava";
    $billingcountry = "SK";
    $billingpostcode = "83103";
    $billingstreet = "Za kasarnou 1";
    $cardholder = "TrustPay";
    $currency = "EUR";
    $email = "info@trustpay.eu";
    $reference = "123456789";
    $paymentType = 0;
        
    $secretKey = "123456";
    $sigData = sprintf("%d/%s/%s/%s/%d/%s/%s/%s/%s/%s/%s", $accountId, number_format($amount, 2, '.', ''), $currency, $reference, $paymentType, $billingcity, $billingcountry, $billingpostcode, $billingstreet, $cardholder, $email);
    $signature = GetSignature($secretKey, $sigData);

    $url = sprintf(
        "%s?AccountId=%d&Amount=%s&Currency=%s&Reference=%s&PaymentType=%d&Signature=%s&BillingCity=%s&BillingCountry=%s&BillingPostcode=%s&BillingStreet=%s&CardHolder=%s&Email=%s", 
        $baseUrl, $accountId, number_format($amount, 2, '.', ''), $currency, urlencode($reference), $paymentType, $signature, $billingcity, $billingcountry, $billingpostcode, $billingstreet, $cardholder, $email);

    return $url;
}


import java.util.Locale;
import java.net.URLEncoder;

public String GetPurchaseUrl()
{
    String  baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
    long accountId = 4107111111;
    double amount = 1.5d;
    String billingcity = "Bratislava";
    String billingcountry = "SK";
    String billingpostcode = "83103";
    String billingstreet = "Za kasarnou 1";
    String cardholder = "TrustPay";
    String currency = "EUR";
    String email = "info@trustpay.eu";
    String reference = "123456789";
    int paymentType = 0;

    try
    {
        String secretKey = "123456";
        String sigData = String.format(Locale.ROOT, "%d/%.2f/%s/%s/%d/%s/%s/%s/%s/%s/%s", accountId, amount, currency, reference, paymentType, billingcity, billingcountry, billingpostcode, billingstreet, cardholder, email);
        String signature = GetSignature(secretKey, sigData);

        String url = String.format(
            Locale.ROOT,"%s?AccountId=%d&Amount=%.2f&Currency=%s&Reference=%s&PaymentType=%d&Signature=%s&BillingCity=%s&BillingCountry=%s&BillingPostcode=%s&BillingStreet=%s&CardHolder=%s&Email=%s", 
            baseUrl, accountId, amount, currency, URLEncoder.encode(reference, "UTF-8"), paymentType, signature, billingcity, billingcountry, billingpostcode, billingstreet, cardholder, email);
        return url;
    }catch(Exception ex){}
}

Názov Popis Formát Požadované
AccountId Obchodnícky účet alebo ID projektu (ID účtu alebo projektu prideleného spoločnosťou TrustPay) Numeric(10) Áno
Amount Výška platby (presne na 2 desatinné miesta) Numeric(13,2)
en-US format
Áno
BillingCity Mesto fakturačnej adresy zákazníka Varchar(80) Áno, od 1.10.2020
BillingCountry Krajina fakturačnej adresy zákazníka Char(2) Áno, od 1.10.2020
BillingPostcode Poštové smerovacie číslo alebo PSČ fakturačnej adresy zákazníka Varchar(30)1 Áno, od 1.10.2020
BillingStreet Ulica a číslo fakturačnej adresy zákazníka Varchar(100) Áno, od 1.10.2020
CardHolder Meno držiteľa karty Varchar(3-140) Áno, od 1.10.2020
Currency Mena platby Char(3) Áno
Email E-mail zákazníka Varchar(254) Áno, od 1.10.2020
PaymentType Typ platby
Pre nákup musí byť nastavený na 0
Numeric(1) Áno
Reference Referencia (identifikácia platby obchodníka) Varchar(35)1 Áno
Signature Dátový podpis vypočítaný zo zreťazených hodnôt parametrov AccountId, Amount, Currency, Reference, PaymentType, BillingCity, BillingCountry, BillingPostcode, BillingStreet, CardHolder a Email, ak sú tieto parametre k dispozícii. Ako oddeľovač sa používa lomítko („/“). Char(64) Áno
Url Spätná (Return) URL (prepíše akékoľvek predvolené Spätné (Return) URL, možno ju ďalej prepísať Return URL, Cancel URL, Error URL) Varchar(256) Nie
ReturnUrl Return URL (prepíše predvolenú Succes Return URL ) Varchar(256) Nie
CancelUrl Cancel URL (prepíše predvolenú Cancel Return URL) Varchar(256) Nie
ErrorUrl Error URL (prepíše predvolenú Error URL) Varchar(256) Nie
NotificationUrl Notifikačná URL (prepíše predvolenú notifikačnú URL) Varchar(256) Nie
Localization Predvolený jazyk pre stránku TrustPay Char(2) Nie
Country Predvolená krajina klienta Char(2) Nie
Description Popis (text popisu platby, ktorý sa zobrazí používateľovi) Varchar(140)2 Nie

1 Povolené sú iba alfanumerické znaky. Počas procesu platby sa môžu stratiť alebo zmeniť ďalšie znaky.
2 Povolené sú iba alfanumerické znaky a znaky medzier. Ostatné znaky sa nemusia zobraziť správne.

Uložená karta (Card on File) v02

API koncový bod:
Live - https://amapi.trustpay.eu/mapi5/Card/PayPopup
Na testovacie účely prosím použite ten istý API koncový bod s testovacími prihlasovacími údajmi.

Funkcia zaevidovanej karty umožňuje obchodníkom ukladať tokeny karty do svojich systémov bez ukladania akýchkoľvek citlivých údajov o karte (číslo karty, dátum exspirácie, CVV kód) a tieto tokeny následne používať na spracovanie platieb bez toho, aby klient (držiteľ karty) musel pri ďalších nákupoch zadávať akékoľvek údaje o karte.

Registrácia

Príklad registrácie:

public string GetRegisterUrl() 
{
    string baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
    long accountId = 4107111111;
    decimal amount = 1.5M;
    string currency = "EUR";
    string reference = "123456789";
    int paymentType = 1;
        
    string secretKey = "123456";
    string sigData = string.Format(
        CultureInfo.InvariantCulture,
        "{0}/{1:0.00}/{2}/{3}/{4}", accountId, amount, currency, reference, paymentType);
    string signature = GetSignature(secretKey, sigData);

    string url = string.Format(
        CultureInfo.InvariantCulture,
        "{0}?AccountId={1}&Amount={2:0.00}&Currency={3}&Reference={4}&Signature={5}&PaymentType={6}",
        baseUrl, accountId, amount, currency, HttpUtility.UrlEncode(reference), signature, paymentType);

    return url;
}

function getRegisterUrl() 
{
    $baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
    $accountId = 4107111111;
    $amount = 1.5;
    $currency = "EUR";
    $reference = "123456789";
    $paymentType = 1;
        
    $secretKey = "123456";
    $sigData = sprintf("%d/%s/%s/%s/%d", $accountId, number_format($amount, 2, '.', ''), $currency, $reference, $paymentType);
    $signature = GetSignature($secretKey, $sigData);

    $url = sprintf(
        "%s?AccountId=%d&Amount=%s&Currency=%s&Reference=%s&Signature=%s&PaymentType=%d", 
        $baseUrl, $accountId, number_format($amount, 2, '.', ''), $currency, urlencode($reference), $signature, $paymentType);

    return $url;
}

import java.util.Locale;
import java.net.URLEncoder;

public String GetRegisterUrl()
{
    String  baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
    long accountId = 4107111111;
    double amount = 1.5d;
    String  currency = "EUR";
    String  reference = "123456789";
    int paymentType = 1;

    try
    {
        String secretKey = "123456";
        String sigData = String.format(Locale.ROOT, "%d/%.2f/%s/%s/%d", accountId, amount, currency, reference, paymentType);
        String signature = GetSignature(secretKey, sigData);

        String url = String.format(
            Locale.ROOT,"%s?AccountId=%d&Amount=%.2f&Currency=%s&Reference=%s&Signature=%s&PaymentType=%d", 
            baseUrl, accountId, amount, currency, URLEncoder.encode(reference, "UTF-8"), signature, paymentType);
        return url;
    }catch(Exception ex){}
}

Ak chcete zaregistrovať kartu pre neskoršie nákupy touto metódou, prvý nákup musíte vykonať podobne ako pri štandardnom nákupe, je však potrebný uviesť tento dodatočný parameter:

Názov Popis Formát Požadované
PaymentType Typ platby
Pre Card on File registráciu musí byť nastavená na 1
Numeric(1) Áno

CardID Parameter bude uvedený v notifikácii potom, ako klient dokončí nákup. Hodnota tohto parametra musí byť použitá na uskutočnenie ďalších nákupov zaevidovanou kartou.

Nákup uloženou kartou

Príklad nákupu uloženou kartou:

public string GetCardOnFilePurchaseUrl()
{
    string baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
    long accountId = 4107111111;
    decimal amount = 1.5M;
    string currency = "EUR";
    string reference = "123456789";
    int paymentType = 2;
    string cardId = "8a8394855cfd3692015d0dc3f793355b";
        
    string secretKey = "123456";
    string sigData = string.Format(
        CultureInfo.InvariantCulture,
        "{0}/{1:0.00}/{2}/{3}/{4}/{5}/{6}", accountId, amount, currency, reference, paymentType, cardId);
    string signature = GetSignature(secretKey, sigData);

    string url = string.Format(
        CultureInfo.InvariantCulture,
        "{0}?AccountId={1}&Amount={2:0.00}&Currency={3}&Reference={4}&Signature={5}&PaymentType={6}&CardId={7}",
        baseUrl, accountId, amount, currency, HttpUtility.UrlEncode(reference), signature, paymentType, cardId);

    return url;
}

function getCardOnFilePurchaseUrl()
{
    $baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
    $accountId = 4107111111;
    $amount = 1.5;
    $currency = "EUR";
    $reference = "123456789";
    $paymentType = 2;
    $cardId = "8a8394855cfd3692015d0dc3f793355b";
        
    $secretKey = "123456";
    $sigData = sprintf("%d/%s/%s/%s/%d/%s", $accountId, number_format($amount, 2, '.', ''), $currency, $reference, $paymentType, $cardId);
    $signature = GetSignature($secretKey, $sigData);

    $url = sprintf(
        "%s?AccountId=%d&Amount=%s&Currency=%s&Reference=%s&Signature=%s&PaymentType=%d&CardId=%s", 
        $baseUrl, $accountId, number_format($amount, 2, '.', ''), $currency, urlencode($reference), $signature, $paymentType, $cardId);

    return $url;
}

import java.util.Locale;
import java.net.URLEncoder;

public String GetCardOnFilePurchaseUrl()
{
    String  baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
    long accountId = 4107111111;
    double amount = 1.5d;
    String  currency = "EUR";
    String  reference = "123456789";
    int paymentType = 2;
    String cardId = "8a8394855cfd3692015d0dc3f793355b";

    try
    {
        String secretKey = "123456";
        String sigData = String.format(Locale.ROOT, "%d/%.2f/%s/%s/%d/%s", accountId, amount, currency, reference, paymentType, cardId);
        String signature = GetSignature(secretKey, sigData);

        String url = String.format(
            Locale.ROOT,"%s?AccountId=%d&Amount=%.2f&Currency=%s&Reference=%s&Signature=%s&PaymentType=%d&CardId=%s", 
            baseUrl, accountId, amount, currency, URLEncoder.encode(reference, "UTF-8"), signature, paymentType, cardId);
        return url;
    }catch(Exception ex){}
}

Parametre pre nákup uloženou kartou sú rovnaké ako pre štandardnú platbu, k žiadosti je však potrebné pridať tieto dodatočné parametre:

Názov Popis Formát Požadované
PaymentType Typ platby
Pre nákup uloženou kartou musí byť nastavené 2
Numeric(1) Áno
CardId CardID z notifikácie Varchar(64) Nie
Signature Dátový podpis vypočítaný zo zreťazených hodnôt parametrov AccountId, Amount, Currency, Reference, BillingCity, BillingCountry, BillingPostcode, BillingStreet, CardHolder, Email, PaymentType (typ platby) a CardId (ID karty), ak sú tieto parametre k dispozícii. Ako oddeľovač sa používa lomítko („/“). Char(64) Áno

Predautorizácia uloženej karty

Príklad predautorizácie uloženej karty:

public string GetCardOnFilePreauthorizationUrl() 
{
    string baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
    long accountId = 4107111111;
    decimal amount = 1.5M;
    string currency = "EUR";
    string reference = "123456789";
    int paymentType = 9;
    string cardId = "8a8394855cfd3692015d0dc3f793355b";

    string secretKey = "123456";
    string sigData = string.Format(
        CultureInfo.InvariantCulture,
        "{0}/{1:0.00}/{2}/{3}/{4}/{5}/{6}", accountId, amount, currency, reference, paymentType, cardId);
    string signature = GetSignature(secretKey, sigData);

    string url = string.Format(
        CultureInfo.InvariantCulture,
        "{0}?AccountId={1}&Amount={2:0.00}&Currency={3}&Reference={4}&Signature={5}&PaymentType={6}&CardId={7}",
        baseUrl, accountId, amount, currency, HttpUtility.UrlEncode(reference), signature, paymentType, cardId);

    return url;
}

function getCardOnFilePreauthorizationUrl()
{
    $baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
    $accountId = 4107111111;
    $amount = 1.5;
    $currency = "EUR";
    $reference = "123456789";
    $paymentType = 9;
    $cardId = "8a8394855cfd3692015d0dc3f793355b";
        
    $secretKey = "123456";
    $sigData = sprintf("%d/%s/%s/%s/%d/%s", $accountId, number_format($amount, 2, '.', ''), $currency, $reference, $paymentType, $cardId);
    $signature = GetSignature($secretKey, $sigData);

    $url = sprintf(
        "%s?AccountId=%d&Amount=%s&Currency=%s&Reference=%s&Signature=%s&PaymentType=%d&CardId=%s", 
        $baseUrl, $accountId, number_format($amount, 2, '.', ''), $currency, urlencode($reference), $signature, $paymentType, $cardId);

    return $url;
}

import java.util.Locale;
import java.net.URLEncoder;

public String GetCardOnFilePreauthorizationUrl()
{
    String  baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
    long accountId = 4107111111;
    double amount = 1.5d;
    String  currency = "EUR";
    String  reference = "123456789";
    int paymentType = 9;
    String cardId = "8a8394855cfd3692015d0dc3f793355b";

    try
    {
        String secretKey = "123456";
        String sigData = String.format(Locale.ROOT, "%d/%.2f/%s/%s/%d/%s", accountId, amount, currency, reference, paymentType, cardId);
        String signature = GetSignature(secretKey, sigData);

        String url = String.format(
            Locale.ROOT,"%s?AccountId=%d&Amount=%.2f&Currency=%s&Reference=%s&Signature=%s&PaymentType=%d&CardId=%s", 
            baseUrl, accountId, amount, currency, URLEncoder.encode(reference, "UTF-8"), signature, paymentType, cardId);
        return url;
    }catch(Exception ex){}
}

Parametre predautorizácie uloženej karty sú rovnaké ako pri štandardnej platbe, k žiadosti je však potrebné pridať tieto ďalšie parametre:

Názov Popis Formát Požadované
PaymentType Typ platby
Pre predautorizáciu uloženej karty musí byť nastavené 9
Numeric(1) Áno
CardId CardID z notifikácie Varchar(64) Nie
Signature Dátový podpis vypočítaný zo zreťazených hodnôt parametrov AccountId, Amount, Currency, Reference,BillingCity, BillingCountry, BillingPostcode, BillingStreet, CardHolder, Email, PaymentType (typ platby) a CardId (ID karty), ak sú tieto parametre k dispozícii. Ako oddeľovač sa používa lomítko („/“). Char(64) Áno

Opakované platby v02

API koncový bod:
Live - https://amapi.trustpay.eu/mapi5/Card/PayPopup
Na testovacie účely prosím použite ten istý API koncový bod s testovacími prihlasovacími údajmi.

Opakované (recurring) transakcie umožňujú opakovanie platieb kartou. Toto napríklad umožňuje obchodníkovi implementovať plánované platby alebo pravidelne sa opakujúce platby.

Zodpovednosti obchodníkov:

Počiatočná platba

Príklad počiatočnej platby:

public string GetInitialPaymentUrl()
{
    string baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
    long accountId = 4107111111;
    decimal amount = 1.5M;
    string currency = "EUR";
    string reference = "123456789";
    int paymentType = 3;
        
    string secretKey = "123456";
    string sigData = string.Format(
        CultureInfo.InvariantCulture,
        "{0}/{1:0.00}/{2}/{3}/{4}", accountId, amount, currency, reference, paymentType);
    string signature = GetSignature(secretKey, sigData);

    string url = string.Format(
        CultureInfo.InvariantCulture,
        "{0}?AccountId={1}&Amount={2:0.00}&Currency={3}&Reference={4}&Signature={5}&PaymentType={6}",
        baseUrl, accountId, amount, currency, HttpUtility.UrlEncode(reference), signature, paymentType);

    return url;
}

function getInitialPaymentUrl()
{
    $baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
    $accountId = 4107111111;
    $amount = 1.5;
    $currency = "EUR";
    $reference = "123456789";
    $paymentType = 3;
        
    $secretKey = "123456";
    $sigData = sprintf("%d/%s/%s/%s/%d", $accountId, number_format($amount, 2, '.', ''), $currency, $reference, $paymentType);
    $signature = GetSignature($secretKey, $sigData);

    $url = sprintf(
        "%s?AccountId=%d&Amount=%s&Currency=%s&Reference=%s&Signature=%s&PaymentType=%d", 
        $baseUrl, $accountId, number_format($amount, 2, '.', ''), $currency, urlencode($reference), $signature, $paymentType);
    
    return $url;
}

import java.util.Locale;
import java.net.URLEncoder;

public String GetInitialPaymentUrl()
{
    String  baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
    long accountId = 4107111111;
    double amount = 1.5d;
    String  currency = "EUR";
    String  reference = "123456789";
    int paymentType = 3;

    try
    {
        String secretKey = "123456";
        String sigData = String.format(Locale.ROOT, "%d/%.2f/%s/%s/%d", accountId, amount, currency, reference, paymentType);
        String signature = GetSignature(secretKey, sigData);

        String url = String.format(
            Locale.ROOT,"%s?AccountId=%d&Amount=%.2f&Currency=%s&Reference=%s&Signature=%s&PaymentType=%d", 
            baseUrl, accountId, amount, currency, URLEncoder.encode(reference, "UTF-8"), signature, paymentType);
        return url;
    }catch(Exception ex){}
}

Parametre sú rovnaké ako pri štandardnom nákupe, je však potrebný ešte jeden dodatočný parameter:

Názov Popis Formát Požadované
PaymentType Typ platby
Pre počiatočnú opakovanú platbu musí byť nastavené 3
Numeric(1) Áno

Nasledujúca platba

Príklad nasledujúcej platby:

string baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
long accountId = 4107111111;
decimal amount = 1.5M;
string currency = "EUR";
string reference = "123456789";
int paymentType = 4;
int paymentRequestId = 555;
        
string secretKey = "123456";
string sigData = string.Format(
    CultureInfo.InvariantCulture,
    "{0}/{1:0.00}/{2}/{3}/{4}/{5}/{6}", accountId, amount, currency, reference, paymentType, paymentRequestId);
string signature = GetSignature(secretKey, sigData);

string url = string.Format(
    CultureInfo.InvariantCulture,
    "{0}?AccountId={1}&Amount={2:0.00}&Currency={3}&Reference={4}&Signature={5}&PaymentType={6}&PaymentRequestId={7}",
    baseUrl, accountId, amount, currency, HttpUtility.UrlEncode(reference), signature, paymentType, paymentRequestId);

Response.Redirect(url);

$baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
$accountId = 4107111111;
$amount = 1.5;
$currency = "EUR";
$reference = "123456789";
$paymentType = 4;
$paymentRequestId = 555;
        
$secretKey = "123456";
$sigData = sprintf("%d/%s/%s/%s/%d/%d", $accountId, number_format($amount, 2, '.', ''), $currency, $reference, $paymentType, $paymentRequestId);
$signature = GetSignature($secretKey, $sigData);

$url = sprintf(
    "%s?AccountId=%d&Amount=%s&Currency=%s&Reference=%s&Signature=%s&PaymentType=%d&PaymentRequestId=%s", 
    $baseUrl, $accountId, number_format($amount, 2, '.', ''), $currency, urlencode($reference), $signature, $paymentType, $paymentRequestId);
header("Location: $url");
exit();

import java.util.Locale;
import java.net.URLEncoder;

String  baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
long accountId = 4107111111;
double amount = 1.5d;
String  currency = "EUR";
String  reference = "123456789";
int paymentType = 4;
int paymentRequestId = 555;

try
{
    String secretKey = "123456";
    String sigData = String.format(Locale.ROOT, "%d/%.2f/%s/%s/%d/%d", accountId, amount, currency, reference, paymentType, paymentRequestId);
    String signature = GetSignature(secretKey, sigData);

    String url = String.format(
        Locale.ROOT,"%s?AccountId=%d&Amount=%.2f&Currency=%s&Reference=%s&Signature=%s&PaymentType=%d&PaymentRequestId=%s", 
        baseUrl, accountId, amount, currency, URLEncoder.encode(reference, "UTF-8"), signature, paymentType, paymentRequestId);
    response.sendRedirect(url);
}catch(Exception ex){}

Po vykonaní počiatočnej transakcie môžete vykonať opakované transakcie. To sa deje na pozadí pomocou parametrov prijatých v notifikácii o počiatočnej transakcii.

Parametre sú rovnaké ako pri štandardnom nákupe, ale k žiadosti je potrebné pridať tieto ďalšie parametre:

Názov Popis Formát Požadované
PaymentType Typ platby
Pre nasledujúce opakované platby musí byť nastavené na 4
Numeric(1) Áno
PaymentRequestId PaymentRequestId z notifikácie o počiatočnej platbe Numeric(10) Áno
Signature Dátový podpis vypočítaný zo zreťazených hodnôt parametrov AccountId, Amount, Currency, Reference,BillingCity, BillingCountry, BillingPostcode, BillingStreet, CardHolder, Email, PaymentType (typ platby) a PaymentRequestId (ID žiadosti o platbu), ak sú tieto parametre k dispozícii. Ako oddeľovač sa používa lomítko („/“). Char(64) Áno

Telo odpovede HTTP bude obsahovať kód výsledku (pozri príklad odpovede vpravo).

Príklad odpovede:

{
    'ResultCode':3,
    'AcquirerResponseId':'000.000.000'
}

Predautorizácia v02

API koncový bod:
Live - https://amapi.trustpay.eu/mapi5/Card/PayPopup
Na testovacie účely prosím použite ten istý API koncový bod s testovacími prihlasovacími údajmi.

Táto funkcia umožňuje obchodníkovi vykonať predautorizáciu, po ktorej nasleduje neskoršie zúčtovanie platby. Je vhodný v situáciách, keď je rezervácia peňazí nutná skôr, ako je možné dodanie tovaru alebo poskytnutie služieb.

Keď obchodník vykoná predautorizáciu, suma na karte je iba rezervovaná. Funguje to podobným spôsobom ako pri štandardných transakciách. Zúčtovanie (Capture) sa vykonáva neskôr na pozadí v systéme obchodníka.

Predautorizácia

Príklad nastavenia predautorizácie:

public string GetPreauthorizationSetupUrl() 
{
    string baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
    long accountId = 4107111111;
    decimal amount = 1.5M;
    string currency = "EUR";
    string reference = "123456789";
    int paymentType = 5;
        
    string secretKey = "123456";
    string sigData = string.Format(
        CultureInfo.InvariantCulture,
        "{0}/{1:0.00}/{2}/{3}/{4}", accountId, amount, currency, reference, paymentType);
    string signature = GetSignature(secretKey, sigData);

    string url = string.Format(
        CultureInfo.InvariantCulture,
        "{0}?AccountId={1}&Amount={2:0.00}&Currency={3}&Reference={4}&Signature={5}&PaymentType={6}",
        baseUrl, accountId, amount, currency, HttpUtility.UrlEncode(reference), signature, paymentType);

    return url;
}

function getPreauthorizationSetupUrl()
{
    $baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
    $accountId = 4107111111;
    $amount = 1.5;
    $currency = "EUR";
    $reference = "123456789";
    $paymentType = 5;
        
    $secretKey = "123456";
    $sigData = sprintf("%d/%s/%s/%s/%d", $accountId, number_format($amount, 2, '.', ''), $currency, $reference, $paymentType);
    $signature = GetSignature($secretKey, $sigData);

    $url = sprintf(
        "%s?AccountId=%d&Amount=%s&Currency=%s&Reference=%s&Signature=%s&PaymentType=%d", 
        $baseUrl, $accountId, number_format($amount, 2, '.', ''), $currency, urlencode($reference), $signature, $paymentType);

    return $url;
}

import java.util.Locale;
import java.net.URLEncoder;

public String GetPreauthorizationSetupUrl()
{
    String  baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
    long accountId = 4107111111;
    double amount = 1.5d;
    String  currency = "EUR";
    String  reference = "123456789";
    int paymentType = 5;

    try
    {
        String secretKey = "123456";
        String sigData = String.format(Locale.ROOT, "%d/%.2f/%s/%s/%d", accountId, amount, currency, reference, paymentType);
        String signature = GetSignature(secretKey, sigData);

        String url = String.format(
            Locale.ROOT,"%s?AccountId=%d&Amount=%.2f&Currency=%s&Reference=%s&Signature=%s&PaymentType=%d", 
            baseUrl, accountId, amount, currency, URLEncoder.encode(reference, "UTF-8"), signature, paymentType);
        return url;
    }catch(Exception ex){}
}

Parametre sú rovnaké ako pri štandardnom nákupe, je však potrebný ešte jeden dodatočný parameter:

Názov Popis Formát Požadované
PaymentType Typ platby
Pre predautorizáciu štandardného nákupu musí byť nastavená na 5
Numeric(1) Áno

Zúčtovanie (Capture)

Príklad zúčtovania:

string baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
long accountId = 4107111111;
decimal amount = 1.5M;
string currency = "EUR";
string reference = "123456789";
int paymentType = 6;
int paymentRequestId = 555;
        
string secretKey = "123456";
string sigData = string.Format(
    CultureInfo.InvariantCulture,
    "{0}/{1:0.00}/{2}/{3}/{4}/{5}/{6}", accountId, amount, currency, reference, paymentType, paymentRequestId);
string signature = GetSignature(secretKey, sigData);

string url = string.Format(
    CultureInfo.InvariantCulture,
    "{0}?AccountId={1}&Amount={2:0.00}&Currency={3}&Reference={4}&Signature={5}&PaymentType={6}&PaymentRequestId={7}",
    baseUrl, accountId, amount, currency, HttpUtility.UrlEncode(reference), signature, paymentType, paymentRequestId);

Response.Redirect(url);

$baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
$accountId = 4107111111;
$amount = 1.5;
$currency = "EUR";
$reference = "123456789";
$paymentType = 6;
$paymentRequestId = 555;
        
$secretKey = "123456";
$sigData = sprintf("%d/%s/%s/%s/%d/%d", $accountId, number_format($amount, 2, '.', ''), $currency, $reference, $paymentType, $paymentRequestId);
$signature = GetSignature($secretKey, $sigData);

$url = sprintf(
    "%s?AccountId=%d&Amount=%s&Currency=%s&Reference=%s&Signature=%s&PaymentType=%d&PaymentRequestId=%s", 
    $baseUrl, $accountId, number_format($amount, 2, '.', ''), $currency, urlencode($reference), $signature, $paymentType, $paymentRequestId);
header("Location: $url");
exit();

import java.util.Locale;
import java.net.URLEncoder;

String  baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
long accountId = 4107111111;
double amount = 1.5d;
String  currency = "EUR";
String  reference = "123456789";
int paymentType = 6;
int paymentRequestId = 555;

try
{
    String secretKey = "123456";
    String sigData = String.format(Locale.ROOT, "%d/%.2f/%s/%s/%d/%d", accountId, amount, currency, reference, paymentType, paymentRequestId);
    String signature = GetSignature(secretKey, sigData);

    String url = String.format(
        Locale.ROOT,"%s?AccountId=%d&Amount=%.2f&Currency=%s&Reference=%s&Signature=%s&PaymentType=%d&PaymentRequestId=%s", 
        baseUrl, accountId, amount, currency, URLEncoder.encode(reference, "UTF-8"), signature, paymentType, paymentRequestId);
    response.sendRedirect(url);
}catch(Exception ex){}

Po autorizácii transakcie môžete na dokončenie transakcie požiadať o jej zúčtovanie. To sa deje spojením na pozadí pomocou parametrov prijatých v notifikácii o predautorizácii.

Parametre sú rovnaké ako pri štandardnom nákupe, ale k žiadosti je potrebné pridať tieto ďalšie parametre:

Názov Popis Formát Požadované
PaymentType Typ platby
Pre zúčtovanie (Capture) musí byť nastavené na 6
Numeric(1) Áno
PaymentRequestId PaymentRequestId z notifikácie o predautorizácii Numeric(10) Áno
Signature Dátový podpis vypočítaný zo zreťazených hodnôt parametrov AccountId (ID účtu), Amount (suma), Currency (mena), Reference (referencia), PaymentType (typ platby) a PaymentRequestId (ID žiadosti o platbu), ak sú tieto parametre k dispozícii. Ako oddeľovač sa používa lomítko („/“). Char(64) Áno

Telo odpovede HTTP bude obsahovať kód výsledku (pozri príklad odpovede vpravo).

Príklad odpovede:

{
    'ResultCode':3,
    'AcquirerResponseId':'000.000.000'
}

Vrátenie platby v02

API koncový bod:
Live - https://amapi.trustpay.eu/mapi5/Card/PayPopup
Na testovacie účely prosím použite ten istý API koncový bod s testovacími prihlasovacími údajmi.
Príklad vrátenia platby:

string baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
long accountId = 4107111111;
decimal amount = 1.5M;
string currency = "EUR";
string reference = "123456789";
int paymentType = 8;
int paymentRequestId = 555;
        
string secretKey = "123456";
string sigData = string.Format(
    CultureInfo.InvariantCulture,
    "{0}/{1:0.00}/{2}/{3}/{4}/{5}/{6}", accountId, amount, currency, reference, paymentType, paymentRequestId);
string signature = GetSignature(secretKey, sigData);

string url = string.Format(
    CultureInfo.InvariantCulture,
    "{0}?AccountId={1}&Amount={2:0.00}&Currency={3}&Reference={4}&Signature={5}&PaymentType={6}&PaymentRequestId={7}",
    baseUrl, accountId, amount, currency, HttpUtility.UrlEncode(reference), signature, paymentType, paymentRequestId);

Response.Redirect(url);

$baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
$accountId = 4107111111;
$amount = 1.5;
$currency = "EUR";
$reference = "123456789";
$paymentType = 8;
$paymentRequestId = 555;
        
$secretKey = "123456";
$sigData = sprintf("%d/%s/%s/%s/%d/%d", $accountId, number_format($amount, 2, '.', ''), $currency, $reference, $paymentType, $paymentRequestId);
$signature = GetSignature($secretKey, $sigData);

$url = sprintf(
    "%s?AccountId=%d&Amount=%s&Currency=%s&Reference=%s&Signature=%s&PaymentType=%d&PaymentRequestId=%s", 
    $baseUrl, $accountId, number_format($amount, 2, '.', ''), $currency, urlencode($reference), $signature, $paymentType, $paymentRequestId);
header("Location: $url");
exit();

import java.util.Locale;
import java.net.URLEncoder;

String  baseUrl = "https://amapi.trustpay.eu/mapi5/Card/PayPopup";
long accountId = 4107111111;
double amount = 1.5d;
String  currency = "EUR";
String  reference = "123456789";
int paymentType = 8;
int paymentRequestId = 555;

try
{
    String secretKey = "123456";
    String sigData = String.format(Locale.ROOT, "%d/%.2f/%s/%s/%d/%d", accountId, amount, currency, reference, paymentType, paymentRequestId);
    String signature = GetSignature(secretKey, sigData);

    String url = String.format(
        Locale.ROOT,"%s?AccountId=%d&Amount=%.2f&Currency=%s&Reference=%s&Signature=%s&PaymentType=%d&PaymentRequestId=%s", 
        baseUrl, accountId, amount, currency, URLEncoder.encode(reference, "UTF-8"), signature, paymentType, paymentRequestId);
    response.sendRedirect(url);
}catch(Exception ex){}

Táto funkcia umožňuje vrátenie platby alebo zrušenie transakcie, ktorá bola autorizovaná alebo predautorizovaná.

Parametre sú rovnaké ako pri štandardnom nákupe, ale k žiadosti je potrebné pridať tieto ďalšie parametre:

Názov Popis Formát Požadované
PaymentType Typ platby
Pre vrátenie platby musí byť nastavené na 8
Numeric(1) Áno
PaymentRequestId PaymentRequestId z notifikácie o pôvodnej platbe Numeric(10) Áno
Signature Dátový podpis vypočítaný zo zreťazených hodnôt parametrov AccountId (ID účtu), Amount (suma), Currency (mena), Reference (referencia), PaymentType (typ platby) a PaymentRequestId (ID žiadosti o platbu), ak sú tieto parametre k dispozícii. Ako oddeľovač sa používa lomítko („/“). Char(64) Áno

Telo odpovede HTTP bude obsahovať kód výsledku (pozri príklad odpovede vpravo).

Príklad odpovede:

{
    'ResultCode':0,
    'AcquirerResponseId':'000.000.000'
}

Výsledok platby v02

Po zaplatení je zákazník presmerovaný na jednu z Return URL adries poskytnutých obchodníkom:

S presmerovaniami sa vždy odosielajú tieto parametre:

Príklad výsledku platby:
https://example.handler.com/result.php?Reference=1234567890&ResultCode=0&AcquirerResponseId=000.100.110&PaymentRequestId=4337417657
Názov Popis Formát
Reference Referencia (identifikácia platby obchodníka) Varchar(35)
ResultCode Kód výsledku Numeric(4)
AcquirerResponseId Kód výsledku nadobúdateľa karty Varchar(128)
PaymentRequestId ID žiadosti o platbu (odosielané, ak je k dispozícii, je možné ho použiť pri otázkach týkajúcich sa neúspešných platieb) Numeric(10)

Podpis

Vytvorenie tajného kľúča

V aktívnom prostredí sa pre každý obchodnícky účet automaticky generuje iný tajný kľúč. Tento tajný kľúč si môžete zobraziť na svojom Obchodníckom portáli TrustPay v časti Technické nastavenia. Tajný kľúč si môžete kedykoľvek zobraziť. Môžete tiež vidieť históriu tajných kľúčov a podľa potreby vygenerovať v aktívnom prostredí nový kľúč.

Vytvorenie podpisu


using System;
using System.Security.Cryptography;
using System.Text;

public static string GetSignature(string key, string message)
{
    using (var hmac = HMAC.Create("HMACSHA256"))
    {
        hmac.Key = Encoding.UTF8.GetBytes(key);
        byte[] signature = hmac.ComputeHash(Encoding.UTF8.GetBytes(message));
        return BitConverter.ToString(signature).Replace("-", "").ToUpperInvariant();
    }
}
    

function GetSignature($key, $message){
    return strtoupper(hash_hmac('sha256', pack('A*', $message), pack('A*', $key)));
}
    

public static String GetSignature(String key, String message) throws Exception
{
    byte[] keyBytes = key.getBytes("UTF-8");
    byte[] messageBytes = message.getBytes("UTF-8");
    javax.crypto.Mac mac = javax.crypto.Mac.getInstance("HmacSHA256");
    mac.init(new javax.crypto.spec.SecretKeySpec(keyBytes, mac.getAlgorithm()));
    return ByteArrayToHexString(mac.doFinal(messageBytes));
}

public static String ByteArrayToHexString(byte[] b)
{
    java.math.BigInteger bi = new java.math.BigInteger(1, b);
    return String.format("%0" + (b.length << 1) + "X", bi);
}
    

Kód HMAC-SHA-256 (RFC 2104) sa používa na kontrolu integrity údajov odosielaných medzi TrustPay a Obchodníkom. Tento podpis sa vytvára pomocou tajného kľúča a údajov zo správy. Údaje zo správy sa získavajú zreťazením parametrov žiadosti a podrobnosti sú vysvetlené v dokumentácii pre konkrétne operácie. Po vypočítaní podpisu je potrebné ho previesť na hexadecimálny reťazec veľkých písmen.

Spoločnosť TrustPay poskytuje funkcie na vytvorenie podpisu v .NET C #, PHP a JAVA.

Overenie podpisu v02

Tu si môžete overiť svoju implementáciu podpisu TrustPay. Stačí zadať svoje parametre a podpis, ktorý ste si vypočítali, a náš nástroj skontroluje, či je podpis platný alebo nie.






























Notifikácie o platbe

Notifikácia o bankovom prevode v02

Pri každej oznámenej, autorizovanej alebo úspešne dokončenej platbe na účte obchodníka, spoločnosť TrustPay odošle výsledok platby obchodníkovi na notifikačnú URL adresu alebo na e-mail s nasledujúcimi parametrami:

Príklad URL notifikácie:
https://example.handler.com/result.php?AccountId=4107111111&Type=CRDT&Amount=6.00&Currency=EUR&ResultCode=0&PaymentId=177561&Reference=1234567890&CounterAccount=SK3399520000002107425307&CounterAccountName=TestAccount&Signature=C4FFA5F7B57A0F5E6DD105197C8B7D7B9214509F3618CDC0F527C9B4E57F0334
Príklad e-mailovej notifikácie:

{
    "AccountId":4107111111,
    "Type":"CRDT",
    "Amount":6.00,
    "Currency":"EUR",
    "Reference":"1234567890",
    "ResultCode":0,
    "PaymentId":"177561",
    "Signature":"C4FFA5F7B57A0F5E6DD105197C8B7D7B9214509F3618CDC0F527C9B4E57F0334",
    "CounterAccount":"SK3399520000002107425307",
    "CounterAccountName":"TestAccount"
}
Názov Popis Formát
AccountId Obchodnícky účet alebo ID projektu (ID účtu alebo projektu prideleného spoločnosťou TrustPay) Numeric(10)
Type Typ transakcie (CRDT alebo DBIT) Char(4)
Amount Výška platby (presne na 2 desatinné miesta) Numeric(13,2), en-US format
Currency Mena platby (rovnaká ako mena obchodníckeho účtu) Char(3)
Reference1 Referencia (identifikácia platby obchodníka) Varchar(35)
ResultCode Kód výsledku Numeric(4)
PaymentId ID platby Numeric(10)
OrderId1 TrustPay ID príkazu Numeric(10)
CounterAccount1 Protiúčet Varchar(34)
CounterAccountName1 Názov protiúčtu Varchar(140)
Signature Dátový podpis vypočítaný zo zreťazených hodnôt parametrov AccountId (ID účtu), Amount (suma), Currency (mena), Type (typ), ResultCode (kód výsledku), CounterAccount (protiúčet), CounterAccountName (názov protiúčtu), OrderId (ID príkazu), PaymentId (ID platby), Reference (referencia) a RefuseReason (dôvod zamietnutia), ak sú tieto parametre k dispozícii. Ako oddeľovač sa používa lomítko („/“). Char(64)

1 Tieto parametre nemusia byť k dispozícii v závislosti od použitej žiadosti a/alebo platobnej brány.

Notifikácie je možné zasielať obchodníkovi pomocou nasledujúcich kanálov:

Notifikácia o kartových transakciách v02

Príklad URL notifikácie:
https://example.handler.com/result.php?AccountId=4107111111&Type=CRDT&Amount=6.00&Currency=EUR&Reference=1234567890&ResultCode=0&PaymentRequestId=177561&Signature=C4FFA5F7B57A0F5E6DD105197C8B7D7B9214509F3618CDC0F527C9B4E57F0334&CardId=8a8294495c589aa3015c63bd6d237e46&CardMask=0162&CardExpiration=1020&AuthNumber=198159
Príklad e-mailovej notifikácie:

{
    "AccountId":"4107111111",
    "Type":"CRDT",
    "Amount":"6.00",
    "Currency":"EUR",
    "PaymentRequestId":"177561",
    "CardId":"8a8294495c589aa3015c63bd6d237e46",
    "CardMask":"0162",
    "CardExpiration":"1020",
    "AuthNumber":"198159",
    "Signature":"51541600BDED4230304D5E20DB96730181E7C34886DF00D82650C6F0C28424A2",
    "ResultCode":"3",
    "Reference":"1234567890"
}

URL a e-mailová notifikácia o kartových transakciách obsahujú nasledujúce parametre:

Názov Popis Formát
AccountId Obchodnícky účet alebo ID projektu (ID účtu alebo projektu prideleného spoločnosťou TrustPay) Numeric(10)
Type Typ transakcie (CRDT alebo DBIT) Char(4)
Amount Výška platby (presne na 2 desatinné miesta) Numeric(13,2), en-US format
Currency Mena platby (rovnaká ako mena obchodného účtu) Char(3)
Reference Referencia (identifikácia platby obchodníka) Varchar(35)
ResultCode Kód výsledku Numeric(4)
PaymentRequestId ID žiadosti o platbu (odosielané keď je k dispozícii, je možné ho použiť pri otázkach týkajúcich sa neúspešných platieb) Numeric(10)
Signature Dátový podpis vypočítaný zo zreťazených hodnôt parametrov AccountId (ID účtu), Amount (suma), Currency (mena), Reference (referencia), Type (typ), ResultCode (kód výsledku), PaymentRequestId (ID žiadosti o platbu), CardId (ID karty), CardMask (maskovaná karta), CardExpiration (vypršanie platnosti karty) a AuthNumber (číslo autorizácie), ak sú tieto parametre k dispozícii. Ako oddeľovač sa používa lomítko („/“). Char(64)
CardId1 ID karty. Možno použiť na uskutočnenie platieb zaevidovanou kartou (card-on-file) Varchar(64)
CardMask1 Maskované číslo karty alebo posledné 4 číslice karty Varchar(19)
CardExpiration1 Platnosť karty vo formáte MMRR Number(4)
AuthNumber1 Číslo autorizácie Varchar(7)

1 Tieto parametre nemusia byť k dispozícii v závislosti od žiadosti.

Zoznamy kódov

Podporované meny

Zoznam mien (podľa normy ISO 4217) podporovaných TrustPay pre okamžité bankové prevody.

Kód ID Názov
CZK 203 Česká koruna
EUR 978 Euro

Podporované krajiny

Zoznam krajín zákazníka (podľa normy ISO 3166-1 alpha-2) podporovaných spoločnosťou TrustPay pre okamžité bankové prevody.

Kód Krajina
CZ Česká republika
SK Slovenská republika

Podporované jazyky

Zoznam jazykov (podľa normy ISO 639-1) podporovaných spoločnosťou TrustPay.

Kód Jazyk Podporované pre bankové prevody Podporované pre platby kartou
bgBulharskýÁnoNie
bsBosnianskyÁnoNie
csČeskýÁnoÁno
deNemeckýNieÁno
enAnglickýÁnoÁno
esŠpanielskyNieÁno
etEstónskyÁnoNie
hrChorvátskyÁnoÁno
huMaďarskýÁnoÁno
itTalianskyNieÁno
ltLitovskýÁnoNie
lvLotyšskýÁnoNie
plPoľskýÁnoÁno
roRumunskýÁnoÁno
ruRuskýÁnoÁno
skSlovenskýÁnoÁno
slSlovinskýÁnoÁno
srSrbskýÁnoNie
trTureckýÁnoNie
ukUkrajinskýNieÁno

Kódy výsledku (Result code)

Kód Názov Popis Vrátené cez
0 Success (Úspešná) Platba bola úspešne spracovaná. Po prijatí notifikácie, finančné prostriedky boli pripísané na účet obchodníka – obchodník môže bezodkladne poskytnúť tovar alebo poskytnúť služby presmerovania klienta, notifikácia obchodníka
1 Pending (Čakanie na schválenie) Platba mohla byť zaplatená, ale skutočný výsledok zatiaľ nie je známy (napríklad offline platba uskutočnená klientom alebo TrustPay stále čaká na notifikáciu od banky). presmerovania klienta
2 Announced (Nahlásená) TrustPay bol notifikovaný, že klient zadal platobný príkaz alebo uskutočnil platbu, je však potrebné ďalšie potvrdenie od tretej strany. Ďalšia notifikácia (s kódom výsledku 0 – úspešnosť) bude odoslaná, keď TrustPay prijme a spracuje platbu od tretej strany. Finančné prostriedky neboli pripísané na obchodnícky účet a neexistuje žiadna záruka, že budú. notifikácia obchodníka
3 Authorized (Autorizovaná) Platba bola úspešne autorizovaná. Ďalšia notifikácia (s kódom výsledku 0 – úspešnosť) bude odoslané, keď TrustPay prijme a spracuje platbu od tretej strany. V prípade platieb kartou už nebude odosielané žiadna ďalšia notifikácia a prostriedky budú pripísané na obchodnícky účet hromadnou platbou nasledujúci deň vyrovnania. Obchodník môže poskytnúť tovar alebo služby bezodkladne. notifikácia obchodníka
4 Processing (Prebieha spracovanie) TrustPay prijal platbu, ale musí byť interne spracovaná pred jej zúčtovaním na obchodnícky účet. Po úspešnom spracovaní platby bude zaslané ďalšia notifikácia (s kódom výsledku 0 – úspešnosť). Finančné prostriedky budú pripísané na obchodnícky účet neskôr. notifikácia obchodníka
5 AuthorizedOnly (Iba autorizovaná) Platba kartou bola úspešne predautorizovaná, ale nebola zúčtovaná. Na zúčtovanie platby je potrebná ďalšia API žiadosť. presmerovania klienta, notifikácia obchodníka
1001 Invalid request (Neplatná požiadavka) Niektoré parametre v žiadosti chýbajú alebo majú neplatný formát. presmerovania klienta
1002 Unknown account (Neznámy účet) Účet so zadaným ID sa nenašiel. Skontrolujte, či používate správne AID pre produkčné prostredie. presmerovania klienta
1003 Merchant account disabled (Obchodnícky účet bol deaktivovaný) Obchodnícky účet bol deaktivovaný. presmerovania klienta
1004 Invalid signature (Neplatný podpis) Overenie podpisu žiadosti zlyhalo. presmerovania klienta
1005 User cancel (Zrušená užívateľom) Zákazník zrušil platbu. presmerovania klienta
1006 Invalid authentication (Neplatné overenie) Žiadosť nebola správne overená. presmerovania klienta
1007 Insufficient balance (Nedostatočný zostatok) Požadovaná suma transakcie je vyššia ako disponibilný zostatok. presmerovania klienta
1008 Service not allowed (Služba nie je povolená) Službu nie je možné použiť alebo nebolo udelené povolenie na použitie danej služby. Ak dostanete tento kód, kontaktujte TrustPay, kde získate ďalšie informácie. presmerovania klienta
1009 Processing ID used (Spracovávanie použitého ID) Zadané ID spracovania už bolo použité. Vygenerujte nový PID pomocou servisného spojenia Nastavenie platby. presmerovania klienta
1010 Transaction not found (Transakcia sa nenašla) Transakcia so zadaným ID sa nenašla. presmerovania klienta, API odpovede
1011 Unsupported transaction (Nepodporovaná transakcia) Požadovaná akcia nie je pre transakciu podporovaná. presmerovania klienta, API odpovede
1014 Rejected transaction (Odmietnutá transakcia) Transakcia bola zamietnutá vydavateľom karty alebo platobnou bránou. presmerovania klienta
1100 General Error (Všeobecná chyba) Vyskytla sa interná chyba. Pre vyriešenie tohto problému, kontaktujte TrustPay. presmerovania klienta, API odpovede
1101 Unsupported currency conversion (Nepodporovaná konverzia meny) Prepočet mien pre požadované meny nie je podporovaný. presmerovania klienta

Kód výsledku nadobúdateľa karty

Kód Popis
100.100.303 Zamietnuté - platnosť karty vypršala
100.100.600 Zamietnuté - neplatný CVV
100.100.601 Zamietnuté - neplatný CVV
100.100.700 Zamietnuté - neplatné číslo karty
100.380.401 Zamietnuté - zlyhala autentifikácia 3DS
100.380.501 Zamietnuté - zlyhala autentifikácia 3DS
800.100.151 Zamietnuté - neplatné číslo karty
800.100.153 Zamietnuté - neplatný CVV
800.100.155 Zamietnuté - nedostatok finančných prostriedkov
800.100.157 Zamietnuté - neplatný dátum vypršania platnosti
800.100.161 Zamietnuté - príliš veľa neplatných pokusov
800.100.162 Zamietnuté - limit karty bol prekročený
800.100.163 Zamietnuté - limit karty bol prekročený
800.120.101 Zamietnuté - limit karty bol prekročený
800.120.200 Zamietnuté - limit karty bol prekročený
800.120.201 Zamietnuté - limit karty bol prekročený

Typ platby

Kód Popis
0 Nákup
1 Uložená karta (Card on File) – Registrácia
2 Uložená karta (Card on File) – Nákup
3 Opakované platby (recurring) – Počiatočná platba
4 Opakované platby (recurring) – Nasledujúca platba
5 Predautorizácia
6 Zúčtovanie (Capture)
9 Zaevidovaná karta – Predbežná autorizácia
8 Vrátenie platby

Aktualizácia API 2020 - SCA

Čo je SCA?

Silné overenie klienta/Strong Customer Authentication (SCA), ako súčasť smernice o platobných službách (PSD2) v Európskom hospodárskom priestore, vyžaduje zmeny v overovaní zákazníka pri online platbách. V záujme zvýšenia bezpečnosti online platieb bude potrebná nová verzia overenia zákazníka.

Čo znamená SCA pre vás?

Spoločnosť TrustPay upravila svoju platobnú bránu tak, aby vyhovovala novým regulačným požiadavkám SCA spôsobom, ktorý si bude vyžadovať čo najmenej zmien zo strany obchodníka. Od vás sa bude požadovať, aby ste nám zaslali ďalšie informácie o vašom zákazníkovi v platobných žiadostiach pre platby kartou a zvyšok vykoná TrustPay.

Aké zmeny musíte urobiť vo svojej integrácii?

V platobných žiadostiach pre platby kartou nám musíte poslať nasledujúce dodatočné políčka:

Názov Popis Formát
CardHolder Meno držiteľa karty Varchar(100)
BillingStreet Ulica a číslo fakturačnej adresy zákazníka Varchar(100)
BillingCity Mesto fakturačnej adresy zákazníka Varchar(80)
BillingPostcode Poštové smerovacie číslo fakturačnej adresy zákazníka Varchar(30)1
BillingCountry Krajina fakturačnej adresy zákazníka Char(2)
Email E-mail zákazníka Varchar(254)

1 Povolené sú iba alfanumerické znaky. Počas procesu platby sa môžu stratiť alebo zmeniť ďalšie znaky.

Ďalšie informácie nájdete v tejto časti našej integračnej príručky: Karty

Aký je posledný termín na aktualizáciu integrácie?

Mali by ste zabezpečiť, aby vaše systémy vyhovovali vyššie uvedeným zmenám do 1. októbra 2020. Ak svoju integráciu neaktualizujete, vydávajúce banky môžu zamietnuť vaše transakcie, v ktorých chýbajú nové povinné údaje.

This site uses cookies to provide you with a better browsing experience. By browsing TrustPay websites, you agree with using cookies. Find out more on how we use cookies here.