DelietaDokumentacja

Kontrakt witryny

Statyczny sklep klienta — katalog z GET /api/v1/menu, koszyk itemId plus ilość, klucz publikowalny bez sekretu.

Kontrakt witryny (storefront-contract@v1) opisuje sklep, który klient sam wdraża. Delieta go nie hostuje. Artefakt jest statycznym eksportem: katalog piecze się na buildzie, koszyk żyje w localStorage, kasa jest oznaczonym szwem i nie wysyła POST.

Dwa env, żaden publiczny prefiks

DELIETA_API_URL=https://delieta.pl
DELIETA_PUBLISHABLE_KEY=dlt_live_…

Sam origin — bez sufiksu /api/v1, bez końcowego slasha. Klucz jest używany na buildzie do GET /api/v1/menu. Żadnego NEXT_PUBLIC_DELIETA.

Brak env → strona „ustaw katalog”, nie pusta witryna udająca sklep. Env jest, fetch pada → strona „katalog niedostępny”, nie menu z zerem pozycji, które wygląda jak wdrożenie.

Klucz publikowalny jest niezdolny, nie „ukryty”

kind: publishable trzyma wyłącznie catalog:read (menu:read to alias). To działa w publicznym HTML tylko dlatego, że klucz nie umie czytać zamówień, kierowców ani klientów.

Klucz sekretny (orders:write, eta:quote) nie trafia do przeglądarki, do repozytorium sklepu ani do Pages. dlt_test_… też nie jest „bezpiecznym sekretem w HTML” — to zły rodzaj.

Najemcę rozstrzyga klucz. Nie wysyłaj companyId.

Trzy powierzchnie

PowierzchniaDziśJeszcze nie
KatalogGET {origin}/api/v1/menu z Bearer publikowalnym. Grosze, PLN. Pozycje niedostępne pominięte.Odświeżenie bez rebuildu
Koszyk{ itemId, quantity }[] w localStorage. Suma na ekranie z upieczonego katalogu.Wybór modyfikatorów jako osobne pola linii
Kasa/checkout/ pokazuje koszyk. Nie robi POST.Ten sam koszyk idzie do Deliety; serwer wycenia; wraca URL płatności

Klient wysyła co (identyfikatory i ilości), nigdy za ile. Cena wpisana w przeglądarce nie jest kontraktowa.

flowchart TD
  env["Dwa env: origin i klucz publikowalny"] --> build["Build piecze GET /menu"]
  build --> html["Statyczny HTML"]
  html --> cart["Koszyk: itemId i ilosc"]
  cart --> seam["/checkout/ pokazuje koszyk, nie wysyla POST"]
  secret["Klucz sekretny"] -.->|"nigdy w tym drzewie"| html

Szablon, który kopiujesz, jest statycznym eksportem sklepu: katalog z menu, koszyk w przeglądarce, kasa jako szew. Delieta tego drzewa nie hostuje.

Pieniądze i błędy

Grosze całkowite. Formatuj na krawędzi wyświetlania. Błędy Partner API to application/problem+json; na statycznym eksporcie najczęściej widać je na buildzie. Branchuj po code: unauthorized, scope_required, rate_limited.

Pełne operacje, których sklep dziś używa i których jeszcze nie woła, są w Partner API.