SecurePay 2.0

Borgun Secure Payment Page umožňuje obchodníkom predávať produkty bezpečne online s minimálnymi požiadavkami na integráciu. Poskytuje možnosť akceptovať platby bez nutnosti kontaktu s citlivými informáciami, pretože všetky kartové dáta sú vkladané priamo do zabezpečenej platobnej brány Borgun.

Platobný proces pozostáva z dvoch krokov. Na prvej stránke poskytne zákazník dáta o platobnej karte.

Payment page

Po úspešnom zrealizovaní platby je kupujúcemu zobrazený doklad o zrealizovanej platbe.

Receipt page

Technické informácie

Celá komunikácia medzi e-shopom a zabezpečenou platobnou stránkou Borgun je prostredníctvom HTTPS POST.

Production URL: https://securepay.borgun.is/securepay/default.aspx

Sandbox URL: https://test.borgun.is/securepay/default.aspx

Nižšie sú uvedené jednotlivé kroky procesu spracovania platby medzi e-shopom obchodníka a platobnou bránou Borgun:

  1. Inicializácia: internetový obchod presmeruje zákazníka na platobnú stránku Borgun, zašle informácie o obsahu nákupného košíka a platobnej metóde
  2. Zákazník má dve možnosti:
    • Zrušiť platbu kliknutím na tlačidlo Zrušiť čím dôjde k prerušeniu platby a automatickému návratu na URL špecifikovanú e-shopom pre tieto účely
    • Vyplniť dáta o platobnej karte a dokončiť platobnú operáciu
  3. Keď je platba úspešne dokončená, server Borgun zašle potvrdenie o platbe do internetového obchodu s návratovou URL poskytnutou e-shopom
  4. Zákazníkovi je zobrazený doklad o úhrade
  5. Po kliknutí na tlačidlo Späť do obchodu je zákazník presmerovaný na URL adresu dodanú pre tento účel e-shopom

Secret key, tajný kľúč, ktorý pozná iba obchodník a platobná brána, sa používa pre overenie, že HTTPS komunikácia prebieha medzi správnymi a oprávnenými stranami. Secret key sa nikdy neposiela priamo cez HTTPS, vždy je pridaný do HMAC podpisu a tak potvrdený nepriamo. Detailný popis, ako sa podpis tvorí nájdete v kapitole Parametre. HMAC podpis si môžete overiť na špecializovaných webových stránkach, napríklad http://www.freeformatter.com/hmac-generator.html

Nižšie je uvedený príklad HTML kódu:

<html xmlns="http://www.w3.org/1999/xhtml" lang="is" xml:lang="is">
<head>
<title>Webshop</title>
</head>
<body>
<form id="form1" action="https://test.borgun.is/SecurePay/default.aspx" method="post">
Merchantid : <input type="text" name="merchantid" value="9275444" /><br>
paymentgatewayid : <input type="text" name="paymentgatewayid" value="16" /><br>
checkhash : <input type="text" size=100 name="checkhash" value="90e2ace99591128b391811a0694bf2d4da8ea960ee088a75d12a415660f46790" /><br>
orderid : <input type="text" name="orderid" value="ORDER1230001" /><br>
currency : <input type="text" name="currency" value="ISK" /><br>
language : <input type="text" name="language" value="IS" /><br>
buyername : <input type="text" name="buyername" value="Agnar Agnarsson" /><br>
buyeremail : <input type="text" name="buyeremail" value="ba@borgun.is" /><br>
returnurlsuccess : <input type="text" size=100 name="returnurlsuccess" value="http://somedomain.is/ReturnPageSuccess?order_id=ORDER1230001" /><br>
returnurlcancel : <input type="text" size=100 name="returnurlcancel" value="http://somedomain.is/ReturnPageCancel.aspx" /><br>
returnurlerror : <input type="text" size=100 name="returnurlerror" value="http://somedomain.is/ReturnUrlError.aspx" /><br>
itemdescription_0 : <input type="text" name="itemdescription_0" value="Dekk" /><br>
itemcount_0 : <input type="text" name="itemcount_0" value="1" /><br>
itemunitamount_0 : <input type="text" name="itemunitamount_0" value="800.00" /><br>
itemamount_0 : <input type="text" name="itemamount_0" value="800.00" /><br>
amount : <input type="text" name="amount" value="800.00" /><br>
pagetype : <input type="text" name="pagetype" value="0" /><br>
skipreceiptpage : <input type="text" name="skipreceiptpage" value="0" /><br>
merchant logo : <input type="text" name="merchantlogo" value="https://www.b-payment.hu/docs/images/logo.jpg" /><br>
merchantemail : <input type="text" name="merchantemail" value="test@borgun.is" /><br>
<input type="submit" name="PostButton" />
</form>
</body>
</html>

