Tpay
API

BLIK

Płatność BLIKIEM polega na podaniu jednorazowego 6-cyfrowego kodu, który płatnik generuje w aplikacji bankowej. Kod ważny jest 2 minuty. Po podaniu kodu płatnik akceptuje płatność w aplikacji bankowej.

Transakcja BLIK

Realizuj płatności BLIK wykorzystując endpoint zakładania transakcji podając groupId: 150.

Wyślij zapytanie o utworzenie transakcji BLIK

Aby utworzyć transakcję BLIK, wyślij żądanie POST na endpoint:

https://api.tpay.com/transactions

Sprawdź szczegóły w dokumentacji API Reference: POST /transactions

W zapytaniu określ następujące parametry:

amount
Kwota transakcji (w złotówkach).
description
Opis transakcji widoczny dla płatnika.
payer.email
Adres e-mail płatnika.
payer.name
Imię i nazwisko płatnika.
groupId
Identyfikator grupy płatności dla BLIK: 150.

Parametr taxId

W transakcjach B2B standardowo stosuje się identyfikację kontrahentów za pomocą numeru NIP. Podanie tego parametru może być wymagane w przypadku niektórych operacji księgowych. W związku z tym zalecamy podanie parametru taxId (numer NIP płatnika) w zapytaniu.

  • Kiedy go użyć? Dodaj ten parametr, jeśli realizujesz transakcje B2B i posiadasz numer NIP kontrahenta.
  • Czy jest obowiązkowy? Nie, pole taxId jest opcjonalne. Jeśli go nie podasz, transakcja zostanie przetworzona bez uwzględnienia numeru NIP.

Podstawowe body żądania powinno wyglądać następująco:

{
  "amount": 0.1,
  "description": "Testowa płatność BLIK",
  "payer": {
    "email": "[email protected]",
    "name": "Jan Nowak"
  },
  "pay": {
    "groupId": 150
  }
}

Przykład:

curl --location 'https://api.tpay.com/transactions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <access_token> \
--data-raw '{
   "amount": 0.1,
   "description": "Testowa płatność BLIK",
   "payer": {
      "email": "[email protected]",
      "name": "Jan Nowak"
   },
  "pay": {
    "groupId": 150
  }
}'

Po wysłaniu żądania otrzymasz w odpowiedzi schemat TransactionCreated.

Najważniejsze parametry odpowiedzi:

result
success – Transakcja została utworzona pomyślnie.
payments.status
pending – Transakcja oczekuje opłacenia.
transactionPaymentUrl
Adres url, na który należy przekierować płatnika.

Przykładowa odpowiedź:

{
  "result": "success",
  "requestId": "b6325d51e8c4b9130476",
  "transactionId": "ta_jrkNGj5L29pnlbqw",
  "title": "TR-BRA-CCP1S9X",
  "posId": "ps_NyRBLzV5kelrpjaM",
  "status": "pending",
  "date": {
    "creation": "2024-05-08 21:01:15",
    "realization": null
  },
  "amount": 0.1,
  "currency": "PLN",
  "description": "Testowa płatność BLIK",
  "hiddenDescription": "",
  "payer": {
    "payerId": "py_a9rjlZWxRLdG1bqY",
    "email": "[email protected]",
    "name": "Jan Nowak",
    "phone": "",
    "address": "",
    "city": "",
    "country": "PL",
    "postalCode": ""
  },
  "payments": {
    "status": "pending",
    "method": "pay_by_link",
    "amountPaid": 0,
    "date": {
      "realization": null
    }
  },
  "transactionPaymentUrl": "https://secure.tpay.com/?title=TR-BRA-CCP1S9X&uid=01HXCS9KVQBDZDDWDHP1TZKJ1K"
}

Przekieruj płatnika na Panel Transakcyjny

Przekieruj płatnika na URL zawarty w odpowiedzi w polu transactionPaymentUrl.

Następnie płatnik generuje 6-cyfrowy kod w aplikacji banku, przepisuje jego numer na formularzu płatności eBLIK i zatwierdza formularz.

Bank wysyła powiadomienie push do aplikacji banku płatnika w celu zatwierdzenia płatności.

Płatnik zostanie przekierowany na stronę sukcesu lub porażki

Gdy płatność zostanie zakończona, płatnik zostanie przekierowany na stronę sukcesu (success page) lub stronę porażki (error page) w zależności od tego, czy transakcja się udała.

Obsłuż powiadomienie

Poinformujemy Cię o statusie transakcji za pośrednictwem notyfikacji po zaksięgowaniu transakcji.

BLIK Level 0

BLIK w wersji Level 0, inaczej BLIK on-site, polega na udostępnieniu w sklepie pola do wprowadzenia sześciocyfrowego kodu BLIK. Płatnik wpisuje wygenerowany kod BLIK w Twoim systemie. Następnie, podczas tworzenia transakcji, przekazujesz ten kod w polu *blikToken*. Płatność odbywa się bez przekierowania na formularz eBLIK.

Zbuduj formularz płatności BLIK

W celu realizacji płatności BLIK Level 0 wyświetl formularz płatności w swoim systemie.

  1. Wyświetl BLIK jako dostępna metoda płatności.
  2. Umieść pole, w którym płatnik może wpisać 6-cyfrowy kod BLIK.
  3. Umieść regulamin Tpay - dostepny pod tym linkiem oraz klauzulę o przetwarzaniu danych osobowych - dostępny pod tym linkiem

Formularz

Wyślij zapytanie o utworzenie transakcji BLIK Level 0

Aby utworzyć transakcję BLIK Level 0, wyślij żądanie POST na endpoint:

https://api.tpay.com/transactions

W zapytaniu określ następujące parametry:

amount
Kwota transakcji (w złotówkach).
description
Opis transakcji widoczny dla płatnika.
payer.email
Adres e-mail płatnika.
payer.name
Imię i nazwisko płatnika.
payer.ip
Adres IP płatnika (dopuszczalne są adresy IP V4 i V6).
payer.userAgent
User Agent przeglądarki płatnika.
groupId
Identyfikator grupy płatności dla BLIK: 150.
blikPaymentData.blikToken
6-cyfrowy kod BLIK wpisany przez płatnika na formularzu.

