Heureka Marketplace – API

API slúži na previazanie nákupného radcu Heureka.sk s obchodmi zapojenými do služby Marketplace.

API má RESTful architektúru a snaží sa využívať všetky možnosti HTTP. Využíva plnohodnotne metódy GET, POST a PUT.
Odpovede na HTTP požiadavky sú vrátené vo formáte JSON.

Komunikácia medzi obchodom a Heurekou môže fungovať obojstranne, preto má API dve časti. Jedna časť je na strane obchodu a druhá na strane Heureky. Sú rovnako dôležité a odporúčame mať implementované obe časti.

API na strane obchodu slúži k získavaniu aktuálnych informácií o ponúkaných produktoch – dostupnosti, možnosti dopravy apod. Druhá časť slúži k tomu, aby obchod mohol posielať Heureke napr. informácie o stave objednávky.

API vyžaduje zabezpečené spojenie pomocou SSL (https). Dôležitá je taktiež rýchlosť odozvy API.

Po novom môžete využiť HCAPI – nástroj určený na jednoduchšie napojenie na Marketplace API.

Changelog

Celý changelog nájdete tu

API Obchodu

Základná štruktúra volania požiadaviek

  • verzia_api – verzia API, ktorá je využívaná (momentálne verzia 1)
  • oblasť – oblasť volania
  • akcia – príslušná akcia k oblasti

Pre testovanie vášho API môžete využiť testovacie prostredie, ktoré nájdete v administrácii obchodu v časti Marketplace -> Nastavenie Marketplace API. Po prihlásení do správy e-shopu tu.
Alebo v časti Marketplace -> MP testing tu.

Na stránke si môžete vyskúšať ako Heureka volá vaše API a skontrolovať, či sú vaše odpovede správne.

V Heureka administrácii pod záložkou “Marketplace -> Nastavenie Marketplace API” následne vložte jednotlivé API URL do príslušných polí.

Metódy API

GET products/availability

Informácie

Metóda vracia aktuálne dáta o požadovaných produktoch.

URL
Vstupné parametre
products arraypole s produktami
id stringID produktu (ITEM ID)
count integerpočet objednávaných kusov (vždy väčší než 0)

Odpoveď

Štruktúra odpovede

products arraypole s produktami
id stringID produktu (ITEM ID)
count integerpočet objednávaných kusov (vždy väčší než 0)
available booleanje produkt dostupný? (false pokiaľ produkt nemožno v žiadnom prípade objednať, inak true)
delivery integer | stringpočet dní do odoslania (číselník), pokiaľ obchod nedisponuje číselnou hodnotou, môže uviesť textovú variantu napr. „na vyžiadanie“, „do 2 dní“.
name stringnázov produktu (max. 255 znakov)
price floatcena tovaru za kus (vrátane DPH a všetkých poplatkov)
related array [nepovinné]súvisiace položky k produktu
(Ide o určitú pridanú hodnotu k produktu, ktorá nemá vplyv na cenu.)
title stringpopis položky
priceTotal floatcelková cena produktu (počet × cena)
priceSum floatcelková cena (za všetky produkty)

Príklad

HTTP požiadavka

Na volanie URL je použitý nástroj cURL.

Odpoveď

Najčastejšie otázky

Tovar už obchod nepredáva. Ako má vyzerať odpoveď?

Vráťte v available hodnotu false.

Tovar obchod predáva, ale nevie za ako dlho je schopný tovar dodať. Ako má vyzerať odpoveď?

available musí byť true a v delivery hodnota -1 alebo iný vhodný textový popis. Všeobecne platí, že čo je v XML feede to musí obchod umožniť kúpiť aj na Heureke.

Zákazník požaduje 3 kusy položky, ale obchod má len dva. Ako má vyzerať odpoveď?

count uveďte hodnotu 2. Zákazník bude na túto skutočnosť upozornený.

Zákazník požaduje 3 kusy, obchod má 2 skladom a 1 dorazí až za 5 dní. Ako má vyzerať hodnota delivery?

Hodnota delivery musí byť najhoršia možná, teda pokiaľ je obchod schopný dodať všetky 3 kusy, bude hodnota 5.

