Semakin
Zákazník

SemaShipping Packeta

Plugin pro dopravu přes Zásilkovnu / Packetu ve VirtueMart. Umožňuje zákazníkům vybrat výdejní místo nebo Z-Box přímo v košíku, e-shopu exportovat zásilky do Packety (jednotlivě i hromadně) a tisknout štítky.

PožadavekVerze
Joomla4.x, 5.x
VirtueMart4.x
PHP8.0+
MySQL5.7+ / MariaDB 10.3+
Aktuální verze1.3.2

1. Požadavky

  • Joomla 4.x nebo 5.x (VirtueMart zatím Joomlu 6 nepodporuje)
  • VirtueMart 4.x
  • PHP 8.0 nebo novější
  • MySQL 5.7+ / MariaDB 10.3+
  • Aktivní účet u Zásilkovny / Packety s přístupem k API

Údaje z Packety, které budete potřebovat

ÚdajKde ho najdeteK čemu slouží
API klíč (Widget)Klientská sekce Packety > Nastavení > APIZobrazení widgetu pro výběr výdejního místa na frontendu
API hesloKlientská sekce Packety > Nastavení > APIExport zásilek a tisk štítků (backend)
Označení odesílateleKlientská sekce Packety > Informace o uživateli > OdesílateleIdentifikace odesílatele v zásilce (povinné)
Carrier ID (jen pro HD)Feed dopravců – viz sekce 7ID dopravce pro doručení na adresu

2. Instalace

  1. Stáhněte instalační ZIP soubor plg_vmshipment_semazasilkovna_X.Y.Z.zip.
  2. Přihlaste se do administrace Joomla.
  3. Přejděte do System > Install > Extensions.
  4. Nahrajte ZIP soubor.
  5. Po úspěšné instalaci se zobrazí hláška o nainstalování pluginu.

Upgrade: Stejný postup jako instalace. Joomla použije method="upgrade" a zachová všechna existující data.

Součástí balíčku je i systémový plugin plg_system_semazasilkovna, který se nainstaluje a povolí automaticky. Zajišťuje tlačítka pro hromadný export v přehledu objednávek VirtueMart (viz sekce 11).


3. Aktivace pluginu

Po instalaci je nutné plugin dopravy ručně povolit:

  1. Přejděte do Extensions > Plugins (nebo System > Manage > Plugins).
  2. Vyhledejte semazasilkovna nebo Zasilkovna.
  3. Klikněte na název pluginu SemaShipping Packeta - Zásilkovna pro VirtueMart (skupina vmshipment) a nastavte Status = Enabled.
  4. Uložte.

Systémový plugin plg_system_semazasilkovna se povoluje sám při instalaci – ručně ho zapínat nemusíte.

Plugin sám o sobě nic nezobrazuje – až po vytvoření metody dopravy ve VirtueMart (viz sekce 5).


4. Globální konfigurace

V nastavení pluginu (Extensions > Plugins > klik na název) vyplňte globální parametry, které platí pro všechny metody dopravy založené na tomto pluginu:

ParametrPopis
API klíč (Widget)Veřejný API klíč pro Packeta Widget v6 (16 znaků). Zobrazuje se na frontendu – není tajný.
API hesloTajné API heslo pro volání REST API (export zásilek, štítky). NIKDY se nezobrazuje na frontendu.
Označení odesílateleNázev odesílatele přesně tak, jak je uveden v klientské sekci Packety (Informace o uživateli > Odesílatele). Packeta ho při exportu vyžaduje – při neshodě vrací chybu.
Výchozí váha (kg)Náhradní váha zásilky v kg, pokud není uvedena u produktu. Výchozí: 1 kg.
ID plateb = dobírkaČárkou oddělená ID platebních metod VirtueMart, které jsou dobírkou. Při exportu se u nich automaticky nastaví dobírková částka (viz sekce 13).
Formát štítkůFormát PDF štítků pro tisk: A6 on A4, A7 on A4, A6 on A6, A7 on A7.
Stav objednávek pro exportKód stavu objednávky VirtueMart, ze kterého se bere seznam objednávek pro hromadný export. Výchozí: C (potvrzeno).

