Architektura a fungování
Architektura Comgate Checkout SDK je navržena tak, aby bylo SDK rychlé, flexibilní a snadno rozšiřitelné. Základní princip spočívá v oddělení jádra (modulu Core
) a jednotlivých funkčních modulů (Apple Pay
, Google Pay
, ...). Díky tomu je možné načítat jen ty části, které e-shop skutečně potřebuje, a tím minimalizovat zátěž i riziko chyb.
Základní koncepce
Checkout SDK je vystavěno jako vícevrstvý modulární systém, jehož cílem je oddělení jednotlivých částí a minimalizace závislostí. Základní koncepce vychází ze tří vrstev: Loader, Core a funkční moduly. Loader představuje vstupní bod celé knihovny, Core zajišťuje sdílenou infrastrukturu a funkční moduly implementují konkrétní funkcionality.
Struktura
-
Loader (
@comgate/checkout-js
) je jediným vstupním bodem celé knihovny. Jeho úkolem je podle dodané konfigurace ověřit parametry, stáhnout potřebné moduly z Comgate CDN a zajistit jejich zavedení do DOMu ve správném pořadí. Provádí také například správu verzí. Funguje tedy jako řídicí vrstva a je dostupný buď jako balíček na NPM, nebo prostřednictvím Comgate CDN. -
Core tvoří základní vrstvu SDK. Poskytuje infrastrukturu sdílenou všemi moduly – spravuje události, logování a komunikaci s Comgate API. Tento modul není samostatně publikován a jeho minifikovaný kód je distribuován výhradně prostřednictvím Comgate CDN.
-
Funkční moduly se nachází pod Core a každý z nich implementuje konkrétní funkcionalitu. Moduly jsou nezávislé, načítají se odděleně a zpravidla nevyžadují další závislosti na jiných modulech. Stejně jako Core nejsou veřejně publikovány a jejich minifikované kódy jsou poskytovány prostřednictvím Comgate CDN.
Diagram struktury modulů
Architektonické principy
Návrh Checkout SDK vychází z několika klíčových zásad, které určují způsob jeho používání a údržby:
-
Modularita – každá část SDK je samostatná a lze ji použít nezávisle na ostatních. Díky tomu se načítají pouze skutečně potřebné komponenty, což snižuje objem přenášeného kódu a zrychluje načítání.
-
Izolace – jednotlivé moduly jsou oddělené, takže chyba v jednom neovlivní fungování ostatních. Tím je zajištěna vyšší stabilita, snazší ladění i údržba.
-
Distribuce přes CDN – vývojář nemusí moduly sestavovat ani ručně aktualizovat. Vždy má k dispozici aktuální a optimalizovanou verzi, což výrazně zjednodušuje nasazení i provoz. Comgate také může průběžně dodávat opravy a nové funkce bez nutnosti zásahu ze strany e-shopu.
-
Verzovatelnost – SDK je publikováno v různých verzích prostřednictvím CDN, přičemž je možné přesně definovat požadovanou majoritní verzi (např.
@2
). Integrátor si tak může zvolit stabilní verzi pro produkční prostředí a současně testovat nejnovější buildy jinde. To usnadňuje migrace a minimalizuje riziko neočekávaných změn.
Celkově tato architektura přináší rychlost, stabilitu a flexibilitu, které jsou klíčové pro moderní e-shopy. Vyšší nároky na implementaci představují určitou cenu za tyto výhody, nicméně přínosy výrazně převažují a zajišťují, že integrace Checkout SDK je dlouhodobě udržitelná a připravená na rozšiřování o další platební metody a fuknce.
Fungování
Po načtení Loaderu se provede validace konfigurace a stáhne se Core. V průběhu tohoto procesu jsou zároveň stahovány i jednotlivé funkční moduly, které však zatím nejsou zaváděny do DOMu. Jakmile je Core úspěšně stažen a zaveden do DOMu, přistupuje se k postupnému zavedení jednotlivých funkčních modulů. Každý modul je vložen do DOMu samostatně a po dokončení své inicializace oznamuje připravenost. Po načtení a zavedení všech modulů předává Loader řízení zpět e-shopu a signalizuje, že SDK je připraveno k použití.
V tomto okamžiku přebírá řízení e-shop. Nejprve dochází k vytvoření instance Core
a následně také jednotlivých funkčních modulů, které jsou mountovány do frontendu. Tím je do rozhraní internetového obchodu vložena veškerá potřebná funkcionalita Comgate Checkout SDK.
E-shop je od interní funkcionality SDK odstíněn a ovlivňuje ji pouze prostřednictvím dodané konfigurace. Checkout SDK následně vyvolává různé callbacky, kterými e-shop informuje o průběhu a v případě potřeby vyčkává na další instrukce. Tuto problematiku si podrobněji vysvětlíme v implementační části.