SecurePay 2.0

A Borgun megújult biztonságos fizetési oldala lehetővé teszi, hogy a kereskedők termékeiket vagy szolgáltatásaikat az interneten értékesíthessék és azok ellenértékét bankkártyával fizethessék ki. A szolgáltatás igénybe vételéhez csak néhány órás informatikai háttérmunka szükséges. A kereskedőknek a kártyaadatok biztonságos tárolásáról sem kell gondoskodniuk, mivel a kártyainformációkat kizárólag a Borgun fizetési oldala kezeli.

A fizetési folyamat két lépésből áll. Az első oldalon a vásárló megadja kártyaadatait.

Fizetési oldal

Fizetés után a vásárlónak a rendszer fizetési bizonylatot jelenít meg:

Sikeres fizetés

Műszaki információk

A webshop és a Borgun biztonságos fizetési oldala közötti kommunikáció HTTPS POST segítségével történik.

Éles oldal URL: https://securepay.borgun.is/securepay/default.aspx

Teszt oldal URL: https://test.borgun.is/securepay/default.aspx

A kereskedői webshop és a Borgun között a következő folyamat megy végbe:

  1. A folyamat indítása: a webshop a vásárlót a Borgun fizetési oldalára irányítja, átadva a kosárra és a fizetés módjára vonatkozó információkat.
  2. A vásárló két művelet közül választhat:
    • A Mégsem gombra kattinthat, ekkor a webshop által erre az esetre megadott URL-re kerül vissza.
    • Megadhatja kártyaadatait, és végrehajthatja a fizetési tranzakciót.
  3. Amikor a fizetés lezárult, a Borgun szervere azonnal megerősítő üzenetet küld a webshopnak, a webshop által sikeres fizetés esetére megadott URL-re. (pl. www.webshop.hu/sikeresfizetes)
  4. A vásárlónál megjelenítésre kerül a fizetési bizonylat.
  5. A Vissza a boltba gombra kattintás után a vásárló visszakerül a webshop által erre a célra megadott URL címre.

Egy csak a kereskedő és a fizetési oldal által ismert titkos kulcs segítségével biztosítjuk, hogy a kommunikáció csak a megfelelő partnerek között történhessen. A kulcsot közvetlenül HTTPS protokoll segítségével sosem küldjük el, hanem HMAC aláírási funkcióba kerül, így csak közvetve kerül elküldésre. A Paraméterek című fejezetben találsz részletes leírást az aláírás létrehozásáról, az általunk használt HMAC funkció pedig online ellenőrizhető különféle oldalakon, például a http://www.freeformatter.com/hmac-generator.html oldalon.

A szükséges html kód például ilyen lehet:

<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>

Paraméterek

Funkciók és korlátozások

  • A Borgun biztonságos fizetési oldala beállítható úgy, hogy a kártyabirtokosoktól e-mail-címet, mobiltelefonszámot és lakcímet is kérjen.
    Extra mezők

  • Ha a skipreceiptpage paraméter értéke 1-re van állítva, a vásárlónál a bizonylatot nem jelenítjük meg, hanem a vásárlót közvetlenül a returnurlsuccess paraméterben megadott URL címre irányítjuk tovább. Ebben az esetben a bizonylatot a kereskedőnek kell megjelenítenie.

  • A kereskedő logója megjeleníthető a fizetési oldalon, ha érvényes URL szerepel a merchantlogo paraméterben. A logót a bal felső sarokban, a kereskedő neve fölött jelenítjük meg. Megjegyezzük, hogy ahhoz, hogy a böngészőben ne jelenjen meg figyelmeztető üzenet, a képet https protokollal kell elérhetővé tenni.

  • A Borgun biztonságos fizetési oldala UTF-8 karakterkódolást használ. Ha a webshop másik karakterkódolást alkalmaz, abban az esetben át kell konvertálni a karaktereket.

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);
}
  • A Borgun biztonságos fizetési oldala támogatja a Verified By Visa (VbyV) és MasterCard SecureCode rendszereket, nincs szükség változtatásokra a használatukhoz. Az aktivációhoz vegye fel velünk a kapcsolatot az: info@b-payment.hu címre és adja meg benne a weboldal címét és a MerchandID-t.

  • Tizedes jegyeket lehet vesszővel vagy ponttal elválasztva is küldeni.

  • Minden MerchantId és PaymentGatewayId pár egy devizával használható. Több deviza elfogadásához a webshopnak tudnia kell váltani a különböző devizákhoz tartozó MerchantId/PaymentGatewayId párok között. Több MerchantId/PaymentGatewayId használata nem jelent semmilyen plusz költséget.