Parametre

Funkcie / Obmedzenia

  • Borgun zabezpečená platobná stránka môže byť nakonfigurovaná tak, aby boli od držiteľa karty vyžadované údaje, ako sú e-mailová adresa, telefónne číslo alebo adresa trvalého bydliska.

    Extra fields

  • Ak je hodnota parametra skipreceiptpage nastavená na 1, tak nie je zobrazená stránka s potvrdením a zákazník je rovno presmerovaný na URL uvedenú v parametri returnurlsuccess. V tomto kroku musí obchodník sám zobraziť zákazníkovi potvrdenie o platbe.

  • Logo spoločnosti môže byť zobrazené na platobnej stránke nastavením platnej URL v parametri merchantlogo. Logo bude potom zobrazené v ľavom hornom rohu nad menom obchodníka. Obrázok musí byť k dispozícii prostredníctvom HTTPS protokolu, inak môže dochádzať k zobrazovaniu varovnej hlášky v prehliadači.

  • SecurePay používa sadu znakov unicode (UTF-8). Ak Váš web používa inú sadu znakov, napr. iso8859, potom je nutná znaková konverzia. Príklad konverzného kódu v .Net je nižšie

public static string iso8859ToUnicode(string src) 
{
Encoding iso = Encoding.GetEncoding("iso8859-1");
Encoding unicode = Encoding.UTF8;
byte[] isoBytes = iso.GetBytes(src);
byte[] unibytes = Encoding.Convert(iso,unicode,isoBytes);
char[] unichars = new char[iso.GetCharCount(unibytes,0,unibytes.Length)];
unicode.GetChars(unibytes,0,unibytes.Length,unichars,0);
return new string(unichars);
}
  • SecurePay podporuje Verified By Visa (VbV) a MasterCard SecureCode, žiadne technické zmeny nie sú potrebné k aktivácii týchto zabezpečení. Prosím zašlite požiadavku na aktiváciu na: info@b-payment.sk, uveďte webovú adresu a ID obchodníka (Merchant ID).

  • Desatinné čísla môžu byť posielané s bodkou alebo s čiarkou.

  • Každý pár MarchantId / PaymentGatewayId môže podporovať iba jednu menu. Ak je potrebná podpora viac ako jednej meny, musí web vedieť prepínať páry MerchantId/PaymentGatewayId v závislosti na mene. Za viac MerchantId/PaymentGatewayId sa neúčtuje žiadny poplatok.

Parametre zasielané e-shopom platobnej stránke

