> ## Documentation Index
> Fetch the complete documentation index at: https://docs.komerza.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Koszyk

> Zarządzaj produktami w koszyku za pomocą biblioteki klienta Komerza

## Przegląd

Koszyk jest przechowywany w localStorage przeglądarki i utrzymuje się między przeładowaniami strony. Wszystkie operacje na koszyku są synchroniczne i natychmiast aktualizują stan lokalny.

<Note>
  Obiekt `komerza` jest dostępny globalnie po dołączeniu skryptu. Wywołaj
  `komerza.init('twoje-id-sklepu')` przed użyciem innych metod.
</Note>

## Dodawanie produktów

Dodaj wariant produktu do koszyka z określoną ilością.

```javascript theme={null}
komerza.addToBasket(productId, variantId, quantity);
```

### Parametry

<ParamField path="productId" type="string" required>
  Unikalny identyfikator produktu
</ParamField>

<ParamField path="variantId" type="string" required>
  Unikalny identyfikator wariantu produktu
</ParamField>

<ParamField path="quantity" type="number">
  Ile produktów dodać (domyślnie 1, jeśli nie podano)
</ParamField>

### Przykład

```javascript theme={null}
// Dodaj 2 egzemplarze konkretnego wariantu produktu
komerza.addToBasket("prod_abc123", "var_xyz789", 2);

// Obsługa przycisku dodania do koszyka
document.getElementById("add-to-cart").addEventListener("click", () => {
  const productId = "prod_abc123";
  const variantId = document.getElementById("variant-select").value;
  const quantity = parseInt(document.getElementById("quantity").value) || 1;

  komerza.addToBasket(productId, variantId, quantity);
  alert("Dodano do koszyka!");
});
```

## Wyświetlanie koszyka

Pobierz wszystkie produkty aktualnie znajdujące się w koszyku.

```javascript theme={null}
const items = komerza.getBasket();
```

### Zwraca

Zwraca tablicę obiektów `BasketItem`:

```typescript theme={null}
interface BasketItem {
  productId: string; // ID produktu
  variantId: string; // ID wariantu
  quantity: number; // Liczba produktów
}
```

### Przykład

```javascript theme={null}
const basket = komerza.getBasket();

if (basket.length === 0) {
  console.log("Koszyk jest pusty");
} else {
  basket.forEach((item) => {
    console.log(
      `Produkt: ${item.productId}, Wariant: ${item.variantId}, Ilość: ${item.quantity}`,
    );
  });
}
```

## Liczba produktów

Pobierz całkowitą liczbę produktów w koszyku (suma wszystkich ilości).

```javascript theme={null}
const count = komerza.getBasketItemCount();
```

### Zwraca

Zwraca liczbę reprezentującą łączną ilość wszystkich produktów.

### Przykład

```javascript theme={null}
function aktualizujOdznakeKoszyka() {
  const count = komerza.getBasketItemCount();
  document.getElementById("cart-count").textContent = count;

  if (count > 0) {
    document.getElementById("cart-badge").style.display = "block";
  }
}

aktualizujOdznakeKoszyka();
```

## Usuwanie produktów

Usuń wariant produktu całkowicie z koszyka.

```javascript theme={null}
komerza.removeFromBasket(productId, variantId);
```

### Parametry

<ParamField path="productId" type="string" required>
  ID produktu do usunięcia
</ParamField>

<ParamField path="variantId" type="string" required>
  ID wariantu do usunięcia
</ParamField>

### Przykład

```javascript theme={null}
function usunProdukt(productId, variantId) {
  if (confirm("Usunąć ten produkt z koszyka?")) {
    komerza.removeFromBasket(productId, variantId);
    aktualizujWyswietlanieKoszyka();
  }
}
```

## Czyszczenie koszyka

Usuń wszystkie produkty z koszyka naraz.

```javascript theme={null}
komerza.clearBasket();
```

### Przykład

```javascript theme={null}
document.getElementById("clear-cart").addEventListener("click", () => {
  if (confirm("Usunąć wszystkie produkty z koszyka?")) {
    komerza.clearBasket();
    aktualizujWyswietlanieKoszyka();
  }
});
```

## Kopia zapasowa i przywracanie

Twórz kopie zapasowe stanu koszyka i przywracaj je później. Przydatne do obsługi błędów płatności lub implementacji funkcji „zapisz na później".

### Tworzenie kopii zapasowej

```javascript theme={null}
const success = komerza.createBasketBackup();
```

Zwraca `true`, jeśli kopia zapasowa została pomyślnie utworzona.

### Przywracanie kopii zapasowej

```javascript theme={null}
const success = komerza.restoreBasketFromBackup();
```

Zwraca `true`, jeśli kopia zapasowa została pomyślnie przywrócona.

### Przykład

```javascript theme={null}
async function przejdzDoKasy() {
  komerza.createBasketBackup();

  try {
    const order = await komerza.checkout(email, couponCode);
    // Sukces - przekierowanie do kasy
  } catch (error) {
    // Przywróć koszyk w przypadku błędu
    komerza.restoreBasketFromBackup();
  }
}
```
