Přeskočit na hlavní obsah

Retino XML feed

O
Autor: Ondřej Průša
Aktualizováno tento týden

Pokud nepoužíváte platformu, pro kterou máme nativní integraci, můžete Retino datově integrovat se svým e-shopem prostřednictvím XML feedu v našem formátu.

V tomto článku popíšeme strukturu XML feedu a mechanismus jeho načítání.

Struktura feedu

Feed začíná xml hlavičkou s verzí 1.0 a UTF-8 kódováním. Podporujeme pouze UTF-8 kódování. Poté následuje párový tag ORDERS , ve kterém jsou všechny objednávky (každá v tagu ORDER ). Tagy jsou case-sensitive. White-space (mezery apod.) mezi tagy jsou ignorovány. Ceny (typ DECIMAL ) jsou psány s desetinnou tečkou (.), bez oddělovače tisíců. Příklad:

<?xml version="1.0" encoding="UTF-8"?>
    <ORDERS>
        <ORDER>
            (... order structure - see below ...)
        </ORDER>
        <ORDER>
            (... order structure - see below ...)
        </ORDER>
        (... more orders ...)
    </ORDERS>

Pokud potřebujete poslat prázdný feed, vložte do něj hlavičku a prázdný párový tag ORDERS . Příklad:

<?xml version="1.0" encoding="UTF-8"?>
    <ORDERS>
    </ORDERS>

Struktura ORDER

Příklad:

<ORDER>
  <ORDER_ID>4347</ORDER_ID>
  <ORDER_URL>https://example.com/admin/order-detail/4347</ORDER_URL>
  <CODE>201800001</CODE>
  <INVOICE_CODE>201800001</INVOICE_CODE>
  <DATE>2018-03-02 21:46:52</DATE>
  <CURRENCY>
    <CODE>CZK</CODE>
  </CURRENCY>
  <PACKAGE_NUMBER>12345678</PACKAGE_NUMBER>
  <LANGUAGE>EN</LANGUAGE>
  <CUSTOMER>
    <EMAIL>[email protected]</EMAIL>
    <PHONE>777123456</PHONE>
    <BILLING_ADDRESS>
      <NAME>George Customer</NAME>
      <COMPANY></COMPANY>
      <STREET>Masarykova</STREET>
      <HOUSENUMBER>1</HOUSENUMBER>
      <CITY>Praha</CITY>
      <ZIP>10000</ZIP>
      <COUNTRY>CZ</COUNTRY>
      <COMPANY_ID></COMPANY_ID>
      <VAT_ID></VAT_ID>
    </BILLING_ADDRESS>
    <SHIPPING_ADDRESS>
      <NAME>George Customer</NAME>
      <COMPANY></COMPANY>
      <STREET>Masarykova</STREET>
      <HOUSENUMBER>1</HOUSENUMBER>
      <CITY>Praha</CITY>
      <ZIP>10000</ZIP>
      <COUNTRY>CZ</COUNTRY>
    </SHIPPING_ADDRESS>
  </CUSTOMER>
  <TOTAL_PRICE>
    <WITH_VAT>457.00</WITH_VAT>
    <WITHOUT_VAT>377.68</WITHOUT_VAT>
    <VAT>79.32</VAT>
  </TOTAL_PRICE>
  <ORDER_ITEMS>
    <ITEM>
      (... struktura položky - viz níže ...)
    </ITEM>
    <ITEM>
      (... struktura položky - viz níže ...)
    </ITEM> (... více položek ...) </ORDER_ITEMS>
  <STATUSES>
    <STATUS>
      <NAME>NEW</NAME>
      <DATE>2017-03-02 11:32:07</DATE>
    </STATUS>
    <STATUS>
      <NAME>PAID</NAME>
      <DATE>2017-03-02 12:30:00</DATE>
    </STATUS>
    <STATUS>
      <NAME>PICKING</NAME>
      <DATE>2017-03-02 14:15:30</DATE>
    </STATUS>
    <STATUS>
      <NAME>PACKED</NAME>
      <DATE>2017-03-02 15:21:30</DATE>
    </STATUS>
    <STATUS>
      <NAME>DISPATCHED</NAME>
      <DATE>2017-03-02 16:45:20</DATE>
    </STATUS>
  </STATUSES>
  <INVOICES>
    <INVOICE>
      <CODE>201800001</CODE>
      <URL>https://example.com/invoice/201800001</URL>
      <CHANGE_TIME>2017-05-01 15:01:00</CHANGE_TIME>
    </INVOICE>
  </INVOICES>