Podstawowe body żądania powinno wyglądać następująco:

{
  "amount": 0.1,
  "description": "Testowa płatność BLIK",
  "payer": {
    "email": "[email protected]",
    "name": "Jan Nowak",
    "ip": "127.0.0.1",
    "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
  },
  "pay": {
    "groupId": 150,
    "blikPaymentData": {
      "blikToken": "908118"
    }
  }
}

Po wysłaniu żądania otrzymasz w odpowiedzi schemat TransactionCreated.

Najważniejsze parametry odpowiedzi:

result
success – Transakcja została utworzona pomyślnie.
payments.status
pending – Transakcja oczekuje opłacenia.

Przykładowa odpowiedź:

{
  "result": "success",
  "requestId": "b6325d51e8c4b9130476",
  "transactionId": "ta_jrkNGj5L29pnlbqw",
  "title": "TR-BRA-CCP1S9X",
  "posId": "ps_NyRBLzV5kelrpjaM",
  "status": "pending",
  "date": {
    "creation": "2024-05-08 21:01:15",
    "realization": null
  },
  "amount": 0.1,
  "currency": "PLN",
  "description": "Testowa transakcja BLIK",
  "hiddenDescription": "",
  "payer": {
    "payerId": "py_a9rjlZ3qyPPG1bqY",
    "email": "<[email protected]>",
    "name": "Jan Nowak",
    "phone": "",
    "address": "",
    "city": "",
    "country": "PL",
    "postalCode": "",
    "ip": "127.0.0.1",
    "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
  },
  "payments": {
    "status": "pending",
    "method": "pay_by_link",
    "amountPaid": 0,
    "date": {
      "realization": null
    }
  },
  "transactionPaymentUrl": "https://secure.tpay.com/?title=TR-BRA-CCP1S9X&uid=01HXCS9KVQBDZDDWDHP1TZKJ1K"
}

Wyświetl ekran oczekiwania

Wyświetl płatnikowi ekran oczekiwania. Umieść w nim informacje, że oczekujemy na akceptację płatności.

Bank wysyła powiadomienie push do aplikacji banku płatnika w celu zatwierdzenia płatności.

Obsłuż powiadomienie

Poinformujemy Cię o statusie transakcji za pośrednictwem notyfikacji po zaksięgowaniu transakcji.

Wyświetl wynik transakcji

Po otrzymaniu notyfikacji o statusie transakcji wykorzystaj pole tr_status.

BLIK One Click

BLIK one click jest rozszerzeniem płatności Level 0 o możliwość zapamiętania sklepu, z którego jest realizowana płatność. Gdy płatnik podczas transakcji zapamięta sklep, kolejne transakcje nie będą wymagały podawania 6 cyfrowego kodu BLIK, a jedynie zatwierdzenia transakcji w aplikacji bankowej.

W celu rejestracji płatnika w BLIK One Click należy podać 6-cyfrowy kod BLIK wraz z aliasem użytkownika. Przy kolejnych płatnościach wystarczy tylko przesłać alias podany przy pierwszej płatności.

Zanim zaczniesz

Upewnij się, że:

  • Zrealizowałeś płatność BLIK Level 0.

Wyślij zapytanie o utworzenie transakcji BLIK Level 0 wraz z autoryzacją w BLIK One Click

W celu wysłania zaproszenia do włączenia Płatności Powtarzalnej zrealizuj Płatność BLIK Level 0 dodając odpowiednie pola dotyczące Płatności Powtarzalnej

Wyślij żądanie POST na endpoint:

https://api.tpay.com/transactions

W zapytaniu określ następujące parametry:

amount
Kwota transakcji (w złotówkach).
description
Opis transakcji widoczny dla płatnika.
payer.email
Adres e-mail płatnika.
payer.name
Imię i nazwisko płatnika.
payer.ip
Adres IP płatnika (dopuszczalne są adresy IP V4 i V6).
payer.userAgent
User Agent przeglądarki płatnika.
groupId
Identyfikator grupy płatności dla BLIK: 150.
blikPaymentData.blikToken
6-cyfrowy kod BLIK wpisany przez płatnika na formularzu.
blikPaymentData.aliases.value
Unikalny alias per użytkownik nadany przez system sprzedawcy.
blikPaymentData.aliases.label
Nazwa sklepu bądź opcjonalnie nazwa nadana przez użytkownika.
blikPaymentData.aliases.type
UID.

Podstawowe body żądania powinno wyglądać następująco:

{
  "amount": 0.1,
  "description": "Testowa transakcja BLIK",
  "payer": {
    "email": "<[email protected]>",
    "name": "Jan Nowak",
    "ip": "127.0.0.1",
    "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
  },
  "pay": {
    "groupId": 150,
    "blikPaymentData": {
      "blikToken": "908118",
      "aliases": {
        "value": "user_unique_alias_123",
        "type": "UID",
        "label": "Shop label"
      }
    }
  }
}

Po wysłaniu żądania zwrócimy schemat TransactionCreated.

Najważniejsze parametry odpowiedzi:

result
success – Transakcja została utworzona pomyślnie.
payments.status
pending – Transakcja oczekuje opłacenia.

Przykładowa odpowiedź:

{
  "result": "success",
  "requestId": "b6325d51e8c4b9130476",
  "transactionId": "ta_jrkNGj5L29pnlbqw",
  "title": "TR-BRA-CCP1S9X",
  "posId": "ps_NyRBLzV5kelrpjaM",
  "status": "pending",
  "date": {
    "creation": "2024-05-08 21:01:15",
    "realization": null
  },
  "amount": 0.1,
  "currency": "PLN",
  "description": "Testowa transakcja BLIK",
  "hiddenDescription": "",
  "payer": {
    "payerId": "py_a9rjlZ3qyPPG1bqY",
    "email": "<[email protected]>",
    "name": "Jan Nowak",
    "phone": "",
    "address": "",
    "city": "",
    "country": "PL",
    "postalCode": "",
    "ip": "127.0.0.1",
    "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
  },
  "payments": {
    "status": "pending",
    "method": "pay_by_link",
    "amountPaid": 0,
    "date": {
      "realization": null
    }
  },
  "transactionPaymentUrl": "https://secure.tpay.com/?title=TR-BRA-CCP1S9X&uid=01HXCS9KVQBDZDDWDHP1TZKJ1K"
}