Názov Hodnota
Merchantid
Potrebný
ID obchodníka dodané spoločnosťou Borgun.
paymentgatewayid
Potrebný
ID platobnej brány dodané spoločnosťou Borgun; identifikuje platobnú metódu.
Orderid
Potrebný
ID objednávky generované e-shopom; zahrňuje sa do platobnej transakcie; maximálna dĺžka: 12 alfanumerických znakov; nesmú byť použité znaky rozšírenej znakovej sady.
reference
Voliteľný
Ľubovoľný text (string) vrátený s rovnakou hodnotou, s akou bol poslaný. Hlavnou funkciou je zjednodušenie adaptácie na systém obchodníka; slúži ako externé id objednávky.
checkhash
Potrebný
Podpis, ktorý je vytvorený spojením nasledujúcich parametrov s | ako oddeľovačom a použitím HMAC SHA256 v kombinácii s tajným kľúčom Secret key. MerchantId|ReturnUrlSuccess|ReturnUrlSuccessServer|OrderId|Amount|Currency (Secret key je vydaný spoločnosťou Borgun a je známy iba obchodníkovi a spoločnosti Borgun)
Viac v prílohe: HMAC value creation appendix.
amount
Potrebný
Finálny súčet; maximálne 2 desatinné čísla; Platné hodnoty napr.: 350 alebo 12.34 alebo 54,43.
currency
Potrebný
Kód meny; možné hodnoty: GBP, USD, EUR, DKK, NOK, SEK, CHF, CAD, HUF, BHD, AUD, RUB, PLN, RON, HRK, CZK, ISK. defaultná hodnota je ISK.
language
Potrebný
Jazyk platobnej stránky. V súčasnosti podporujeme tieto jazyky: Slovenský (SK) Český (CZ), Islandský (IS), Anglický (EN), Nemecký (DE), Francúzsky (FR), Ruský (RU), Španielsky (ES) Taliansky (IT), Portugalský (PT), Slovinský (SI), Maďarský (HU), Švédsky (SE), Holandský (NL), Poľský (PL), Nórsky (NO), Slovák (SK), Chorvátsky (HR), Srbský (SR), Rumunský (RO), Dánsky (DK), Fínsky (FI), Faerský (FO).
buyername
Voliteľný
Meno zákazníka, ak je prázdne, zákazník môže doplniť na platobnej stránke.
returnurlsuccess
Potrebný
URL pre presmerovanie zákazníka po úspešne zrealizovanej platbe.
returnurlsuccessserver
Podmienený
URL pre zaslanie notifikácie o úspešnej platbe zo servera, ak nie je parameter vyplnený, bude pre notifikáciu automaticky použitá URL v parametri returnurlsuccess.*
returnurlcancel
Voliteľný
URL pre presmerovanie zákazníka po zrušení platby, zákazník stlačil tlačidlo Zrušiť
returnurlerror
Voliteľný
URL pre presmerovanie zákazníka v prípade neočakávanej chyby.
pagetype
Voliteľný
Ak je nastavená hodnota ‘1’, budú od držiteľa karty vyžadované tieto informácie: e-mailová adresa, telefónne číslo, miesto trvalého bydliska. V tomto prípade musí byť nastavený aj parameter merchantemail, pretože na tento email sú obchodníkovi zasielané vyššie uvedené dáta.
merchantlogo
Voliteľný
Ak tento parameter obsahuje URL obrázku (100x100 pixelov), bude obrázok zobrazený v ľavej časti nad obchodníkovo meno. Dôležité: Ak nie je obrázok dostupný cez SSL protokol, IE zobrazí varovnú hlášku.
skipreceiptpage
Voliteľný
Ak je nastavená hodnota ‘1’, nie je zákazníkovi zobrazené potvrdenie o platbe. Zákazník je okamžite presmerovaný na URL uvedenú v parametri returnurlsuccess. V tomto prípade musí potvrdenie o platbe zákazníkovi zobraziť e-shop.
merchantemail
Voliteľný
Ak je vyplnený, je na túto adresu zaslaný e-mail s potvrdením o úspešnej platbe. Správa obsahuje informáciu o obchodníkovi a kupujúcom a obsahu nákupného košíka.
buyeremail
Voliteľný
Ak je vyplnené, je zákazníkovi zaslané e-mail o úspešnej platbe. Správa obsahuje informácie o obchodníkovi, kupujúcom a obsah nákupného košíka.
displaymode
Voliteľný
Ak je nastavené "iframe", platobná stránka je kompaktnejšieho vzhľadu a vhodná pre zobrazenie v iframes. Minimálna podporovaná šírka je 370px a maximum je 755px.
showadditionalbrands
Voliteľný
Ak je nastavené "false", nebudú sa zobrazovať iné logá okrem VISA a MasterCard.
Obsah nákupného košíka sa z pohľadu platobnej stránky skladá z jednej alebo viac položiek, pričom každý typ položky musí byť na novom riadku. Každý riadok sa potom skladá z jedného typu položky s množstvom, jednotkovou cenou a medzisúčtom za typ položky. Položky nákupného košíka sú zasielané s poradovým číslom. Číslovanie začína nulou a prírastok je 1. Každá sada parametrov predstavuje jeden riadok v nákupnom košíku.
Potrebný
Itemdescription_x
Potrebný
Popis položky, maximálna dĺžka: 80 znakov.
Itemcount_x
Potrebný
Počet položiek daného typu.
Itemunitamount_x
Potrebný
Cena za jednotku.
Itemamount_x
Potrebný
Medzisúčet za typ položky. itemamount = itemcount * itemunitamount

Parametre zasielané platobnou stránkou e-shopu

