# Atsiskaitymo lango atidarymas

> Metodas book() atidaro vieno renginio atsiskaitymo langą ir priima konkrečiam iškvietimui skirtus pakeitimus bei kliento kontekstą, kurį galite perduoti savo sistemoms.

`book()` yra metodas, atidarantis atsiskaitymo langą. Visa kita kliente jį sukonfigūruoja arba stebi.

```js
entase.book(eventID);
entase.book(eventID, options);
```

`eventID` yra numatyto parduoti renginio identifikatorius. Tai tas pats ID, kuris naudojamas jūsų renginio bendrinimo ir įterpimo koduose.

Iškvietimas grąžinamas iškart – jis atidaro skydelį arba langą ir nelaukia, kol lankytojas baigs. Norėdami reaguoti į tolesnius įvykius, naudokite [įvykius](/developers/js-client/events.md).

## Parinktys

| Pavadinimas | Tipas | Numatytoji reikšmė | Aprašymas |
|---|---|---|---|
| `checkoutMode` | eilutė | egzemplioriaus reikšmė | `'pane'` arba `'popup'` tik šiai rezervacijai. |
| `clientContext` | objektas | `null` | Savavališki duomenys, perduodami atsiskaitymo langui, kai jis bus parengtas. Žr. toliau. |
| `collectConsent` | loginė reikšmė | egzemplioriaus reikšmė | Ar prašyti lankytojo sutikti su sąlygų pranešimu. |
| `backdrop` | loginė reikšmė | egzemplioriaus reikšmė | Ar pritemdyti už atsiskaitymo lango esantį puslapį. |
| `backdropColor` | eilutė | egzemplioriaus reikšmė | Pritemdytos srities spalva. |
| `pane` | objektas | egzemplioriaus reikšmė | `{ width, height }` įterptajam skydeliui. |
| `popup` | objektas | egzemplioriaus reikšmė | `{ width, height }` iškylančiajam langui. |

Visos nenurodytos parinktys naudoja reikšmę, su kuria buvo sukurtas egzempliorius, todėl konkretaus iškvietimo parinktys papildo, o ne pakeičia visą rinkinį.

```js
entase.book('EVENT_ID', {
  pane: { width: '60vw' },
  backdrop: false,
  clientContext: { source: 'homepage-hero' }
});
```

## Kliento kontekstas

`clientContext` yra jūsų pačių sukurtas objektas. Klientas jį saugo, kol atsiskaitymo langas praneša, kad yra parengtas, tada jį perduoda. Naudokite jį informacijai, kurią žino tik jūsų puslapis, perduoti į atsiskaitymo seansą – kuris mygtukas buvo spustelėtas, per kurią kampaniją atvyko lankytojas, vidinė kliento nuoroda.

Kontekstas saugomas pagal renginio ID, todėl rezervuojant du skirtingus renginius iš to paties puslapio jų kontekstai lieka atskiri.

Nedėkite į jį jokios jautrios informacijos. Ji perduodama į atsiskaitymo langą per naršyklę ir yra matoma visiems, kurie tikrina puslapį.

## Kelių renginių atidarymas iš vieno puslapio

Vienas egzempliorius gali apdoroti bet kokį renginių skaičių. Sukurkite jį vieną kartą ir kaskart perduokite skirtingą ID:

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

document.querySelectorAll('[data-event-id]').forEach(button => {
  button.addEventListener('click', () => {
    entase.book(button.dataset.eventId, {
      clientContext: { source: button.dataset.source }
    });
  });
});
```

## Sunaikinus klientą

Iškvietus `book()` jau sunaikintame egzemplioriuje, konsolėje užregistruojama klaida ir niekas neatidaroma. Tai daroma sąmoningai – sunaikintas egzempliorius nebesiklauso pranešimų iš atsiskaitymo lango, todėl jo atidaryto lango nebūtų galima uždaryti ar stebėti. Vietoj to sukurkite naują egzempliorių.

## Atsiskaitymo lango uždarymas

Lankytojas atsiskaitymo langą uždaro pats: klavišu Escape arba spustelėjęs pritemdytą sritį skydelio režimu, o iškylančiojo lango režimu – lango valdikliais. Atsiskaitymo langas taip pat užsidaro pats, kai rezervacija užbaigiama.

Nėra viešo metodo jį uždaryti iš jūsų kodo. Jei reikia žinoti, kada jis užsidarė, stebėkite `checkout.closed` įvykį.