Wyświetl ekran oczekiwania

Wyświetl płatnikowi ekran oczekiwania. Umieść w nim informacje, że oczekujemy na akceptację płatności.

Bank wysyła powiadomienie push do aplikacji banku płatnika w celu zatwierdzenia płatności.

Obsłuż notyfikacje

Poinformujemy Cię o statusie transakcji za pośrednictwem notyfikacji po zaksięgowaniu transakcji.

Autoryzacja aliasu

Po pozytywnej autoryzacji płatności, płatnik w aplikacji banku otrzyma notyfikacje push w celu akceptacji wysłanego aliasu.

Obsłuż notyfikacje o statusie utworzenia aliasu

Oczekuj na webhook notyfikacji o statusie aliasu. Adres webhook’a musi być statyczny i wprowadzony w ustawieniach konta sprzedawcy w Panelu Akceptanta w zakładce Ustawienia->Powiadomienia.

Gdy alias zostanie zaakceptowany, wyślemy Ci jego dane w celu potwierdzenia utworzenia aliasu.

Parametry notyfikacji:

id
Identyfikator akceptanta.
event
ALIAS_REGISTER.
msg_value.value
Unikalny identyfikator aliasu podany podczas realizacji transakcji.
msg_value.type
UID.
msg_value.expirationDate
Data ważności aliasu. Jeśli w notyfikacji brakuje tego parametru, oznacza to, że alias nie wygasa.
md5sum
Unikalna wartość md5 (parametr przestarzały).

Przykład:

{
  "id": "1010",
  "event": "ALIAS_REGISTER",
  "msg_value": [
    {
      "value": "user_unique_alias_123",
      "type": "UID",
      "expirationDate": "2024-11-02 14:15:01"
    }
  ],
  "md5sum": "d303c5af701cdfcaed02f66603239eef"
}

Odpowiedz na nasze powiadomienie statusem HTTP 200 z body:

TRUE
Uwaga

Treść notyfikacji jest podpisana za pomocą JSON Web Signature.

Sprawdź, czy notyfikacja pochodzi od Tpay.

Zapisz parametr msg_value.value dla dalszych transakcji, skoreluj tę wartość z płatnikiem/użytkownikiem twojego systemu, w celu późniejszej obsługi płatności.

Wyświetl wynik transakcji

Po otrzymaniu notyfikacji o statusie transakcji wykorzystaj pole tr_status.

Wyślij zapytanie o utworzenie transakcji wykorzystując zarejestrowany alias

Podczas realizacji kolejnej płatności przez płatnika, nie musisz wyświetlać formularza do wpisania kodu BLIK. Wystarczy zapisany alias.

Wyślij żądanie POST na endpoint

https://api.tpay.com/transactions

W zapytaniu określ następujące parametry:

amount
Kwota transakcji (w złotówkach).
description
Opis transakcji widoczny dla płatnika.
payer.email
Adres e-mail płatnika.
payer.name
Imię i nazwisko płatnika.
payer.ip
Adres IP płatnika (dopuszczalne są adresy IP V4 i V6).
payer.userAgent
User Agent przeglądarki płatnika.
groupId
Identyfikator grupy płatności dla BLIK: 150.
blikPaymentData.aliases.value
Unikalny alias per użytkownik nadany przez system sprzedawcy. Zapisany podczas autoryzacji płatnika w BLIK One Click.
blikPaymentData.aliases.type
UID.

Podstawowe body żądania powinno wyglądać następująco:

{
  "amount": 0.1,
  "description": "Testowa transakcja BLIK",
  "payer": {
    "email": "<[email protected]>",
    "name": "Jan Nowak",
    "ip": "127.0.0.1",
    "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
  },
  "pay": {
    "groupId": 150,
    "blikPaymentData": {
      "aliases": {
        "value": "user_unique_alias_123",
        "type": "UID"
      }
    }
  }
}

Po wysłaniu żądania zwrócimy schemat TransactionCreated.

Najważniejsze parametry odpowiedzi:

result
success – Transakcja została utworzona pomyślnie.
payments.status
pending – Transakcja oczekuje opłacenia.

Wyświetl ekran oczekiwania

Wyświetl płatnikowi ekran oczekiwania. Umieść w nim informacje, że oczekujemy na akceptację płatności.

Bank wysyła powiadomienie push do aplikacji banku płatnika w celu zatwierdzenia płatności.

Obsłuż powiadomienie

Poinformujemy Cię o statusie transakcji za pośrednictwem notyfikacji po zaksięgowaniu transakcji.

Usunięcie aliasu

Zrealizuj możliwość usuwania aliasu BLIK w Twoim systemie przez płatnika.

Wyślij żądanie DELETE na endpoint:

https://api.tpay.com/blik/alias/{aliasValue}

Parametry żądania:

aliasValue
Wartość aliasu do usunięcia.
type
UID.

Przykładowe body żądania:

{
  "aliasType": "UID"
}

Obsłuż powiadomienie o wygaśnięciu, usunięciu aliasu

Alias może zostać usunięty lub może upłynąć data jego ważności.

Przygotuj endpoint odbierający notyfikacje o aliasach BLIK na wiadomość odnośnie do wygaśniecia lub usunięcia zapisanego aliasu.

Parametry notyfikacji o usunięciu aliasu:

id
Identyfikator akceptanta.
event
ALIAS_UNREGISTER.
msg_value.value
Unikalny identyfikator aliasu podany podczas realizacji transakcji.
msg_value.type
UID.
md5sum
Unikalna wartość md5 (parametr przestarzały).

Przykład:

{
  "id": "1010",
  "event": "ALIAS_UNREGISTER",
  "msg_value": [
    {
      "value": "user_unique_alias_123",
      "type": "UID"
    }
  ],
  "md5sum": "d303c5af701cdfcaed02a66603239eef"
}
Uwaga

