Heureka Marketplace – Technická specifikace API napojení

API slouží k provázání nákupního rádce Heureka.cz s obchody zapojenými do služby Marketplace.

API má RESTful architekturu a snaží se využívat všech možností HTTP. Využívá plně metody GET, POST a PUT.
Odpovědi na HTTP požadavky jsou vraceny ve formátu JSON.

Jelikož komunikace mezi obchodem a Heurekou musí fungovat oboustranně, má API dvě části. Jedna část je na straně obchodu a druhá na straně Heureky. Jsou stejně důležité a je nutné mít implementované obě dvě části.

API na straně obchodu slouží k získávání aktuálních informací o nabízených produktech – dostupnosti, možnostech dopravy apod. Druhá část slouží k tomu, aby obchod mohl posílat Heurece např. informace o stavu objednávky nebo si zjišťovat zda byla připsána platba.

API vyžaduje zabezpečené spojení pomocí SSL (https). Důležitá je také rychlost odezvy API.

Můžete využít HCAPI – nástroj vytvořený pro snadnější napojení na Marketplace API.

Není povinně vyžadována implementace všech API volání. V administraci Heureky lze zadat pouze specifické API URL.

Changelog

Celý changelog najdete zde

API Obchodu

Základní struktura volání požadavků

https://www.example.com/api/:verze_api:/:oblast:/:akce:

  • verze_api – verze API, která je využívána (momentálně verze 1)
  • oblast – oblast volání
  • akce – příslušná akce k oblasti

Pro testování vašeho API můžete využít testovací prostředí, které naleznete v administraci obchodu v záložce Marketplace -> nastavení Marketplace API. Po přihlášení do správy e-shopu zde.
Nebo v záložce Marketplace -> MP testing zde.

Na stránce si lze vyzkoušet jak Heureka volá vaše API a zkontrolovat, zda vaše odpovědi jsou správné.

Metody API

GET products/availability

Informace

Metoda vrací aktuální data o požadovaných produktech.

URL
Vstupní parametry
products arraypole s produkty
id stringID produktu (ITEM ID)
count integerpočet objednávaných kusů (vždy větší než 0)

Odpověď

Struktura odpovědi

products arraypole s produkty
id stringID produktu (ITEM ID)
count integerpočet objednávaných kusů (vždy větší než 0)
available booleanzda je produkt dostupný (false pokud produkt nelze v žádném případě objednat, jinak true)
delivery integer | stringpočet dní k odeslání (číselník), pokud obchod nedisponuje číselnou hodnotou, může uvést textovou variantu např. „na dotaz“, „do 2 dnů“.
name stringnázev produktu (max. 255 znaků)
price floatcena zboží za kus (vč. DPH a všech poplatků)
related array [nepovinné]související položky k produktu(Jedná se o určitou přidanou hodnotu k produktu, která nemá vliv na cenu.)
title stringpopis položky
priceTotal floatcelková cena pro produkt (počet × cena)
priceSum floatcelková cena (za všechny produkty)

Příklad
HTTP požadavek

K volání URL je využito nástroje cURL.

Odpověď

Nejčastější otázky

Vraťte v available hodnotu false.

V available musí být true a v delivery hodnota -1 nebo jiný vhodný textový popis. Obecně platí, že co je v XML feedu to musí obchod umožnit koupit i na Heurece.

V count uveďte hodnotu 2. Zákazník na tuto skutečnost bude upozorněn.

Hodnota delivery musí být nejhorší možná, tedy pokud je obchod schopen dodat všechny 3 kusy, bude hodnota 5.

Ne. Hodnota count musí být max. počet kusů které zákazník požaduje.

GET payment/delivery

Informace

Vrátí možnosti dopravy a platby. Např. to, že zboží lze dodat pomocí České pošty nebo PPL s možností dobírky.

Každý zapojený obchod zašle prostřednictvím API jakým způsobem expeduje zboží zákazníkovi. Jeden z těchto způsobů si zákazník zvolí. 

Platbu kartou zajišťuje Heureka pomocí služby Adyen. Tuto možnost nelze odstranit a zpoplatnit a nezáleží na tom, zda obchod takovou platbu podporuje či nikoliv. 

U dobírky, kde je platba na straně obchodu, je situace jiná. Zde Heureka naprosto respektuje možnosti obchodu a zobrazí je tak zákazníkovi. To znamená, že pokud obchod nepodporuje dobírku, nebude zákazníkovi nabídnuta.