Platobná stránka môže ukončiť spracovanie platby v troch prípadoch:

  • Úspešná platba: zákazník je presmerovaný na URL nastavenú v parametri returnurlsuccess
  • Zrušenie platby zákazníkom: zákazník je presmerovaný na URL nastavenú v parametri returnurlcancel
  • Neočakávaná chyba: zákazník je presmerovaný na URL nastavenú v parametri returnurlerror

Úspešná platba

POZNÁMKA: Je vyslovene odporučené, aby obchodník verifikoval Orderhash, ktorý sa vráti zo serveru Borgun na returnurlsuccessserver, aby sa predišlo pokusom o podvody.

Ak je platba úspešná, zákazník je presmerovaný na url adresu definovanú v parametri returnurlsuccess s nasledujúcimi HTTP POST parametrami. Použitie je na rozhodnutí webu, ale je dôležité verifikovať Orderhash, aby sa zvalidovala správa o úspešnej platbe od spoločnosti Borgun.

Názov Hodnota
status „Ok“
orderhash Podpis, ktorý je vytvorený spojením nasledujúcich parametrov s | ako oddeľovačom a použitím HMAC SHA256 v kombinácii s tajným kľúčom secret key.
orderid|amount|Currency
(Secret key je vydaný spoločnosťou Borgun a je známy iba obchodníkovi a spoločnosti Borgun)
Viac v prílohe: HMAC value creation appendix.
orderid Číslo objednávky generované a zaslané e-shopom platobnej stránke počas inicializácie platby.
authorizationcode Autorizácia platby z Borgunu.
creditcardnumber Čiastočne maskované číslo platobnej karty (1234******1234).
step Borgun zasiela úspešnú správu do e-shopu v dvoch prípadoch. 1. Zákazník zrealizoval úspešnú platbu a Borgun zobrazil zákazníkovi potvrdenie o platbe. Dôležité: táto URL požiadavka prichádza zo serveru Borgunu, nie je dodaná zo strany zákazníka a nie je ani v rovnakej aktívnej session. 2. Zákazník stlačil tlačidlo ‘Späť do e-shopu’. Kroky sú označené nasledujúcimi hodnotami:
Platba: platba bola úspešne zrealizovaná. Pre ďalšie informácie viď oddiel C.
Potvrdenie: Zákazník sa vrátil z platobnej stránky späť do e-shopu.
ticket Iba v prípade, ak sa k platobnej stránke pristupovalo s použitím ticketu (viď Sekcia Ticket API). Tento parameter bude obsahovať identifikátor použitého ticketu.
buyername Iba v prípade, že bola vyžadovaná registrácia (pagetype = 1)
buyeraddress Iba v prípade, že bola vyžadovaná registrácia (pagetype = 1)
buyerzip Iba v prípade, že bola vyžadovaná registrácia (pagetype = 1)
buyercity Iba v prípade, že bola vyžadovaná registrácia (pagetype = 1)
buyercountry Iba v prípade, že bola vyžadovaná registrácia (pagetype = 1)
buyerphone Iba v prípade, že bola vyžadovaná registrácia (pagetype = 1)
buyeremail Iba v prípade, že bola vyžadovaná registrácia (pagetype = 1)
buyerreferral Iba v prípade, že bola vyžadovaná registrácia (pagetype = 1)
buyercomment Iba v prípade, že bola vyžadovaná registrácia (pagetype = 1)

Zrušenie

Ak zákazník stlačí tlačidlo Zrušenie, je presmerovaný na URL uvedenú v parametri returnurlcancel

Názov Hodnota
Status "Cancel"

Neočakávaná chyba

V prípade neočakávanej chyby je zákazník presmerovaný na URL uvedenú v parametri returnurlerror

Názov Hodnota
Status „Error“
errordescription Popis chyby pre zákazníka
errorcode Kód chyby.

V tomto prípade vráti testovacia verzia platobnej brány nasledovné parametre:

Názov Hodnota
errordetail Detaily chyby.
auditlog Dáta z auditu logu.

Odpoveď na notifikáciu o platbe

Ak parameter step obsahuje hodnotu „Payment“, tak preferovaná odpoveď od e-shopu by mala byť XML dokument, ktorý indikuje, že e-shop úspešne obdržal notifikáciu.

Štruktúra XML by mala byť nasledujúca:

<PaymentNotification>Accepted</PaymentNotification>