</ORDER>

Popis polí:

Název

Typ

Povinné?

Popis

ORDER_ID

VARCHAR(255)

Ano

Interní ID používané ve vašem systému. Používáme jej pro provázání systémů přímým odkazem. Pokud je toto pole stejné jako číslo objednávky viditelné zákazníkem (tag CODE ), uveďte jej zde podruhé.

ORDER_URL

VARCHAR(255)

Ne

Odkaz na detail objednávky v administraci e-shopu

CODE

VARCHAR(255)

Ano

Číslo objednávky tak, jak jej vidí zákazník

INVOICE_CODE

VARCHAR(255)

Ne

Číslo faktury tak, jak jej vidí zákazník

DATE

DATETIME

Ano

Datum a čas objednávky ve formátu ISO 8601

CURRENCY/CODE

VARCHAR(3)

Ano

Měna objednávky ve formátu ISO 4217

PACKAGE_NUMBER

VARCHAR(255)

Ne

Číslo zásilky pro sledování u přepravce, v případě více balíků oddělit čárkou ("111,222")

LANGUAGE

VARCHAR(255)

Ne

Jazyk objednávky

CUSTOMER

viz níže

Ano

Informace o zákazníkovi (viz níže)

TOTAL_PRICE

viz níže

Ano

Celková cena objednávky (viz níže)

ORDER_ITEMS

viz níže

Ano

Položky objednávky (viz níže)

STATUSES

viz níže

Ne

Seznam stavů objednávky (viz níže)

INVOICES

viz níže

Ne

Seznam faktur

Popis tagu CUSTOMER :

EMAIL

VARCHAR(254)

Ano

Zákazníkova emailová adresa, musí být validní email

PHONE

VARCHAR(255)

Ne

Zákazníkův telefon, ideálně v E.164 formátu (ale nevaliduje se)

BILLING_ADDRESS

viz níže

Ano

Fakturační adresa zákazníka (viz níže)

SHIPPING_ADDRESS

viz níže

Ano

Doručovací adresa zákazníka (viz níže) – pokud je stejná jako fakturační, uveďte ji zde podruhé

Popis tagů BILLING_ADDRESS a SHIPPING_ADDRESS :

NAME

VARCHAR(255)

Ano

Jméno zákazníka

COMPANY

VARCHAR(255)

Ne

Název společnosti

STREET

VARCHAR(255)

Ano

Ulice

HOUSENUMBER

VARCHAR(255)

Ne

Číslo domu (pokud nemáte ulici a číslo domu zvlášť, vyplňte oboje do tagu STREET a tento nechte prázdný)

CITY

VARCHAR(255)

Ano

Město

ZIP

VARCHAR(255)

Ano

PSČ

COUNTRY

VARCHAR(255)

Ano

Země (v ISO-3166 formátu, ale nevaliduje se)

COMPANY_ID

VARCHAR(255)

Ne

IČ (pouze v BILLING_ADDRESS )

VAT_ID

VARCHAR(255)

Ne

DIČ (pouze v BILLING_ADDRESS )

Popis tagu TOTAL_PRICE :

WITH_VAT

DECIMAL

Aspoň jedno z WITH_VAT / WITHOUT_VAT

Celková částka objednávky vč. DPH

WITHOUT_VAT

DECIMAL

Aspoň jedno z WITH_VAT / WITHOUT_VAT

Celková částka objednávky bez DPH (pokud nejste plátci DPH, vyplňte pouze tento tag)

VAT

DECIMAL

Pokud je vyplněno WITH_VAT

DPH (absolutní částka)

Popis tagu STATUS :

NAME

viz níže

Ano

Jeden z dostupných stavů objednávky

DATE

DATETIME

Ano

Datum a čas stavu objednávky ve formátu ISO 8601

Stavy objednávky:

OPEN - Objednávka je otevřená a aktivní, to znamená, že ještě nebyla doručena ani zrušena.

CLOSED - Objednávka je uzavřena, což znamená, že byla doručena nebo úspěšně dokončena.

CANCELED - Objednávka byla zrušena a nebude dále zpracována.


