# Otvaranje naplate

> Metoda book() otvara naplatu za jedan događaj i prihvaća nadjačavanja po pozivu te kontekst klijenta koji možete prenijeti u vlastite sustave.

`book()` je metoda koja otvara naplatu. Sve ostalo na klijentu je konfigurira ili je prati.

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

`eventID` je identifikator zakazanog događaja za koji se prodaju ulaznice. To je isti ID koji se koristi u kodovima vašeg događaja za dijeljenje i ugradnju.

Poziv se odmah vraća – otvara ploču ili prozor i ne čeka da posjetitelj završi. Upotrijebite [događaje](/developers/js-client/events.md) da biste reagirali na ono što se zatim dogodi.

## Opcije

| Naziv | Vrsta | Zadano | Opis |
|---|---|---|---|
| `checkoutMode` | string | vrijednost instance | `'pane'` ili `'popup'` samo za ovu rezervaciju. |
| `clientContext` | object | `null` | Proizvoljni podaci koji se predaju naplati kad bude spremna. Pogledajte u nastavku. |
| `collectConsent` | boolean | vrijednost instance | Treba li zatražiti od posjetitelja da prihvati obavijest o uvjetima. |
| `backdrop` | boolean | vrijednost instance | Treba li zatamniti stranicu iza naplate. |
| `backdropColor` | string | vrijednost instance | Boja zatamnjenog područja. |
| `pane` | object | vrijednost instance | `{ width, height }` za umetnutu ploču. |
| `popup` | object | vrijednost instance | `{ width, height }` za skočni prozor. |

Sve što izostavite vraća se na vrijednost s kojom je instanca stvorena, pa su opcije po pozivu dodatne, a ne zamjenski skup.

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

## Kontekst klijenta

`clientContext` je objekt koji sami definirate. Klijent ga zadržava dok naplata ne signalizira da je spremna, a zatim joj ga predaje. Upotrijebite ga za prijenos informacija koje zna samo vaša stranica – koja je tipka kliknuta, iz koje je kampanje posjetitelj došao, interna referenca kupca – do sesije naplate.

Kontekst se pohranjuje za svaki ID događaja, tako da rezervacija dvaju različitih događaja s iste stranice njihove kontekste drži odvojenima.

U njega ne stavljajte ništa osjetljivo. Putuje do naplate putem preglednika i vidljiv je svakome tko pregledava stranicu.

## Otvaranje više događaja s jedne stranice

Jedna instanca upravlja bilo kojim brojem događaja. Stvorite je jednom i svaki put proslijedite drugi 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 }
    });
  });
});
```

## Nakon uništavanja klijenta

Pozivanje metode `book()` na instanci koju ste već uništili bilježi pogrešku u konzoli i ne otvara ništa. To je namjerno – uništena instanca više ne prima poruke od naplate, pa se prozor koji je otvorila ne bi mogao zatvoriti ni pratiti. Umjesto toga stvorite novu instancu.

## Zatvaranje naplate

Posjetitelj sam zatvara naplatu: tipkom Escape ili klikom na zatamnjeno područje u načinu ploče, odnosno kontrolama prozora u skočnom načinu. Naplata se također sama zatvara kada se rezervacija dovrši.

Ne postoji javna metoda za njezino zatvaranje iz vašeg koda. Ako trebate znati kada se zatvorila, pratite događaj `checkout.closed`.