Obsłuż po odbiorze notyfikacji usunięcie aliasu.

Parametry notyfikacji o wygaśnieciu aliasu:

id
Identyfikator akceptanta.
event
ALIAS_EXPIRED.
msg_value.value
Unikalny identyfikator aliasu podany podczas realizacji transakcji.
msg_value.type
UID.
md5sum
Unikalna wartość md5 (parametr przestarzały).

Przykład:

{
  "id": "1010",
  "event": "ALIAS_EXPIRED",
  "msg_value": [
    {
      "value": "user_unique_alias_123",
      "type": "UID"
    }
  ],
  "md5sum": "d303c5af701cdfcaed02a66603239eef"
}
Uwaga

Obsłuż po odbiorze notyfikacji usunięcie aliasu.

Obsłuż sytuacje, gdy alias nie jest unikalny

Jeżeli aktywnych jest wiele aliasów (użytkownik rejestrował alias wielokrotnie w różnych aplikacjach bankowych), próba płatności nie powiedzie się, a odpowiedź zawiera listę dostępnych aliasów aplikacji bankowych.

Przykładowa odpowiedź:

{
  "payments": {
    "status": "pending",
    "method": "pay_by_link",
    "amountPaid": 0,
    "date": {
      "realization": null
    },
    "errors": [
      {
        "errorCode": "payment_failed",
        "errorMessage": "aliases: Too many aliases found for aliasValue: user_unique_alias_123"
      }
    ],
    "alternatives": [
      {
        "applicationName": "My qwerty bank",
        "applicationCode": "1ec8f352-463c-6334-be44-9fede70e64b8"
      },
      {
        "applicationName": "My azerty bank",
        "applicationCode": "1ec8fe63-ea6e-6b48-ac6f-f7f170888d37"
      }
    ]
  }
}
Uwaga

Obsłuż wyświetlenie płatnikowi listę alternatywnych aliasów, aby pozwolić mu wybrać interesujący go alias. Następnie podaj applicationCode w polu key, podczas opłacania ponownie transakcji.

Przykład:

{
  "groupId": 150,
  "blikPaymentData": {
    "aliases": {
      "value": "user_unique_alias_123",
      "type": "UID",
      "key": "1ec8f352-463c-6334-be44-9fede70e64b8"
    }
  }
}

BLIK Płatności Powtarzalne

Płatności Powtarzalne BLIK są rozszerzeniem płatności Level 0. Płatności Powtarzalne BLIK pozwalają sprzedawcy na inicjowanie i pobieranie płatności od płatników, którzy wyrazili na to zgodę.

W procesie metody Płatności Powtarzalnych BLIK występują dwa kluczowe zdarzenia:

  • Włączenie Płatności Powtarzalnej, która jest wyrażoną przez użytkownika zgodą na inicjowanie przez akceptanta transakcji powtarzalnych. Taka zgoda jest inicjowana przez użytkownika w witrynie/aplikacji sprzedawcy i potwierdzana w aplikacji bankowej użytkownika. Użytkownik może również zobaczyć i anulować wszystkie Płatności Powtarzalne w swojej aplikacji bankowej.
  • Transakcja Powtarzalna – pojedyncza transakcja zainicjowana przez sprzedawcę na podstawie Płatności Powtarzalnej włączonej przez użytkownika.

Gdy użytkownik podczas pierwszej transakcji zgodzi się na włączenie Płatności Powtarzalnej BLIK, kolejne transakcje nie będą wymagały podawania 6-cyfrowego kodu BLIK, a z jego perspektywy będą realizowały się automatycznie lub po zatwierdzeniu transakcji w aplikacji bankowej w zależności od modelu. Kolejne obciążenia konta płatnika są inicjowane przez system sprzedawcy i wymagają każdorazowo tworzenia transakcji. Dostępne są trzy modele Płatności Powtarzalnych A, M i O.

Model A - Płatności Powtarzalne BLIK na kwotę stałą

Stosowany do rozliczenia stałej kwoty, w stałej częstotliwości, np. spłata produktu rozłożona na równe raty w ustalonym czasie lub opłata za Płatność Powtarzalną w serwisie streamingowym. W tym modelu należność jest pobierana użytkownikowi bez konieczności jej potwierdzania w aplikacji mobilnej banku.

Model M - Płatności Powtarzalne BLIK na kwotę zmienną

Stosowany do rozliczania zmiennej kwoty ze zadeklarowaną bądź zmienną częstotliwością. Ważność Płatności Powtarzalnej może być konkretnie określoną datą lub oznaczona jako bezterminowa/do odwołania. W tym modelu aplikacja mobilna banku każdorazowo wyświetla użytkownikowi prośbę o zatwierdzenie płatności. Czas na zatwierdzenie płatności wynosi 72 godziny.

Model O - Płatności Powtarzalne BLIK na kwotę zmienną

Stosowany do rozliczania zmiennej kwoty ze zadeklarowaną bądź zmienną częstotliwością. Ważność Płatności Powtarzalnej może być konkretnie określoną datą lub oznaczona jako bezterminowa/do odwołania. W tym modelu należność jest pobierana użytkownikowi bez konieczności jej potwierdzania w aplikacji mobilnej banku.

Więcej o modelach i ich zastosowania znajdziesz tutaj: BLIK Guidelines

Uwaga

Wykorzystanie modelu O jest ograniczone i wymaga dodatkowej akceptacji przez Tpay. Skontaktuj się ze swoim opiekunem w Tpay lub z Biurem Obsługi Klienta

Włączenie Płatności Powtarzalnej nie musi wiązać się z pobraniem opłaty od użytkownika. Ten rodzaj rejestracji opisano niżej, w rozdziale Zaproszenie do założenia Płatności Powtarzalnej BLIK Płatności Powtarzalne bez pobierania opłaty

W celu włączenia Płatności Powtarzalnej BLIK należy podać 6-cyfrowy kod BLIK wraz z aliasem Płatności Powtarzalnej. Przy kolejnych płatnościach wystarczy tylko przesłać alias podany przy pierwszej płatności.