AWAITING_PAYMENT - Platba ještě nebyla přijata, čeká se na platbu od zákazníka.

PAID - Platba byla úspěšně přijata a zpracována.

PARTIALLY_REFUNDED - Část platby byla zákazníkovi vrácena.

REFUNDED - Zákazníkovi byla vrácena celá platba.

FAILED - Pokus o platbu se nezdařil nebo byl platební bránou odmítnut.


NEW - Nová objednávka, která ještě nebyla zpracována ve skladu.

PICKING - Objednávka se momentálně vychystává ze skladu, připravuje a balí.

PACKED - Objednávka byla zabalena a připravena k odeslání.

DISPATCHED - Objednávka byla odeslána zákazníkovi.

ON_HOLD - Vyřízení objednávky je dočasně pozastaveno, čeká se na nějakou akci nebo řešení. Není určeno k čekání na platbu.

READY_FOR_PICKUP - Objednávka je připravena k osobnímu vyzvednutí zákazníkem na pobočce nebo ve skladu.

PICKED_UP - Objednávka byla osobně vyzvednuta zákazníkem.

Zrušené objednávky (stav CANCELED ) nebudou k dohledání zákazníkem v portálu.

Popis tagu INVOICE :

CODE

VARCHAR(255)

Ano

Číslo faktury

URL

VARCHAR

Ano

URL ke stažení faktury

CHANGE_TIME

DATETIME

Ne

Datum změny. Pokud datum aktualizujete, stáhneme fakturu znovu.


Popis položky objednávky ITEM

Příklad:

<ITEM>
        <TYPE>product</TYPE>
        <NAME>Product 1</NAME>
        <CODE>988765</CODE>
        <VARIANT_NAME></VARIANT_NAME>
        <MANUFACTURER></MANUFACTURER>
        <AMOUNT>1</AMOUNT>
        <UNIT>pc</UNIT>
        <WEIGHT>0</WEIGHT>
        <UNIT_PRICE>
            <WITH_VAT>407.00</WITH_VAT>
            <WITHOUT_VAT>336.36</WITHOUT_VAT>
            <VAT>70.64</VAT>
        </UNIT_PRICE>
        <TOTAL_PRICE>
            <WITH_VAT>407.00</WITH_VAT>
            <WITHOUT_VAT>336.36</WITHOUT_VAT>
            <VAT>70.64</VAT>
        </TOTAL_PRICE>
    </ITEM>

Popis polí:

TYPE

ENUM

Ano

Typ položky (seznam možností viz níže)

NAME

VARCHAR(255)

Ano

Název položky

CODE

VARCHAR(255)

Ano

Kód produktu

VARIANT_NAME

VARCHAR(255)

Ne

Název varianty (např. barva nebo velikost u módy)

MANUFACTURER

VARCHAR(255)

Ne

Výrobce

AMOUNT

DECIMAL

Ano

Množství

UNIT

VARCHAR(10)

Ano

Jednotka (např. ks nebo g)

WEIGHT

DECIMAL

Ne

Váha v kg

UNIT_PRICE

viz níže

Ano

Cena za jednotku

TOTAL_PRICE

viz níže

Ano

Celková cena za všechny jednotky (celé množství)

IMGURL

VARCHAR(255)

Ne

URL adresa obrázku produktu

Typy položek:

product

Produkt (toto bude moct zákazník vrátit / reklamovat)

discount

Sleva

shipping

Doprava

billing

Platba (dobírka apod.)

other

Ostatní položky

Popis tagů UNIT_PRICE a TOTAL_PRICE:

WITH_VAT

DECIMAL

Aspoň jedno z WITH_VAT / WITHOUT_VAT

Cena s DPH

WITHOUT_VAT

DECIMAL

Aspoň jedno z WITH_VAT / WITHOUT_VAT

Cena bez DPH (neplátci DPH vyplní pouze toto)

VAT

DECIMAL

Pokud je vyplněno WITH_VAT

DPH (absolutní částka)

Feed pro počáteční synchronizaci

Reklamace se typicky mohou řešit až 2 roky zpětně. Proto potřebujeme přístup ke starším objednávkám. Pošlete nám prosím jednorázově feed s historickými objednávkami za období, které si e-shop přeje, aby měl k dispozici v Retinu. Doporučujeme posledních 30 měsíců. Feed pošlete na naši zákaznickou podporu na [email protected].