Ak je od e-shopu obdržaná táto odpoveď, je vytvorený záznam do logu, že e-shop úspešne obdržal notifikáciu o platbe. V opačnom prípade bude záznam v logu obsahovať iba informáciu, že notifikácia o platbe bola zaslaná e-shopu.

Ticket API

Borgun SecurePay systém poskytuje tiež rozhranie, ktoré generuje jedinečné tokeny pre každú objednávku. E-shop zasiela detaily o objednávke Ticket API, ktorá vráti unikátný reťazec (tzv. ticket), ktorý obsahuje detaily objednávky. Následne môže byť ticket zaslaný zákazníkovi vo forme jednoduchej URL adresy, ktorá otvorí priamo SecurePay stránku s kompletnými informáciami k objednávke.

Táto URL môže byť tiež vytvorená ručne na strane obchodníka.

Production URL: https://securepay.borgun.is/securepay/ticket.aspx

Sandbox URL: https://test.borgun.is/securepay/ticket.aspx

Ticket API podporuje všetky parametre platobnej stránky (Sekcia I.3.b). Nižšie uvedené parametre sú špecifické pre vytvorenie a obsluhu ticketov:

Názov Hodnota
TicketExpiryDate Ticket je platný to tohto dátumu. Ak nie je nastavené, ticket je platný po dobu dvoch mesiacov. Formát dátumu: dd.mm.rrrr.

Ticket API vráti správu v nasledujúcom formáte: ticket=ticket&ret=ret&message=message

Názov Hodnota
ticket Tento parameter bude obsahovať ticket, Ak je hodnota parametra ret nastavená na “True”.
ret Návratový kód. “True” ak bola objednávka úspešne spracovaná. “False” v prípade výskytu chyby.
Message Tento parameter bude obsahovať popis chyby v prípade, že parameter ret obsahuje hodnotu “False”.

V prípade používania ticketov musia byť tickety zasielané Ticket API ako GET parameter ?ticket=ticket, následne dôjde k presmerovaniu zákazníka na platobnú bránu.

Testovacie prostredie

Testovacie prostredie: https://test.borgun.is/SecurePay/default.aspx

merchantid: 9275444

paymentgatewayid: 16

secretkey: 99887766

Testovacie prostredie podporuje rovnaké parametre ako platobná stránka.

Suma testovacej transakcie musí byť medzi 10-1000 Eur alebo rovnaká suma v inej mene. Pre otestovanie errorstatus môže byť poskytnutá testovacia karta.

Nepoužívajte testovacie karty mimo testovacieho prostredia!

Transakcie v testovacom prostredí nebudú zúčtované!

Číslo karty: 4741 5200 0000 0003
Kód CVC: 000
Platnosť karty: akákoľvek
Meno: akékoľvek

Pre ďalšiu technickú podporu nám napíšte na web@b-payment.com

Vytvorenie HMAC

Pri vytváraní parametra CheckHash a verifikovaní parametra OrderHash byť použité kódovanie HMAC_SHA256. Proces funguje spojením tajného kľúča secret key a správy message a vytvorením hash použitím SHA256 kódovania, následné spojenie tajného kľúča secretkey a hash pomocou SHA256 kódovania vytvorí hodnotu HMAC.

HMAC_SHA256(secretkey, message) = SHA256(secretkey || SHA256(secretkey || message))

Kde message obsahuje dáta zakódovania. Napr.

CheckHashMessage = MerchantId|ReturnUrlSuccess|ReturnUrlSuccessServer|OrderId|Amount|Currency
OrderHashMessage = OrderId|Amount|Currency

Príklady:

SecretKey = "1234567890abcdef"
CheckHashMessage = "9123456|https://borgun.is|https://borgun.is/success|TEST00000001|100|ISK"
CheckHash value = "275dcb516773c96a1856550c1b2126f35d501c5dc1b0ba2f73fdf617cecb7461"

OrderHashMessage = "TEST00000001|100|ISK"
OrderHash value = "d605531aa71c833edb59651652161e7845933d2f7d44d3697bc336e493befd25"

POZNÁMKA: Ak nie je použitý parameter returnurlsuccessserver, tak parameter returnurlsuccess je použitý namiesto returnurlsuccessserver.

Niektorý z online HMAC validátorov môže byť použitý na verifikovanie výstupu vašej implementácie. Napr. https://www.freeformatter.com/hmac-generator.html.