Zákazník požaduje 1 kus položky, ale obchod má k dispozícii 10. V count teda obchod uvedie 10?

Nie. Hodnota count musí byť max. počet kusov ktoré zákazník požaduje.

GET payment/delivery

Informácie

Vráti možnosti dopravy a platby. Napr. to, že tovar je možné dodať pomocou Slovenskej pošty, alebo PPL s možnosťou dobierky.

Každý zapojený obchod zašle prostredníctvom API akým spôsobom expeduje tovar zákazníkovi. Jeden z týchto spôsobov si zákazník zvolí. Pokiaľ zákazník zvolí platbu vopred (platba kartou), tak platbu zaisťuje Heureka pomocou služby Adyen. A nezáleží na tom, či obchod takúto platbu podporuje alebo nie.
Pri dobierke, kde je platba na strane obchodu, je situácia iná. Tu Heureka naprosto rešpektuje možnosti obchodu a zobrazí ich tak zákazníkovi. To znamená, že pokiaľ obchod nepodporuje dobierku, nebude zákazníkovi ponúknutá.

V parametri binding obchod určí akým spôsobom je daná platba viazaná na spôsob doručenia. Napr. že „platba v hotovosti pri prevzatí“ je viazaná na spôsob doručenia „osobný odber na pobočke v Bratislave“.

Obchod nepodporuje platbu kartou

Pokiaľ si zákazník zvolí platbu kartou a obchod tento variant nepodporuje, tak sú zákazníkovi zobrazené všetky spôsoby dopravy nezávisle na väzbách uvedených v binding.

Predpokladá sa, že obchod je po zaplatení tovaru schopný zákazníkovi doručiť tovar všetkými ponúknutými možnosťami.

Identifikácia pobočiek

Parameter store slúži k jasnej identifikácii pobočky, kde si možno vyzdvihnúť objednávku. Rozlišujú sa dva typy a to vlastné pobočky / výdajné miesta obchodu.

Vlastné pobočky musia mať správne ID, ktoré je používané taktiež v rámci XML Dostupnostného feedu. Nájdete ho v administrácii pobočiek. Pre vlastné pobočky ide o Depot ID pre dostupnostný XML súbor.

Parameter store má význam len pri osobných odberoch na pobočkách či výdajných miestach. Pri ostatných možnostiach ich neposielajte.

URL
Vstupné parametre
products arraypole s produktami
id stringID produktu (ITEM ID)
count integerpočet objednávaných kusov

Odpoveď

Štruktúra odpovede

transport arraydoprava
id integerID dopravy
type integertyp dopravy (číselník)
name stringnázov dopravy
price floatcena
description stringpopis
storeidentifikácia pobočky
type integertyp pobočky / výdajného miesta (číselník)
id integerID pobočky pre Osobný odber (z feedu alebo administrácie) alebo ID obchodu („shopId“) / ID dopravca („shipperId“) pre DepotAPI.
payment arrayplatba
id integerID platby
type integertyp platby (číselník)
name stringnázov platby
price floatcena
binding arraypole väzieb medzi dopravou a platbou
id integerID väzby
transportId integerID dopravy
paymentId integerID platby

Príklad

HTTP požiadavka

Na volanie URL je použitý nástroj cURL.

Odpoveď

Najčastejšie otázky

Na čo slúžia väzby?

Väzby sú dôležité na to, aby sme mohli zákazníkovi správne zobraziť k vybranej platbe dostupné dopravy.

Musí obchod posielať platby kartou a k ním väzby na dopravu, keď sú vo vašej réžii?

Platbu kartou (a ďalšie online platby) zaisťuje Heureka pomocou Adyen, takže by sa mohlo zdať, že nie sú potrebné informácie od vás o platbe kartou. To do istej miery nie je tak. Pokiaľ ich nepošlete nič sa nedeje, my príslušné väzby vygenerujeme sami. Ale pokiaľ ich posielate, tak my vám pri objednávke pošleme konkrétne ID platby a dopravy, ktoré si nakupujúci vybral. Môže si ich teda obchod správne spárovať vo svojom shopsystéme.

Dva kusy položiek má obchod na sklade a môže ich dodať hneď, ale zákazník chce tri kusy, ale ten tretí bude mať obchod až za päť dní. Ako má vyzerať hodnota v delivery?