Feed pro inkrementální synchronizaci

Jakmile proběhne počáteční synchronizaci, potřebujeme databázi udržovat aktuální. Pro tento účel potřebujeme inkrementální feed, který náš systém bude automaticky načítat. Funguje to následovně:

Feed si stahujeme z URL adresy každých cca 6 hodin. Tento interval se může v budoucnosti změnit. Máte dvě možnosti, jak feed generovat:

  1. Staticky generovaný feed, který obsahuje objednávky za posledních X dní. Doporučujeme X = 7.

  2. Dynamicky generovaný feed, kdy nám vždy pošlete objednávky, které "jsme ještě neviděli", tedy že si někde uschováte časovou značku posledního načtení feedu a pak nám zašlete objednávky změněné od té doby.

Doporučujeme možnost č. 1.

Důležitá informace. Pokud nám pošlete objednávku, kterou jsme již viděli, nevytváříme novou, ale aktualizujeme starou. Objednávky párujeme podle tagu CODE .

Bezpečnost přenosu

Přenos dat probíhá přes HTTPS a lze jej zabezpečit přes HTTP Basic autentizaci. Doporučujeme toto zabezpečení s ohledem na bezpečnost dat. Pokud to ve vašem případě není možné, doporučujeme alespoň URL feedu nastavit na "neuhodnutelnou" adresu, např. www.store.com/9b9972387feb11eabc550242ac130003.xml.

Váš server musí vrátit odpověď do 60 sekund.

Formáty data a času

Retino podporuje několik formátů data a času v XML feedu:

  • ISO 8601 formát: 2023-04-23T14:30:45

  • Datum a čas s mezerou: 2023-04-23 14:30:45

  • Pouze datum: 2023-04-23

Pokud je datum uvedeno bez časové zóny, je považováno za datum v aktuální časové zóně serveru.

Zpracování speciálních hodnot

Retino poskytuje automatické zpracování některých hodnot:

  • Hodnoty DECIMAL - jsou automaticky převáděny z formátu s čárkou na formát s tečkou

  • Země - pokud poskytnete kód země, je automaticky normalizován

  • Všechny textové hodnoty jsou ořezány na maximální délku 255 znaků

Pozor na speciální znaky

Upozorňujeme, že XML formát nedovoluje mít v řetězcích uvnitř dokumentu určité znaky jako <, > nebo &. Nejjednodušší řešení je všechny tagy, ve kterých se speciální znaky mohou objevit, obalit do entity CDATA.

Chybný příklad (XML parser vyhodí chybu):

<NAME>Slim&Sun 100 tablet</NAME>

Správný příklad (ošetřeno pomocí CDATA):

<NAME><![CDATA[Slim&Sun 100 tablet]]></NAME>

Kontrola feedu

Pro kontrolu správnosti formátu dat ve XML feedu můžete použít soubor typu XSD. Stáhněte si soubor obsahující schéma feedu níže:

Případně můžete využít validátor u nás na webu:

Příklad feedu