Parametry Płatności Powtarzalnej przesłane w zaproszeniu są prezentowane użytkownikowi w aplikacji banku następująco w zależności od modelu:

Model A Formularz

Model M Formularz

Model O Formularz

Uwaga

Implementacja Płatności Powtarzalnych BLIK musi być wykonana zgodnie z wytycznymi BLIK

Zanim zaczniesz

Upewnij się, że:

  • Zrealizowałeś płatność BLIK Level 0

Wyślij zapytanie o utworzenie transakcji BLIK Level 0 wraz z autoryzacją w BLIK Płatności Powtarzalne

W celu autoryzowania użytkownika w BLIK Płatności Powtarzalne zrealizuj płatność BLIK Level 0 dodając alias.

Wyślij żądanie POST na endpoint:

https://api.tpay.com/transactions

W zapytaniu określ następujące parametry:

amount
Kwota transakcji (w złotówkach).
description
Opis transakcji widoczny dla użytkownika.
payer.email
Adres e-mail płatnika.
payer.name
Imię i nazwisko płatnika.
payer.ip
Adres IP płatnika (dopuszczalne są adresy IP V4 i V6).
payer.userAgent
User Agent przeglądarki płatnika.
groupId
Identyfikator grupy płatności dla BLIK: 150.
blikPaymentData.blikToken
6-cyfrowy kod BLIK wpisany przez użytkownika na formularzu.
blikPaymentData.refuseNoPayId
true/false płatność zostanie odrzucona automatycznie, jeśli podany kod BLIK został wygenerowany w aplikacji banku, który obecnie nie obsługuje Płatności Powtarzalnych BLIK.
blikPaymentData.aliases.value
Unikalny identyfikator Płatności Powtarzalnej
blikPaymentData.aliases.label
Unikalna nazwa Płatności Powtarzalnej, składająca się z np.: emaila lub nazwy użytkownika i nazwy planu (np. „[email protected] Plan Gold+”), umożliwiająca jednoznaczne rozpoznanie Płatności na liście płatności w aplikacji banku. Należy uwzględnić możliwość:
  • Wielu płatności powtarzalnych dla jednego klienta (jeżeli system sprzedawcy to przewiduje)
  • Zmiany planu w modelach M i O (jeżeli system sprzedawcy to przewiduje)
blikPaymentData.aliases.type
PAYID.
blikPaymentData.aliases.autopayment.model
Model, w którym rejestrujemy alias (A, M lub O).
blikPaymentData.aliases.autopayment.frequency
Częstotliwość pobieranej opłaty np. 1M - raz na miesiąc Regexp /^[1-9] ([0-9]{0,2}[DWMY])/ Wymagane dla Modelu A, Opcjonalne dla modelu M, nieprzesyłane dla modelu O.
blikPaymentData.aliases.autopayment.singleLimitAmount
Maksymalna kwota jednorazowej płatności (w złotówkach, stosowana w modelu A).
blikPaymentData.aliases.autopayment.totalLimitAmount
Łączna kwota należności (w złotówkach, stosowana w modelu A).
blikPaymentData.aliases.autopayment.currency
Waluta Płatności Powtarzalnej – obecnie wyłącznie PLN.
blikPaymentData.aliases.autopayment.initDate
Data pierwszej Transakcji Powtarzalnej (wymagane w modelu A, opcjonalne dla modelu O, nieprzesyłane dla modelu M).
blikPaymentData.aliases.autopayment.expirationDate
Data wygaśnięcia Płatności Powtarzalnej (wymagane w modelu A). Jeśli parametr nie zostanie przesłany w modelach M lub O, zostanie wygenerowana Płatność Powtarzalna bezterminowa.

Podstawowe body żądania w modelu A powinno wyglądać następująco:

{
  "amount": 20.08,
  "description": "Założenie Płatności Powtarzalnej",
  "hiddenDescription": "MyShop:user:172838953:2024-06",
  "payer": {
    "email": "[email protected]",
    "ip": "127.0.0.1",
    "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
  },
  "pay": {
    "groupId": 150,
    "blikPaymentData": {
      "blikToken": "777777",
      "aliases": {
        "value": "172838953_he7vqanrfazzaeyb3q",
        "label": "MyShop, sklep z duszą",
        "type": "PAYID",
        "autopayment": {
          "model": "A",
          "frequency": "1M",
          "singleLimitAmount": 10.0,
          "totalLimitAmount": 100.0,
          "currency": "PLN",
          "initDate": "2024-10-30 00:00:00",
          "expirationDate": "2025-01-01 00:00:00"
        }
      }
    }
  }
}

Podstawowe body żądania w modelu M powinno wyglądać następująco:

{
  "amount": 21.08,
  "description": "Założenie Płatności Powtarzalnej",
  "hiddenDescription": "MyShop:user:172838953:2024-06",
  "payer": {
    "email": "[email protected]",
    "ip": "127.0.0.1",
    "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
  },
  "pay": {
    "groupId": 150,
    "blikPaymentData": {
      "blikToken": "777777",
      "aliases": {
        "value": "172838953_he7vqanrfazzaeyb3q",
        "label": "MyShop, sklep z duszą",
        "type": "PAYID",
        "autopayment": {
          "model": "M"
        }
      }
    }
  }
}

Podstawowe body żądania w modelu O powinno wyglądać następująco:

{
  "amount": 21.08,
  "description": "Założenie Płatności Powtarzalnej",
  "hiddenDescription": "MyShop:user:172838953:2024-06",
  "payer": {
    "email": "[email protected]",
    "ip": "127.0.0.1",
    "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
  },
  "pay": {
    "groupId": 150,
    "blikPaymentData": {
      "blikToken": "777777",
      "aliases": {
        "value": "172838953_he7vqanrfazzaeyb3q",
        "label": "MyShop, sklep z duszą",
        "type": "PAYID",
        "autopayment": {
          "model": "O"
        }
      }
    }
  }
}

Po wysłaniu żądania zwrócimy schemat TransactionCreated.

Najważniejsze parametry odpowiedzi:

