# Fizetési módok

> Hogyan választ az ügyfél a beágyazott panel és a felugró ablak között, miért a megbízható források döntik ezt el, és mire számíthat helyi fejlesztés során.

A fizetési felület két mód egyikében nyílik meg.

A **Panel** egy, közvetlenül az oldaladon belül megjelenített beágyazott panel. Asztali gépen jobbról csúszik be, maximális szélessége `pane.width`; mobileszközön alulról csúszik fel. A látogató az oldaladon marad, a panel pedig akkor záródik be, ha megnyomja az Escape billentyűt, vagy a halványított területre kattint.

A **felugró ablak** egy különálló, a látogató képernyőjének közepén megjelenő böngészőablak. Az ügyfél figyeli, hogy az ablak bezárul-e, hogy eltávolíthassa a hátteret elsötétítő réteget.

## A beágyazott fizetési felülethez megbízható forrás szükséges

A paneles mód az Entase fizetési felületét a domaineden lévő iframe-ben jeleníti meg, ezért csak az általad kifejezetten engedélyezett domaineken használható. Add hozzá minden, a fizetési felületet megnyitó domaint a Beállítások → Integrációk menü **Megbízható források** listájához – lásd: [Integrációk és a fizetési felület testreszabása](/organizers/settings/integrations-and-checkout-customization.md).

Számít, hogy szerepel-e a `www.` előtag. Ha nem vagy biztos abban, melyik változatot szolgálja ki az oldalad, add hozzá mindkettőt.

Ha a domained nem szerepel a listán, a fizetési felület továbbra is működik – egyszerűen felugró ablakban nyílik meg.

## Az `'auto'` feloldása

Az alapértelmezett `checkoutMode: 'auto'` beállítás esetén az ügyfél a következő sorrendben dönt:

1. **Nem HTTPS** → felugró ablak. Nem biztonságos oldalon a beágyazott fizetési felület soha nem használható.
2. **`localhost` vagy `127.0.0.1`** → panel, a konzolba naplózott figyelmeztetéssel. Ez a fejlesztést segítő kényelmi funkció, hogy a beágyazott elrendezéssel fejleszthess; nem mond semmit arról, hogy az éles domained engedélyezett-e.
3. **Egyéb esetben** → az ügyfél a fiók azonosításához elküldött `pk` használatával megkérdezi az Entase-t, hogy ez a forrás használhat-e beágyazott fizetési felületet. Ha a válasz tartalmazza a `pane` értéket, a mód panelesre vált.

Amíg ez a válasz meg nem érkezik, a mód **popup**. Ez az a viselkedés, amely a leginkább meglephet: az ellenőrzés aszinkron, ezért egy közvetlenül az oldal betöltésekor – még mielőtt a látogatónak lehetősége lenne bármire kattintani – meghívott `book()` hívás egy tökéletesen beállított domainen is megnyithat felugró ablakot. A gyakorlatban egy valódi kattintás mindig jóval az ellenőrzés befejeződése után történik. Ha automatikusan nyitod meg a fizetési felületet, az észlelés helyett kényszerítsd ki a módot.

## Mód kényszerítése

Az észlelés teljes kihagyásához állítsd be kifejezetten a `checkoutMode` értékét:

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

Vagy írd felül egyetlen foglaláshoz:

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

A `'pane'` mód kényszerítése olyan domainen, amely nem megbízható forrás, nem ad engedélyt – a panel megnyílik, de a benne lévő fizetési felület nem tud kommunikálni az oldaladdal. Tudatos választásként használd a `'popup'` módot, és hagyd meg az `'auto'` beállítást, ha minden olyan helyen beágyazott fizetési felületet szeretnél, ahol az engedélyezett.

A rendszer figyelmen kívül hagyja a nem felismert értékeket, és `'auto'` értékként kezeli őket.

## A mód lekérése és módosítása futásidőben

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

A `getCheckoutMode()` a *feloldott* módot adja vissza, tehát azt jelzi, ami ténylegesen történni fog. A mód `'auto'` értékre való visszaállítása újra lefuttatja az észlelést.

## Felugró ablakok blokkolása

A böngészők csak felhasználói művelet közben engedélyezik a `window.open()` hívását. A `book()` hívást közvetlenül egy kattintáskezelőn belül végezd – ne `await`, `fetch` vagy `setTimeout` után, mert addigra a művelet érvényessége lejár, és a felugró ablak blokkolva lesz.

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

Ez csak a felugró ablakos módot érinti. A paneles mód egy elemet hoz létre az oldalon, ezért nem vonatkozik rá ez a korlátozás.