V parametru binding obchod určí jakým způsobem je daná platba vázána na způsob doručení. Např. že „platba hotově při převzetí“ je vázána na způsob doručení „osobní odběr na pobočce v Praze“.

Předpokládá se, že obchod je po zaplacení zboží schopen zákazníkovi doručit zboží všemi nabídnutými možnostmi.

Identifikace poboček

Parametr store slouží k jasné identifikaci pobočky, kde si lze vyzvednout objednávku. Rozlišují se dva typy a to vlastní pobočky / výdejní místa obchodu.

Vlastní pobočky musí mít správné ID. Toto ID je zároveň používáno také v rámci XML Dostupnostního feedu (nepovinný). Najdete ho v administraci poboček. Pro vlastní pobočky se jedná o Depot ID pro dostupnostní XML soubor

Parametr store má význam pouze u osobních odběrů na pobočkách či výdejních místech. U ostatních možností jej neposílejte.

URL
Vstupní parametry
products arraypole s produkty
id stringID produktu (ITEM ID)
count integerpočet objednávaných kusů
Odpověď

Struktura odpovědi:

transport arraydoprava
id integerID dopravy
type integertyp dopravy (číselník)
name stringnázev dopravy
price floatcena
description stringpopis
storeidentifikace pobočky
type integertyp pobočky / výdejního místa (číselník)
id integerID pobočky pro Osobní odběr (z feedu nebo administrace) nebo ID obchodu („shopId“) / ID dopravce („shipperId“) pro DepotAPI.
payment arrayplatba
id integerID platby
type integertyp platby (číselník)
name stringnázev platby
price floatcena
binding arraypole vazeb mezi dopravou a platbou
id integerID vazby
transportId integerID dopravy
paymentId integerID platby

Příklad

HTTP požadavek

K volání URL je využito nástroje cURL.

Nejčastější otázky

K čemu slouží vazby?

Vazby jsou důležité k tomu, abychom mohli zákazníkovi správně zobrazit k vybrané platbě dostupné dopravy.

Musí obchod posílat platby kartou a k nim vazby na dopravu, když jsou ve vaší režii?

Platbu kartou (a další online platby) zajišťuje Heureka pomocí Adyen, takže by se mohlo zdát, že není informace od vás o platbě kartou potřeba. To do jisté míry není. Pokud ji nepošlete nic se neděje, my příslušné vazby vygenerujeme sami. Ale pokud je posíláte, tak my vám při objednávce pošleme konkrétní ID platby a dopravy, které si nakupující vybral. Může si je tedy obchod správně spárovat ve svém shopsystému.

Dva kusy zboží má obchod na skladě a může je dodat hned, ale zákazník chce kusy tři, ale ten třetí bude obchod mít až za pět dní. Jak má vypadat hodnota v delivery?

V hodnotě delivery musí být taková hodnota, za kterou je obchod schopný dodat kompletní objednávku. V tomto případě tedy pět.

Jak posílat Českou poštu s dobírkou a bez dobírky?

Je nutné zde rozlišovat dvě věci. Česká pošta je možnost dopravy a dobírka je platba, tyto dvě věci je nutné spojit pomocí vazeb. Chybou by bylo kdyby se možnost platby dobírkou nebo předem rozlišovalo v transport.

Ukázka správného postupu:

GET order/status

Informace

Vrátí stav objednávky v obchodě.

URL
Vstupní parametry
order_id integerID objednávky

Odpověď

Struktura odpovědi

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

Příklad

HTTP požadavek

K volání URL je využito nástroje cURL.

Nejčastější dotazy

Jak často se využívá tento požadavek?

Na stav objednávky se automaticky dotazujeme několikrát denně. Obvykle to bývá ráno, okolo poledne a odpolene.

POST order/send

Informace

Odeslání objednávky do obchodu.

Po odeslání by mělo dojít v obchodě k rezervaci zboží a začít proces expedice (pokud je objednávka zaplacena nebo je na dobírku).

V případě osobního odběru od zákazníka povinně vyžadujeme pouze pole jméno, příjmení, e-mail a telefonní číslo. Zákazník má možnost vyplnit svou fakturační adresu, pokud to ale neudělá, zasíláme přes API ve fakturačních údajích následující adresu:

Osobní odběr
Ulice č. p.: Osobní odběr 1
Město: Praha
PSČ: 11000
Stát: Česká republika

Poznámka – význam deliveryId a paymentId

