# Checkout-režiimid

> Kuidas klient valib manustatud paneeli ja hüpikakna vahel, miks usaldusväärsed päritolud seda määravad ning mida kohaliku arenduse ajal oodata.

Checkout avaneb ühes kahest režiimist.

**Paneel** on teie lehel kuvatav manustatud paneel. Töölaual libiseb see sisse paremalt ja selle laiuseks on maksimaalselt `pane.width`; mobiilis libiseb see üles alt. Külastaja jääb teie saidile ning paneel sulgub, kui ta vajutab Escape'i või klõpsab hämardatud alal.

**Hüpikaken** on külastaja ekraanil keskele paigutatud eraldi brauseriaken. Klient jälgib, millal aken suletakse, et saaks tausta eemaldada.

## Manustatud checkout nõuab usaldusväärset päritolu

Paneelirežiim kuvab Entase checkouti iframe'is teie domeenil, seega on see lubatud ainult domeenidel, mille olete sõnaselgelt autoriseerinud. Lisage iga checkouti avav domeen jaotises Seaded → Integratsioonid olevasse loendisse **Usaldusväärsed päritolud** – vt [Integratsioonid ja checkouti kohandamine](/organizers/settings/integrations-and-checkout-customization.md).

Oluline on, kas `www.`-prefiks on kaasatud. Kui te pole kindel, millist vormi teie sait kasutab, lisage mõlemad.

Kui teie domeeni loendis ei ole, töötab checkout siiski – see avaneb lihtsalt hüpikaknana.

## Kuidas `'auto'` lahendatakse

Vaikimisi väärtusega `checkoutMode: 'auto'` otsustab klient järgmises järjekorras:

1. **Pole HTTPS-i** → hüpikaken. Manustatud checkouti ei kasutata kunagi ebaturvalisel lehel.
2. **`localhost` või `127.0.0.1`** → paneel, kusjuures konsooli logitakse hoiatus. See on arenduse mugavus, et saaksite luua manustatud paigutuse vastu; see ei ütle midagi selle kohta, kas teie tootmisdomeen on lubatud.
3. **Muudel juhtudel** → klient küsib Entase'ilt, kas see päritolu võib kasutada manustatud checkouti, saates konto tuvastamiseks `pk`. Kui vastus sisaldab pane'i, muutub režiim paneelirežiimiks.

Kuni see vastus saabub, on režiim **popup**. See käitumine üllatab teid kõige tõenäolisemalt: kontroll on asünkroonne, seega võib kohe lehe laadimisel käivitatud `book()`-kutse – enne, kui külastajal on olnud võimalust millelegi klõpsata – avada hüpikakna ka täiesti õigesti seadistatud domeenil. Praktikas toimub päris klõps alati kaua pärast kontrolli lõpulejõudmist. Kui avate checkouti automaatselt, sundige režiim peale, selle asemel et tuvastamisele tugineda.

## Režiimi sundimine

Tuvastamise täielikuks vahelejätmiseks määrake `checkoutMode` sõnaselgelt:

```js
const entase = new Entase({ pk: 'YOUR_PUBLISHABLE_KEY', checkoutMode: 'popup' });
```

Või kirjutage see ühe broneeringu jaoks üle:

```js
entase.book('EVENT_ID', { checkoutMode: 'popup' });
```

Väärtuse `'pane'` sundimine domeenil, mis ei ole usaldusväärne päritolu, ei anna luba – paneel avaneb, kuid selles olev checkout ei saa teie lehega suhelda. Kasutage `'popup'` teadliku valikuna ning jätke `'auto'` paika, kui soovite manustatud checkouti kõikjal, kus see on lubatud.

Tundmatu väärtus eiratakse ja seda käsitletakse kui `'auto'`.

## Režiimi lugemine ja muutmine käitusajal

```js
entase.getCheckoutMode();        // 'pane' or 'popup' — never 'auto'
entase.setCheckoutMode('popup'); // applies to every later book() call
```

`getCheckoutMode()` tagastab *lahendatud* režiimi, seega näitab see, mis tegelikult juhtub. Režiimi tagasi väärtusele `'auto'` seadmine käivitab tuvastamise uuesti.

## Hüpikakende blokeerijad

Brauserid lubavad `window.open()`-it ainult kasutajatoimingu ajal. Kutsuge `book()` välja otse klõpsukäsitlejas – mitte pärast `await`-d, `fetch`-i või `setTimeout`-i, sest selleks ajaks on toiming aegunud ja hüpikaken blokeeritakse.

```js
// Blocked: the gesture is gone by the time book() runs.
button.addEventListener('click', async () => {
  const event = await fetch('/api/current-event').then(r => r.json());
  entase.book(event.id);
});

// Fine: resolve the id first, open on the click.
button.addEventListener('click', () => entase.book(button.dataset.eventId));
```

See mõjutab ainult hüpikaknarežiimi. Paneelirežiim loob lehele elemendi ja sellele see piirang ei kehti.
