Tento návod popisuje, jak propojit prodejní automat s platformou Wolt, aby zákazníci mohli objednávat produkty z automatu přes aplikaci Wolt.
Než začnete, ujistěte se, že máte:
Wolt Merchant Portal účet s přístupem k POS integraci (client credentials + webhook secret)
Cloudflare účet s Workers plánem (Free tier stačí)
Běžící Contember instance s nasazeným datovým modelem (GraphQL API)
Nainstalované CLI : wrangler (Cloudflare Workers CLI), yarn
Krok 1: Cloudflare KV Namespace
Worker ukládá OAuth tokeny do Cloudflare KV (key-value storage). Vytvořte namespace:
Copy cd worker
npx wrangler kv:namespace create KV_STORE Výstup bude obsahovat ID namespace. Vložte ho do worker/wrangler.toml:
Copy [[ kv_namespaces ]]
binding = " KV_STORE "
id = " <vaše-kv-namespace-id> " Krok 2: Secrets a environment variables
Secrets (citlivé údaje)
Nastavte přes Cloudflare Dashboard (Workers → Settings → Variables) nebo přes CLI:
Wolt Merchant Portal → POS Integration
Wolt Merchant Portal → POS Integration
Wolt Merchant Portal → Webhooks
HMAC-SHA256 klíč pro ověření webhooků
API token s oprávněním pro čtení/zápis
Např. https://engine.contember.example.com
Proměnné (veřejné)
Tyto jsou nastaveny v worker/wrangler.toml:
Krok 3: Registrace webhooku na Wolt
V Wolt Merchant Portal zaregistrujte webhook:
URL : https://<váš-worker-domain>/wolt/webhook/orders
Události : order.notification
Autentizace : HMAC-SHA256 (Wolt podepisuje každý request hlavičkou wolt-signature)
Poznámka: Worker domain najdete v Cloudflare Dashboard → Workers → váš worker → Triggers → Routes. Typicky vending-admin-hub-worker.<vaše-subdomena>.workers.dev.
Krok 4: OAuth onboarding (propojení tokenu)
Wolt používá OAuth 2.0 Authorization Code flow. Při prvním propojení:
V Wolt Merchant Portal spusťte POS integraci pro dané venue
Wolt přesměruje na váš redirect endpoint s parametrem code:
Worker automaticky:
Vymění code za access_token + refresh_token
Extrahuje venue_id z JWT access tokenu
Uloží tokeny do KV pod klíčem wolt:tokens:<venue_id>
Důležité: OAuth flow je potřeba provést jen jednou pro každé venue. Worker si poté automaticky obnovuje tokeny pomocí refresh tokenu.
Krok 5: Propojení automatu s Wolt venue
V administraci (Contember admin) nastavte na entitě Machine pole woltVenueId:
Otevřete detail automatu v admin UI
Do pole Wolt Venue ID vložte venue_id, které jste obdrželi v kroku 4
Tím se vytvoří vazba: když přijde Wolt objednávka pro dané venue, systém ví, na kterém automatu ji zpracovat.
Krok 6: Sladění produktů (SKU mapping)
Aby systém správně přiřadil objednané položky ke skutečným produktům v automatu:
Každý produkt v Contember musí mít vyplněné pole SKU
Stejné SKU musí být nastavené na odpovídajícím produktu ve Wolt katalogu
Produkt musí mít dostupný inventory (status = available) v daném automatu
Pokud se SKU neshoduje nebo produkt nemá skladové zásoby, objednávka bude automaticky zamítnuta.
Krok 7: Deploy workeru
Worker se nasadí na Cloudflare a bude:
Přijímat webhooky od Wolt
Spouštět cron job (každých 5 minut) pro uvolnění prošlých rezervací
Ověření funkčnosti
1. Testovací objednávka
Vytvořte objednávku přes Wolt aplikaci na propojené venue.
2. Kontrola logů
V Cloudflare Dashboard → Workers → váš worker → Logs (Real-time) uvidíte:
3. Kontrola v admin UI
V sekci Objednávky by se měla objevit nová objednávka se statusem in_process
Pickup code je vygenerovaný 6místný číselný kód
V sekci Inventory budou odpovídající položky ve stavu reserved
4. MQTT příkaz do automatu
V MQTT logu automatu by se měl objevit příkaz ORDER_RESERVE odeslaný do 5 sekund po vytvoření objednávky.
Řešení problémů
Špatný WOLT_WEBHOOK_SECRET
Ověřte, že secret v Cloudflare odpovídá nastavení ve Wolt
No tokens in KV for venue
OAuth flow nebyl proveden
Spusťte onboarding (krok 4)
woltVenueId nenastaveno na Machine
Nastavte venue ID v admin UI (krok 5)
Objednávka zamítnuta — out of stock
SKU neexistuje nebo nedostatek zásob
Zkontrolujte SKU shodu a stav inventory
Proveďte OAuth onboarding znovu (krok 4)
Last updated 19 minutes ago