result
success – Transakcja została utworzona pomyślnie.
payments.status
pending – Transakcja oczekuje opłacenia.

Przykładowa odpowiedź:

{
  "result": "success",
  "requestId": "b6325d51e8c4b9130476",
  "transactionId": "ta_jrkNGj5L29pnlbqw",
  "title": "TR-BRA-CCP1S9X",
  "posId": "ps_NyRBLzV5kelrpjaM",
  "status": "pending",
  "date": {
    "creation": "2024-05-08 21:01:15",
    "realization": null
  },
  "amount": 21.08,
  "currency": "PLN",
  "description": "Założenie Płatności Powtarzalnej",
  "hiddenDescription": "",
  "payer": {
    "payerId": "py_a9rjlZ3qyPPG1bqY",
    "email": "<[email protected]>",
    "name": "Jan Nowak",
    "phone": "",
    "address": "",
    "city": "",
    "country": "PL",
    "postalCode": "",
    "ip": "127.0.0.1",
    "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
  },
  "payments": {
    "status": "pending",
    "method": "pay_by_link",
    "amountPaid": 0,
    "date": {
      "realization": null
    }
  },
  "transactionPaymentUrl": "https://secure.tpay.com/?title=TR-BRA-CCP1S9X&uid=01HXCS9KVQBDZDDWDHP1TZKJ1K"
}

Wyświetl ekran oczekiwania

Wyświetl użytkownikowi ekran oczekiwania. Umieść w nim informacje, że oczekujemy na akceptację płatności.

Bank wysyła powiadomienie push do aplikacji banku użytkownika w celu zatwierdzenia płatności.

Obsłuż notyfikacje

Poinformujemy Cię o statusie transakcji za pośrednictwem notyfikacji po zaksięgowaniu transakcji.

Autoryzacja Płatności Powtarzalnej

Po pozytywnej autoryzacji płatności, użytkownik w aplikacji banku otrzyma notyfikacje push w celu akceptacji wysłanej Płatności Powtarzalnej.

Obsłuż notyfikacje o statusie utworzenia Płatności Powtarzalnej

Oczekuj na webhook notyfikacji o statusie Płatności Powtarzalnej. Adres webhook’a musi być statyczny i wprowadzony w ustawieniach konta sprzedawcy w Panelu Akceptanta w zakładce Ustawienia > Powiadomienia.

Gdy alias zostanie zaakceptowany, wyślemy Ci jego dane w celu potwierdzenia utworzenia Płatności Powtarzalnej.

Parametry notyfikacji:

id
Identyfikator akceptanta.
event
ALIAS_REGISTER.
msg_value.value
Unikalny identyfikator Płatności Powtarzalnej podany podczas realizacji transakcji.
msg_value.type
PAYID.
msg_value.expirationDate
Data ważności Płatności Powtarzalnej. Jeśli w notyfikacji brakuje tego parametru, oznacza to, że alias nie wygasa.
md5sum
Unikalna wartość md5 (parametr przestarzały).

Przykład:

{
  "id": "1010",
  "event": "ALIAS_REGISTER",
  "msg_value": [
    {
      "value": "user_unique_alias_123",
      "type": "PAYID",
      "expirationDate": "2024-11-02 14:15:01"
    }
  ],
  "md5sum": "d303c5af701cdfcaed02f66603239eef"
}

Odpowiedz na nasze powiadomienie statusem HTTP 200 z body:

TRUE
Uwaga

Treść notyfikacji jest podpisana za pomocą JSON Web Signature.

Sprawdź, czy notyfikacja pochodzi od Tpay.

Zapisz parametr msg_value.value dla dalszych transakcji, skoreluj tę wartość z użytkownikiem twojego systemu, w celu późniejszej obsługi płatności.

Wyświetl wynik transakcji

Po otrzymaniu notyfikacji o statusie transakcji wykorzystaj pole tr_status.

Wyślij zapytanie o utworzenie transakcji wykorzystując zarejestrowany alias

W celu pobrania kolejnej płatności wynikającej z zawartej Płatności Powtarzalnej utwórz transakcję, podając wcześniej zapisany alias użytkownika.

Wyślij żądanie POST na endpoint:

https://api.tpay.com/transactions

W zapytaniu określ następujące parametry:

amount
Kwota transakcji (w złotówkach).
description
Opis transakcji widoczny dla użytkownika.
email
Adres e-mail użytkownika.
name
Imię i nazwisko użytkownika.
groupId
Identyfikator grupy płatności dla BLIK: 150.
blikPaymentData.type
Dla płatności powtarzalnych type: 2.
blikPaymentData.aliases.value
Unikalny alias per użytkownik. Zapisany podczas autoryzacji użytkownika w BLIK Płatności Powtarzalne.
blikPaymentData.aliases.type
PAYID.
blikPaymentData.aliases.noDelay
true/false – Parametr dostępny dla modeli A i O, powoduje natychmiastową próbę pobrania środków. W modelu A bez tego parametru użytkownik ma 72h na zatwierdzenie płatności.
blikPaymentData.aliases.recommendedAuthLevel
Żądanie wykonania obciążenia bez potwierdzenia użytkownika. Parametr dostępny i wymagany tylko w modelu O. Wartość NOCONFREQ.

Podstawowe body żądania w modelach A i M powinno wyglądać następująco:

{
  "amount": 27.08,
  "description": "Płatność za 07/2024",
  "hiddenDescription": "MyShop:user:172838953:2024-07",
  "payer": {
    "email": "[email protected]"
  },
  "pay": {
    "groupId": 150,
    "blikPaymentData": {
      "type": 2,
      "aliases": {
        "value": "172838953_he7vqanrfazzaeyb3q",
        "type": "PAYID"
      }
    }
  }
}

Podstawowe body żądania w modelu O powinno wyglądać następująco:

{
  "amount": 27.08,
  "description": "Płatność za 07/2024",
  "hiddenDescription": "MyShop:user:172838953:2024-07",
  "payer": {
    "email": "[email protected]"
  },
  "pay": {
    "groupId": 150,
    "blikPaymentData": {
      "type": 2,
      "aliases": {
        "value": "172838953_he7vqanrfazzaeyb3q",
        "type": "PAYID",
        "recommendedAuthLevel": "NOCONFREQ"
      }
    }
  }
}

