# Norēķināšanās režīmi

> Kā klients izvēlas starp iekļauto paneli un uznirstošo logu, kāpēc to nosaka uzticamas izcelsmes vietnes un ko sagaidīt lokālās izstrādes laikā.

Norēķināšanās tiek atvērta vienā no diviem režīmiem.

**Panelis** ir iekļauts panelis, kas tiek attēlots jūsu lapā. Datorā tas ieslīd no labās puses, nepārsniedzot `pane.width`; mobilajā ierīcē tas ieslīd uz augšu no apakšas. Apmeklētājs paliek jūsu vietnē, un panelis tiek aizvērts, nospiežot Escape vai noklikšķinot uz aptumšotās zonas.

**Uznirstošais logs** ir atsevišķs pārlūkprogrammas logs, kas tiek centrēts apmeklētāja ekrānā. Klients uzrauga, vai logs tiek aizvērts, lai varētu noņemt fonu.

## Iekļautai norēķināšanās funkcijai nepieciešama uzticama izcelsmes vietne

Paneļa režīms attēlo Entase norēķināšanos iframe elementā jūsu domēnā, tāpēc tas ir atļauts tikai tiem domēniem, kurus esat nepārprotami autorizējis. Sadaļā Iestatījumi → Integrācijas pievienojiet **Uzticamās izcelsmes vietnes** katru domēnu, kas atver norēķināšanos – skatiet [Integrācijas un norēķināšanās pielāgošana](/organizers/settings/integrations-and-checkout-customization.md).

Ir svarīgi, vai ir iekļauts prefikss `www.`. Ja neesat pārliecināts, kuru formu izmanto jūsu vietne, pievienojiet abas.

Ja jūsu domēns nav sarakstā, norēķināšanās joprojām darbojas – tā vienkārši tiek atvērta kā uznirstošais logs.

## Kā tiek noteikts `'auto'`

Izmantojot noklusējuma iestatījumu `checkoutMode: 'auto'`, klients pieņem lēmumu šādā secībā:

1. **Nav HTTPS** → uznirstošais logs. Iekļautā norēķināšanās nekad netiek izmantota nedrošā lapā.
2. **`localhost` vai `127.0.0.1`** → panelis ar konsolē reģistrētu brīdinājumu. Tā ir izstrādes ērtība, lai varētu veidot iekļautajam izkārtojumam; tas neko nesaka par to, vai jūsu produkcijas domēns ir atļauts.
3. **Citādi** → klients vaicā Entase, vai šī izcelsmes vietne drīkst izmantot iekļauto norēķināšanos, nosūtot `pk`, lai identificētu kontu. Ja atbildē ir ietverts pane, režīms kļūst par pane.

Kamēr šī atbilde nav saņemta, režīms ir **popup**. Šī ir darbība, kas visdrīzāk jūs pārsteigs: pārbaude ir asinhrona, tāpēc `book()` izsaukums, kas tiek veikts uzreiz pēc lapas ielādes – pirms apmeklētājam ir bijusi iespēja kaut kam noklikšķināt –, var joprojām atvērt uznirstošo logu arī pilnībā pareizi konfigurētā domēnā. Praksē īsts klikšķis vienmēr tiek veikts ilgi pēc pārbaudes pabeigšanas. Ja norēķināšanos atverat automātiski, piespiedu kārtā iestatiet režīmu, nevis paļaujieties uz noteikšanu.

## Režīma piespiedu iestatīšana

Iestatiet `checkoutMode` skaidri, lai pilnībā izlaistu noteikšanu:

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

Vai ignorējiet to vienai rezervācijai:

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

Piespiedu iestatot `'pane'` domēnā, kas nav uzticama izcelsmes vietne, atļauja netiek piešķirta – panelis tiek atvērts, taču tajā esošā norēķināšanās nevar sazināties ar jūsu lapu. Izmantojiet `'popup'` kā apzinātu izvēli un atstājiet `'auto'`, ja vēlaties iekļauto norēķināšanos visur, kur tā ir atļauta.

Neatpazīta vērtība tiek ignorēta un uzskatīta par `'auto'`.

## Režīma nolasīšana un maiņa izpildlaikā

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

`getCheckoutMode()` atgriež *noteikto* režīmu, tāpēc tas norāda, kas faktiski notiks. Atkārtoti iestatot režīmu uz `'auto'`, noteikšana tiek veikta no jauna.

## Uznirstošo logu bloķētāji

Pārlūkprogrammas atļauj `window.open()` tikai lietotāja darbības laikā. Izsauciet `book()` tieši klikšķa apstrādātājā – nevis pēc `await`, `fetch` vai `setTimeout`, jo līdz tam brīdim darbības konteksts ir beidzies un uznirstošais logs tiek bloķēts.

```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));
```

Tas attiecas tikai uz uznirstošā loga režīmu. Paneļa režīms lapā izveido elementu, un uz to tas neattiecas.
