# Otvaranje procesa naplate

> Metoda book() otvara proces naplate za jedan događaj i prihvata zamene po pojedinačnom pozivu, kao i klijentski kontekst koji možete proslediti svojim sistemima.

`book()` je metoda koja otvara proces naplate. Sve ostalo na klijentu ga konfiguriše ili 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 kôdovima za deljenje i ugrađivanje vašeg događaja.

Poziv se odmah vraća – otvara panel ili prozor i ne čeka da posetilac završi. Koristite [događaje](/developers/js-client/events.md) da biste reagovali na ono što se zatim desi.

## Opcije

| Naziv | Tip | Podrazumevano | Opis |
|---|---|---|---|
| `checkoutMode` | string | vrednost instance | `'pane'` ili `'popup'` samo za ovu rezervaciju. |
| `clientContext` | object | `null` | Proizvoljni podaci koji se predaju procesu naplate kada bude spreman. Pogledajte u nastavku. |
| `collectConsent` | boolean | vrednost instance | Da li treba tražiti od posetioca da prihvati obaveštenje o uslovima. |
| `backdrop` | boolean | vrednost instance | Da li treba zatamniti stranicu iza procesa naplate. |
| `backdropColor` | string | vrednost instance | Boja zatamnjenog područja. |
| `pane` | object | vrednost instance | `{ width, height }` za ugrađeni panel. |
| `popup` | object | vrednost instance | `{ width, height }` za iskačući prozor. |

Sve što izostavite vraća se na vrednost sa kojom je instanca kreirana, tako da su opcije po pojedinačnom pozivu dopuna, a ne skup zamenskih vrednosti.

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

## Klijentski kontekst

`clientContext` je objekat koji sami definišete. Klijent ga čuva dok proces naplate ne signalizira da je spreman, a zatim mu ga predaje. Koristite ga za prenošenje informacija koje zna samo vaša stranica – na koje je dugme kliknuto, preko koje je kampanje posetilac došao, interne reference kupca – do sesije procesa naplate.

Kontekst se čuva po ID-u događaja, tako da rezervisanje dva različita događaja sa iste stranice njihove kontekste drži odvojeno.

Ne unosite u njega ništa osetljivo. Putuje do procesa naplate kroz pregledač i vidljiv je svima koji pregledaju stranicu.

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

Jedna instanca obrađuje bilo koji broj događaja. Kreirajte je jednom i svaki put prosledite 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 `book()` na instanci koju ste već uništili beleži grešku u konzoli i ne otvara ništa. To je namerno – uništena instanca više ne osluškuje poruke iz procesa naplate, pa prozor koji je otvorila ne bi mogao da se zatvori niti prati. Umesto toga, kreirajte novu instancu.

## Zatvaranje procesa naplate

Posetilac sam zatvara proces naplate: tasterom Escape ili klikom na zatamnjeno područje u režimu panela, odnosno kontrolama prozora u režimu iskačućeg prozora. Proces naplate se takođe sam zatvara kada se rezervacija završi.

Ne postoji javna metoda za njegovo zatvaranje iz vašeg koda. Ako treba da znate kada je zatvoren, osluškujte događaj `checkout.closed`.