Po wysłaniu żądania zwrócimy schemat TransactionCreated.

Najważniejsze parametry odpowiedzi:

result
success – Transakcja została utworzona pomyślnie
payments.status
pending – Transakcja oczekuje opłacenia

Obsłuż powiadomienie

Poinformujemy Cię o statusie transakcji za pośrednictwem notyfikacji po zaksięgowaniu transakcji.

Usunięcie Płatności Powtarzalnej

Zrealizuj możliwość usuwania Płatności Powtarzalnej BLIK w Twoim systemie przez użytkownika.

Wyślij żądanie DELETE na endpoint:

https://api.tpay.com/blik/alias/{aliasValue}

Parametry żądania:

aliasValue
wartość Płatności Powtarzalnej do usunięcia.
type
PAYID.

Przykładowe body żądania:

{
  "aliasType": "PAYID"
}

Obsłuż powiadomienie o wygaśnięciu, usunięciu Płatności Powtarzalnej

Płatność Powtarzalna może zostać usunięta lub może upłynąć data jego ważności.

Przygotuj endpoint odbierający notyfikacje o aliasach BLIK na wiadomość dotyczącą wygaśnięcia lub usunięcia zapisanej Płatności Powtarzalnej.

Parametry notyfikacji o usunięciu Płatności Powtarzalnej:

id
Identyfikator akceptanta.
event
ALIAS_UNREGISTER.
msg_value.value
Unikalny alias per użytkownik. Zapisany podczas autoryzacji użytkownika w BLIK Płatności Powtarzalne.
msg_value.type
PAYID.
md5sum
Unikalna wartość md5 (parametr przestarzały).

Przykład:

{
  "id": "1010",
  "event": "ALIAS_UNREGISTER",
  "msg_value": [
    {
      "value": "172838953_he7vqanrfazzaeyb3q",
      "type": "PAYID"
    }
  ],
  "md5sum": "d303c5af701cdfcaed02a66603239eef"
}
Uwaga

Obsłuż po odbiorze notyfikacji usunięcie Płatności Powtarzalnej.

Parametry notyfikacji o wygaśnięciu Płatności Powtarzalnej:

id
Identyfikator akceptanta.
event
ALIAS_EXPIRED.
msg_value.value
Unikalny alias per użytkownik. Zapisany podczas autoryzacji użytkownika w BLIK Płatności Powtarzalne.
msg_value.type
PAYID.
md5sum
Unikalna wartość md5 (parametr przestarzały).

Przykład:

{
  "id": "1010",
  "event": "ALIAS_EXPIRED",
  "msg_value": [
    {
      "value": "172838953_he7vqanrfazzaeyb3q",
      "type": "PAYID"
    }
  ],
  "md5sum": "d303c5af701cdfcaed02a66603239eef"
}
Uwaga

Obsłuż po odbiorze notyfikacji usunięcie Płatności Powtarzalnej.

Obsłuż sytuację, gdy alias nie jest unikalny

Jeżeli aktywnych jest wiele Płatności Powtarzalnych dla tego samego aliasu, próba pobrania środków nie powiedzie się, a odpowiedź będzie zawierała listę zawartych Płatności Powtarzalnych wraz z nazwami (parametr blikPaymentData.aliases.label). Jeśli nie chcesz doprowadzać do wystąpienia tej sytuacji, możesz wygenerować dla użytkownika unikatowy alias per każda zawarta Płatność Powtarzalna.

Przykładowa odpowiedź:

{
  "payments": {
    "status": "pending",
    "method": "pay_by_link",
    "amountPaid": 0,
    "date": {
      "realization": null
    },
    "errors": [
      {
        "errorCode": "payment_failed",
        "errorMessage": "aliases: Too many aliases found for aliasValue: user_unique_alias_123"
      }
    ],
    "alternatives": [
      {
        "applicationName": "Subscription 1",
        "applicationCode": "1ec8f352-463c-6334-be44-9fede70e64b8"
      },
      {
        "applicationName": "Subscription 2",
        "applicationCode": "1ec8fe63-ea6e-6b48-ac6f-f7f170888d37"
      }
    ]
  }
}
Uwaga

Obsłuż wyświetlenie użytkownikowi listy alternatywnych aliasów, aby pozwolić mu wybrać interesujący go alias. Następnie podaj applicationCode w polu key, podczas opłacania ponownie transakcji.

Przykład:

{
  "groupId": 150,
  "blikPaymentData": {
    "aliases": {
      "value": "172838953_he7vqanrfazzaeyb3q",
      "type": "PAYID",
      "key": "1ec8f352-463c-6334-be44-9fede70e64b8"
    }
  }
}

Wyślij zaproszenie do włączenia Płatności Powtarzalnej BLIK bez pobierania opłaty dodając odpowiednie pola dotyczące Płatności Powtarzalnej

Wyślij żądanie POST na endpoint:

https://api.tpay.com/blik/alias

W zapytaniu określ następujące parametry:

description
Opis transakcji widoczny dla użytkownika.
lang
Język, w którym będzie prowadzona komunikacja z użytkownikiem (pl lub en).
blikPaymentData.blikToken
6-cyfrowy kod BLIK wpisany przez użytkownika na formularzu.
blikPaymentData.refuseNoPayId
true/false płatność zostanie odrzucona automatycznie, jeśli podany kod BLIK został wygenerowany w aplikacji banku, który obecnie nie obsługuje Płatności Powtarzalnych BLIK.
blikPaymentData.aliases.value
Unikalny identyfikator Płatności Powtarzalnej
blikPaymentData.aliases.label
Unikalna nazwa Płatności Powtarzalnej, składająca się z np.: emaila lub nazwy użytkownika i nazwy planu (np. „[email protected] Plan Gold+”), umożliwiająca jednoznaczne rozpoznanie Płatności na liście płatności w aplikacji banku. Należy uwzględnić możliwość:
  • Wielu płatności powtarzalnych dla jednego klienta (jeżeli system sprzedawcy to przewiduje).
  • Zmiany planu w modelach M i O (jeżeli system sprzedawcy to przewiduje).
