Meest Transfer
Dokumentacja/Meest Paywall poprzez przekierowanie

Meest Paywall poprzez przekierowanie

Integracja z Paywallem przy użyciu przekierowania HTTP.

Opis działania

Meest Paywall jest możliwy do obsłużenia poprzez przekierowanie na bezpieczną stronę płatności. Klientowi zostanie wyświetlona strona, w której będzie mógł wybrać metodę płatności i przejść cały proces obciążenia. Następnie zostanie przekierowany z powrotem na stronę sprzedawcy.

Krok 1 — Utwórz sesję płatności

Nim klient przejdzie do procesu płatności, sprzedawca musi zainicjować nową sesję płatności w systemie MeestPay. Aby to zrobić, musi wywołać z serwera zapytanie POST na ścieżkę /api/payment_sessions. Szczegółowe informacje na temat inicjacji sesji płatności znajdują się w podrozdziale Dokumentacja API poniżej.

POST/api/payment_sessions

Przykładowy CURL

POST /api/payment_sessions
curl -i https://sandbox.meestpay.com/api/payment_sessions \
  -X POST \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.meest.v3+json' \
  -u ms_771eUTliRiZ:SeCreT_P@ssw0rD \
  -d '{
    "amount": "10.00",
    "currency": "PLN",
    "external_id": "example123",
    "description": "New payment session",
    "user_profile": {
      "first_name": "John",
      "last_name": "Kowal",
      "email": "example@example.pl",
      "external_id": "example123"
    },
    "redirect_url": "https://www.example.com"
  }'

Przykładowa odpowiedź

201 Created
{
  "id": "ps_9682gcqFSqvN8oAZV",
  "amount": "10.00",
  "currency": "PLN",
  "description": "New payment session",
  "state": "new",
  "created_at": 1723145262,
  "external_id": "example123",
  "user_profile": {
    "id": "up_968O86wHhRX9OLm71",
    "external_id": "example123"
  },
  "redirect_url": "http://sandbox.meestpay.com/meest/paywall/ps_9682gcqFSqvN8oAZV"
}

Krok 2 — Przekieruj na stronę płatności

Po otrzymaniu odpowiedzi należy przekierować użytkownika na otrzymany redirect_url. Klientowi wyświetli się strona płatności, w której dokona wyboru metody płatności oraz przejdzie przez cały proces obciążenia.

Krok 3 — Zwrócenie rezultatu płatności

Po udanej próbie płatności następuje automatyczne przekierowanie użytkownika na przypisany do sesji płatności adres URL (wysłany w request redirect_url). W przypadku nieudanej płatności użytkownik zostanie cofnięty do kroku poprzedniego — czyli ponownego wyboru metody płatności.

Krok 4 — Szczegółowe dane sesji płatności

Po każdej próbie płatności, bez względu na jej wynik końcowy, wysłany jest back request z aktualnym stanem sesji płatności (w tym samym formacie co odpowiedź na zapytanie Odpytanie o stan sesji płatności).

Zatwierdzenie płatności przez back request

Faktyczne zatwierdzenie informacji o udanej płatności powinno być dokonane wyłącznie na podstawie otrzymanego back requestu (webhook), a nie jedynie na podstawie przekierowania użytkownika.

Dokumentacja API

Szczegółowe opisy endpointów i parametrów sesji płatności.

Utworzenie sesji płatności

Sesja płatności zawiera wszystkie podstawowe informacje o planowanym obciążeniu. Pojedyncza sesja pozwala na wykonywanie wielu płatności różnymi metodami — aż do pierwszej zakończonej sukcesem. Tworząc nową sesję, należy jednocześnie utworzyć nowy profil użytkownika lub skorzystać z istniejącego.

Profil użytkownika

Pojedynczy profil powinien być odzwierciedleniem konta użytkownika w sklepie. Profil przechowuje dane użytkownika i pozwala zapisywać karty płatnicze oraz zapamiętywać ostatnio wybrane metody płatności.
POST/api/payment_sessions

Parametry żądania

PoleTypOpisWymagane
amountnumberKwota transakcji, liczba dziesiętna (np. 123.45, 0)Tak
currencystringWaluta ISO 4217, 3 znaki (np. PLN, EUR)Tak
descriptionstringOpis sesji płatności, 5–99 znakówTak
external_idstringWłasny, unikalny identyfikator sesji płatności, max 50 znakówTak
user_profileobject / stringNowy profil użytkownika (obiekt) lub identyfikator istniejącego (string). Wymagany gdy nie podano external_user_profile_idNie
external_user_profile_idstringZewnętrzny identyfikator istniejącego profilu użytkownika. Wymagany gdy nie podano user_profileNie
localestringJęzyk sesji płatności. Dozwolone wartości: pl, en, uk, ruNie
redirect_urlstringAdres URL, na który przekierowany zostanie użytkownik po zakończeniu płatnościTak

Parametry obiektu user_profile

