# Režimi naplate

> Kako klijent bira između umetnutog panela i iskačućeg prozora, zašto pouzdani izvori odlučuju o tome i šta možete očekivati tokom lokalnog razvoja.

Naplata se otvara u jednom od dva režima.

**Panel** je umetnuti panel koji se prikazuje unutar vaše stranice. Na računaru klizi s desne strane, do širine `pane.width`; na mobilnom uređaju klizi nagore s dna. Posetilac ostaje na vašem sajtu, a panel se zatvara kada pritisne Escape ili klikne na zatamnjenu oblast.

**Iskačući prozor** je zaseban prozor pregledača, centriran na ekranu posetioca. Klijent prati zatvaranje prozora kako bi mogao da ukloni pozadinu.

## Umetnuta naplata zahteva pouzdan izvor

Režim panela prikazuje Entase naplatu u iframe-u na vašem domenu, pa je dozvoljen samo za domene koje ste izričito odobrili. Dodajte svaki domen koji otvara naplatu u **Pouzdani izvori** u Podešavanja → Integracije – pogledajte [Integracije i prilagođavanje naplate](/organizers/settings/integrations-and-checkout-customization.md).

Važno je da li je uključen prefiks `www.`. Ako niste sigurni koji oblik vaš sajt koristi, dodajte oba.

Ako vaš domen nije na listi, naplata i dalje radi – samo se otvara kao iskačući prozor.

## Kako se razrešava `'auto'`

Uz podrazumevanu vrednost `checkoutMode: 'auto'`, klijent odlučuje ovim redosledom:

1. **Nije HTTPS** → iskačući prozor. Umetnuta naplata se nikada ne koristi na nezaštićenoj stranici.
2. **`localhost` ili `127.0.0.1`** → panel, uz upozorenje zabeleženo u konzoli. Ovo olakšava razvoj kako biste mogli da gradite uz umetnuti raspored; ne govori ništa o tome da li je vaš produkcioni domen dozvoljen.
3. **U suprotnom** → klijent pita Entase da li ovaj izvor može da koristi umetnutu naplatu, šaljući `pk` radi identifikacije naloga. Ako odgovor uključuje panel, režim postaje panel.

Dok taj odgovor ne stigne, režim je **iskačući prozor**. Ovo ponašanje će vas najverovatnije iznenaditi: provera je asinhrona, pa poziv `book()` koji se pokrene odmah pri učitavanju stranice – pre nego što je posetilac imao priliku da bilo šta klikne – i dalje može da otvori iskačući prozor na savršeno ispravno konfigurisanom domenu. U praksi stvarni klik uvek stiže dugo nakon završetka provere. Ako naplatu otvarate automatski, nametnite režim umesto da se oslanjate na otkrivanje.

## Nametanje režima

Eksplicitno postavite `checkoutMode` da biste u potpunosti preskočili otkrivanje:

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

Ili ga zamenite za jednu rezervaciju:

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

Nametanje režima `'pane'` na domenu koji nije pouzdan izvor ne daje dozvolu – panel se otvara, ali naplata unutar njega ne može da komunicira s vašom stranicom. Koristite `'popup'` kao nameran izbor, a ostavite `'auto'` kada želite umetnutu naplatu svuda gde je dozvoljena.

Neprepoznata vrednost se ignoriše i tretira kao `'auto'`.

## Čitanje i promena režima tokom izvršavanja

```js
entase.getCheckoutMode();        // 'pane' ili 'popup' – nikada 'auto'
entase.setCheckoutMode('popup'); // primenjuje se na svaki kasniji poziv book()
```

`getCheckoutMode()` vraća *razrešeni* režim, pa prikazuje šta će se zaista dogoditi. Vraćanje režima na `'auto'` ponovo pokreće otkrivanje.

## Blokatori iskačućih prozora

Pregledači dozvoljavaju `window.open()` samo tokom korisničke radnje. Pozovite `book()` direktno unutar obrađivača klika – ne nakon `await`, `fetch` ili `setTimeout`, jer je do tada radnja istekla i iskačući prozor je blokiran.

```js
// Blokirano: radnja je istekla dok se book() pokrene.
button.addEventListener('click', async () => {
  const event = await fetch('/api/current-event').then(r => r.json());
  entase.book(event.id);
});

// U redu: prvo razrešite id, a otvorite pri kliku.
button.addEventListener('click', () => entase.book(button.dataset.eventId));
```

Ovo utiče samo na režim iskačućeg prozora. Režim panela pravi element na stranici i ne podleže tome.