V hodnote delivery musí byť taká hodnota, za ktorú je obchod schopný dodať kompletnú objednávku. V tomto prípade teda päť.

Ako posielať Slovenskú poštu s dobierkou a bez dobierky?

Je tu nutné rozlišovať dve veci. Slovenská pošta je možnosť dopravy a dobierka je platba, tieto dve veci je nutné spojiť pomocou väzieb. Chybou by bolo keby sa možnosť platby dobierkou alebo predom rozlišovalo v transport.

Ukážka správneho postupu:

GET order/status

Informácie

Vráti stav objednávky v obchode.

URL
Vstupné parametre
order_id integerID objednávky

Odpoveď

Štruktúra odpovede

order_id integerID objednávky
status integeraktuálny stav objednávky (číselník)

Príklad

HTTP Metódy API

Na volanie URL je použitý nástroj cURL.

Odpoveď

Nejčastejšie otázky

Ako často sa používa táto požiadavka?

Na stav objednávky sa automaticky pýtame niekoľkokrát denne. Obvykle to býva ráno, okolo poludnia a popoludní.

POST order/send

Informácie

Odoslanie objednávky do obchodu.

Po odoslaní by malo dôjsť v obchode k rezervácii tovaru a začať proces expedície (pokiaľ je objednávka zaplatená alebo je na dobierku).

V prípade osobného odberu od zákazníka povinne vyžadujeme iba polia meno, priezvisko, e-mail a telefónne číslo. Zákazník má možnosť vyplniť svoju fakturačnú adresu, ak tak ale nevykoná, zasielame cez API vo fakturačných údajoch nasledovnú adresu:

Osobný odber
Ulica č. p.: Osobný odber 1
Mesto: Bratislava
PSČ: 81103
Štát: Slovenská republika

Poznámka – význam deliveryId a paymentId

Aby mohol obchod rozoznať akú platbu a dopravu si zákazník vybral sú posielané ich ID, ktoré boli zaslané obchodom v metóde payment/delivery.

Môže sa stať, že obchod v metóde payment/delivery neposiela (obchod ju nepodporuje) napr. platbu pomocou platobnej karty, napriek tomu si ju používateľ môže vybrať, pretože tento variant platby je nezávislý na obchode (zaisťuje ju Heureka). V tomto prípade nie je k dispozícii hodnota pre paymentId. V paymentId tak bude zaslaná hodnota 0. Pokiaľ však už platba s paymentId 0 existuje, bude použité najvyššie dostupné paymentId zvýšené o 1.

Príklady:

Príklad odpovedepaymentId pre bankový prevodpaymentId pre platbu kartou
{ „transport“: …, „payment“:[ { „id“: 200, „type“:1, „price“: 33.00, „name“: „Dobírka“ }, { „id“: 300, „type“: 2, „price“: 10.00, „name“: „Platba při převzetí“ }], „binding“: … }0301
{ „transport“: …, „payment“:[ { „id“: 200, „type“:1, „price“: 33.00, „name“: „Dobírka“ }, { „id“: 0, „type“: 2, „price“: 10.00, „name“: „Platba při převzetí“ }], „binding“: … }201202
{ „transport“: …, „payment“:[ { „id“: 200, „type“:1, „price“: 33.00, „name“: „Dobírka“ }, { „id“: 300, „type“: 3, „price“: 10.00, „name“: „Platba kartou“ }], „binding“: … }0300
Výdajné miesta ponúkané dopravcami

Pokiaľ zákazník zvolí dopravu na výdajné miesto zaslané cez DepotAPI je v dodacej adrese vyplnená adresa vybraného výdajného miesta.

Poznámka k významu parametru eLicence

Parameter eLicence označuje, že objednávka obsahuje produkt s elektronickou licenciou – tieto produkty využívajú elektronickú distribúciu, teda nie klasickú dopravu. V prípade, že objednávka neobsahuje produkt s klasickou dopravou, je deliveryId zvolené z najvyššieho deliveryId z metódy GET payment/delivery, ktoré inkrementujeme o 1 (napr. ak je najvyššia deliveryId 5, pre eLicence bude 6)