PoleTypOpisWymagane
first_namestringImię użytkownika, max 50 znakówTak
last_namestringNazwisko użytkownika, max 50 znakówTak
emailstringAdres e-mail użytkownika, 3–50 znakówNie
external_idstringWłasny, unikalny identyfikator profilu użytkownika, max 50 znakówTak

Przykładowy CURL

POST /api/payment_sessions
curl -i https://sandbox.meestpay.com/api/payment_sessions \
  -X POST \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.meest.v3+json' \
  -u ms_771eUTliRiZ:SeCreT_P@ssw0rD \
  -d '{
    "amount": 10,
    "currency": "PLN",
    "external_id": "example123",
    "description": "docs test charge init",
    "external_user_profile_id": "12312341",
    "redirect_url": "https://www.example.com"
  }'

Przykładowa odpowiedź

201 Created
{
  "id": "ps_9682gcqFSqvN8oAZV",
  "amount": "10.25",
  "currency": "PLN",
  "description": "New payment session",
  "state": "new",
  "created_at": 1723145262,
  "external_id": "example123",
  "user_profile": {
    "id": "up_968O86wHhRX9OLm71",
    "external_id": "456480516135"
  },
  "redirect_url": "http://sandbox.meestpay.com/meest/paywall/ps_9682gcqFSqvN8oAZV"
}

Parametry odpowiedzi

Parametry odpowiedzi są identyczne jak w zapytaniu Odpytanie o stan sesji płatności opisanym poniżej.

Odpytanie o stan sesji płatności

Aby otrzymać pełne informacje o pojedynczej sesji płatności, wykonaj poniższe zapytanie.

GET/api/payment_sessions/(:id)

Parametry zapytania

PoleTypOpisWymagane
(:id)stringURL param — identyfikator sesji płatności lub zewnętrzny identyfikator sesjiTak
id_namestringWartość "external_id" — wymagane gdy (:id) jest zewnętrznym identyfikatoremNie

Parametry odpowiedzi

PoleTypOpisWymagane
idstringIdentyfikator sesji płatnościNie
amountstringKwota transakcji, liczba dziesiętnaNie
currencystringWaluta ISO 4217, 3 znakiNie
descriptionstringOpis sesji płatnościNie
statestringStan sesji: "new" (nowa) lub "executed" (zrealizowana)Nie
created_atintegerCzas utworzenia sesji w formacie unixowymNie
used_payment_meansstringWykorzystana metoda płatnościNie
external_idstringWłasny identyfikator sesji, max 50 znakówNie
user_profileobjectIdentyfikatory profilu użytkownika (id oraz external_id)Nie
redirect_urlstringLink umożliwiający wyświetlenie strony płatności (przeznaczony do testowania)Nie
successful_paymentobjectInformacja o płatności zakończonej sukcesem, zawierająca id, state oraz obiekt cardNie
attemptsarrayInformacje o płatnościach zakończonych niepowodzeniem lub niezakończonych (id, state, card)Nie
cardobjectDane karty zagnieżdżone w successful_payment lub attempts. Null dla metod innych niż kartaNie

Przykład odpowiedzi

200 OK
{
  "id": "ps_9cegY29viJZtaS0RH",
  "amount": "123.45",
  "currency": "PLN",
  "description": "Example payment session",
  "state": "executed",
  "created_at": 1760349914,
  "used_payment_means": "card",
  "external_id": "example123",
  "user_profile": {
    "id": "user_profile_id",
    "external_id": "example123"
  },
  "redirect_url": "https://www.example.com",
  "successful_payment": {
    "id": "pay_9ceSWynm1zVYo69O",
    "state": "executed",
    "card": {
      "company": "VI",
      "last4": "0000",
      "year": 2030,
      "month": 1,
      "first_name": "John",
      "last_name": "Doe",
      "authorized": null,
      "created_at": 1760350040,
      "bin": "000000"
    }
  },
  "attempts": [
    {
      "id": "pay_9ceqfMER8gor7s3S",
      "state": "rejected",
      "card": {
        "company": "VI",
        "last4": "0000",
        "year": 2030,
        "month": 1,
        "first_name": "John",
        "last_name": "Doe",
        "authorized": null,
        "created_at": 1760350040,
        "bin": "000000"
      }
    }
  ],
  "subject": "payment_session"
}

Odpytanie o stan wielu sesji płatności

Aby pobrać pełne informacje o wielu sesjach płatności, wykonaj poniższe zapytanie.

GET/api/payment_sessions

Parametry zapytania

PoleTypOpisWymagane
pageintegerNumer strony wyników, domyślnie 1Tak
perintegerLiczba sesji na stronie, domyślnie 30Tak
user_profile_idstringIdentyfikator profilu użytkownika, do którego należą sesjeNie
external_user_profile_idstringZewnętrzny identyfikator profilu użytkownikaNie

Parametry odpowiedzi

Odpowiedź zawiera pole count (liczba zwróconych obiektów) oraz pole payment_sessions — tablicę obiektów sesji płatności w tym samym formacie co zapytanie o pojedynczą sesję.