Důležité: Bez vyplněného API klíče a API hesla nebude plugin funkční. API klíč je nutný pro widget na frontendu, API heslo pro export zásilek a tisk štítků v administraci.


5. Vytvoření metody dopravy

Plugin se ve VirtueMart používá jako základ pro metody dopravy. Jednu instalaci pluginu můžete použít pro libovolný počet metod – např. jednu pro výdejní místa v ČR a další pro doručení na adresu v každé zahraniční zemi.

Postup

  1. V administraci VirtueMart přejděte do Shop > Shipment Methods.
  2. Klikněte na New.
  3. Vyplňte:
    • Shipment Name: Název zobrazený zákazníkovi (např. "Zásilkovna – výdejní místo")
    • Published: Yes
    • Shipment Description: Volitelný popis
    • Shipment Method: Zvolte SemaShipping Packeta - Zásilkovna pro VirtueMart
  4. Přejděte na záložku Configuration (per-method nastavení).
  5. Nastavte parametry popsané v následujících sekcích.
  6. Uložte.

6. Typ doručení

Každá metoda dopravy má parametr Typ doručení (radio):

Výdejní místa + Z-Boxy (pickup)

  • Na frontendu se zobrazí widget pro výběr výdejního místa.
  • Zákazník musí vybrat bod před odesláním objednávky.
  • Podporuje interní body Zásilkovny i externí (Z-Boxy, Alzaboxy apod.).
  • Podrobnosti viz sekce 8.

Doručení na adresu (hd)

  • Na frontendu se zobrazí jen radio button s cenou – bez widgetu.
  • Adresa se přebírá z objednávky (dodací adresa, při jejím chybění fakturační).
  • Vyžaduje vyplnění HD Carrier ID – viz sekce 7.

Parametry související s typem doručení

ParametrPopis
Země pro widgetISO kód země pro filtrování bodů ve widgetu (např. cz, sk). Výchozí: cz. Platí jen pro typ pickup.
Filtr dopravců (widget)Čárkou oddělená ID dopravců pro filtrování widgetu. Prázdné = vše. Platí jen pro typ pickup.
HD Carrier IDID dopravce Packety pro doručení na adresu. Platí jen pro typ hd.

7. Doručení na adresu (HD)

Doručení na adresu funguje bez widgetu – zásilka se odesílá na dodací adresu z objednávky. Každá metoda dopravy ale nese jedno HD Carrier ID, které platí pro jednu zemi a jednoho dopravce.

Pravidlo: jedna země = jedna metoda dopravy. Pro doručení do pěti zemí vytvořte pět metod, každou s vlastním Carrier ID a vlastním omezením země.

Postup pro jednu zemi

  1. Vytvořte novou metodu dopravy podle sekce 5.
  2. Typ doručení = Doručení na adresu (hd).
  3. HD Carrier ID = ID dopravce pro danou zemi (viz tabulka níže).
  4. Země = pouze ta jedna země, do které metoda doručuje.
  5. Nastavte cenu, daň a případně váhový rozsah (viz sekce 9).
  6. Uložte.

Doporučená Carrier ID pro nejčastější země

ZeměCarrier IDDopravceMěnaVlastní číslo popisnéDobírka
Česká republika106CZ Zásilkovna domů HDCZKneano
Slovensko131SK Packeta Home HDEURneano
Maďarsko4159HU Doručení na adresu HDHUFneano
Německo13613DE Home Delivery HDEURanoano
Polsko1406PL DPD HDPLNneano
Rakousko80AT Rakouská pošta HDEURneano

Další dostupné varianty (pokud vám vyhovují lépe podmínky konkrétního dopravce):

ZeměCarrier IDDopravceVlastní číslo popisnéDobírka
Maďarsko763HU Maďarská pošta HDanoano
Maďarsko3828HU Express One HDneano
Německo6373DE Hermes HDanoano
Polsko272PL Polská pošta 48 HDneano
Polsko3603PL InPost HDneano
Polsko4162PL Doručení na adresu HDanoano
Rakousko6830AT DPD HDanone

Všichni uvedení dopravci mají limit 30 kg na zásilku.

Pozor na sloupec "Vlastní číslo popisné": dopravci s hodnotou "ano" (separateHouseNumber) vyžadují číslo popisné v samostatném poli. Viz Číslo popisné níže.

