Přehled
Tato dokumentace popisuje, jak zaregistrovat a nakonfigurovat Shopify Public App v Shopify Dev Dashboard a integrovat jej do AdlerDo V6.1 pro instalaci přes OAuth. Tímto procesem vznikne Client ID a Client Secret, které AdlerDo používá k autentizaci vůči každému obchodu Shopify, který aplikaci instaluje.
Kontext architektury
AdlerDo zpřístupňuje /api/shopify/install jako vstupní bod OAuth. Aplikace v Dev Dashboard přesměrovává každý požadavek na instalaci na tento koncový bod, který provede výměnu kódu OAuth, uloží přístupový token do databáze tenanta a zaregistruje potřebné webhooky prostřednictvím úloh na pozadí Hangfire.
Předpoklady
Před zahájením se ujistěte, že:
- Máte přístup k organizaci Shopify společnosti TecSee GmbH s oprávněním spravovat aplikace
- AdlerDo middleware je nasazen a dostupný přes HTTPS na veřejném hostiteli nakonfigurovaném pro cílové prostředí
- Koncové body
/api/shopify/install a /api/shopify/callback jsou dostupné a vracejí platné odpovědi
- Je k dispozici vývojový obchod pro komplexní testování před přesunem přihlašovacích údajů do produkce
- Seznam OAuth scopes vyžadovaných AdlerDo byl dokončen a uložen v konfiguraci
Krok 1 — Otevřete stránku vývoje aplikací

Přihlaste se do organizace Shopify a přejděte na Settings → Apps and sales channels → App development. Klikněte na tlačítko "Build apps in Dev Dashboard".
Důležité: NEPOUŽÍVEJTE tlačítko "Create an app" v panelu Legacy custom apps. Starší vlastní aplikace (Legacy custom apps) přestanou pro nové obchodníky fungovat 1. ledna 2026.
Krok 2 — Vytvořte novou aplikaci v Dev Dashboard

Dev Dashboard se otevře na adrese dev.shopify.com/dashboard/{organizationId}/apps. Klikněte na tlačítko "Create app" v pravém horním rohu seznamu aplikací.
Krok 3 — Zvolte způsob vytvoření a nastavte název aplikace

Nabízejí se dva způsoby vytvoření:
- Start with Shopify CLI — lokálně vytvoří projekt Node/Remix. AdlerDo tento způsob nepotřebuje.
- Start from Dev Dashboard — zaregistruje metadata aplikace přímo v dashboardu a okamžitě vytvoří Client ID a Secret. Pro AdlerDo použijte tento způsob.
Zadejte název aplikace (například: AdlerDo) a klikněte na Create.
Konvence pojmenování
Použijte stabilní název viditelný pro zákazníky, který se zobrazuje na obrazovce souhlasu s instalací. Pro TecSee v případě potřeby přidejte předponu podle prostředí: AdlerDo (Production), AdlerDo Staging, AdlerDo Dev.
Krok 4 — Nakonfigurujte URL, verzi webhooků a scopes

Po vytvoření se aplikace otevře na kartě Versions s novou konceptovou verzí. Zde se definuje instalační URL, verze API webhooků a scopes.
6.1 App URL
Nastavte App URL na veřejný instalační koncový bod AdlerDo:
https://whlvm133440.wawihost.de/api/shopify/install
Na tuto URL Shopify přesměrovává, když obchodník aplikaci instaluje. ShopifyInstallController v AdlerDo načte parametry dotazu shop a hmac, ověří HMAC a přesměruje na stránku udělení OAuth v Shopify.
6.2 Vložení aplikace do administrace Shopify
Ponechte zaškrtávací políčko "Embed app in Shopify admin" povolené. AdlerDo poskytuje vloženou administrátorskou UI uvnitř rámce administrace Shopify pomocí App Bridge.
6.3 Preferences URL
Volitelné. Ponechte prázdné, pokud aplikace nezpřístupňuje samostatnou stránku nastavení mimo vložené prostředí.
6.4 Verze API webhooků
Explicitně zafixujte verzi API webhooků. Příklad ukazuje 2026-04, což je verze, kterou AdlerDo aktuálně používá. Zvýšení této hodnoty vyžaduje kontrolu mapování obsahu každého webhooku.
6.5 Access scopes
Klikněte na "Select scopes" a zaškrtněte scopes, které AdlerDo vyžaduje. Seznam udržujte na minimu, které AdlerDo skutečně používá — obchodníci vidí celý seznam na obrazovce souhlasu s instalací.
Přesně stejný seznam musí být uložen také v konfiguraci AdlerDo (appsettings.Shopify.json → Shopify:Scopes), protože instalační controller jej předává jako parametr dotazu scope. Nesoulad vynutí opětovné instalace.
Volitelné vs. povinné scopes
Volitelné scopes lze vyžádat za běhu po instalaci. AdlerDo považuje všechny uvedené scopes za povinné během počáteční instalace, proto ponechte blok Optional scopes prázdný.
6.6 Redirect URLs
Přidejte OAuth redirect URL — veřejnou URL zpětného volání OAuth AdlerDo:
https://whlvm133440.wawihost.de/api/shopify/callback
Pro každé prostředí přidejte jednu redirect URL. Shopify odmítne zpětné volání OAuth, pokud URL uvedená v parametru redirect_uri není na tomto whitelistu.
Krok 5 — Vydejte verzi