blikPaymentData.aliases.type
PAYID.
blikPaymentData.aliases.autopayment.model
Model, w którym rejestrujemy alias (A, M lub O).
blikPaymentData.aliases.autopayment.frequency
Częstotliwość pobieranej opłaty np. 1M - raz na miesiąc. Wartości powinny składać się z liczby zawierającej od 1 do 3 cyfr, nierozpoczynającej się od zera, oraz jednoliterowego skrótu na oznaczenie okresu: D, W, M lub Y. Wymagane dla Modelu A, Opcjonalne dla modelu M, nieprzesyłane dla modelu O.
blikPaymentData.aliases.autopayment.singleLimitAmount
Maksymalna kwota jednorazowej płatności (w złotówkach, stosowana w modelu A).
blikPaymentData.aliases.autopayment.totalLimitAmount
Łączna kwota należności (w złotówkach, stosowana w modelu A).
blikPaymentData.aliases.autopayment.currency
Waluta Płatności Powtarzalnej – obecnie wyłącznie PLN.
blikPaymentData.aliases.autopayment.initDate
Data pierwszej Transakcji Powtarzalnej (wymagane w modelu A, opcjonalne dla modelu O, nieprzesyłane dla modelu M).
blikPaymentData.aliases.autopayment.expirationDate
Data wygaśnięcia Płatności Powtarzalnej (wymagane w modelu A). Jeśli parametr nie zostanie przesłany w modelach M lub O, zostanie wygenerowana Płatność Powtarzalna bezterminowa.

Podstawowe body żądania w modelu A powinno wyglądać następująco:

{
  "description": "Założenie Płatności Powtarzalnej",
  "pay": {
    "blikPaymentData": {
      "blikToken": "777777",
      "aliases": {
        "value": "172838953_he7vqanrfazzaeyb3q",
        "label": "MyShop, sklep z duszą",
        "type": "PAYID",
        "autopayment": {
          "model": "A",
          "frequency": "1M",
          "singleLimitAmount": 10.0,
          "totalLimitAmount": 100.0,
          "currency": "PLN",
          "initDate": "2024-10-30 00:00:00",
          "expirationDate": "2025-01-01 00:00:00"
        }
      }
    }
  }
}

Podstawowe body żądania w modelu M powinno wyglądać następująco:

{
  "description": "Założenie Płatności Powtarzalnej",
  "pay": {
    "blikPaymentData": {
      "blikToken": "777777",
      "aliases": {
        "value": "172838953_he7vqanrfazzaeyb3q",
        "label": "MyShop, sklep z duszą",
        "type": "PAYID",
        "autopayment": {
          "model": "M"
        }
      }
    }
  }
}

Podstawowe body żądania w modelu O powinno wyglądać następująco:

{
  "description": "Założenie Płatności Powtarzalnej",
  "pay": {
    "blikPaymentData": {
      "blikToken": "777777",
      "aliases": {
        "value": "172838953_he7vqanrfazzaeyb3q",
        "label": "MyShop, sklep z duszą",
        "type": "PAYID",
        "autopayment": {
          "model": "O"
        }
      }
    }
  }
}

Po wysłaniu żądania zwrócimy schemat TransactionCreated.

Najważniejsze parametry odpowiedzi:

result
success – Żądanie zostało poprawnie obsłużone.
payments.status
correct – Poprawnie zainicjowano zapisywanie Płatności Powtarzalnej.

Przykładowa odpowiedź:

{
  "result": "success",
  "posId": "ps_NyRBLzV5kelrpjaM",
  "status": "pending",
  "date": {
    "creation": "2024-05-08 21:01:15"
  },
  "description": "Założenie Płatności Powtarzalnej"
}

Wyświetl ekran oczekiwania

Wyświetl użytkownikowi ekran oczekiwania. Umieść w nim informacje, że oczekujemy na akceptację Płatności Powtarzalnej.

Autoryzacja Płatności Powtarzalnej

Bank wysyła powiadomienie push do aplikacji banku użytkownika w celu zatwierdzenia Płatności Powtarzalnej.

Obsłuż notyfikacje o statusie utworzenia Płatności Powtarzalnej

Oczekuj na webhook notyfikacji o statusie Płatności Powtarzalnej. Adres webhook’a musi być statyczny i wprowadzony w ustawieniach konta sprzedawcy w Panelu Akceptanta w zakładce Ustawienia->Powiadomienia.

Gdy alias zostanie zaakceptowany, wyślemy Ci jego dane w celu potwierdzenia utworzenia Płatności Powtarzalnej.

Parametry notyfikacji:

id
Identyfikator akceptanta.
event
ALIAS_REGISTER.
msg_value.value
Unikalny identyfikator Płatności Powtarzalnej podany podczas realizacji transakcji.
msg_value.type
PAYID.
msg_value.expirationDate
Data ważności Płatności Powtarzalnej. Jeśli w notyfikacji brakuje tego parametru, oznacza to, że alias nie wygasa.
md5sum
Unikalna wartość md5 (parametr przestarzały).

Przykład:

{
  "id": "1010",
  "event": "ALIAS_REGISTER",
  "msg_value": [
    {
      "value": "172838953_he7vqanrfazzaeyb3q",
      "type": "PAYID",
      "expirationDate": "2026-11-02 14:15:01"
    }
  ],
  "md5sum": "d303c5af701cdfcaed02f66603239eef"
}

Odpowiedz na nasze powiadomienie statusem HTTP 200 z body:

TRUE
Uwaga

Treść notyfikacji jest podpisana za pomocą JSON Web Signature.

Sprawdź, czy notyfikacja pochodzi od Tpay.

Zapisz parametr msg_value.value dla dalszych transakcji, skoreluj tę wartość z użytkownikiem twojego systemu, w celu późniejszej obsługi płatności.

Wyświetl wynik zawarcia Płatności Powtarzalnej

Po otrzymaniu notyfikacji o rejestracji Płatności Powtarzalnej wyświetl użytkownikowi ekran sukcesu.