Jak si Carrier ID ověřit nebo najít další

Seznam dopravců se mění – ID si před nasazením ověřte ve svém účtu. Feed dopravců pro doručení na adresu stáhněte z:

https://www.zasilkovna.cz/api/v4/<API_HESLO>/branch.json?address-delivery

<API_HESLO> nahraďte svým tajným API heslem (stejným, jaké máte v globální konfiguraci pluginu – ne 16znakovým API klíčem widgetu).

Odpověď je JSON s objektem carriers. U každého dopravce jsou důležitá tato pole:

PoleVýznam
idHodnota pro parametr HD Carrier ID
countryISO kód země (cz, sk, hu, de, pl, at ...)
pickupPointsfalse = doručení na adresu (HD), true = výdejní místo / box
apiAllowedMusí být true, jinak dopravce nelze použít přes API
currencyMěna, ve které dopravce přijímá dobírku
separateHouseNumbertrue = vyžaduje číslo popisné v samostatném poli
disallowsCodtrue = dopravce nepodporuje dobírku
maxWeightMaximální váha zásilky v kg

Stejný feed najdete i v klientské sekci Packety pod položkou Feed dopravců.

Číslo popisné

Někteří zahraniční dopravci (separateHouseNumber: true) vyžadují číslo popisné oddělené od ulice. Plugin ho čte z uživatelského pole objednávky s názvem house_number, které VirtueMart standardně nemá.

Pokud používáte dopravce s tímto požadavkem:

  1. Přejděte do VirtueMart > Shop > User Fields.
  2. Vytvořte nové pole s názvem (Name) přesně house_number.
  3. Nastavte ho jako povinné a zobrazené v dodací i fakturační adrese.
  4. Uložte.

Bez tohoto pole vrátí Packeta při exportu chybu PacketAttributesFault.

Měna a dobírka

Každý HD dopravce přijímá dobírku v jedné pevné měně (sloupec Měna v tabulkách výše). Pokud objednávku vystavíte v jiné měně, Packeta dobírku odmítne.

  • Buď pro danou zemi nastavte ve VirtueMart odpovídající měnu,
  • nebo u této metody dopravy dobírku nenabízejte.

Viz také sekce 14.


8. Widget pro výběr výdejního místa

U metod s typem doručení Výdejní místa + Z-Boxy se na frontendu zobrazí tlačítko "Vybrat výdejní místo", které otevře interaktivní mapu Packeta Widget v6.

Jak to funguje

  1. Zákazník v košíku zvolí metodu dopravy se Zásilkovnou.
  2. Klikne na tlačítko "Vybrat výdejní místo".
  3. Otevře se widget s mapou a seznamem bodů.
  4. Po výběru bodu se jeho název zobrazí pod tlačítkem.
  5. Výběr se uloží a přežije změnu platební metody, aktualizaci košíku i přechod mezi kroky objednávky.

Session persistence

Vybraný bod se ukládá do PHP session. Díky tomu:

  • Výběr přežije změnu platební metody nebo jiného nastavení košíku.
  • Při AJAX přenačtení stránky se bod automaticky obnoví.
  • Session se vyčistí až po úspěšném odeslání objednávky.

Filtrování bodů

  • Země: Parametr "Země pro widget" omezí body na konkrétní zemi (např. cz pro ČR, sk pro Slovensko).
  • Dopravci: Parametr "Filtr dopravců" umožní zobrazit jen určité typy bodů (např. jen Z-Boxy, jen Alzaboxy). ID dopravců výdejních míst získáte ze stejného feedu jako u HD, jen s hodnotou pickupPoints: true – viz sekce 7.

Validace: Pokud zákazník nevybere výdejní místo a pokusí se dokončit objednávku, zobrazí se hláška "Prosím vyberte výdejní místo Zásilkovny."


9. Cena dopravy

Každá metoda dopravy má vlastní cenové nastavení:

ParametrPopis
Cena dopravyZákladní cena dopravy.
Poplatek za baleníPříplatek za balení / manipulaci (přičítá se k ceně dopravy).
Daňové pravidloDaňové pravidlo VirtueMart pro cenu dopravy (DPH).
Doprava zdarma odČástka objednávky, od které je doprava zdarma. Prázdné = doprava zdarma nikdy.