Webshop által küldött paraméterek a fizetési oldalnak

Név Érték
Merchantid
Kötelező
A Borgun által kiadott Kereskedői Azonosító
paymentgatewayid
Kötelező
A Borgun által kiadott Fizetési Átjáró Azonosító, amely a fizetési módot azonosítja
Orderid
Kötelező
A webshop által generált megrendelésszám, amely szerepel a hitelkártyás tranzakcióban. Legfeljebb 12 alfanumerikus karakter lehet, a bővített karakterkészlet karakterei nem használhatóak.
reference
Opcionális
A hivatkozási szám bármilyen karaktersor lehet, azonos érték kerül visszaküldésre is. Fő funkciója, hogy külső megrendelés-azonosítóként egyszerűsítse a kereskedői rendszerhez való illeszkedést.
checkhash
Kötelező
Ezt a digitális aláírást az alábbi paraméterek összekapcsolásával, | elválasztó karakterrel, HMAC SHA256 titkosítással a tőlünk kapott secretkey segítségével hozzuk létre a checkhash-t.
MerchantId|ReturnUrlSuccess|ReturnUrlSuccessServer|OrderId|Amount|Currency
(A titkos kulcsot a Borgun adja ki, és ezt csak a kereskedő és a Borgun ismeri.)
HMAC melléklet
amount
Kötelező
A végösszeg, amely legfeljebb két tizedesjegyet tartalmazhat. Elfogadható értékek például: 350 vagy 54,43 vagy 12.34
currency
Kötelező
A választott pénznem kódja. Lehetséges értékek: GBP, USD, EUR, DKK, NOK, SEK, CHF, CAD, HUF, BHD, AUD, RUB, PLN, RON, HRK, CZK and ISK. Az alapbeállított érték az ISK.
language
Kötelező
A felhasználóknak megjelenített oldalak nyelve. Jelenleg a következő nyelveket támogatjuk: izlandi (IS), angol (EN), német (DE), francia (FR), orosz (RU), spanyol (ES) olasz (IT), portugál (PT), szlovén (SI), magyar (HU), svéd (SE), holland (NL), lengyel (PL), norvég (NO), cseh (CZ), szlovák (SK), horvát (HR), szerb (SR),román (RO), dán (DK), finn (FI) and feröeri (FO).
buyername
Opcionális
A vásárló neve. Ha nincs kitöltve, a vásárló adja meg a fizetési oldalon.
returnurlsuccess
Kötelező
Sikeres fizetés után ide irányítjuk a vásárlót.
returnurlsuccessserver
Feltételes
A szerver erre az URL-re küld értesítést a sikeres fizetésről. Ha ez a paraméter nem szerepel, a returnurlsuccess paraméternél megadott címet használjuk.*
returnurlcancel
Opcionális
Erre a címre irányítjuk a vásárlót, ha a fizetés véglegesítése helyett a Mégsem gombra kattint.
returnurlerror
Opcionális
Váratlan hiba esetén erre az oldalra irányítjuk a vásárlót.
pagetype
Opcionális
Választható paraméter. Ha 1-re van állítva, a kártyabirtokosoknak e-mail-címet, mobilszámot és lakcímet is meg kell adniuk. Ebben az esetben a merchantemail paramétert is be kell állítani, mivel a kártyabirtokosok adatait a kereskedő erre a címre kapja meg.
merchantlogo
Opcionális
Választható paraméter. Ha a merchantlogo paraméter egy kép (100x100 pixel) URL-jét tartalmazza, akkor az a bal oldalon, a kereskedő neve felett megjelenítésre kerül. Figyelem, az IE figyelmeztető üzenetet küld, ha a kép nem SSL protokollon keresztül érhető el.
skipreceiptpage
Opcionális
Választható paraméter. Ha 1-re van állítva, az adásvételről szóló elismervényt nem mutatjuk meg a vásárlónak, a böngészőt azonnal visszairányítjuk a returnurlsuccess paraméterben megadott címre. Ebben az esetben a kártyabirtokos számára a webshopnak kell megjelenítenie az elismervényt.
merchantemail
Opcionális
Választható paraméter. Ha szerepel az üzenetben, a sikeres fizetést követően erre a címre e-mail értesítést küldünk. Az üzenetben szerepelnek a kereskedő és a vásárló adatai, és a kosár tartalma.
buyeremail
Opcionális
Választható paraméter. Ha szerepel az üzenetben, a sikeres fizetést követően erre a címre e-mail értesítést küldünk. Az üzenetben szerepelnek a kereskedő és a vásárló adatai, és a kosár tartalma.
displaymode
Opcionális
Értéke lehet „iframe“, ekkor a fizetési oldal kompaktabb kivitelben jelenik meg, iframe-es megoldásokhoz igazítva. Minimum támogatott szélesség 370px, maximum 755px.
showadditionalbrands
Opcionális
Értéke lehet „false“, ekkor a fizetési oldalon csak a MasterCard, MaestroCard, Visa és Visa Electron logók jelennek meg.
A kosár tartalmát a fizetési oldal egy vagy több tételként látja, minden tételtípus új sorba kerül. Minden sor egy adott típusú tételt tartalmaz, mennyiséggel, egységárral és a sor alösszegével. A kosár tételei sorszámozva kerülnek elküldésre. A sorszámok 0-val kezdődnek és egyesével követik egymást. Egy paraméterkészlet a kosár tartalmából egy sornak felel meg.
Kötelező
Itemdescription_x
Kötelező
A tétel leírása, maximális hossza 80 karakter
Itemcount_x
Kötelező
A tétel darabszáma
Itemunitamount_x
Kötelező
A tétel egységára
Itemamount_x
Kötelező
A sor alösszege. itemamount = itemcount * itemunitamount

