# Płatności bezpośrednie (directChannel)

Mechanizm kanałów bezpośrednich (`directChannel`) pozwala na ominięcie standardowego ekranu wyboru metody płatności na
bramce SimPay. Używając tej funkcji, możesz zaimplementować własny widok wyboru banku, portfela lub metody płatności (
tzw. white-label checkout) bezpośrednio w swoim sklepie, a następnie przekierować klienta prosto do logowania w jego
banku lub aplikacji.

## Przepływ płatności (Flow)

Poniższy diagram przedstawia kroki, jakie zachodzą od momentu wyboru metody płatności przez kupującego, aż po
potwierdzenie wpłaty.


```mermaid
sequenceDiagram
    autonumber
    actor K as Kupujący
    participant S as Twój Sklep
    participant SP as SimPay
    participant B as Bank / Operator
    K ->> S: Wybiera metodę (np. BLIK) na stronie sklepu
    S ->> SP: POST /transactions (z directChannel i danymi klienta)
    SP -->> S: Odpowiedź z adresem przekierowania (redirectUrl)
    S ->> K: Przekierowanie przeglądarki na redirectUrl
    K ->> B: Logowanie w banku i autoryzacja płatności
    B -->> SP: Wewnętrzne potwierdzenie zasilenia środków
    SP ->> S: Asynchroniczny Webhook (IPN): transaction_paid
    B ->> K: Przekierowanie powrotne klienta do sklepu
    S ->> K: Wyświetlenie strony z podziękowaniem i wydanie towaru
```

**Krótkie omówienie najważniejszych kroków:**

* **Kroki 2-3:** Twój system odpytuje nasze API o nową transakcję, podając identyfikator kanału. SimPay natychmiast
generuje dedykowany link do płatności (`redirectUrl`).
* **Krok 4:** Twoim zadaniem jest przekierowanie klienta na otrzymany link. W tym momencie klient opuszcza Twoją stronę.
* **Krok 7:** To tutaj dzieje się najważniejsza logika biznesowa. Po udanej płatności SimPay wysyła Webhooka. Wtedy
powinieneś zmienić status zamówienia w swojej bazie danych.


## Podgląd wygenerowanej transakcji z directChannel dla directChannel = `blik`

video
source

  Przeglądarka nie obsługuje odtwarzacza wideo.

Dzięki `directChannel` ekran bramki SimPay pojawia się tylko na ułamek sekundy. Klient pozostaje w ekosystemie Twojego
sklepu, co gwarantuje pełną spójność procesu zakupowego. Ten płynny przepływ (tzw. seamless experience) eliminuje
rozpraszacze i zauważalnie podnosi wskaźnik konwersji zrealizowanych płatności.

## Wymagania techniczne

Aby poprawnie zainicjować transakcję z użyciem kanału bezpośredniego, standardowe żądanie wysyłane na endpoint
`POST /payment/{serviceId}/transactions` musi zostać rozszerzone o dodatkowe dane kupującego. Są one niezbędne do prawidłowego procesowania
płatności oraz poprawnego działania systemów bezpieczeństwa (antyfraudowych).

Podczas tworzenia takiej transakcji **musisz** przekazać poniższe obiekty i pola w ciele żądania (body):

* **`directChannel`** – identyfikator wybranej metody płatności (np. `blik`, `mbank`, `paypo`).
* **`customer.countryCode`** – dwuliterowy kod kraju klienta. Zwróć uwagę, aby był on odpowiedni dla ustawionej waluty
transakcji (np. dla PLN będzie to `PL`).
* **`customer.ip`** – adres IP kupującego inicjującego transakcję.
* **`customer.email`** – adres e-mail kupującego.
* **`antifraud.useragent`** – dokładna wartość nagłówka `User-Agent` z przeglądarki klienta.


## Przykładowe żądanie (API)

Poniżej znajduje się kompletny, przykładowy payload w formacie JSON dla utworzenia transakcji bezpośredniej z
wykorzystaniem kanału BLIK.


```json
{
  "amount": 100.00,
  "currency": "PLN",
  "directChannel": "blik",
  "control": "Zamówienie nr 12345",
  "customer": {
    "email": "jan.kowalski@example.com",
    "countryCode": "PL",
    "ip": "192.168.1.1"
  },
  "antifraud": {
    "useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
  }
}
```

> **Ważne:** Przekazanie błędnych danych (np. statycznego adresu IP Twojego serwera zamiast IP klienta) lub brak
nagłówka `User-Agent` w obiekcie `antifraud` może skutkować odrzuceniem transakcji przez systemy bezpieczeństwa
dostawców płatności.


## Gdzie szukać wartości dla `directChannel`?

Pełną listę obsługiwanych identyfikatorów kanałów wraz z dopuszczalnymi walutami i obsługą zwrotów znajdziesz w
zestawieniu metod płatności:

👉 **[Przejdź do: Lista metod płatności](/payment/methods)**