Omezení zobrazení metody

ParametrPopis
ZeměPovolené země pro tuto metodu dopravy. U HD metod zde nastavte právě jednu zemi odpovídající Carrier ID.
Blokované zeměZemě, pro které tato metoda NENÍ dostupná.
Minimální váhaMinimální váha objednávky pro zobrazení této metody.
Maximální váhaMaximální váha objednávky pro zobrazení této metody. Doporučujeme nastavit podle limitu dopravce (maxWeight z feedu, zpravidla 30 kg).
Jednotka váhyJednotka váhy (KG nebo LB).

10. Export zásilek do Packety

Po přijetí objednávky s dopravou přes Zásilkovnu můžete zásilku exportovat do systému Packety přímo z administrace VirtueMart.

Postup

  1. Přejděte do VirtueMart > Orders.
  2. Otevřete detail objednávky.
  3. V sekci dopravy uvidíte informace o vybraném bodě (nebo adrese u HD).
  4. Klikněte na tlačítko "Vytvořit zásilku v Packetě".
  5. Plugin odešle data do Packeta API a zobrazí potvrzení s číslem zásilky.

Co se exportuje

  • Výdejní místo: ID bodu, jméno příjemce, e-mail, telefon, váha, hodnota.
  • Externí bod (Z-Box): ID dopravce + ID bodu, plus údaje příjemce.
  • Doručení na adresu: ID dopravce + kompletní adresa (ulice, číslo popisné, město, PSČ).
  • Dobírka: Pokud je platební metoda dobírka, nastaví se dobírková částka.

Bezpečnost

  • Každý export je chráněný CSRF tokenem.
  • API heslo se nikdy nezobrazuje na frontendu.
  • Všechny API požadavky a odpovědi se logují do tabulky #__sema_zasilkovna_log (API heslo je v logu maskované).
  • Zásilku nelze exportovat dvakrát – pokud už byla exportována, zobrazí se hláška "Zásilka již byla exportována."

11. Hromadný export a štítky

Pro odbavení více objednávek najednou slouží tlačítka přímo v přehledu objednávek VirtueMart. Zajišťuje je systémový plugin plg_system_semazasilkovna, který se instaluje automaticky spolu s pluginem dopravy.

Postup

  1. Přejděte do VirtueMart > Orders.
  2. V horní liště (vedle tlačítka "Aktualizovat objednávky") uvidíte tlačítko "Export do Zásilkovny".
  3. Kliknutím odešle plugin do Packety všechny dosud neexportované objednávky se stavem nastaveným v parametru Stav objednávek pro export (výchozí C).
  4. Výsledek se zobrazí v proužku pod listou – pro každou objednávku úspěch s číslem zásilky, nebo chybová hláška.
  5. Po exportu se objeví tlačítko "Stáhnout štítky", které stáhne jedno PDF se štítky pro všechny exportované zásilky.

Co je dobré vědět

  • Objednávka, která už byla exportována, se přeskočí – opakovaný export nic nezdvojí. Pokud není co exportovat, zobrazí se "Žádné neexportované objednávky".
  • Chyba u jedné objednávky nezastaví zpracování ostatních. Nepodařené objednávky vyřešíte jednotlivě z detailu objednávky.
  • Hromadné štítky fungují jen pro interní body Zásilkovny. Pro externí body (Z-Box) a doručení na adresu je nutné stáhnout štítek jednotlivě z detailu objednávky – Packeta API pro kurýrní štítky hromadné stahování nenabízí.
  • Export i stahování štítků je přístupné jen uživatelům s oprávněním do administrace a je chráněno CSRF tokenem.

12. Tisk štítků

Po úspěšném exportu zásilky můžete stáhnout PDF štítek:

  1. V detailu objednávky klikněte na "Stáhnout štítek (PDF)".
  2. Prohlížeč stáhne PDF soubor se štítkem.

Hromadné stažení štítků pro více objednávek najednou viz sekce 11.

Formáty štítků

Formát se nastavuje v globálním nastavení pluginu:

FormátPopis
A6 on A4Štítek A6 na papíru A4 (výchozí)
A7 on A4Štítek A7 na papíru A4
A6 on A6Štítek A6 na papíru A6 (pro štítkové tiskárny)
A7 on A7Štítek A7 na papíru A7 (pro štítkové tiskárny)

Typy štítků

Plugin automaticky vybere správný typ štítků podle druhu doručení:

  • Interní body Zásilkovny: Standardní štítek Zásilkovny (packetLabelPdf).
  • Externí body (Z-Box) a HD: Kurýrní štítek (packetCourierLabelPdf) – plugin si nejdříve vyžádá trackovací číslo od Packety.

13. Dobírka (COD)

Plugin podporuje automatickou detekci dobírky:

  1. V globálním nastavení pluginu vyplňte parametr "ID plateb = dobírka".
  2. Zadejte čárkou oddělená ID platebních metod VirtueMart, které jsou dobírkou.
  3. Při exportu zásilky plugin automaticky zkontroluje, zda objednávka používá dobírku, a nastaví správnou částku.

Jak zjistit ID platební metody

  1. Přejděte do VirtueMart > Payment Methods.
  2. Otevřete platební metodu dobírky.
  3. ID je viditelné v URL (parametr virtuemart_paymentmethod_id).

Omezení u zahraničních dopravců

  • Dobírka musí být v měně dopravce – viz sekce 7 a sekce 14.
  • Někteří dopravci dobírku nepodporují vůbec (disallowsCod: true, např. AT DPD HD). U takové metody dobírkovou platbu nenabízejte.

14. Měny a zaokrouhlování

Plugin posílá do Packety měnu objednávky (pole currency) spolu s hodnotou zásilky a případnou dobírkou.

  • CZK a HUF nemají setinnou jednotku – Packeta u nich odmítá desetinná místa a vrací chybu PacketAttributesFault. Plugin proto hodnotu i dobírku u těchto měn automaticky zaokrouhlí na celé číslo.
  • EUR, PLN a další se odesílají s desetinnými místy beze změny.
  • Měna objednávky by měla odpovídat měně dopravce (sloupec Měna v tabulkách v sekci 7), jinak Packeta dobírku odmítne.

15. Odinstalace

Postup

  1. Extensions > Manage > Extensions
  2. Vyhledejte semazasilkovna.
  3. Odinstalujte plugin dopravy SemaShipping Packeta - Zásilkovna pro VirtueMart.

Co se smaže

  • Plugin dopravy (PHP, JS, CSS, jazykové soubory)
  • Systémový plugin plg_system_semazasilkovna (odstraní se automaticky)
  • Tabulka #__virtuemart_shipment_plg_semazasilkovna (data o zásilkách v objednávkách)

Co ZŮSTANE zachováno

  • Tabulka #__sema_zasilkovna_log (auditní záznamy o API voláních)

Proč se log nemaže? Záznamy o exportovaných zásilkách slouží jako audit trail. Automatické smazání při odinstalaci by mohlo způsobit ztrátu důležitých informací. Pokud tabulku chcete odstranit, proveďte to ručně:

DROP TABLE IF EXISTS `#__sema_zasilkovna_log`;