Fizetési oldal által küldött paraméterek a webshopnak

A fizetési oldal a feldolgozást három különböző esetben zárhatja le::

  • sikeres fizetés, a vásárlót visszairányítjuk a returnurlsuccess paraméterben megadott címre;
  • a vásárló törli a vásárlást, visszairányítjuk a returnurlcancel paraméterben megadott címre;
  • váratlan hiba történt, a vásárlót visszairányítjuk a returnurlerror paraméterben megadott címre.

Sikeres fizetés

FIGYELEM: Erősen ajánlott a kereskedőnek, hogy leellenőrizze a szerverek közt (returnurlsuccessserver paraméterben megadott címre) Borguntól visszakapott orderhash értékét, ezzel elkerülve a csalás lehetőségét.

Ha a fizetési tranzakció sikeres volt, a vásárlót a returnurlsuccess paraméterben szereplő URL címre irányítjuk tovább, az alábbi HTTP POST paraméterekkel. Az adatok felhasználása már a webshop felelőssége, de az orderhash érték ellenőrzése fontos, mert így győződhetnek meg róla, hogy a sikeres fizetésről szóló üzenet valóban a Borguntól érkezett.

Név Érték
status Értéke „Ok“
orderhash Ezt a digitális aláírást az alábbi paraméterek összekapcsolásával, | elválasztó karakterrel, HMAC SHA256 titkosítással a tőlünk kapott secretkey segítségével hozzuk létre a checkhash-t.
orderid|amount|Currency
(A titkos kulcsot a Borgun adja ki, és ezt csak a kereskedő és a Borgun ismeri.)
HMAC melléklet
orderid A fizetési tranzakció előkészítése során a webshop által generált, és a fizetési oldalnak elküldött rendelésszám
authorizationcode A tranzakciót engedélyező kód a Borguntól
creditcardnumber Részben kitakart hitelkártyaszám (1234-**-1234)
step A Borgun két alkalommal küld sikeres műveletről üzenetet a webshopnak.
Először akkor, amikor a vásárló sikeresen fizetett és a Borgun megjelenítette számára a fizetési bizonylatot. Figyelem, ez az URL-kérés a Borgun szerveréről érkezik, a vásárló böngészője nem továbbítja, ezért nem is ugyanabban az aktív munkamenetben szerepel.
Másodszor akkor, amikor a vásárló rákattint a választható Vissza a boltba gombra.

A lépéseket az alábbi értékek azonosítják:
„Payment”: A fizetési tranzakció lezárult. További információkért ld. a C szakaszt
„Confirmation”: A vásárló a fizetési oldalról visszatért a webshop oldalára.
ticket Akkor szerepel, ha a fizetési oldalt fizetési hivatkozás segítségével keresték fel. A paraméter tartalmazza a felhasznált fizetési hivatkozás azonosítóját.
buyername Csak ha regisztrációt kértek (pagetype = 1)
buyeraddress Csak ha regisztrációt kértek (pagetype = 1)
buyerzip Csak ha regisztrációt kértek (pagetype = 1)
buyercity Csak ha regisztrációt kértek (pagetype = 1)
buyercountry Csak ha regisztrációt kértek (pagetype = 1)
buyerphone Csak ha regisztrációt kértek (pagetype = 1)
buyeremail Csak ha regisztrációt kértek (pagetype = 1)
buyerreferral Csak ha regisztrációt kértek (pagetype = 1)
buyercomment Csak ha regisztrációt kértek (pagetype = 1)