Url
Vstupné parametre
products arrayobjednané produkty
id stringID produktu (ITEM ID)
count integerpočet kusov
price floatcena, za ktorú zákazník produkt objednal (za kus)
totalPrice floatcelková cena (počet kusov x cena)
params arrayvybrané parametre
id integerID parametra
value stringhodnota parametra
gifts arrayDarčeky ponúkané k produktu (z XML)
name stringnázov darčeka
shopGiftId string|nullID darčeku dodané obchodom v XML
productsTotalPrice floatcelková cena za všetky produkty (bez poplatkov za dopravu a platbu!)
heureka_id big integerinterné číslo objednávky v systéme Heureky – pomocou neho môžete identifikovať duplicitne zasielané objednávky
deliveryId integerID vybranej dopravy
paymentId integerID vybranej platby
deliveryPrice floatcena vybranej dopravy
paymentPrice floatcena vybranej platby
eLicence boolpríznak, či objednávka obsahuje elektronickú licenciu (a teda aj el. distribúciu)
note stringpoznámka k objednávke
paymentOnlineType arraytyp online platby, v prípade „offline“ platby sa parameter neposiela
title stringnázov platby
id integerID platby
customer arraynakupujúci (fakturačná adresa)
firstname stringkrstné meno
lastname stringpriezvisko
email stringe-mail
phone stringtelefón
street stringulica a číslo popisné
city stringmesto
postCode stringPSČ
state stringštát
company stringnázov firmy
ic integer
dic stringDiČ
deliveryAddress arraynakupujúci (dodacia adresa)
firstname stringkrstné meno
lastname stringpriezvisko
street stringulica a číslo popisné
city stringmesto
postCode stringPSČ
state stringštát
company stringnázov firmy
depotId integer [deprecated]ID pobočky – Heureka neručí za to, že ID depotu, ktoré od nás cez API obdržíte, je totožné s tým, ktoré dopravca zasiela priamo obchodu.
originalId stringUnikátne ID pobočky výdajného miesta/boxu podľa oficiálneho zoznamu dopravcov.
Odpoveď

Štruktúra odpovede

order_id integerčíslo objednávky – s týmto číslom ďalej komunikujeme cez API
internal_id stringinterné číslo objednávky v obchode (typicky to ktoré uvádzate zákazníkovi na faktúre)
variableSymbol big integervariabilný symbol (bez nevýznamných núl, max. 10 čísel),
bude slúžiť k spárovaniu platieb pri vybíjaní kreditu

Príklad

HTTP požiadavka

Na volanie URL je použitý nástroj cURL.

Odpoveď

Najčastejšie otázky

Čo sa stane, keď sa nepodarí odoslať objednávku?

Objednávky sú odesielané pomocou fronty. To znamená, že po vytvorení zákazníkom sa dáta uložia do databázy do fronty a objednávka sa odošle. Pokiaľ nie je vrátené číslo objednávky, tak je to považované za neúspešný pokus a objednávka sa po chvíli pošle znovu. Celkovo sa to opakuje 5 krát, potom sú neodoslané objednávky riešené individuálne.

Môže obchod objednávku odmietnuť?

Nemalo by sa to stávať, pretože všetko čo Heureka ponúka má obchod uvedené v XML feede a teda to predáva. Samozrejme môže sa stať, že dôjde k oneskoreniu medzi zistením dostupnosti a odoslaním objednávky, ale i v tomto prípade by mal obchod objednávku prijať a potom so zákazníkom vyriešiť túto skutočnosť individuálne.

PUT order/cancel

Informácie

Nastavenie objednávky na storno

K stornu objednávky dochádza len výnimočne, tak aby nedochádzalo k problémom pri expedícii.

Url
Vstupné parametre
order_id integerID objednávky
reason integerdôvod storna (stav objednávky 4-6 z číselníku)

Odpoveď

Štruktúra odpovede

status booleantrue došlo k stornu, inak false

Príklad

HTTP požiadavka

Na volanie URL je použitý nástroj cURL.

Odpoveď

Najčastejšie otázky

žiadne otázky

PUT payment/status

Informácie