Aby mohl obchod rozeznat jakou platbu a dopravu si zákazník vybral jsou zaslaná jejich ID, které byly předány obchodem v metodě payment/delivery.

Může se stát, že obchod v metodě payment/delivery neposílá (obchod jí nepodporuje) např. platbu pomocí platební karty, přesto si jej uživatel může vybrat, protože tato varianta platby je nezávislá na obchodu (zajišťuje ji Heureka). V tomto případě není k dispozici hodnota pro paymentId. Heureka se pokusí tuto hodnotu nahradit ID pro bankovní převod, pokud by ani tento typ platby obchod nepodporoval, tak v paymentId bude zaslána hodnota 0. Pokud však již platba s paymentId 0 existuje, bude použito nejvyšší dostupné paymentId zvýšené o 1.

Příklad:

Příklad odpovědipaymentId pro bankovní převodpaymentId pro 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
Pobočky poskytované skrz DepotAPI

Pokud zákazník zvolí dopravu na pobočku zaslanou skrze DepotAPI je v dodací adrese vyplněna adresa vybrané pobočky.

Poznámka k významu parametru eLicence

Parametr eLicence označuje, že objednávka obsahuje produkt s elektronickou licenci – tyto produkty využívají elektronickou distribuci, tedy ne klasické dopravy. V případě, že objednávka neobsahuje produkt s klasickou dopravou, je deliveryId zvoleno z nejvyššího deliveryId z metody GET payment/delivery, které inkrementujeme o 1 (např. pokud je nejvyšší deliveryId 5, pro eLicenci bude 6).

Url
Vstupní parametry
products arrayobjednané produkty
id stringID produktu (ITEM ID)
count integerpočet kusů
price floatcena za kterou zákazník produkt objednal (za kus)
totalPrice floatcelková cena (počet kusů x cena)
params arrayvybrané parametry
id integerID parametru
value stringhodnota parametru
gifts arrayDárky nabízené k produktu (z XML)
name stringnázev dárku
shopGiftId string|nullID dárku dodané obchodem v XML
productsTotalPrice floatcelková cena za všechny produkty (bez poplatků za dopravu a platbu!)
heureka_id integerinterní číslo objednávky v systému Heureky – pomocí něho můžete identifikovat duplicitně zasílané objednávky
deliveryId integerID vybrané dopravy
paymentId integerID vybrané platby
deliveryPrice floatcena vybrané dopravy
paymentPrice floatcena vybrané platby
eLicence boolpříznak jestli objednávka obsahuje elektronickou licenci (a tudíž el. distribuci)
note stringpoznámka k objednávce
paymentOnlineType arraytyp online platby, v případě „offline“ platby se parametr neposílá
title stringnázev platby
id integerID platby
customer arraynakupující (fakturační adresa)
firstname stringjméno
lastname stringpříjmení
email stringe-mail
phone stringtelefon
street stringulice a číslo popisné
city stringměsto
postCode stringPSČ
state stringstát
company stringnázev firmy
ic integer
dic stringDiČ
deliveryAddress arraynakupující (dodací adresa)
firstname stringjméno
lastname stringpříjmení
street stringulice a číslo popisné
city stringměsto
postCode stringPSČ
state stringstát
company stringnázev firmy
depotId integer [deprecated]ID pobočky – Heureka neručí za to, že ID depotu, které od nás přes API obdržíte, je totožné s tím, které dopravce zasílá přímo obchodu.
originalId stringUnikátní ID pobočky podle oficiálního seznamu dopravce.

Odpověď

Struktura odpovědi

order_id integerčíslo objednávky – s tímto číslem dále komunikujeme skrz API
internal_id stringinterní číslo objednávky v obchodu (typicky to které uvádíte zákazníkovi na faktuře)
variableSymbol big integervariabilní symbol (bez nevyýznamných nul, max. 10 čísel),
bude sloužit ke spárování plateb při vybíjení kreditu

Příklad

HTTP požadavek

K volání URL je využito nástroje cURL.

Odpověď

Nejčastější otázky

Co se stane, když se nepodaří odeslat objednávku?

Objednávky jsou odesílány přes frontu. To znamená, že po vytvoření zákazníkem se data uloží do databáze do fronty a objednávka se odešle. Pokud není vráceno číslo objednávky, tak je to považováno za neúspěšný pokus a objednání se po chvilce opakuje. Celkem se to zkouší 5 krát, po té jsou neodeslané objednávky řešeny individuálně.

Může obchod objednávku odmítnout?