POZNÁMKA: Nikdy nepoužívajte reálne ostré dáta pri použití online HMAC testovacích skriptov.

Nasledujú príklady HMAC implementácie v rôznych programovacích jazykoch:

C# použitie HMAC_SHA256

Príklad na použitie triedy HMACSHA256 class.

string secretKey = "1234567890abcdef";
string message = "9123456|https://borgun.is|https://borgun.is/success|TEST00000001|100|ISK";

byte[] secretBytes = Encoding.UTF8.GetBytes(secretKey);
HMACSHA256 hasher = new HMACSHA256(secretBytes);
byte[] result = hasher.ComputeHash(Encoding.UTF8.GetBytes(message));
string checkhash = BitConverter.ToString(result).Replace("-", "");

PHP

Príklad na použitie hash_hmac.

$secretKey = '1234567890abcdef';
$message = utf8_encode('9123456|https://borgun.is|https://borgun.is/success|TEST00000001|100|ISK');
$checkhash = hash_hmac('sha256', $message, $secretKey);

Python 2.7

Príklad na použitie hmac.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import hmac
import hashlib

secret_key = '1234567890abcdef'
message = u'9123456|https://borgun.is|https://borgun.is/success|TEST00000001|100|ISK'.encode('utf-8')
checkhash = hmac.new(secret_key, msg=message, digestmod=hashlib.sha256).hexdigest()

Python 3.4

Príklad na použitie hmac.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import hmac
import hashlib

secret_key = b'1234567890abcdef'
message = '9123456|https://borgun.is|https://borgun.is/success|TEST00000001|100|ISK'.encode(encoding='utf-8')
checkhash = hmac.new(secret_key, msg=message, digestmod=hashlib.sha256).hexdigest()

Ruby

Príklad na použitie OpenSSL::HMAC.

# encoding: utf-8

require 'openssl'

secret_key = '1234567890abcdef'
message = '9123456|https://borgun.is|https://borgun.is/success|TEST00000001|100|ISK'
digest  = OpenSSL::Digest.new('sha256')
checkhash = OpenSSL::HMAC.hexdigest(digest, secret_key, message)

Javascript

Príklad na použitie crypto-js a Node.

var crypto = require('crypto-js');

var secret_key = '1234567890abcdef';
var message = '9123456|https://borgun.is|https://borgun.is/success|TEST00000001|100|ISK';

var checkhash_data = crypto.HmacSHA256(message, secret_key);
var checkhash = crypto.enc.Hex.stringify(checkhash_data);

Java

Príklad na použitie Mac

import java.util.*;
import javax.crypto.*;
import javax.crypto.spec.*;
import javax.xml.bind.DatatypeConverter;

public class hmac {
    public static void main (String[] args) throws Exception {
        String secretKey = "1234567890abcdef";
        String message = "9123456|https://borgun.is|https://borgun.is/success|TEST00000001|100|ISK";
        byte[] secretKeyBytes = secretKey.getBytes("utf-8");
        byte[] messageBytes = message.getBytes("utf-8");

        SecretKeySpec signingKey = new SecretKeySpec(secretKeyBytes, "HmacSHA256");
        Mac mac = Mac.getInstance("HmacSHA256");
        mac.init(signingKey);
        byte[] checkhashBytes = mac.doFinal(messageBytes);
        String checkhash = DatatypeConverter.printHexBinary(checkhashBytes).toLowerCase();
    }
}

Logá

Všetky logá v1

Všetky loga v1JPG | 1080 x 380 pxStiahnutie

Všetky logá v2

Všetky loga v2JPG | 500 x 462 pxStiahnutie

Kartové logá

Card logosJPG | 1080 x 220 pxStiahnutie

Borgun logoPNG | 1048 x 289 pxStiahnutie

Maestro logoPNG | 1000 x 822 pxStiahnutie

MasterCard logoPNG | 1000 x 820 pxStiahnutie

MasterCard SecureCode logoPNG | 1000 x 304 pxStiahnutie

Visa logoPNG | 1280 x 813 pxStiahnutie

Visa Electron logoPNG | 1280 x 813 pxStiahnutie

Visa Electron logoPNG | 1280 x 552 pxStiahnutie

UnionPay logoJPG | 630 x 375 pxStiahnutie