Płatności cykliczne BLIK
Interfejs API został rozszerzony o możliwość realizacji transakcji cyklicznych bez udziału kupującego (tzw. MIT – Merchant Initiated Transaction). Warunkiem skorzystania z tej funkcjonalności jest wcześniejsza rejestracja płatności z udziałem kupującego (tzw. CIT – Customer Initiated Transaction), co skutkuje utworzeniem tokenu płatniczego typu PAYID.
Aby uruchomić usługę, niezbędne jest podpisanie aneksu do obowiązującej umowy.
Przy integracji płatności cyklicznych BLIK należy zapoznać się z dokumentacją i wymaganiami dostępnymi na stronie Płatności cyklicznych BLIK.
Klient ma możliwość samodzielnego usunięcia tokena po stronie banku. W przypadku takiego działania, przy pobraniu listy dostępnych tokenów usunięty token nie będzie już widoczny.
Ogólnie informacje o płatnościach cyklicznych BLIK
Po zapisaniu tokenu PAYID merchant uzyskuje możliwość inicjowania transakcji w cyklu, gdzie to sprzedawca decyduje o częstotliwości oraz wysokości obciążenia. W tym modelu:
- Merchant może wykonywać transakcje o zmiennej kwocie i częstotliwości.
- Maksymalna dopuszczalna kwota pojedynczej transakcji wynosi 2000 PLN (transakcje powyżej tej kwoty są automatycznie odrzucane).
- W przypadku braku środków na koncie, przekroczenia limitów, braku obsługi płatności cyklicznych w danym banku lub innego problemu technicznego, system zwróci odpowiedni komunikat błędu, a płatność nie zostanie automatycznie ponowiona - merchant jest odpowiedzialny za ponowienie próby obciążenia.
Realizacja transakcji w modelu wiąże się z przejęciem przez merchanta odpowiedzialności za ewentualne oszustwa - wyrażane jest to poprzez ustawienie parametru recommendedAuthLevel
na wartość NO_CONFIRMATION. Wysłanie tego parametru jednoznacznie wskazuje na świadome działanie merchanta.
Obecnie nie ma możliwości rejestracji płatności powtarzalnej z zerową kwotą. W przypadku, gdy aktywacja wiąże się z pobraniem środków, a nie jest to opłata za usługę, merchant ma obowiązek wykonania zwrotu aktywacyjnego obciążenia.
Wymogi i zalecenia dotyczące bezpieczeństwa
Zanim przystąpisz do integracji usługi, zapoznaj się z zaleceniami i wymogami przygotowanymi przez ekspertów ds. bezpieczeństwa w PayU. Ich przestrzeganie pomoże zminimalizować ryzyko związane z transakcjami oszukańczymi.
Płatność cykliczna BLIK z rejestracją tokena PAYID
Aby zarejestrować token PAYID, powinieneś rozszerzyć standardowe zamówienie o sekcję payMethods
z obiektem blikData
z parametrem register
ustawionym na true i sekcję buyer
rozszerzoną o extCustomerId
. Dodatkowo musisz dodać sekcję recurring
wskazującą na typ płatności.
{
...
"buyer": {
"extCustomerId": "",
"email": ""
},
"totalAmount": <opłata aktywacyjna>,
"payMethods": {
"payMethod": {
"type": "BLIK_AUTHORIZATION_CODE",
"value": "<kod T6 użyty do autoryzacji transakcji>",
"blikData": {
"registerTokenValue": "<wartość rejestrowanego tokenu PAYID>",
"aliasLabelProposal": "<tytuł płatności cyklicznej>",
"register": true,
"recurring": {
"type": "O",
"initializationDate": "<data pierwszej transakcji MIT>",
"expirationDate": "<data ważności tokenu PAYID>"
}
}
}
}
}
Szczegółowe informacje na temat parametrów znajdziesz w sekcji Create an Order w naszej referencji API.
Jeśli sam zarządzasz tokenami swoich klientów, wartość wygenerowanego tokena PAYID powinieneś umieścić w polu registerTokenValue
. W przeciwnym razie pomiń ten parametr podczas rejestracji tokena - PayU wygeneruje unikalną wartość automatycznie.
Parametry initializationDate
i expirationDate
są opcjonalne.
Wartość aliasLabelProposal
powinna być czytelna dla kupującego i jednoznacznie wskazywać na konkretną transakcję cykliczną.
Obecnie aby zarejestrować płatność cykliczną BLIK wymagane jest przesłanie niezerowej kwoty aktywacyjnej. W przypadku, gdy aktywacja wiąże się z pobraniem środków, a nie jest to opłata za usługę, merchant ma obowiązek wykonania zwrotu aktywacyjnego obciążenia.
Status Http | Kod statusu | Opis |
---|---|---|
400 | ERROR_AUTHORIZATION_CODE / AUTH_CODE_EXPIRED | Kod autoryzacyjny wygasł. |
400 | AUTH_CODE_LIMIT_EXCEEDED / ERROR_AUTHORIZATION_CODE | Limit dla kodu autoryzacyjnego został przekroczony. |
400 | ERROR_AUTHORIZATION_CODE / AUTH_CODE_CANCEL | Kod autoryzacyjny został anulowany. |
400 | ERROR_AUTHORIZATION_CODE / AUTH_CODE_USED | Kod autoryzacyjny był już wykorzystany. |
400 | ERROR_AUTHORIZATION_CODE / AUTH_CODE_INVALID | Niepoprawny kod autoryzacyjny. |
400 | ERROR_VALUE_MISSING / MISSING_AUTHORIZATION_CODE | Błąd walidacji, kod autoryzacyjny T6 BLIK wymagany do autoryzacji. |
400 | ERROR_VALUE_INVALID / INVALID_BLIK_CODE | Niepoprawny składniowo kod autoryzacyjny BLIK. Kod autoryzacyjny BLIK powinien składać się z 6 cyfr. |
400 | ERROR_VALUE_INVALID / INVALID_AUTHORIZATION_CODE_USAGE | Pole authorizationCode nie może zostać użyte w tym kontekście. |
400 | ERROR_VALUE_INVALID / INVALID_RECOMMENDED_AUTH_LEVEL_USAGE | Pole recommendedAuthLevel nie może zostać użyte w tym kontekście. |
400 | ERROR_VALUE_INVALID / INVALID_APP_KEY_USAGE | Pole appKey nie może zostać użyte w tym kontekście. |
400 | ERROR_VALUE_MISSING / MISSING_REGISTER_TOKEN_VALUE | Pole registerTokenValue wymagane dla merchantów utrzymujących tokeny. |
400 | ERROR_VALUE_MISSING / INVALID_CURRENCY_CODE | Niepoprawny kod waluty. |
400 | ERROR_VALUE_MISSING / MISSING_BUYER_EMAIL | Błąd walidacji, brakuje pola email w sekcji buyer. |
400 | ERROR_VALUE_MISSING / MISSING_BUYER_EXT_CUSTOMER_ID | Błąd walidacji, brakuje pola extCustomerId w sekcji buyer. |
400 | ERROR_VALUE_INVALID / INVALID_COUNTRY_CODE | Błąd walidacji, pola countryCode w sekcji blikData. Użyto niewspierany kod kraju. |
400 | ERROR_VALUE_INVALID / INVALID_BLIK_RECURRING_TYPE | Błąd walidacji, pola type w sekcji recurring. Użyto niewspierany typ. |
400 | ERROR_VALUE_INVALID / MISSING_ALIAS_LABEL_PROPOSAL | Błąd walidacji, brakuje pola aliasLabelProposal w sekcji blikData. |
400 | ERROR_VALUE_INVALID / INVALID_INITIALIZATION_DATE | Błąd walidacji, pola initializationDate w sekcji recurring. Data nie może być późniejsza niż expirationDate. |
400 | ERROR_VALUE_INVALID / INVALID_EXPIRATION_DATE | Błąd walidacji, pola expirationDate w sekcji recurring. Data nie może być z przeszłości oraz nie może być wcześniejsza niż initializationDate. Data jeżeli została zdefiniowana nie może być dłużej ważna niż 10 lat. |
400 | ERROR_TOKEN / AUTH_TOKEN_EXISTS | Próba zarejestowania tokenu, który już istnieje. |
400 | BUSINESS_ERROR / RECURRING_TOKEN_PAYMENT_NOT_ALLOWED | Usługa płatności cyklicznych niezostała udostępniona przez PayU. |
400 | ERROR_TOKEN / AUTH_TOKEN_TYPE_NOT_SUPPORTED_BY_ISSUER | Brak możliwość rejestracji tokenu, wybrany bank nie wspiera płatności cyklicznych. |
Płatność cykliczna BLIK z tokenem PAYID
Aby utworzyć kolejną płatność cykliczną BLIK, musisz rozszerzyć standardowe zamówienie o sekcję payMethods
, zawierającą token PAYID oraz obiekt blikData
. W obiekcie blikData
oprócz identyfikatora aplikacji bankowej appKey
, powinieneś dodać sekcję recurring
, określającą typ żądania.
{
...
"payMethods": {
"payMethod": {
"type": "BLIK_TOKEN",
"value": "<wartość tokenu PAYID, który zostanie użyty do autoryzacji>",
"blikData": {
"appKey":"<id danego przypisania aplikacji bankowej>",
"recommendedAuthLevel": "NO_CONFIRMATION",
"recurring": {
"type": "O"
}
}
}
}
}
Szczegółowe informacje na temat parametrów znajdziesz w sekcji Create an Order w naszej referencji API.
Wysłanie parametru recommendedAuthLevel
z wartością NO_CONFIRMATION jednoznacznie wskazuje na świadome działanie merchanta. Merchant przejmuje odpowiedzialność za ewentualne oszustwa.
Status Http | Kod Statusu | Opis |
---|---|---|
400 | ERROR_TOKEN / AUTH_TOKEN_NOT_FOUND | Podany token płatniczy nie istnieje. |
400 | ERROR_TOKEN / AUTH_TOKEN_NOT_ACTIVE | Podany token płatniczy nie jest aktywny. |
400 | ERROR_VALUE_MISSING / INVALID_CURRENCY_CODE | Niepoprawny kod waluty. |
400 | ERROR_VALUE_INVALID / INVALID_COUNTRY_CODE | Błąd walidacji, pola countryCode w sekcji blikData . Użyto niewspierany kod kraju. |
400 | ERROR_VALUE_MISSING / MISSING_APPKEY | Błąd walidacji, brakuje id przypisania danej aplikacji bankowej. |
400 | ERROR_VALUE_INVALID / INVALID_ALIAS_LABEL_PROPOSAL_USAGE | Pole aliasLabelProposal nie może być użyte podczas płatności tokenem, w przypadku tokenów zarządzanych przez PayU. |
400 | ERROR_VALUE_MISSING / MISSING_ALIAS_LABEL_PROPSAL | Pole aliasLabelProposal jest obowiązkowe podczas płatności tokenem PAYID, w przypadku tokenów zarządzanych przez merchanta. |
400 | ERROR_VALUE_INVALID / INVALID_REGISTER_TOKEN_VALUE_USAGE | Pole registerTokenValue nie może być użyte podczas płatności tokenem. |
400 | ERROR_VALUE_MISSING / MISSING_AUTHORIZATION_CODE_OR_TOKEN | Błąd walidacji, dane autoryzacyjne wymagane - brakujący token. |
400 | ERROR_VALUE_INVALID / AMBIGUOUS_AUTHORIZATION_USAGE | Podano dwa instrumenty do autoryzacji, w celu realizacji płatności tokenem powinno być wypełnione wyłącznie pole value , w którym umieszczony zostanie token. |
400 | ERROR_VALUE_MISSING / MISSING_BUYER_EMAIL | Błąd walidacji, brakuje pola email w sekcji buyer . |
400 | ERROR_VALUE_MISSING / MISSING_BUYER_EXT_CUSTOMER_ID | Błąd walidacji, brakuje pola extCustomerId w sekcji buyer . |
400 | ERROR_VALUE_INVALID / INVALID_BLIK_RECURRING_TYPE | Błąd walidacji, pola type w sekcji recurring . Użyto niewspieranej wartości. |
400 | ERROR_VALUE_INVALID / INVALID_INITIALIZATION_DATE_USAGE | Pole initializationDate nie może być użyte podczas płatności tokenem. |
400 | ERROR_VALUE_INVALID / INVALID_EXPIRATION_DATE_USAGE | Pole expirationDate nie może być użyte podczas płatności tokenem. |
400 | ERROR_VALUE_INVALID / TOTAL_AMOUNT_REQUIRE_SCA | Pole totalAmount nie może przekraczać wyznaczonego progu w ramach transakcji inicjowanych przez merchanta. |
400 | BUSINESS_ERROR / RECURRING_TOKEN_PAYMENT_NOT_ALLOWED | Usługa płatności cyklicznych niezostała udostępniona przez PayU. |
400 | ERROR_VALUE_INVALID / INITIALIZATION_DATE_NOT_MET | Błąd walidacji, pola initializationDate w sekcji recurring . Próba wykonania transakcji przed zdefiniowanym czasem. |
400 | ERROR_VALUE_INVALID / EXPIRATION_DATE_NOT_MET | Błąd walidacji, pola expirationDate w sekcji recurring . Próba wykonania transakcji po zdefiniowanym czasem. |
400 | ERROR_VALUE_INVALID / NO_CONFIRMATION_AUTH_LEVEL_REQUIRED | Błąd walidacji, pola recommendedAuthLevel w sekcji blikData . Wartość pola musi być ustawiona na NO_CONFIRMATION. |