Toto volanie je nepovinné a bude v budúcnosti zrušené! Metóda sa teraz volá vždy, keď zákazník vytvorí objednávku s platbou online, ktorú zaisťuje Heureka pomocou platobného poskytovateľa Adyen. Kým sa v poslednom kroku nákupného procesu zákazníkovi nepodarí úspešne zaplatiť, objednávka nie je vytvorená!

Url
Vstupné parametre
order_id integerID objednávky
status signed integerstav platby (číselník)
date stringdátum vykonania platby (YYYY-MM-DD)

Odpoveď

Štruktúra odpovede

status booleanpodarilo sa nastaviť stav?

Príklad

HTTP požiadavka

Na volanie URL je použitý nástroj cURL.

Odpoveď

Najčastejšie otázky

žiadne otázky

API Heureka

POST payout-report

Informácie

Vrátí seznam objednávek v konkrétní výplatě.

Url

Vstupní parametry

day stringDatum výplaty ve formátu YYYY-MM-DD

Odpoveď

V odpovědi naleznete text/csv. Data jsou oddělené středníkem (;). Soubor obsahuje následující sloupce:

  • Číslo objednávky
  • Datum objednávky
  • Typ
  • Referenční číslo
  • Hrubá cena produktů
  • Poplatek za dopravu
  • Hrubá provize
  • Celková cena objednávky
  • Celková cena snížená o provizi
  • Variabilní symbol
  • Interní ID
Príklad

HTTP požadavek

Odpověď

  1. „Číslo objednávky“;“Dátum objednávky“;Typ;“Referenčné číslo“;“Hrubá cena produktov“;“Poplatok za dopravu“;“Hrubá provízia“;“Celková suma nákupu“;“Celková suma znížená o províziu“;“Variabilný symbol“;“Internal ID“
  2.  8311418522;“2023-07-17 16:10:18″;Pripisovanie;;24;0;3,19;24;20,81;2023000007;2023000007
Najčastejšie otázky

Jaké je datum pro výplaty?

Výplaty jsou zpracovány vždy v pondělí, pokud je na virtuálním účtu dostupná kladná částka na vyplacení.

PUT order/status

Informácie

Nastavenie stavu objednávky na Heureke.

Je dôležité, aby každá zmena objednávky bola prenesená späť do Heureky. Len tak je možné zákazníkom zobraziť, v ktorom stave sa nachádza ich objednávka.

Je daná postupnosť stavov, kedy nie je možné zmeniť stav z jednej úrovne o úroveň nižšiu. Pre presné zobrazenie postupnosti sa pozrite na zápis v Stav objednávok.

Url

https://ssl.heureka.sk/api/cart/:APIkľúč:/1/order/status

Vstupné parametre
order_id integerID objednávky
status integerstav objednávky (číselník)
transport array [nepovinné]informácie o expedícii – v prípade, že sú k dispozícii
tracking_url stringweb, kde je možné sledovať zásielku smerujúcu k zákazníkovi
note stringpoznámka k expedícii
expectDelivery stringpredpokladaný dátum expedície (YYYY-MM-DD)

Odpoveď

Štruktúra odpovede

status booleantrue pokiaľ bolo všetko správne nastavené

Príklad

HTTP požiadavka

Odpoveď

Najčastejšie otázky

žiadne otázky

GET order/status

Informácie

Informácie o stave objednávky a internom čísle objednávky na Heureke.

Url

https://ssl.heureka.sk/api/cart/:APIkľúč:/1/order/status

Vstupné parametre
order_id integerID objednávky

Odpoveď

Štruktúra odpovede

order_id integerID objednávky
status integerstav objednávky (číselník)
internal_id stringinterné číslo objednávky v obchode (typicky to, ktoré uvádzate zákazníkovi na faktúre)
heureka_id integerinterné číslo objednávky v systému Heureky (s týmto číslom komunikujeme so zákazníkom)

Príklad

HTTP požiadavka

Odpoveď

Najčastejšie otázky

žiadne otázky

GET stores

Informácie

Informácie o pobočkách / výdajných miestach, ktoré má obchod uložené na Heureke.

Slúži k nastaveniu store v GET payment/delivery.

Url
Vstupné parametre

žiadne

Odpoveď

Štruktúra odpovede

id integerID pobočky / výdajného miesta
type integertyp pobočky / výdajného miesta (číselník)
name stringnázov
city stringumiestnenie

