# Deschiderea checkout-ului

> Metoda book() deschide checkout-ul pentru un eveniment și acceptă suprascrieri pentru fiecare apel, precum și un context de client pe care îl puteți transmite către propriile sisteme.

`book()` este metoda care deschide checkout-ul. Tot restul de pe client îl configurează sau îl monitorizează.

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

`eventID` este identificatorul evenimentului programat pentru care se vând bilete. Este același ID utilizat în codurile de distribuire și încorporare ale evenimentului dvs.

Apelul revine imediat – deschide panoul sau fereastra și nu așteaptă ca vizitatorul să termine. Utilizați [evenimente](/developers/js-client/events.md) pentru a reacționa la ceea ce se întâmplă în continuare.

## Opțiuni

| Nume | Tip | Valoare implicită | Descriere |
|---|---|---|---|
| `checkoutMode` | șir de caractere | valoarea instanței | `'pane'` sau `'popup'` doar pentru această rezervare. |
| `clientContext` | obiect | `null` | Date arbitrare transmise checkout-ului după ce acesta este pregătit. Consultați mai jos. |
| `collectConsent` | boolean | valoarea instanței | Dacă vizitatorului i se cere să accepte notificarea privind termenii. |
| `backdrop` | boolean | valoarea instanței | Dacă pagina din spatele checkout-ului trebuie estompată. |
| `backdropColor` | șir de caractere | valoarea instanței | Culoarea zonei estompate. |
| `pane` | obiect | valoarea instanței | `{ width, height }` pentru panoul inline. |
| `popup` | obiect | valoarea instanței | `{ width, height }` pentru fereastra pop-up. |

Orice omiteți revine la valoarea cu care a fost creată instanța, astfel încât opțiunile per apel sunt adăugiri, nu un set de înlocuire.

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

## Contextul clientului

`clientContext` este un obiect conceput de dvs. Clientul îl păstrează până când checkout-ul semnalează că este pregătit, apoi îl transmite. Utilizați-l pentru a transporta informații pe care doar pagina dvs. le cunoaște – ce buton a fost accesat, în cadrul cărei campanii a ajuns un vizitator, o referință internă a clientului – către sesiunea de checkout.

Contextul este stocat pentru fiecare ID de eveniment, astfel încât rezervarea a două evenimente diferite de pe aceeași pagină păstrează contextele separate.

Nu introduceți informații sensibile în acesta. Acesta ajunge la checkout prin browser și este vizibil pentru oricine inspectează pagina.

## Deschiderea mai multor evenimente de pe o singură pagină

O instanță gestionează orice număr de evenimente. Creați-o o singură dată și transmiteți un ID diferit de fiecare dată:

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

## După distrugerea clientului

Apelarea `book()` pe o instanță pe care ați distrus-o deja înregistrează o eroare în consolă și nu deschide nimic. Acest lucru este intenționat – o instanță distrusă nu mai ascultă mesajele de la checkout, astfel că fereastra pe care ar deschide-o nu ar putea fi închisă sau monitorizată. Creați în schimb o instanță nouă.

## Închiderea checkout-ului

Vizitatorul închide singur checkout-ul: Escape sau un clic pe zona estompată în modul panou, respectiv comenzile ferestrei în modul pop-up. Checkout-ul se închide și singur când se finalizează o rezervare.

Nu există o metodă publică pentru a-l închide din codul dvs. Dacă trebuie să știți când s-a închis, ascultați evenimentul `checkout.closed`.