Nemělo by se to stávat, protože vše co Heureka nabízí má obchod uvedeno v XML feedu a tedy prodává to. Samozřejmě může se stát, že dojde k prodlevě mezi zjištěním dostupnosti a odesláním objednávky, ale i v tomto případě by měl obchod objednávku přijmout a poté se zákazníkem vyřešit tuto skutečnost individuálně.

PUT order/cancel

Informace

Nastavení objednávky na storno

Storno objednávky je prováděno jen výjimečně, tak aby nedocházelo k problémům při expedici.

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

Odpověď

Struktura odpovědi

status booleantrue došlo ke stornu, jinak false

Příklad

HTTP požadavek

K volání URL je využito nástroje cURL.

Nejčastější dotazy

Pokud zákazník požádá o storno objednávky tak tuto informaci nejdříve předáváme do obchodu. Storno objednávky provádíme až po vzájemné domluvě s obchodníkem. Aby nedocházelo k potížím s expedicí zboží. Samovolně objednávky nerušíme.

PUT payment/status

Informace

Url

Vstupní parametry
order_id integerID objednávky
status signed integerstav platby (číselník)
date stringdatum provedení platby (YYYY-MM-DD)

Odpověď

Struktura odpovědi

status booleanzda se povedlo nastavit stav

Příklad

HTTP požadavek

K volání URL je využito nástroje cURL.

Nejčastější otázky

žádné dotazy

API Heureka

POST payout-report

Informace

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

Url

Vstupní parametry

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

Struktura odpovědí

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
Pří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
Nejčastější 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

Informace

Nastavení stavu objednávky na Heurece.

Je důležité, aby každá změna objednávky byla přenesena zpět do Heureky. Jenom tak je možné zákazníkům zobrazit v jakém stavu se nachází jejich objednávka.

Url
Vstupní parametry
order_id integerID objednávky
status integerstav objednávky (číselník)
transport array [nepovinné]informace o expedici – v případě, že jsou k dispozici
tracking_url stringweb kde je možné sledovat zásilku směřující k zákazníkovi
note stringpoznámka k expedici
expectDelivery stringpředpokládaný datum expedice (YYYY-MM-DD)

Odpověď

Struktura odpovědi

status booleantrue pokud bylo vše správně nastaveno

Příklad

HTTP požadavek

Odpověď

Nejčastější dotazy

Je nějaké časové omezení pro změnu stavu objednávky?

Ano, objednávku byste měli označit do konečného stavu nejpozději do 20 dnů od jejího vytvoření. Objednávky starší 20 dnů náš systém automaticky označí jako dokončené. Máte-li s objednávkou problém a potřebujete jí nechat otevřenou déle tak kontaktujte podporu pro Marketplace.

PUT payment/status

Informace

Nastavení stavu platby na Heurece.

Tato metoda slouží k nastavení platby při dobírce nebo platbě v hotovosti na pobočce obchodu.

Url

https://ssl.heureka.cz/api/cart/API_ID/1/payment/status

Vstupní parametry
order_id integerID objednávky
status signed integerstav platby (číselník)
date stringdatum změny stavu

Odpověď

Struktura odpovědi

status booleantrue – pokud bylo vše správně nastaveno

Příklad

HTTP požadavek

Odpověď

Nejčastější dotazy

žádné dotazy

GET order/status

Informace

Informace o stavu objednávky a interním čísle objednávky na Heurece.

Url

https://ssl.heureka.cz/api/cart/API_ID/1/order/status

Vstupní parametry
order_id integerID objednávky

Odpověď

Struktura odpovědi

order_id integerID objednávky
status integerstav objednávky (číselník)
internal_id stringinterní číslo objednávky v obchodu (typicky to, které uvádíte zákazníkovi na faktuře)
heureka_id integerinterní číslo objednávky v systému Heureky (s tímto číslem komunikujeme se zákazníkem)

Příklad

HTTP požadavek

Odpověď

Nejčastější dotazy

žádné dotazy

GET stores

Informace

Informace o pobočkách / výdejních místech, které má obchod uložené na Heurece.

Slouží k nastavení store v GET payment/delivery.

Url

https://ssl.heureka.cz/api/cart/API_ID/1/stores

Vstupní parametry

žádné

Odpověď

Struktura odpovědi

id integerID pobočky / výdejního místa
type integertyp pobočky / výdejního místa (číselník)
name stringnázev
city stringumístění

Příklad

HTTP požadavek

Odpověď

Nejčastější dotazy

žádné dotazy