(nahraďte #__ vaším skutečným prefixem tabulek)


16. Řešení problémů

Widget se nezobrazuje

  1. Ověřte, že plugin je povolený.
  2. Ověřte, že metoda dopravy má typ doručení Výdejní místa + Z-Boxy (ne HD).
  3. Zkontrolujte, že je vyplněný API klíč (Widget) v globálním nastavení pluginu.
  4. Zkontrolujte konzoli prohlížeče (F12) na JavaScript chyby.
  5. Ověřte, že stránku neblokuje Content Security Policy (CSP) pro doménu widget.packeta.com.

Zákazník nemůže dokončit objednávku

  • U metody typu "Výdejní místa" zákazník MUSÍ vybrat bod. Hláška "Prosím vyberte výdejní místo Zásilkovny" se zobrazuje správně.
  • U metody typu "Doručení na adresu" se žádná validace bodu neprovádí – pokud zákazník nemůže dokončit objednávku, problém je jinde.

Chyba při exportu zásilky

  • Ověřte, že je vyplněné API heslo v globálním nastavení pluginu.
  • Ověřte, že Označení odesílatele přesně odpovídá názvu odesílatele v klientské sekci Packety.
  • Zkontrolujte hlášení chyby – plugin zobrazuje přesnou odpověď Packeta API.
  • Zkontrolujte log v tabulce #__sema_zasilkovna_log pro detaily požadavku a odpovědi.

Chyba PacketAttributesFault

Nejčastější příčiny:

  • Chybí číslo popisné u dopravce s separateHouseNumber: true – viz Číslo popisné.
  • Desetinná místa v CZK nebo HUF – řeší zaokrouhlení v sekci 14.
  • Nesouhlasí Označení odesílatele s klientskou sekcí Packety.
  • Chybí telefon nebo e-mail u dopravce s requiresPhone / requiresEmail.
  • Přetečení limitu váhy dopravce (maxWeight, zpravidla 30 kg).

Metoda dopravy pro doručení na adresu neposílá správného dopravce

  • Ověřte, že HD Carrier ID odpovídá zemi nastavené v parametru Země.
  • Ověřte, že dopravce má ve feedu apiAllowed: true – např. "Packeta večerní doručení Bratislava HD" (ID 132) přes API použít nelze.
  • Ověřte, že Typ doručení je nastaven na hd (ne pickup).

Štítek se nestáhne

  1. Ověřte, že zásilka byla úspěšně exportována (musí existovat číslo zásilky).
  2. Zkontrolujte, že formát štítků v nastavení pluginu je platný.
  3. Pro externí body a HD: plugin potřebuje získat trackovací číslo od Packety. Pokud selže, zkontrolujte API log.
  4. U hromadného stahování: externí body a HD nejsou součástí hromadného PDF, stáhněte je jednotlivě.

Tlačítka hromadného exportu se nezobrazují

  1. Ověřte, že systémový plugin plg_system_semazasilkovna je nainstalovaný a povolený (Extensions > Plugins, skupina system).
  2. Ověřte, že jste na stránce VirtueMart > Orders (tlačítka se jinde nezobrazují).
  3. Zkontrolujte konzoli prohlížeče na JavaScript chyby.

Dobírka se nenastavuje

  • Ověřte, že ID platební metody dobírky je správně zadané v parametru "ID plateb = dobírka".
  • ID musí být číslo odpovídající virtuemart_paymentmethod_id v URL platební metody.
  • Více ID oddělujte čárkou bez mezer (např. 3,7).
  • Ověřte, že dopravce dobírku vůbec podporuje (disallowsCod: false).

Metoda dopravy se nezobrazuje

  • Ověřte nastavení zemí (povolené / blokované).
  • Ověřte váhové omezení (min/max váha).
  • Ověřte, že metoda je Published ve VirtueMart.
  • Ověřte, že plugin je Enabled.

Kontrolní seznam pro spuštění

  • Plugin nainstalován a povolen
  • API klíč (Widget) vyplněn
  • API heslo vyplněno
  • Označení odesílatele vyplněno a shoduje se s klientskou sekcí Packety
  • Metoda dopravy vytvořena ve VirtueMart a publikovaná
  • Typ doručení zvolen (pickup nebo hd)
  • Země pro widget nastavena (pokud pickup)
  • HD Carrier ID vyplněno a ověřeno ve feedu dopravců (pokud hd)
  • Pro HD: v parametru Země je nastavena právě jedna země
  • Pole house_number vytvořeno (pokud dopravce vyžaduje vlastní číslo popisné)
  • Měna objednávek odpovídá měně dopravce
  • ID dobírkových plateb vyplněno (pokud používáte dobírku)
  • Formát štítků zvolen
  • Stav objednávek pro export nastaven
  • Testovací objednávka provedena a zásilka úspěšně exportována
  • Štítek stažen a vytištěn
  • Hromadný export otestován v přehledu objednávek

Packeta® a Zásilkovna® jsou registrované ochranné známky jejich příslušných vlastníků. Tento produkt je nezávislé rozšíření a není s provozovatelem služby Packeta / Zásilkovna spojen ani jím schválen.

Máte zájem o spolupráci?

Ozvěte se nám a probereme Váš projekt. Rádi Vám poradíme s výběrem řešení.