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és után a vásárlónak a rendszer fizetési bizonylatot jelenít meg:
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:
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="a6abffd313b2c968969c9a936b8cca35e56380527eebf81e502c77f3ad58b1e4" /><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>
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.
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.
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 |
A fizetési oldal a feldolgozást három különböző esetben zárhatja le::
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) |
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 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 |
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.
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.
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: 998877669988776699887766
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!
Kártyaszám: 4741 5200 0000 0003
CVC: 000
Lejárat: bármi lehet
Név: bármi lehet
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.
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.
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:
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("-", "");
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);
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()
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()
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)
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);
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();
}
}
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.
A hash értékeket, a CheckHash-t és az OrderHash-t mostantól egyaránt HMAC SHA256 használatával kell generálni.
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.
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.
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ő.
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.
JPG | 1080 x 380 pxLetöltés
JPG | 500 x 462 pxLetöltés
JPG | 1080 x 220 pxLetöltés
PNG | 1048 x 289 pxLetöltés
PNG | 2235 x 637 pxLetöltés
AI | vektorosLetöltés
PNG | 1737 x 1308 pxLetöltés
AI | vektorosLetöltés
PNG | 1000 x 822 pxLetöltés
PNG | 1000 x 820 pxLetöltés
PNG | 1000 x 304 pxLetöltés
PNG | 1280 x 813 pxLetöltés
PNG | 1280 x 813 pxLetöltés
PNG | 1280 x 552 pxLetöltés
JPG | 630 x 375 pxLetöltés