Visszamondott fizetés

Ha a vásárló a Mégsem gombra kattint, akkor a returnurlcancel paraméterben megadott címre irányítjuk tovább.

Név Érték
Status Értéke "Cancel"

Váratlan hiba

Váratlan hiba esetén a vásárlót a returnurlerror paraméterben megadott címre irányítjuk tovább.

Név Érték
Status Értéke „Error“
errordescription A vásárló számára megjelenített hibaleírás
errorcode Hibakód

A fizetési oldal tesztváltozata további paramétereket is visszaküld ebben az esetben:

Név Érték
errordetail A hiba részletei

A fizetési értesítésre adandó válasz

Ha a step paraméter értéke ’Payment’, a webshop küldhet egy XML dokumentumot, amely jelzi, hogy a webshop sikeresen megkapta az értesítést.

Az XML struktúrája a következő legyen:

<PaymentNotification>Accepted</PaymentNotification>

Amikor ez a válasz beérkezik a webshoptól, az ellenőrzési naplóba bekerül egy feljegyzés, hogy a fizetési értesítést a webshop megkapta. Ellenkező esetben az ellenőrzési naplóba kerülő bejegyzésben csak az szerepel, hogy a fizetési értesítést a webshopnak elküldtük.

Fizetési hivatkozás API

A Borgun SecurePay rendszere biztosít egy másodlagos felületet is, amely minden egyes megrendeléshez létrehoz egy egyedi tokent. A webshop a megrendelés részletes adatait feladja a Fizetési hivatkozás API-nak, az pedig egy egyedi karaktersort (ún. fizetési hivatkozást) küld vissza, amely a megrendelés részleteire hivatkozik. A fizetési hivatkozás ezután egyszerű URL formájában elküldhető a vásárlónak, aki azzal a megrendelés információit már tartalmazó SecurePay oldalt tudja közvetlenül megnyitni.

A fizetési hivatkozást kézzel is el lehet készíteni a B-Online felületén.

Éles oldal URL: https://securepay.borgun.is/securepay/ticket.aspx

Teszt oldal URL: https://test.borgun.is/securepay/ticket.aspx

A Fizetési hivatkozás API a fizetési oldal összes paraméterét támogatja. Az alábbi paraméterek csak a fizetési hivatkozások létrehozására és ellenőrzésére valók:

Név Érték
TicketExpiryDate A fizetési hivatkozás eddig a napig lesz érvényes. Ha a TicketExpiryDate paramétert nem adják meg, a fizetési hivatkozás két hónapig marad érvényben. Dátumformátum: nn.hh.éééé.

A Fizetési hivatkozás API a következő formátumú üzenetet küldi vissza:ticket=ticket&ret=ret&message=message

Név Érték
ticket Ez a paraméter akkor tartalmaz Fizetési hivatkozást, ha a ret paraméter értéke „True”
ret Visszaküldési kód. „True”, ha a megrendelés sikeresen feldolgozásra került, „False” ha hiba történt.
Message Ez a paraméter a hiba leírását tartalmazza, ha a ret paraméter értéke „False”.

A fizetési hivatkozás felhasználásakor azt GET paraméterként (?ticket=ticket) kell elküldeni a Fizetési hivatkozás API-nak, ekkor az API a vásárlót átirányítja a fizetési oldalra.

Teszt környezet

A teszt felület címe: https://test.borgun.is/SecurePay/default.aspx

Kereskedői azonosító / merchantid: 9275444

Fizetési átjáró azonosító / paymentgatewayid: 16

Titkos kód / secretkey: 99887766

Minden egyéb paraméter ugyanúgy működik a teszt környezeten, mint az éles fizetési oldalon.

Tesztkártyaszám kérhető, minden teszt környezetben létrejövő tranzakció érvénytelen. A tesztelhető tranzakció értékének 10-1000 ISK között kell lennie vagy ennek megfelelő értékű az adott devizában. Opcionálisan tesztkártya adatok kérhetőek a különböző hibaüzenetek teszteléséhez.

