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": {
"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.
Możliwe jest przesłanie opcjonalnego parametru authorizeDespiteRecurringNotSupported (domyślna wartość falsse). Określa on, czy transakcja BLIK powinna zostać przetworzona nawet w przypadku, gdy bank kupującego nie obsługuje funkcji płatności cyklicznych BLIK.
Jeśli żądanie zostanie wysłane dla banku, który nie obsługuje płatności cyklicznych BLIK, PayU zwróci odpowiedź: AUTH_TOKEN_TYPE_NOT_SUPPORTED_BY_ISSUER (zgodnie z opisem w tabeli "Possible Errors for PAYID Token Registration" poniżej).
| 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.
Jeśli w odpowiedzi na zapytanie o dostępne metody płatności dla tokenu BLIK (type="PAYID") nie otrzymasz pola
bankApplicationReferences, podczas tworzenia płatności z tym tokenem nie przesyłaj pola appKey.
Pole appKey powinieneś przesłać tylko wtedy, gdy w odpowiedzi dla tokenu PAYID znajduje się tablica bankApplicationReferences, a w jej obiektach występuje pole key. W takiej sytuacji użyj wartości pola key jako wartości pola appKey w żądaniu tworzenia płatności.
note
{
...
"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. |