Po uložení všech polí klikněte na Release ve spodní části stránky verze.
- Version name — čitelný název. Konvence TecSee:
alderdoo-{n}, kde n je automaticky se zvyšující číslo vydání
- Version message — krátký changelog (např. "added read_locales scope", "bumped webhooks API to 2026-04")
Klikněte na Release. Nová verze se okamžitě stane aktivní a nahradí předchozí aktivní verzi pro všechny nové instalace.
Změny scopes po vydání
Přidání nového scope do vydané verze jej NEudělí automaticky u již nainstalovaných obchodů. Majitel obchodu musí schválit opětovnou autorizaci. AdlerDo při každém požadavku detekuje odchylku scopes a v případě potřeby spustí přesměrování na opětovnou instalaci.
Krok 6 — Ověřte aktivní verzi

Otevřete kartu Versions z levého bočního panelu. Naposledy vydaná verze je označena zeleným odznakem "Active". Všechny předchozí verze zůstávají viditelné pro účely auditu.
Z tohoto zobrazení můžete kliknout na jakoukoli historickou verzi a zkontrolovat její konfiguraci, což je užitečné při ladění instalace na starším obchodě.
Krok 7 — Získejte Client ID a Secret

Otevřete kartu Settings z levého bočního panelu. Blok Credentials v horní části zpřístupňuje Client ID a Secret.
9.1 Client ID
Veřejný identifikátor. Lze bezpečně uložit do konfigurace. Zkopírujte jej pomocí ikony schránky a vložte do konfigurace AdlerDo.
9.2 Client Secret
Citlivý údaj. Zacházejte s ním jako s přihlašovacím údajem. Secret se zobrazí pouze jednou při prvním vygenerování; poté se zobrazuje pouze v zamaskované podobě. Pomocí ikony oka jej jednorázově odhalte pro zkopírování a poté jej uložte prostřednictvím standardní cesty pro ukládání secretů v AdlerDo.
V AdlerDo jsou secrety pro integrace marketplace uloženy šifrované pomocí AES-256 v databázi tenanta prostřednictvím MarketplaceCredentialEncryptor.
9.3 Rotace secretu
Kliknutím na Rotate vygenerujete nový secret. Předchozí secret je okamžitě zneplatněn. Koordinujte rotaci s nasazením nového secretu do AdlerDo.
9.4 Kontaktní e-mail API
Nastavte jej na monitorovanou schránku (aktuálně dev@tecsee.de). Shopify na tuto adresu zasílá oznámení o ukončení podpory API a bezpečnostní upozornění.
Zapojení přihlašovacích údajů do AdlerDo
Jakmile máte Client ID a Secret k dispozici, přidejte přihlašovací údaje do konfigurace AdlerDo.
10.1 Konfigurace
Přidejte následující blok do konfigurace specifické pro dané prostředí:
"Shopify": {
"ClientId": "1d15c8413f636e7cfda6f4402d9ef552",
"ClientSecret": "<from Settings page>",
"Scopes": "read_products,write_products,read_orders,write_orders,…",
"WebhooksApiVersion": "2026-04",
"InstallRedirectUrl": "https://whlvm133440.wawihost.de/api/shopify/callback"
}
10.2 Průběh instalace
Komplexní instalační handshake je následující:
- Obchodník klikne na instalační odkaz → Shopify přesměruje na App URL s parametry dotazu shop a hmac
- AdlerDo
/api/shopify/install ověří HMAC vůči Client Secret a přesměruje na https://{shop}/admin/oauth/authorize s nakonfigurovaným seznamem scopes a vygenerovaným state nonce
- Obchodník schválí scopes na obrazovce souhlasu Shopify
- Shopify přesměruje na
/api/shopify/callback s parametry code, hmac a state
- AdlerDo ověří HMAC a state nonce, poté odešle POST požadavek s code + Client ID + Client Secret na
https://{shop}/admin/oauth/access_token pro získání offline přístupového tokenu
- Token je uložen šifrovaný pomocí AES-256 vůči tenantovi; jsou zaregistrovány odběry webhooků a opakující se synchronizační úlohy Hangfire
- AdlerDo přesměruje obchodníka na vloženou administrátorskou URL
10.3 Ověření instalace
Po handshaku:
- Potvrďte, že v databázi tenanta existuje nová entita
ShopifyConnection s nenulovým EncryptedAccessToken a uděleným seznamem scopes
- Potvrďte, že opakující se úlohy (
SyncShopifyOrdersV2026, SyncShopifyProductsV2026) jsou zaregistrovány v Hangfire pod novým identifikátorem tenanta
- Spusťte testovací webhook z administrace Shopify a potvrďte, že handler AdlerDo jej zpracuje bez chyb HMAC
Příloha A — Běžné scopes používané AdlerDo
| Scope |
Účel v AdlerDo |
read_products, write_products |
Synchronizace katalogu: vytváření/aktualizace produktů a variant z Odoo nebo JTL-Wawi |
read_orders, write_orders |
Načítání objednávek do AdlerDo a odesílání úprav objednávek / plnění zpět |
read_inventory, write_inventory |
Synchronizace úrovní skladu podle umístění |
read_locations |
Řešení míst plnění pro sklad a přepravu |
read_fulfillments, write_fulfillments |
Vytváření plnění a odesílání sledovacích čísel od dopravců: DHL, GLS, DPD, DB Schenker |
read_assigned_fulfillment_orders, write_assigned_fulfillment_orders |
Vyžadováno, když AdlerDo funguje jako registrovaná služba plnění |
read_customers, write_customers |
Synchronizace zákazníků a B2B segmentace |
read_shipping |
Čtení konfigurace dopravce a zóny pro výpočet sazeb |
read_app_proxy, write_app_proxy |
Vyžadováno pro proxy trasy vložené administrace |
read_analytics |
Reportingové dashboardy ve vložené administraci |
Příloha B — Řešení problémů
Instalační přesměrování vrací 401 / Invalid HMAC
Příčina: Client Secret v konfiguraci AdlerDo neodpovídá secretu v Settings, nebo byl secret rotován bez opětovného nasazení.
Řešení: Zkopírujte secret ze stránky Settings v Dev Dashboard a znovu nasaďte.
Zpětné volání OAuth vrací 'redirect_uri is not whitelisted'
Příčina: URL zpětného volání není přítomna v poli Redirect URLs aktivní verze.
Řešení: Otevřete aktivní verzi, přidejte URL, vydejte novou verzi a zopakujte instalaci.
Obchod se nainstaluje, ale neobjeví se žádné úlohy Hangfire
Příčina: Výměna kódu OAuth proběhla úspěšně, ale poinstalační bootstrap selhal (např. zřizování tenanta).
Řešení: Zkontrolujte protokoly AdlerDo v okolí časového razítka instalace; ShopifyInstallController vydává informační protokol pro každou fázi a chybový protokol s problematickým krokem.
Doručování webhooků selhává s chybami HMAC
Příčina: AdlerDo vypočítal HMAC webhooku nad zpracovaným obsahem místo nad surovým tělem.
Řešení: Potvrďte, že middleware požadavku ukládá surové tělo požadavku do vyrovnávací paměti před vazbou modelu pro trasy /api/shopify/webhooks/*.
Obchodník hlásí chybějící data po přidání scope
Příčina: Obchod byl nainstalován proti starší verzi, která scope neobsahovala.
Řešení: Spusťte přesměrování na opětovnou instalaci — AdlerDo detekuje odchylku scopes v ShopifyConnectionMiddleware a přesměruje na instalační koncový bod, kde obchodník schválí nový scope.