OK
Planet Pay Merchant API (2.1.15)
Poniższa dokumentacja techniczna (Merchant API) umożliwia wdrożenie wszystkich dostępnych metod płatności oraz funkcjonalności oferowanych przez bramkę płatniczą Planet Pay.
Słownik pojęć:
Secret - poufny klucz przyznawany Merchantowi przez Planet Pay
Merchant - właściciel punktu sprzedaży zarejestrowany w systemie operatora płatności
Agent - podmiot pośredniczący w transakcji (np. operator aplikacji mobilnej)
Klient - klient końcowy (wykonujący i opłacający zamówienie)
MID - merchant identification number - numer merchanta/agenta nadawany przez operatora płatności
SCA - silne uwierzytelnienie klienta; środek wprowadzony przez dyrektywę PSD2 w celu zwiększenia bezpieczeństwa płatności internetowych
Statusy Płatności:
Flow statusów płatności przedstawia się nastepująco NEW - PENDING - COMPLETED/REJECTED - CANCELLED/ERROR/SETTLED
Wywołanie metody payment powoduje zarejestrowanie w systemie płatności ze statusem NEW.
Płatność utrzymuje się w statusie NEW do momentu określenia metody płatności i instrumentu płatniczego.
Płatność zmienia status na PENDING w momencie rozpoczęcia procesowania transakcji (np. inicjalizacja 3DS w przypadku płatności kartą lub komunikacja z systemami PSP w przypadku transakcji BLIK).
Płatność, która zakończyła się powodzeniem, otrzymuje status COMPLETED.
Płatność po rozliczeniu ostatecznie otrzymuje status SETTLED.
Płatność w statusie NEW i PENDING może zostać anulowana. Płatność otrzymuje wtedy status CANCELLED.
Dopuszczalne jest anulowanie płatności w statusie COMPLETED w przypadku braku możliwości zrealizowania zlecenia przez merchanta.
Anulowanie płatności w statusie COMPLETED nie jest możliwe, jeżeli istnieje choć jedno dopełnienie (capture) lub wykonany został zwrot (refund).
Błąd systemowy może spowodować oznaczenie transakcji statusem ERROR.
Notyfikacje
Notyfikacje dotyczące płatności powinny być przyjmowane na dedykowany endpoint /payment niezależnie od typu płatności.
API wspólne dla wszystkich metod płatności. Poszczególne metody i kanały płatności mogą się różnić zakresem pól obowiązkowych. Operator płatności nadaje każdemu zleceniu płatności unikatowy numer paymentId, który może zostać wykorzystany przez merchanta np. do pobrania aktualnego statusu płatności. Status płatności może być również wysłany do merchanta kanałem notyfikacji (powiadomienia asynchroniczne). Wszystkie wywołania API wymagają podania tokenu autoryzacyjnego w nagłówku żądania.
Dostępna jest tokenizacja kart klienta w oparciu o wewnętrzne mechanizmy bramki ecommmerce (COF) lub tokenizacja w oparciu o usługi organizacji płatniczej Visa VTS/Mastercard SCOF (NETWORK). Proces może być kilkuetapowy, w związku z czym cały flow tokenizacji spina identyfikator o nazwie tokenizerId. Do operacji na tokenie (usunięcie/modyfikacja) należy wykorzystywać identyfikator tokenu (nie tokenizacji).
Request
Metoda pozwala uzupełnić dane instrumentu płatniczego, jeżeli nie zostaly podane wczesniej. Dozwolone jest przesłanie sekcji instrument i device.
- application/jose
- application/jose;charset=UTF-8
- application/json;charset=UTF-8
- application/json
Typ instrumentu płatniczego
Nr instrumentu płatniczego (np. tokenu lub karty) (wymagany dla type = CARD/COF)
Identyfikator instrumentu płatnicznego w zewnętrznym systemie (wymagany dla type = SCOF/VTS)
Dane tokenu zwracane przez API APAY/GPAY (base64 encoded) (wymagany dla type = APAY/GPAY)
Alias użytkownika BLIK dla płatności OneClick lub cyklicznych (wymagany dla type = BLIK_UID/BLIK_PAYID)
Identyfikator pośrednika płatności (może być wybrany automatycznie na podstawie konfiguracji merchanta)
Identyfikator banku (w systemie operatora PBL) (wymagany dla type = PBL)
- Sandboxhttps://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer/{tokenizerId}/instrument
- Produkcjahttps://api.planetpay.pl/v1/ecommerce/tokenizer/{tokenizerId}/instrument
- cURL
- Python
- JS
- application/jose
- application/jose;charset=UTF-8
- application/json;charset=UTF-8
- application/json
curl -i -X PUT \
'https://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer/{tokenizerId}/instrument' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/jose' \
-d '[object Object]'Request
Tą metodę można wykorzystać gdy wymagane jest dosłanie pojedynczego atrybutu instrumentu (np. kod CVV)
- application/json;charset=UTF-8
- application/json
- Sandboxhttps://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer/{tokenizerId}/instrument
- Produkcjahttps://api.planetpay.pl/v1/ecommerce/tokenizer/{tokenizerId}/instrument
- cURL
- Python
- JS
- application/json;charset=UTF-8
- application/json
curl -i -X PATCH \
'https://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer/{tokenizerId}/instrument' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json;charset=UTF-8' \
-d '{
"cvv": "string",
"code": "string",
"app": "string"
}'Request
Dostępna jest tokenizacja kart klienta w oparciu o wewnętrzne mechanizmy bramki ecommmerce (COF) lub tokenizacja w oparciu o usługi organizacji płatniczej Visa VTS/Mastercard SCOF (NETWORK). Proces może być kilkuetapowy, w związku z czym cały flow tokenizacji spina identyfikator o nazwie tokenizerId.
- application/jose
- application/jose;charset=UTF-8
- application/json;charset=UTF-8
- application/json
Dane urządzenia z którego wykonywana jest operacja (przeglądarka www lub urządzenie mobilne) (wymagane dla channel = PAYWALL/WEBAPI)
Typ tokenizacji (COF/NETWORK lub DEFAULT jeżeli system sam ma podjać decyzje na podstawie parametryzacji merchanta)
- Sandboxhttps://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer
- Produkcjahttps://api.planetpay.pl/v1/ecommerce/tokenizer
- cURL
- Python
- JS
- application/jose
- application/jose;charset=UTF-8
- application/json;charset=UTF-8
- application/json
curl -i -X POST \
https://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/jose' \
-d '[object Object]'- application/jose;charset=UTF-8
- application/json;charset=UTF-8
No response exampleRequest
Usunięcie tokenu z systemu operatora płatności. Wariant z wykorzystaniem identyfikatora procesu tokenizacji
- application/json;charset=UTF-8
- application/json
- Sandboxhttps://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer/{tokenizerId}/discard
- Produkcjahttps://api.planetpay.pl/v1/ecommerce/tokenizer/{tokenizerId}/discard
- cURL
- Python
- JS
- application/json;charset=UTF-8
- application/json
curl -i -X POST \
'https://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer/{tokenizerId}/discard' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json;charset=UTF-8' \
-d '{
"reason": "FRAUD"
}'- Sandboxhttps://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer/{tokenizerId}/cancel
- Produkcjahttps://api.planetpay.pl/v1/ecommerce/tokenizer/{tokenizerId}/cancel
- cURL
- Python
- JS
curl -i -X POST \
'https://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer/{tokenizerId}/cancel' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'- Sandboxhttps://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer/search
- Produkcjahttps://api.planetpay.pl/v1/ecommerce/tokenizer/search
- cURL
- Python
- JS
- application/json;charset=UTF-8
- application/json
curl -i -X POST \
https://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer/search \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json;charset=UTF-8' \
-d '{
"method": "COF",
"type": "COF",
"instrumentNo": "string",
"instrumentRef": "string"
}'Request
Usunięcie tokenu z systemu operatora płatności. Wariant wykorzystujący numer tokenu kartowego.
- application/json;charset=UTF-8
- application/json
Identyfikator tokenu w zewnetrznym systemie (wymagany dla method = SCOF/VTS)
- Sandboxhttps://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer/discard
- Produkcjahttps://api.planetpay.pl/v1/ecommerce/tokenizer/discard
- cURL
- Python
- JS
- application/json;charset=UTF-8
- application/json
curl -i -X POST \
https://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer/discard \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json;charset=UTF-8' \
-d '{
"method": "COF",
"type": "COF",
"instrumentNo": "string",
"instrumentRef": "string",
"reason": "FRAUD"
}'Request
Tokeny z wewnętrznej tokenizacji COF można zmigrować na tokeny NETWORK. Metoda nie usuwa danych oryginalnego tokenu.
- application/json;charset=UTF-8
- application/json
Szczegółowe dane requestu
Typ instrumentu płatniczego
Nr instrumentu płatniczego (np. tokenu lub karty) (wymagany dla type = CARD/COF)
Identyfikator instrumentu płatnicznego w zewnętrznym systemie (wymagany dla type = SCOF/VTS)
Dane tokenu zwracane przez API APAY/GPAY (base64 encoded) (wymagany dla type = APAY/GPAY)
Data ważności (Format: YYYYMM) (wymagany dla type = CARD)
Jednorazowy kod płatności BLIK (wymagany dla type = BLIK_CODE)
Alias użytkownika BLIK dla płatności OneClick lub cyklicznych (wymagany dla type = BLIK_UID/BLIK_PAYID)
Identyfikator konta mobilnego BLIK (w przypadku niejednoznaczności aliasu)
Identyfikator pośrednika płatności (może być wybrany automatycznie na podstawie konfiguracji merchanta)
Identyfikator banku (w systemie operatora PBL) (wymagany dla type = PBL)
- Sandboxhttps://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer/convert
- Produkcjahttps://api.planetpay.pl/v1/ecommerce/tokenizer/convert
- cURL
- Python
- JS
- application/json;charset=UTF-8
- application/json
curl -i -X POST \
https://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer/convert \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json;charset=UTF-8' \
-d '{
"method": "NETWORK",
"instrument": {
"type": "COF",
"instrumentNo": "string",
"encInstrumentNo": "string",
"instrumentRef": "string",
"token": "string",
"expDate": "202101",
"encExpDate": "string",
"cvv": "string",
"encCvv": "string",
"code": "string",
"alias": "string",
"app": "string",
"provider": "BM",
"bank": "string",
"bankId": 0,
"payload": "string",
"cardMask": "string"
}
}'Request
Dodatkowy krok dla flow mobilnego do określenia organizacji płatniczej i używanej wersji protokołu. Wersja protokołu uStałana jest jako najwyższa możliwa z zakresów obsługiwanych przez komponenty: SDK, ACS, 3DS i DS.
- application/json;charset=UTF-8
- application/json
Szczegółowe dane requestu
Typ instrumentu płatniczego
Nr instrumentu płatniczego (np. tokenu lub karty) (wymagany dla type = CARD/COF)
Identyfikator instrumentu płatnicznego w zewnętrznym systemie (wymagany dla type = SCOF/VTS)
Dane tokenu zwracane przez API APAY/GPAY (base64 encoded) (wymagany dla type = APAY/GPAY)
Data ważności (Format: YYYYMM) (wymagany dla type = CARD)
Jednorazowy kod płatności BLIK (wymagany dla type = BLIK_CODE)
Alias użytkownika BLIK dla płatności OneClick lub cyklicznych (wymagany dla type = BLIK_UID/BLIK_PAYID)
Identyfikator konta mobilnego BLIK (w przypadku niejednoznaczności aliasu)
Identyfikator pośrednika płatności (może być wybrany automatycznie na podstawie konfiguracji merchanta)
Identyfikator banku (w systemie operatora PBL) (wymagany dla type = PBL)
- Sandboxhttps://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer/binInfo
- Produkcjahttps://api.planetpay.pl/v1/ecommerce/tokenizer/binInfo
- cURL
- Python
- JS
- application/json;charset=UTF-8
- application/json
curl -i -X POST \
https://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer/binInfo \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json;charset=UTF-8' \
-d '{
"channel": "PAYWALL",
"sdkStartProtocol": "string",
"sdkEndProtocol": "string",
"instrument": {
"type": "COF",
"instrumentNo": "string",
"encInstrumentNo": "string",
"instrumentRef": "string",
"token": "string",
"expDate": "202101",
"encExpDate": "string",
"cvv": "string",
"encCvv": "string",
"code": "string",
"alias": "string",
"app": "string",
"provider": "BM",
"bank": "string",
"bankId": 0,
"payload": "string",
"cardMask": "string"
}
}'- Sandboxhttps://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer/{tokenizerId}
- Produkcjahttps://api.planetpay.pl/v1/ecommerce/tokenizer/{tokenizerId}
- cURL
- Python
- JS
curl -i -X GET \
'https://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer/{tokenizerId}' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'Request
Podobna metoda wykorzystywana jest przez paywall API, ale pozwala rownież na przesłanie danych urządzenia z którego klient realizuje płatność. Dozwolone jest przesłanie sekcji instrument i device.
- application/jose
- application/jose;charset=UTF-8
- application/json;charset=UTF-8
- application/json
Dane urządzenia z którego wykonywana jest operacja (przeglądarka www lub urządzenie mobilne) (wymagane dla channel = PAYWALL/WEBAPI)
- Sandboxhttps://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer/{tokenizerId}
- Produkcjahttps://api.planetpay.pl/v1/ecommerce/tokenizer/{tokenizerId}
- cURL
- Python
- JS
- application/jose
- application/jose;charset=UTF-8
- application/json;charset=UTF-8
- application/json
curl -i -X PATCH \
'https://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer/{tokenizerId}' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/jose' \
-d '[object Object]'- Sandboxhttps://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer/{tokenizerId}/status
- Produkcjahttps://api.planetpay.pl/v1/ecommerce/tokenizer/{tokenizerId}/status
- cURL
- Python
- JS
curl -i -X GET \
'https://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer/{tokenizerId}/status' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'- Sandboxhttps://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer/vts/{instrumentRef}/cardVisual/{visualId}
- Produkcjahttps://api.planetpay.pl/v1/ecommerce/tokenizer/vts/{instrumentRef}/cardVisual/{visualId}
- cURL
- Python
- JS
curl -i -X GET \
'https://api.sandbox.planetpay.pl/v1/ecommerce/tokenizer/vts/{instrumentRef}/cardVisual/{visualId}' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'System wysyła do merchanta notyfikacje w reakcji na określone zdarzenia systemowe. Notyfikacje wysyłane są jeżeli w parametryzacji merchanta podany został URL API implementującego poniższą specyfikację. System generuje żądania metodą POST. Oczekujemy, że odbiorca zwróci kod HTTP 200 po przyjęciu komunikatu. Wysyłka notyfikacji jest ponawiana w przypadku błędów sieciowych (HTTP 50X). Notyfikacje nie będą ponawiane w przypadku, gdy system nie przyjął komunikatu (HTTP 40X). Notyfikacje zawierają cyfrowy podpis, który wysyłany jest w nagłówku Signature jako wartość hex. Podpis wyliczany jest algorytmem HMAC-SHA256 z wartości wszystkich pól komunikatu (konkatenacja). Do wyliczenia podpisu obowiązuje kolejność pól prezentowana w niniejszej specyfikacji. Tajny klucz dla algorytmu ustawiany jest w parametryzacji merchanta.