Płatności cykliczne BLIK
Płatności cykliczne BLIK pozwalają obciążać kupującego bez jego udziału (MIT – Merchant Initiated Transaction). Najpierw kupujący wykonuje płatność (CIT – Customer Initiated Transaction), która rejestruje token płatniczy PAYID.
Aby uruchomić usługę, podpisz aneks do obowiązującej umowy.
Przed integracją zapoznaj się z dokumentacją i wymaganiami na stronie Płatności cykliczne BLIK.
Kupujący może usunąć token w swoim banku. Usunięty token nie pojawia się już na liście dostępnych tokenów.
Ogólne informacje o płatnościach cyklicznych BLIK
Po zapisaniu tokena PAYID merchant może inicjować transakcje cykliczne i sam decyduje o ich częstotliwości i kwocie. W tym modelu:
- Merchant może wykonywać transakcje o zmiennej kwocie i częstotliwości.
- Maksymalna 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 zwraca odpowiedni komunikat błędu, a płatność nie jest automatycznie ponawiana – merchant odpowiada za ponowienie próby obciążenia.
W tym modelu merchant przejmuje odpowiedzialność za ewentualne oszustwa. Merchant potwierdza to, ustawiając parametr recommendedAuthLevel na NO_CONFIRMATION.
Obecnie nie można zarejestrować płatności cyklicznej z zerową kwotą. Jeśli aktywacja wiąże się z pobraniem środków, a nie jest to opłata za usługę, merchant musi zwrócić kwotę aktywacyjną.
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, rozszerz standardowe zamówienie o sekcję buyer z polami extCustomerId i email oraz o sekcję payMethods z obiektem blikData, w którym parametr register ma wartość true. W blikData dodaj też obiekt recurring określający typ płatności.
{
...
"buyer": {
"extCustomerId": "<id kupującego w systemie merchanta>",
"email": "<adres e-mail kupującego>"
},
"totalAmount": <opłata aktywacyjna>,
"payMethods": {
"payMethod": {
"type": "BLIK_AUTHORIZATION_CODE",
"value": "<kod autoryzacyjny BLIK>",
"blikData": {
"aliasLabelProposal": "<tytuł płatności cyklicznej>",
"register": true,
"recurring": {
"type": "O",
"initializationDate": "<data pierwszej transakcji MIT>",
"expirationDate": "<data ważności tokena PAYID>"
}
}
}
}
}
Szczegóły parametrów znajdziesz w sekcji Create an Order w naszej referencji API.
Jeśli sam zarządzasz tokenami swoich kupujących, umieść wartość wygenerowanego tokena PAYID 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ą.
Możesz przesłać opcjonalny parametr authorizeDespiteRecurringNotSupported (domyślna wartość false). Określa on, czy transakcja BLIK powinna zostać przetworzona nawet wtedy, gdy bank kupującego nie obsługuje 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 błąd AUTH_TOKEN_TYPE_NOT_SUPPORTED_BY_ISSUER (zobacz tabelę poniżej).
| Status HTTP | Opis | |
|---|---|---|
400 | ERROR_AUTHORIZATION_CODE / AUTH_CODE_EXPIRED | Kod autoryzacyjny wygasł. |
400 | ERROR_AUTHORIZATION_CODE / AUTH_CODE_LIMIT_EXCEEDED | 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 został 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 jest wymagany do autoryzacji. |
400 | ERROR_VALUE_INVALID / INVALID_BLIK_CODE | Niepoprawny składniowo kod autoryzacyjny BLIK. Kod musi 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 jest wymagane dla merchantów zarządzających własnymi tokenami. |
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 nieobsługiwanego kodu kraju. |
400 | ERROR_VALUE_INVALID / INVALID_BLIK_RECURRING_TYPE | Błąd walidacji pola type w sekcji recurring. Użyto nieobsługiwanego typu. |
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ż wartość 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 ani wcześniejsza niż wartość initializationDate. Jeśli została podana, nie może być późniejsza niż 10 lat od teraz. |
400 | ERROR_TOKEN / AUTH_TOKEN_EXISTS | Nie udało się zarejestrować tokena, ponieważ już istnieje. |
400 | BUSINESS_ERROR / RECURRING_TOKEN_PAYMENT_NOT_ALLOWED | PayU nie udostępniło Ci usługi płatności cyklicznych. |
400 | ERROR_TOKEN / AUTH_TOKEN_TYPE_NOT_SUPPORTED_BY_ISSUER | Nie można zarejestrować tokena, ponieważ wybrany bank nie obsługuje płatności cyklicznych. |
Płatność cykliczna BLIK z tokenem PAYID
Aby utworzyć kolejną płatność cykliczną BLIK, rozszerz standardowe zamówienie o sekcję payMethods z tokenem PAYID i obiektem blikData. W blikData umieść identyfikator aplikacji bankowej appKey i obiekt recurring określający typ żądania.
Jeśli w odpowiedzi na żądanie pobrania dostępnych metod płatności nie otrzymasz pola bankApplicationReferences dla tokena BLIK (type="PAYID"), podczas tworzenia płatności z tym tokenem nie przesyłaj pola appKey.
Przesyłaj pole appKey tylko wtedy, gdy w odpowiedzi dla tokena 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 utworzenia płatności.
{
...
"payMethods": {
"payMethod": {
"type": "BLIK_TOKEN",
"value": "<wartość tokena PAYID, który zostanie użyty do autoryzacji>",
"blikData": {
"appKey": "<id danego przypisania aplikacji bankowej>",
"recommendedAuthLevel": "NO_CONFIRMATION",
"recurring": {
"type": "O"
}
}
}
}
}
Szczegóły parametrów znajdziesz w sekcji Create an Order w naszej referencji API.
Ustawiając parametr recommendedAuthLevel na NO_CONFIRMATION, merchant potwierdza, że przejmuje odpowiedzialność za ewentualne oszustwa.
| Status HTTP | 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 nieobsługiwanego kodu kraju. |
400 | ERROR_VALUE_MISSING / MISSING_APPKEY | Błąd walidacji. Brakuje pola appKey w sekcji blikData. |
400 | ERROR_VALUE_INVALID / INVALID_ALIAS_LABEL_PROPOSAL_USAGE | Pole aliasLabelProposal nie może być użyte podczas płatności tokenem, jeśli tokenami zarządza PayU. |
400 | ERROR_VALUE_MISSING / MISSING_ALIAS_LABEL_PROPOSAL | Pole aliasLabelProposal jest wymagane podczas płatności tokenem PAYID, jeśli tokenami zarządza merchant. |
400 | ERROR_VALUE_INVALID / INVALID_REGISTER_TOKEN_VALUE_USAGE | Pole registerTokenValue nie może być użyte podczas płatności tokenem PAYID. |
400 | ERROR_VALUE_MISSING / MISSING_AUTHORIZATION_CODE_OR_TOKEN | Błąd walidacji. Dane autoryzacyjne są wymagane – brakuje tokena. |
400 | ERROR_VALUE_INVALID / AMBIGUOUS_AUTHORIZATION_USAGE | Podano dwie metody autoryzacji. Aby zapłacić tokenem, wypełnij wyłącznie pole value, umieszczając w nim 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 nieobsługiwanej 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 | Wartość totalAmount nie może przekraczać progu ustalonego dla transakcji inicjowanych przez merchanta. |
400 | BUSINESS_ERROR / RECURRING_TOKEN_PAYMENT_NOT_ALLOWED | PayU nie udostępniło Ci usługi płatności cyklicznych. |
400 | ERROR_VALUE_INVALID / INITIALIZATION_DATE_NOT_MET | Błąd walidacji pola initializationDate w sekcji recurring. Próba wykonania transakcji przed zdefiniowaną datą. |
400 | ERROR_VALUE_INVALID / EXPIRATION_DATE_NOT_MET | Błąd walidacji pola expirationDate w sekcji recurring. Próba wykonania transakcji po zdefiniowanej dacie. |
400 | ERROR_VALUE_INVALID / NO_CONFIRMATION_AUTH_LEVEL_REQUIRED | Błąd walidacji pola recommendedAuthLevel w sekcji blikData. Pole musi mieć wartość NO_CONFIRMATION. |