<?xml version="1.0" encoding="UTF-8"?>
    <ORDERS><ORDER>
        <ORDER_ID>4347</ORDER_ID>
        <CODE>201800001</CODE>
        <INVOICE_CODE>2018-001</INVOICE_CODE>
        <DATE>2018-03-02 21:46:52</DATE>
        <CURRENCY>
            <CODE>CZK</CODE>
        </CURRENCY>
        <PACKAGE_NUMBER>12345678</PACKAGE_NUMBER>
        <LANGUAGE>EN</LANGUAGE>
        <CUSTOMER>
            <EMAIL>[email protected]</EMAIL>
            <PHONE>777123456</PHONE>
            <BILLING_ADDRESS>
                <NAME>Jiří Zákazník</NAME>
                <COMPANY></COMPANY>
                <STREET>Masarykova</STREET>
                <HOUSENUMBER>1</HOUSENUMBER>
                <CITY>Praha</CITY>
                <ZIP>10000</ZIP>
                <COUNTRY>CZ</COUNTRY>
                <COMPANY_ID></COMPANY_ID>
                <VAT_ID></VAT_ID>
            </BILLING_ADDRESS>
            <SHIPPING_ADDRESS>
                <NAME>Jiří Zákazník</NAME>
                <COMPANY></COMPANY>
                <STREET>Masarykova</STREET>
                <HOUSENUMBER>1</HOUSENUMBER>
                <CITY>Praha</CITY>
                <ZIP>10000</ZIP>
                <COUNTRY>CZ</COUNTRY>
            </SHIPPING_ADDRESS>
        </CUSTOMER>
        <TOTAL_PRICE>
            <WITH_VAT>457.00</WITH_VAT>
            <WITHOUT_VAT>377.68</WITHOUT_VAT>
            <VAT>79.32</VAT>
        </TOTAL_PRICE>
        <ORDER_ITEMS><ITEM>
        <TYPE>product</TYPE>
        <NAME>Produkt 1</NAME>
        <AMOUNT>1</AMOUNT>
        <CODE>988765</CODE>
        <VARIANT_NAME></VARIANT_NAME>
        <MANUFACTURER></MANUFACTURER>
        <UNIT>ks</UNIT>
        <WEIGHT>0</WEIGHT>
        <UNIT_PRICE>
            <WITH_VAT>407.00</WITH_VAT>
            <WITHOUT_VAT>336.36</WITHOUT_VAT>
            <VAT>70.64</VAT>
        </UNIT_PRICE>
        <TOTAL_PRICE>
            <WITH_VAT>407.00</WITH_VAT>
            <WITHOUT_VAT>336.36</WITHOUT_VAT>
            <VAT>70.64</VAT>
        </TOTAL_PRICE>
    </ITEM><ITEM>
        <TYPE>shipping</TYPE>
        <NAME>Zásilkovna - Praha</NAME>
        <AMOUNT>1</AMOUNT>
        <CODE>SHIPPING16</CODE>
        <VARIANT_NAME></VARIANT_NAME>
        <MANUFACTURER></MANUFACTURER>
        <UNIT></UNIT>
        <WEIGHT>0</WEIGHT>
        <UNIT_PRICE>
            <WITH_VAT>25.00</WITH_VAT>
            <WITHOUT_VAT>20.66</WITHOUT_VAT>
            <VAT>4.34</VAT>
        </UNIT_PRICE>
        <TOTAL_PRICE>
            <WITH_VAT>25.00</WITH_VAT>
            <WITHOUT_VAT>20.66</WITHOUT_VAT>
            <VAT>4.34</VAT>
        </TOTAL_PRICE>
    </ITEM><ITEM>
        <TYPE>billing</TYPE>
        <NAME>Dobírkou</NAME>
        <AMOUNT>1</AMOUNT>
        <CODE>BILLING3</CODE>
        <VARIANT_NAME></VARIANT_NAME>
        <MANUFACTURER></MANUFACTURER>
        <UNIT></UNIT>
        <WEIGHT>0</WEIGHT>
        <UNIT_PRICE>
            <WITH_VAT>25.00</WITH_VAT>
            <WITHOUT_VAT>20.66</WITHOUT_VAT>
            <VAT>4.34</VAT>
        </UNIT_PRICE>
        <TOTAL_PRICE>
            <WITH_VAT>25.00</WITH_VAT>
            <WITHOUT_VAT>20.66</WITHOUT_VAT>
            <VAT>4.34</VAT>
        </TOTAL_PRICE>
    </ITEM></ORDER_ITEMS>
    </ORDER>
    </ORDERS>

Integrace portálu

Jakmile bude dokončena datová integrace, bude ještě potřeba integrovat rozhraní pro zákazníky – Retino portál. Abyste Retino portál mohli na svém webu zobrazit, je třeba vložit na stránku Vašeho e-shopu vložit integrační script. A je hotovo!

Často kladené dotazy (FAQ)

Mažou se stornované objednávky z Retina?

Ne, stornované objednávky se z Retina nemažou. XML feed neumožňuje mazání objednávek, pouze jejich přidání nebo aktualizaci. Pokud máte v e-shopu stornovanou objednávku, doporučujeme ji nadále posílat v XML feedu s aktuálním stavem, aby byla data v systému konzistentní.

Řešení problémů s propojením

Pokud narazíte na jakékoliv problémy při propojování, kontaktujte nás na [email protected]. Náš tým vám rád pomůže s nastavením nebo řešením technických komplikací.

Dostali jste odpověď na svou otázku?