Príklad

HTTP požiadavka

Odpoveď

Najčastejšie otázky

žiadne otázky

GET shop/status

Informácie

Informácie o aktivácii obchodu v Heureka Marketplace.

Slúži k zisteniu, či je obchod spustený v Marketplace alebo nie. Pokiaľ je Marketplace vypnutý z dôvodu chyby v API alebo nejakej procesnej chyby, je to uvedené v parametri message.

Informácie o aktivácii / deaktivácii sú vždy na 30 minút uložené vo vyrovnávacej pamäti (cache). Pokiaľ testujete stav obchodu pomocou cronu zvoľte interval 30 minút a viac.

Url
Vstupné parametre

žiadne

Odpoveď

Štruktúra odpovede

status booleantrue pokiaľ je obchod zapnutý
error arrayinformácie o prípadnej chybe, pokiaľ je obchod aktívny je pole prázdne
message stringtext chyby
created stringčas kedy bol obchod deaktivovaný (vo formáte YYYY-MM-DD HH:MM:SS)

Príklad

HTTP požiadavka

Odpoveď

Najčastejšie otázky

žiadne otázky

Číselníky

Posloupnost změny stavů

Změna stavů je omezena na následující možnosti:

Schéma objednávkového procesu

Stav platby

1zaplatené
-1nezaplatené

Skladová dostupnosť

0skladom, expedované do 24 hodín
11 deň do expedície
22 dni do expedície
33 dni do expedície
nn dní do expedície
-1tovar je nedostupný

Typ platby

1dobierka
2v hotovosti pri osobnom prevzatí
3online platba (platobná karta, Google Pay, …)
4prevod na účet

Typ dopravy

1osobný odber
2Slovenská pošta
3špedičná služba (DPD, DHL, …)
4expresné dodanie
5špeciálna doprava
9Dopravcovia poskytovaní cez DepotAPI

Typ pobočiek / výdajných miest

1interná pobočka / výdajné miesto obchodu
3Výdajné miesto dopravcu z DepotAPI

Zabezpečenie komunikácie

  • prístup k API majú len zariadenia zo zvoleného IP rozsahu
  • pre zabezpečenie zo strany obchodu je možné omedziť prístup pre rozsahy serverov Heureky, ktoré nájdete v nasledujúcom Zozname IP adries.
  • API vyžaduje HTTPS
  • každý obchod má unikátnu URL adresu

Rýchlosť odozvy

Všeobecne platí, že čím kratšia odozva tým lepšie.

API na strane Heureky odpovedá do pár desiatok milisekúnd. Takúto odozvu požadujeme aj od obchodov.

Pamätajte, že na rýchlosti API záleží spokojnosť zákazníkov. Nikto nechce byť pri nákupe rušený čakaním. Rýchle odozvy znamenajú viac nákupov!

V súčasnej dobe sú pomalé odozvy API najčastejšou príčinou pozastavenia služby Heureka Marketplace.

Prosíme, myslite na to.

Podpora

V prípade, že máte problém s pripojením na API Marketplace, obráťte sa, prosím, na [email protected].


Bol tento článok užitočný?


Související články

Prečo sa nezobrazuje tlačidlo „Kúpiť cez Heureku“?

Na zobrazenie tlačidla „Kúpiť na Heureke“ musí byť splnených niekoľko podmienok. Skontrolujte, že: Stále si neviete rady? Kontaktujte nás na [email protected]

Čo sú to povinné parametre a ako s nimi pracovať?

Povinné parametre sú kľúčové informácie (ako sú farba, veľkosť, materiál atď.), ktoré musia byť uvedené pri každom produkte na Heureka Marketplace. Tieto informácie pomáhajú zákazníkom filtrovať a vyhľadávať produkty na Heureke, a tým uľahčujú ich ro…

Akým spôsobom je obchod vybraný na TOP pozíciu?

TOP pozícia v Heureka Marketplace označuje pozíciu obchodu, ktorý má tlačidlo „Kúpiť cez Heureku“ umiestnené v hornej časti produktovej karty, a to priamo vedľa obrázku produktu. Výber obchodu na TOP pozíciu prebieha automaticky na základ…