A tesztkártya adatait ne használja a tesztkörnyezeten kívül.

A teszt környezetben végbemenő teszt tranzakciók nem jelentenek valós pénzmozgást!

Sikeres fizetés tesztelése

Kártyaszám: 4741 5200 0000 0003
CVC: 000
Lejárat: bármi lehet
Név: bármi lehet

Sikertelen fizetés tesztelése

Kártyaszám: 4155 5200 0000 0002
CVC: 121
Lejárat: bármi lehet
Név: bármi lehet

Technikai kéréssel kapcsolatban vegye fel velünk a kapcsolatot a web@b-payment.com címen.

Éles környezet

Az éles felület címe: https://securepay.borgun.is/SecurePay/default.aspx

Kereskedői azonosító / merchantid: szerződéskötés után kapott azonosító

Fizetési átjáró azonosító / paymentgatewayid: szerződéskötés után kapott azonosító

Titkos kód / secretkey: szerződéskötés után kapott azonosító

Minden egyéb paraméter ugyanúgy működik a éles környezetben, mint az teszt fizetési oldalon.

Éles környezetben csak éles, valódi kártyával lehet fizetni.

Technikai kéréssel kapcsolatban vegye fel velünk a kapcsolatot a web@b-payment.com címen.

HMAC generálása

A CheckHash paraméter generálásakor és az OrderHash paraméter ellenőrzésekor HMAC_SHA256 használandó. A folyamat során összekapcsoljuk a secretkey-t és az message-et és létrehozunk egy hash-t SHA256-ot használva, így generáljuk le a HMAC értékét.

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

ahol a message tartalmazza a hash-elésre szánt adatot. Például:

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

Példák

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

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

FIGYELEM: Ha a returnurlsuccessserver paraméter nincs megadva, a returnurlsuccess paraméter értéke van használva returnurlsuccessserver-ként.

Bármilyen online HMAC generátor használható ellenőrzés céljából. Például: https://www.freeformatter.com/hmac-generator.html.

FIGYELEM: Soha ne használjon érzékeny információkat, amikor online HMAC generátorokkal tesztel.

HMAC implementációkra példák különböző programnyelveken:

C# HMAC_SHA256-ot használva

Példa HMACSHA256 class használatával.

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

Példa hash_hmac használatával.

$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

Példa hmac használatával.

#!/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

Példa hmac használatával.

#!/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

Példa OpenSSL::HMAC használatával.

# 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

Példa crypto-js és Node használatával.

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

Példa Mac használatával

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();
    }
}

Frissítés korábbi verziókról

A megújult SecurePay néhány új funkciója a korábbi integrációk kisebb módosítását igényli. A megújult SecurePay kialakítása során nagy hangsúlyt fektettünk a szolgáltatás biztonságára, az új funkciókat egy biztonságtechnikai cég ajánlásainak figyelembe vételével alakítottuk ki. Az új beállításokat rövid munkával, egyszerűen az alábbi lépéseket követve tudod végrehajtani. Amennyiben ezekkel kapcsolatban további kérdésed merül fel, fordulj hozzánk bizalommal a web@b-payment.com email címen.

HMAC használata a hash generálásához

A hash értékeket, a CheckHash-t és az OrderHash-t mostantól egyaránt HMAC SHA256 használatával kell generálni.

CheckHash

A CheckHash paraméter, amit a fizetési oldal számára küld a webshop, mostantól HMAC segítségével kell generálni MD5 helyett.

Korábbi Checkhash:

Checkhash = MD5(Merchantid + returnurlsuccess + secretkey)

Jelenlegi Checkhash:

CheckHashMessage = MerchantId|ReturnUrlSuccess|ReturnUrlSuccessServer|OrderId|Amount|Currency
Checkhash = HMAC256(secretkey, CheckHashMessage)

Példa:

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

FIGYELEM: Ha a returnurlsuccessserver paraméter nincs megadva, akkor a returnurlsuccess paraméterben megadott cím van használva a returnurlsuccessserver-ként, tehát kétszer szerepel a returnurlsuccess a checkhash message-ben:
CheckHashMessage = MerchantId|ReturnUrlSuccess|ReturnUrlSuccess|OrderId|Amount|Currency

FIGYELEM: Minden stringből trimmelni kell a whitespace-t.

FIGYELEM: A CheckHashMessage-ben használt Amount értékének pontosan ugyanannyinak kell lennie, mint az elküldött Amount paraméter értékének.

Kód példák a HMAC mellékletben találhatóak.