GET shop/status

Informace

Informace o aktivaci obchodu v Marketplace.

Slouží k zjištění zda je obchod spuštěn v Marketplace či nikoliv. Pokud je Marketplace vypnutý z důvodu chyby v API nebo nějaké procesní chyby, je o tom napsáno v parametru message.

Informace o aktivaci / deaktivaci jsou vždy na 30 minut uložené ve vyrovnávací paměti (cache). Pokud testujete stav obchodu pomocí cronu zvolte interval 30 minut a více.

Url
Vstupní parametry

žádné

Odpověď

Struktura odpovědi

status booleantrue pokud je obchod zapnutý
error arrayinformace o případné chybě, pokud je obchod aktivní je pole prázdné
message stringtext chyby
created stringčas kdy byl obchod deaktivován (ve formátu YYYY-MM-DD HH:MM:SS)

Příklad

HTTP požadavek

Odpověď

Nejčastější dotazy

žádné dotazy

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

1zaplaceno
-1nezaplaceno

Skladová dostupnost

0skladem, expedováno do 24 hodin
11 den do expedice
22 dny do expedice
33 dny do expedice
nn dnů do expedice
-1zboží je nedostupné

Typ platby

1dobírka
2hotově při osobním převzetí
3platební karta
4převod na účet

Typ dopravy

1osobní odběr
2Česká pošta
3spediční služba (PPL, DPD, …)
4expresní dodání
5speciální doprava
6Česká Pošta – Balík Na poštu
9
Dopravci poskytovaní skrze DepotAPI
  • 2 – Česká pošta – balík do ruky 
  • 3 – spediční služba PPL, DPD, Zásilkovna, Messenger, Fofr – balík do ruky / domů jaké další
  • 4 – na co využíváme
  • 5 – na co využíváme
  • 6 – již se nevyužívá Česká pošta 6 – se již nepoužívá – musí použít 9 
  • 9 – Dopravci poskytovaní skrz DepotAPI
  • „shipperId“: „5“,
  •             „name“: „Česká pošta – Balík na poštu“, – RUŠÍ SE OD 1. 1. 2025
  • Nově bude Balíkovna na adresu

Typ poboček / výdejních míst

1interní pobočka / výdejní místo obchodu
3Výdejní místo dopravce z DepotAPI

Zabezpečení komunikace

  • přístup k API mají pouze stroje ze zvoleného IP rozsahu
  • pro zabezpečení ze strany obchodu lze omezit přístup pro rozsahy serverů Heureky, které jsou:
    • IPv4: 95.173.213.160/27, 95.168.214.64/27, 193.85.239.160/28, 185.68.68.0/22
    • IPv6: 2a03:2a60::/32
  • API vyžaduje HTTPS
  • každý obchod má unikátní URL adresu

Rychlost odezvy

Obecně platí, že čím kratší odezva tím lépe.

API na straně Heureky odpovídá do několika desítek milisekund. Tuto odezvu požadujeme i od obchodů.

Pamatujte, že na rychlosti API záleží spokojenost zákazníků. Nikdo nechce být při nákupu rušen čekáním. Rychlé odezvy znamenají více nákupů!

V současné době jsou pomalé odezvy API nejčastější příčinou pozastavení služby Heureka Marketplace.

Prosíme, myslete na to.

Podpora

V případě, že máte problém s napojením API Marketplace, obraťte se prosím na [email protected].


Byl tento článek užitečný?


Související články

Jakým způsobem je obchod vybrán na TOP pozici?

TOP pozice v Heureka Marketplace označuje pozici obchodu, který má tlačítko „Koupit přes Heureku“ umístěné v horní části produktové karty, a to přímo vedle obrázku produktu.  Výběr obchodu na TOP pozici probíhá automaticky na základě…

Co jsou to povinné parametry a jak s nimi pracovat?

Povinné parametry jsou klíčové informace (jako jsou barva, velikost, materiál atd.), které musí být uvedeny u každého produktu na Heureka Marketplace. Tyto informace pomáhají zákazníkům filtrovat a vyhledávat produkty na Heurece, a tím usnadňují jeji…

Proč se nezobrazuje tlačítko „Koupit přes Heureku“?

Pro zobrazení nabídky v Heureka Marketplace, tedy tlačítka „Koupit přes Heureku“, musí být splněno několik podmínek. Zkontrolujte, že: Jste v marketplace skutečně aktivní. Kontrolu můžete provést v administraci na stránce Stav požadavků k…