# Kliento diegimas

> Įkelkite client.js iš Entase CDN, tada sukurkite egzempliorių. Nėra jokio diegiamo paketo ir nereikia atlikti kūrimo veiksmo.

Klientas pateikiamas iš Entase CDN kaip vienas failas. Nėra npm paketo, nėra kuriamo paketo ir nėra priklausomybės, kurią reikėtų nuolat atnaujinti – visada gaunate dabartinę versiją.

```html
<script src="https://js.entase.com/client.js"></script>
```

Įkėlus scenarijų apibrėžiama globali `Entase` klasė. Ji savaime daugiau nieko nedaro: jokių tinklo užklausų, jokių DOM pakeitimų, nieko neatvaizduojama. Viskas prasideda sukūrus egzempliorių.

## Egzemplioriaus kūrimas

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

Kiekviename puslapyje sukurkite **vieną egzempliorių** ir naudokite jį pakartotinai kiekvienam renginiui. Konstruktorius lange užregistruoja `message` klausytoją ir pradeda nustatyti, kurį atsiskaitymo režimą leidžiama naudoti jūsų domene, todėl sukūrus kelis egzempliorius be jokios naudos dubliuojami klausytojai ir aptikimo iškvietimai.

Kiekviena parinktis turi numatytąją reikšmę, todėl `new Entase()` be argumentų yra tinkamas – tačiau be `pk` klientas negali patikrinti, ar jūsų domenas gali naudoti įterptąjį atsiskaitymą, ir visada grįš prie iššokančiojo lango. Žr. [Atsiskaitymo režimai](/developers/js-client/checkout-modes.md).

## Asinchroninis scenarijaus įkėlimas

Jei `client.js` įkeliate su `async` arba `defer`, vykdant įterptąjį scenarijų klasė dar neegzistuos. Biblioteka, kai įkeliama, lange išsiunčia `entase:ready` įvykį, todėl jo palaukite:

```html
<script src="https://js.entase.com/client.js" async></script>
<script>
  let entase = null;

  const init = () => { entase = new Entase({ pk: 'YOUR_PUBLISHABLE_KEY' }); };

  if (typeof Entase !== 'undefined') init();
  else window.addEventListener('entase:ready', init);
</script>
```

Svarbu pirmiausia atlikti `typeof` patikrą: jei scenarijus jau baigė įsikelti, `entase:ready` jau buvo išsiųstas, o jo klausantis būtų laukiama amžinai.

## Išvalymas

Vieno puslapio programoje iškvieskite `destroy()`, kai atjungiamas rodinys, kuriam priklauso egzempliorius:

```js
entase.destroy();
```

Taip pašalinami kliento užregistruoti lango klausytojai. Sunaikinto egzemplioriaus negalima naudoti pakartotinai – iškvietus jame `book()` užregistruojama klaida ir nieko neįvyksta. Vietoje to sukurkite naują egzempliorių.

## Turinio saugumo politika

Jei jūsų svetainė siunčia `Content-Security-Policy` antraštę, atsiskaitymui reikia:

- `script-src https://js.entase.com` – bibliotekai įkelti.
- `frame-src https://www.entase.com` – srities režimu atsiskaitymas atvaizduojamas iframe.
- `connect-src https://www.entase.com` – klientas kreipiasi į Entase API, kad nustatytų leidžiamą atsiskaitymo režimą.

Be `frame-src` srities režimu rodomas tuščias skydelis. Be `connect-src` režimo aptikimas nepavyksta ir kiekvienas atsiskaitymas atidaromas kaip iššokantysis langas.