OrderHash

Az OrderHash paraméter-t a Borgun küldi a webshopnak, fontos, hogy a webshop leellenőrizze a kapott OrderHash értékét a csalások elkerülése érdekében.

Korábbi OrderHash:

Orderhash = MD5(orderid + amount + secretkey)

Jelenlegi OrderHash:

OrderHashMessage = OrderId|Amount|Currency
OrderHash = HMAC256(secretkey, OrderHashMessage)

Példa

SecretKey = "1234567890abcdef"
OrderHashMessage = "TEST00000001|100|ISK"
OrderHash értéke = "d605531aa71c833edb59651652161e7845933d2f7d44d3697bc336e493befd25"

Kód példák a HMAC mellékletben találhatóak.

Gyakran ismételt kérdések

Firefox biztonsági figyelmeztetés eltüntetése a fizetési oldal használatakor

A Firefox böngésző a következő figyelmeztetést adhatja, amikor a fizetési oldalról visszairányít minket a webshop oldalára:

Ennek oka, hogy a fizetési oldal biztonságos kapcsolaton keresztül tölt be (https), a webshop viszont sima http protokollt használ, ezért figyelmeztet minket a böngésző, hogy nem biztonságos kapcsolatra váltunk. Ez abban az esetben fordul elő, ha a webshopnak nincsen SSL tanúsítványa, amely bármilyen weboldal számára beszerezhető.

POST hívások sikeres fizetés esetén

A fizetési oldal kétszer küld üzenetet a webshopnak:

1. Amikor a vásárló rányom a Fizetés gombra, akkor a returnurlsuccessserver paraméterben megadott (vagy ha nincs külön ilyen paraméter, akkor a returnurlsuccess paraméter) URLre küld egy POST hívást a következő paraméterekkel, hasonló tartalommal:

Array
(
[status] => OK
[orderhash] => 2525678a7ce54ff0cfd3d3841608cd01061f762bf1b8e427951937789f5416c0
[orderid] => ORDER1230001
[authorizationcode] => 123456
[creditcardnumber] => 474152******0003
[reference] => 25
[step] => Payment
)

2. Amikor a vásárló a Vissza a bolthoz gombra nyom, vagy a Fizetés gomb megnyomása után automatikusan visszairányítódik a webshopba (akkor automatikus a visszairányítás, ha a skipreceiptpage paraméter értéke 1), akkor a returnurlsuccess paraméterben megadott URLre irányítódik vissza a következő paraméterekkel, hasonló tartalommal rendelkező POST hívással:

Array
(
[orderid] => ORDER1230001
[orderhash] => 2525678a7ce54ff0cfd3d3841608cd01061f762bf1b8e427951937789f5416c0
[authorizationcode] => 123456
[creditcardnumber] => 474152******0003
[customField] =>
[ticket] =>
[buyername] => aaa
[buyeraddress] =>
[buyerzip] =>
[buyercity] =>
[buyercountry] =>
[buyerphone] =>
[buyeremail] => it@b-payment.hu
[buyerreferral] =>
[buyercomment] =>
[merchantid] => 9275444
[amount] => 400
[currency] => HUF
[reference] => 25
[status] => OK
[step] => Confirmation
)

Mivel sokszor a vásárlók nem mennek vissza a boltba, vagy esetenként bezárják a Fizetés gomb megnyomása után a böngészőt, érdemes a [step] => Payment adatot is feldolgozni és lezárni a kosarat az alapján.

Logók

Összes logó v1

Összes logó v1JPG | 1080 x 380 pxLetöltés

Összes logó v2

Összes logó v2JPG | 500 x 462 pxLetöltés

Kártya logók

Kártya logókJPG | 1080 x 220 pxLetöltés

Borgun logóPNG | 1048 x 289 pxLetöltés

B-Payment logóPNG | 2235 x 637 pxLetöltés

AI | vektorosLetöltés

B-Payment logóPNG | 1737 x 1308 pxLetöltés

AI | vektorosLetöltés

Maestro logóPNG | 1000 x 822 pxLetöltés

MasterCard logóPNG | 1000 x 820 pxLetöltés

MasterCard SecureCode logóPNG | 1000 x 304 pxLetöltés

Visa logóPNG | 1280 x 813 pxLetöltés

Visa Electron logóPNG | 1280 x 813 pxLetöltés

Visa Electron logóPNG | 1280 x 552 pxLetöltés

UnionPay logóJPG | 630 x 375 pxLetöltés