Przejdź do głównej zawartości

Płatność z pominięciem bramki Paymentic

Domyślny scenariusz integracji to taki, w którym po utworzeniu transakcji przekierowujesz klienta na redirectUrl — stronę płatności Paymentic, gdzie klient sam wybiera metodę płatności (BLIK, bank do przelewu online, kartę itd.).

W niektórych przypadkach wolisz jednak przeprowadzić wybór metody płatności po swojej stronie i od razu przekierować klienta prosto do jego banku lub operatora karty, z pominięciem ekranu wyboru Paymentic. Ta strona opisuje właśnie taki przepływ.

Kiedy warto tego użyć?

  • Masz własny ekran wyboru metody płatności w checkoucie i nie chcesz pokazywać kolejnego ekranu wyboru.
  • Chcesz wyświetlić klientowi listę banków z logotypami i od razu przekierować do wybranego.
  • Integrujesz płatność w aplikacji mobilnej lub natywnym kliencie, gdzie dodatkowy ekran wyboru psuje UX.

Jak to działa w skrócie

Krok 1. Pobierz listę dostępnych kanałów

Lista metod i kanałów jest dynamiczna — zależy od umowy, waluty, kwoty i może się zmieniać. Pobieraj ją z endpointu GET /v1_2/payment/points/{pointId}/channels, a nie trzymaj na sztywno po swojej stronie.

curl -X GET "https://api.sandbox.paymentic.com/v1_2/payment/points/{pointId}/channels" \
-H "Authorization: Bearer YOUR_API_TOKEN"

Przykład fragmentu odpowiedzi:

{
"data": [
{
"id": "mbank",
"available": true,
"method": "PBL",
"name": "mBank",
"image": {
"default": "https://static.paymentic.com/channels/mbank.png"
},
"currencies": [
"PLN"
],
"amount": {
"minimum": "1.00",
"maximum": "100000.00"
}
},
{
"id": "blik-level0",
"available": true,
"method": "BLIK",
"name": "BLIK",
"currencies": [
"PLN"
],
"amount": {
"minimum": "1.00",
"maximum": "100000.00"
}
}
]
}

Z tej odpowiedzi interesują Cię głównie dwa pola:

  • method — wartość, którą podasz w paymentMethod przy tworzeniu transakcji.
  • id — wartość, którą podasz w paymentChannel przy tworzeniu transakcji.
wskazówka

Pole available: false oznacza, że dany kanał jest chwilowo niedostępny (np. serwis techniczny banku). Nie pokazuj takich kanałów klientowi lub wyszarz je w interfejsie.

Dostępne metody płatności (paymentMethod)

WartośćOpis
BLIKPłatność BLIK (kod 6-cyfrowy lub płatność w aplikacji banku)
PBLPay-by-link — przelew online, klient loguje się do banku
CARDKarta płatnicza (Visa, Mastercard)
BNPLPłatność odroczona (buy-now-pay-later)
MWPortfele mobilne (Apple Pay, Google Pay itd.)
PAYSAFEPłatności z grupy Paysafe (PaysafeCard, Skrill)

Krok 2. Utwórz transakcję z wybraną metodą i kanałem

Do standardowego requesta dodajesz dwa pola: paymentMethod i paymentChannel. Dzięki nim Paymentic wie, że klient wybór ma już za sobą i może pominąć stronę wyboru.

POST https://api.sandbox.paymentic.com/v1_2/payment/points/{pointId}/transactions
{
"amount": "149.00",
"currency": "PLN",
"title": "Zamówienie #12345",
"paymentMethod": "PBL",
"paymentChannel": "mbank"
}

W odpowiedzi dostajesz standardowy obiekt z redirectUrl — tyle że tym razem prowadzi on bezpośrednio do strony logowania banku (mBanku w tym przykładzie), a nie do ekranu wyboru Paymentic:

{
"data": {
"id": "ABCD-123-XYZ-9876",
"redirectUrl": "https://pay.sandbox.paymentic.com/ABCD-123-XYZ-9876?token=...",
"whitelabel": null
}
}

Krok 3. Przekieruj klienta na redirectUrl

Dalszy przebieg jest identyczny jak w standardowym scenariuszu — przekierowujesz klienta na data.redirectUrl, Paymentic prowadzi go przez resztę procesu, a zmiany statusu dostajesz webhookiem.

Ważne uwagi

  • paymentChannel bez paymentMethod nie zadziała. Oba pola musisz podać razem — kanał zawsze jest podrzędny wobec metody.
  • Kanał musi być zgodny z metodą. Np. dla paymentMethod: "BLIK" jedynym sensownym paymentChannel jest blik-level0.
  • Niektóre metody wymagają dodatkowych pól. BLIK Level 0 wymaga danych klienta (customer.name, customer.email, customer.ip, customer.userAgent) — zobacz BLIK Level 0 po szczegóły.
  • Cache'uj listę kanałów krótko. Raz na kilka minut wystarczy — pole available może się zmieniać dynamicznie (np. gdy bank wchodzi w okno serwisowe).
  • Nie ukrywaj nieobsługiwanych walut. Jeśli kanał nie obsługuje waluty transakcji (currencies w odpowiedzi), API zwróci błąd przy tworzeniu transakcji.

Co dalej?