Wstęp
Dokumentacja zawiera opis procesów biznesowych oraz metod REST API udostępnianych przez Cinkciarz Pay. API pozwala w łatwy i bezpieczny sposób zautomatyzować proces zakładania płatności i zwrotów przez system Partnera.
API może być wykorzystane do:
- założenia i pobrania transakcji płatności;
- założenia i pobrania transakcji zwrotu;
- zarządzania kluczami publicznymi Partnera;
- pobrania kluczy publicznych Cinkciarz Pay.
API dotyczy obsługi płatności w modelach:
- Z przekierowaniem na bramkę płatniczą Cinkciarz Pay – oznacza to, że Użytkownik po wybraniu w serwisie Merchanta płatności online z Cinkciarz Pay zostaje przekierowany do Cinkciarz Pay, żeby kontynuować płatność. Lista dostępnych z poziomu Cinkciarz Pay metod płatności jest na stronie https://cinkciarz.pl/platnosci/dla-partnerow/cennik.
- Z pominięciem bramki płatniczej Cinkciarz Pay – oznacza to, że Merchant może sam w swojej bramce płatniczej udostępnić metodę płatności bez przekierowania do Cinkciarz Pay. Użytkownik płacąc, zostaje na stronie sklepu internetowego bez przechodzenia do innego serwisu. Aktualnie dostępna metoda dla tego modelu płatności, to BLIK (BLIK Level 0).
Procesy biznesowe realizacji płatności i zwrotu zostały opisane w sekcjach:
Jak zacząć?
W pierwszym etapie należy dokonać rejestracji konta Partnera i utworzyć struktury sklepu. Poniżej zostały opisane kroki które są niezbędne, aby rozpocząć korzystanie z Cinkciarz Pay API.
Utworzenie sklepu
- Należy założyć konto firmowe na stronie cinkciarz.pl oraz uzupełnić swoje dane.
- W kolejnym kroku należy przejść do Panelu sprzedawcy i
dodać sklep oraz punkt płatności. Należy zwrócić szczególną uwagę na konfigurację adresów URL punktu płatności:
- Adres powiadomienia o utworzeniu płatności - na ten adres będą wysyłane powiadomienia o statusie płatności. Są one szerzej opisane w rozdziale powiadomienia płatności.
- Adres powiadomienia o utworzeniu zwrotu - na ten adres będą wysyłane powiadomienia o statusie zwrotu. Są one szerzej opisane w rozdziale powiadomienia zwrotu.
- Adres strony dla płatności udanej - na ten adres zostanie przekierowany klient po pomyślnym zatwierdzeniu płatności w Cinkciarz Pay. Przekierowanie jest szerzej opisane w rozdziale parametry przekierowania.
- Adres strony dla płatności nieudanej - na ten adres zostanie przekierowany klient po nieudanym zatwierdzeniu płatności w Cinkciarz Pay. Przekierowanie jest szerzej opisane w rozdziale parametry przekierowania.
- Po utworzeniu struktury sklepu należy dodać własny klucz publiczny w formacie PEM. Opis generacji klucza został szerzej opisany w sekcji generowanie klucza publicznego. Więcej informacji na temat bezpieczeństwa komunikacji zostało zamieszczonych w sekcji komunikacja z Cinkciarz Pay.
- Ostatnim krokiem jest wygenerowanie danych dostępowych do Cinkciarz Pay API. Czynność tą można wykonać na stronie konfiguracji.
Po realizacji powyższych kroków Partner powinien znajdować się w posiadaniu poniższych danych niezbędnych do komunikacji z Cinkciarz Pay API:
- Identyfikator punktu płatności (np. POS1234567898765432).
- Identyfikator klienta API (API Client ID) oraz hasło klienta API (API Client Secret) niezbędne do pozyskania tokena dostępowego do Cinkciarz Pay API.
- Identyfikator własnego klucza publicznego (kid) dodanego do systemu Cinkciarz Pay.
- Adresy hostów Cinkciarz Pay, które w dokumentacji są opisane jako CINKCIARZ_OIDC_HOST oraz CINKCIARZ_PAY_HOST. Są one dostępne na stronie konfiguracji.
Utworzenie dyspozycji płatności
W celu utworzenia dyspozycji płatności należy wykonać poniższe kroki:
- Należy pobrać token dostępowy przy pomocy zasobu POST /connect/token. Token ten należy umieszczać w nagłówku Authorization przy komunikacji z zasobami Cinkciarz Pay API.
- Własnym kluczem prywatnym należy podpisać zawartość żądania utworzenia płatności (przykład żądania znajduje się w rozdziale Utworzenie płatności). Istotne jest, aby wynikowy JWS, który zostanie przesłany do Cinkciarz Pay API posiadał w częsci header identyfikator klucza publicznego (kid), który system Cinkciarz Pay wykorzysta do weryfikacji żądania Partnera.
- Należy wykonać żądanie utworzenia płatności na zasób POST /payments umieszczając w zawartości JWS. Wymagane jest również ustawienie nagłówka żądania zgodnie z informacjami zamieszczonymi w rozdziale Komunikacja z Cinkciarz Pay.
- Otrzymaną odpowiedź należy zdekodować oraz zweryfikować zgodnie z informacjami zamieszczonymi w rozdziale Komunikacja z Partnerem.
- W zdekodowanej odpowiedzi znajduje się adres na jaki należy przekierować klienta w celu zatwierdzenia przez niego płatności. Pozostała część procesu została opisana w rozdziale Proces płatności.
Uwierzytelnienie
W celu skorzystania z Cinkciarz Pay niezbędne jest wykonanie uwierzytelnienia. Każde wywołanie API udostępnianego przez Cinkciarz Pay wymaga przesłania nagłówka Authorization, który zawiera token dostępowy tzw. OAuth 2.0 access token. W celu pobrania tokena należy skorzystać z zasobu POST /connect/token. Uwierzytelnienie realizowane jest z wykorzystaniem HTTP Basic Authentication, gdzie jako nazwę Użytkownika należy podać api_client_id, a jako hasło api_client_secret. W zawartości żądania należy podać parametr grant_type ustawiony na client_credentials oraz parametr scope z wartością pay_api.
Pobranie tokena dostępowego
curl -X POST \
-H "Accept: application/json" \
-H "Content-Type: application/x-www-form-urlencoded" \
-u "<api_client_id>:<api_client_secret>" \
-d "grant_type=client_credentials&scope=pay_api" \
"<CINKCIARZ_OIDC_HOST>/connect/token"
Odpowiedź:
{
"access_token": "M1ODU2ZDI5NzU3ZWFkYTRjMjEyMTIwNmRiNmQ2MjdmM",
"expires_in": 900,
"token_type": "Bearer"
}
Umożliwia pobranie tokena dostępowego do Cinkciarz Pay.
Zasób
POST <CINKCIARZ_OIDC_HOST>/connect/token
Zobacz adresy serwerów
Nagłówki
Nazwa | Wartość | Uwagi |
---|---|---|
Authorization | api_client_id:api_client_secret | HTTP Basic Authentication. |
Content-Type | application/x-www-form-urlencoded |
Zawartość
Parametry zgodne z trybem client_credentials:
Nazwa | Wartość |
---|---|
grant_type | client_credentials |
scope | pay_api |
Odpowiedź
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
access_token | String | TAK | Token, który należy podać przy korzystaniu z API udostępnianego przez Cinkciarz Pay. |
expires_in | String | TAK | Czas ważności tokena w sekundach. |
token_type | String | TAK | Typ tokena. |
Płatności
Utworzenie płatności
curl -X POST \
-H "Authorization: Bearer M1ODU2ZDI5NzU3ZWFkYTRjMjEyMTIwNmRiNmQ2MjdmM" \
-H "Content-Type: application/json" \
-H "Accept-Language: en,pl;q=0.9,pl-PL;q=0.8" \
-H "User-Accept-Language: en,pl;q=0.9,pl-PL;q=0.8" \
-d "@data.json" \
"<CINKCIARZ_PAY_HOST>/payments"
data.json
{
"externalPaymentId": "342HHH88LKDJ89876767",
"pointOfSaleId": "POS4589631365489654",
"category": "E_COMMERCE",
"totalAmount": {
"currency": "PLN",
"value": 19.99
},
"description": "Payment description."
}
curl -X POST \
-H "Authorization: Bearer M1ODU2ZDI5NzU3ZWFkYTRjMjEyMTIwNmRiNmQ2MjdmM" \
-H "Content-Type: application/jose+json" \
-H "Accept-Language: en,pl;q=0.9,pl-PL;q=0.8" \
-H "User-Accept-Language: en,pl;q=0.9,pl-PL;q=0.8" \
-d "@data.jws" \
"<CINKCIARZ_PAY_HOST>/payments"
data.jws
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJleHRlcm5hbFBheW1lbnRJZCI6IjM0MkhISDg4TEtESjg5ODc2NzY3IiwicG9pbnRPZlNhbGVJZCI6IlBPUzQ1ODk2MzEzNjU0ODk2NTQiLCJjYXRlZ29yeSI6IkVfQ09NTUVSQ0UiLCJ0b3RhbEFtb3VudCI6eyJjdXJyZW5jeSI6IlBMTiIsInZhbHVlIjoxOS45OX0sImRlc2NyaXB0aW9uIjoiUGF5bWVudCBkZXNjcmlwdGlvbi4ifQ.FH8Ex3JCeCwud4fC_CifILcbrO6EYmjMoh1Q8ERLzfL_-T3Ieeepo4a6r8O7trpvcQKMZ6Pj9jt1SyZ7MzDFXuHXlmSl1FVwR3yqKQDZesxgmAo6ujmdNwJ0muEgUVXw9EAsbc9RKE6fFNCcMekmmkXem8-hFHueJoXZIWNOIVwBHgrMefkOSVQNHz_QD6pWrt5vhJVt1aSLnSBE1sm1Ks-ocoISPwR6MtiyXwiyCisvnTfEXvewDAFmm9b3X7YTXLtBWdKqTs8AnuiLqTx_-DwcNYX4ZPNEgTvZ7BQe_DbcTmdzfewQLVJ4Wg5REyTLUNtyxSxfZVQT_5ZTYtwQWA
Nagłówki odpowiedzi:
HTTP/1.1 201 Created
Content-Type: application/json
HTTP/1.1 201 Created
Content-Type: application/jose+json
Odpowiedź:
{
"paymentId": "PAY715037422182587",
"approveUrl": "https://<CINKCIARZ_APPROVAL_HOST>/approve",
"token": "dGBcEMQoyff6OCQY5l1rehXAwgCDnEwhtp573P1EJyswGBJ79G"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJwYXltZW50SWQiOiJQQVk3MTUwMzc0MjIxODI1ODciLCJhcHByb3ZlVXJsIjoiaHR0cHM6Ly88Q0lOS0NJQVJaX0FQUFJPVkFMX0hPU1Q-L2FwcHJvdmUiLCJ0b2tlbiI6ImRHQmNFTVFveWZmNk9DUVk1bDFyZWhYQXdnQ0RuRXdodHA1NzNQMUVKeXN3R0JKNzlHIn0.CRTGAMRkd2kHey33ID65n0hrv_0L1NSv628HtKw7dMp8W5Lou1OsJyUkDYa3VfeHUf0V6j2YLJmOt8bU09I_8zpwQH1-5-JIFnmLkByqp_a0RDKnmslFwD9K4p__OE9QqpLta-u7u5h8v5zK0esQ0w2-9wcKzVfwUrhl8ZiTNxP3BZL5ZDAUoECK9MWmT_aYchc2RuuNcdXiGEh-t-ELM_MwxlRYI-ab1froAEFHkaxxZTbzAmJsbPcWBtTR-whWOLKVZV5eLTIV1Z-8-ZD7q-pCHqalbkN5H8czrBuXySb92pDf58iRUsm4lgXY17PmO51fwhlfQ-UtKpQBDWmtFQ
Umożliwia utworzenie transakcji płatności.
Zasób
POST <CINKCIARZ_PAY_HOST>/payments
Zobacz adresy serwerów
Nagłówki
Nazwa | Wartość | Wymagalność | Uwagi |
---|---|---|---|
Authorization | Bearer <access_token> |
TAK | Musi zawierać token dostępowy typu Bearer. Więcej informacji w Pobranie tokena dostępowego. |
Content-Type | application/json lub dla podpisanego żądania application/jose+json |
TAK | |
Accept-Language |
<language> | NIE | Nagłówek ustawiający jedną z dwóch domen interfejsu płatniczego. Dla pl jest to <CINKCIARZ_PAY_WEB_HOST> , a dla pozostałych języków (lub braku ustawienia nagłówka) <CONOTOXIA_PAY_WEB_HOST> . Musi być zgodny ze specyfikacją RFC 7231. |
User-Accept-Language |
<language> | NIE | Nagłówek ustawiający język dla powiadomień e-mail. Musi być zgodny ze specyfikacją RFC 7231. |
Zawartość
Obiekt PaymentData zawierający dane płatności
Nazwa pola | Typ | Wymagalność | Ograniczenia | Opis |
---|---|---|---|---|
totalAmount | Amount | TAK | Kwota płatności wraz z walutą. | |
notificationUrl | String | NIE | min. 1 znak max. 2048 znaki | Adres URL, na który będą wysyłane powiadomienia o statusie płatności. Jako domyślny wykorzystywany jest adres URL, przekazany przez Partnera w ramach konfiguracji punktu płatności. |
returnUrl | String | NIE | min. 1 znak max. 2048 znaki | Adres URL, na który zostanie wykonane przekierowanie po opłaceniu płatności. Jako domyślny wykorzystywany jest adres URL przekazany przez Partnera w ramach konfiguracji punktu płatności. |
errorUrl | String | NIE | min. 1 znak max. 2048 znaki | Adres URL, na który zostanie wykonane przekierowanie po nieudanej próbie opłacenia płatności. Jako domyślny wykorzystywany jest adres URL przekazany przez Partnera w ramach konfiguracji punktu płatności. |
notificationUrlParameters | Object | NIE | max. 1024 znaki | Dodatkowe parametry, które są wysyłane w powiadomieniach URL informujących o statusie płatności. |
pointOfSaleId | String | TAK | 18 znaków | Identyfikator punktu płatności. |
externalPaymentId | String | TAK | min. 1 znak max. 64 znaki | Identyfikator płatności po stronie Partnera. |
storeCustomer | StoreCustomer | NIE | Dane klienta sklepu, które są używane do skrócenia procesu płatności poprzez automatyczne uzupełnianie danych płatnika. | |
description | String | TAK | min. 1 znak max. 128 znaki | Opis płatności. |
category | String | TAK | min. 1 znak max. 20 znaków | Kategoria płatności. Wartość domyślna E_COMMERCE . |
disablePayLater | Boolean | NIE | Flaga określająca, czy dla płatności ma być włączona funkcjonalność Zapłać później. | |
selectedPaymentMethod | SelectedPaymentMethod | NIE | Pozwala przenieść klienta bezpośrednio na wybraną metodę płatności po przekierowaniu na adres approveUrl . |
|
retryEnabled | Boolean | NIE | Flaga określająca, czy dla płatności ma być włączona funkcjonalność ponawiania płatności. |
Obiekt Amount zawierający kwotę płatności
Nazwa pola | Typ | Wymagalność | Ograniczenia | Opis |
---|---|---|---|---|
value | Number | TAK | Kwota. Max. 19 znaków ze wsparciem dla 2 miejsc po separatorze dziesiętnym (jako separator dziesiętny używana jest kropka (.). Liczba miejsc po separatorze dziesiętnym zależy od waluty i została podana w Lista wspieranych walut. | |
currency | String | TAK | 3 znaki | Kod waluty zgodny z ISO 4217. Dozwolone kody walut zdefiniowane zostały w Lista wspieranych walut. |
Obiekt StoreCustomer zawierający dane klienta sklepu
Nazwa pola | Typ | Wymagalność | Ograniczenia | Opis |
---|---|---|---|---|
firstName | String | NIE | max. 100 znaków | Imię klienta sklepu. |
lastName | String | NIE | max. 100 znaków | Nazwisko klienta sklepu. |
String | NIE | max. 250 znaków | Adres e-mail klienta sklepu. |
Kategoria płatności
Określa sposób rozliczania z Partnerem.
Wartość | Opis |
---|---|
MWF | Prowizja stała. |
E_COMMERCE | Prowizja procentowa od wartości transakcji (wartość domyślna). |
Wybrana metoda płatności
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
type | String | TAK | Dostępne wartości poniżej. |
issuer | String | NIE | Dostępne wartości poniżej. Pole może być uzupełnione tylko dla metody płatności PAY_BY_LINK . |
Pole type
może przyjmować wartości:
Wartość | Opis |
---|---|
BLIK | Metoda płatności BLIK |
PAY_BY_LINK | W przypadku tej metody płatności należy uzupełnić również pole issuer |
Pole issuer
może przyjmować wartości:
Wartość | Opis |
---|---|
MTRANSFER | Mbank |
ALIOR | Alior Bank |
BNP_PARIBAS | BNP Paribas |
IPKO | PKO BP |
PEKAO24 | Bank Pekao SA |
INTELIGO | Inteligo |
IDEA_BANK | Idea Bank |
SANTANDER | Santander Bank Polska |
GETIN | Getin Bank |
NOBLE | Noble Bank |
CREDIT_AGRICOLE | Credit Agricole |
BANK_NOWY_BFG | Bank Nowy BFG |
MILLENNIUM | Milennium |
CITI_HANDLOWY | Citi Handlowy |
BOS | Bank Ochrony Środowiska |
POCZTOWY24 | Bank Pocztowy |
PLUS_BANK | Plus Bank |
BANK_SPOLDZIELCZY | SGB-Bank |
BANK_SPOLDZIELCZY_W_BRODNICY | Bank Spółdzielczy w Brodnicy |
NEST | Nest Bank |
ENVELO | Envelo Bank |
ING | ING Bank Śląski |
Odpowiedź
Obiekt PaymentInfo zawierający identyfikator utworzonej płatności, adres URL do akceptacji płatności i token płatności.
Nazwa pola | Typ | Wymagalność | Ograniczenia | Opis |
---|---|---|---|---|
paymentId | String | TAK | max. 40 znaków | Identyfikator płatności w systemie Cinkciarz Pay. |
approveUrl | String | TAK | max. 256 znaków | Adres URL, na który Partner przekierowuje klienta w celu akceptacji utworzonej płatności. |
token | String | TAK | max. 50 znaków | Unikalny token do potwierdzenia płatności. |
Błędy API
Metoda POST /payments może zwrócić poniższe błędy biznesowe:
- invalid-jws
- public-key-already-revoked
- point-of-sale-not-found
- store-not-found
- contract-category-not-supported
- payment-method-not-available
- transaction-below-limit
- point-of-sale-forbidden-error-url
- point-of-sale-forbidden-notification-url
- point-of-sale-forbidden-return-url
- point-of-sale-not-active
- currency-unavailable
Lista płatności
curl -X GET \
-H "Authorization: Bearer M1ODU2ZDI5NzU3ZWFkYTRjMjEyMTIwNmRiNmQ2MjdmM" \
"<CINKCIARZ_PAY_HOST>/payments?paymentIds=PAY772237692548117&paymentIds=PAY815576576741391"
Nagłówki odpowiedzi:
HTTP/1.1 200 Success
Content-Type: application/json
HTTP/1.1 200 Success
Content-Type: application/jose+json
Odpowiedź:
{
"data": [
{
"paymentId": "PAY772237692548117",
"externalPaymentId": "128/06/2018",
"status": "PROCESSING",
"amount": {
"value": 153.13,
"currency": "EUR"
},
"description": "Order 000000001",
"partner": {
"commission": {
"fee": {
"value": 1.25,
"currency": "EUR"
}
}
},
"type": "ONLINE_PAYMENT",
"createdDate": "2021-02-17T11:36:15.367Z"
},
{
"paymentId": "PAY815576576741391",
"externalPaymentId": "121/06/2018",
"status": "BOOKED",
"amount": {
"value": 23.52,
"currency": "EUR"
},
"description": "Order 000000002",
"type": "ONLINE_PAYMENT",
"createdDate": "2021-01-11T07:26:33.302Z",
"bookedDate": "2021-01-11T07:29:36.468Z"
}
],
"pagination": {
"first": true,
"last": true,
"currentPageNumber": 1,
"currentPageElementsCount": 2,
"pageSize": 10,
"totalPages": 1,
"totalElements": 2,
"pageLimitExceeded": true
}
}
eyJhbGciOiJSUzI1NiIsImtpZCI6Il8yNzVUd3dYOVhtaVotak1wLTJwNDZ0SUsyZE0tR2xWM3dYTU1GUTM5UUEifQ.ewogICAiZGF0YSI6WwogICAgICB7CiAgICAgICAgICJwYXltZW50SWQiOiJQQVk3NzIyMzc2OTI1NDgxMTciLAogICAgICAgICAiZXh0ZXJuYWxQYXltZW50SWQiOiIxMjgvMDYvMjAxOCIsCiAgICAgICAgICJzdGF0dXMiOiJQUk9DRVNTSU5HIiwKICAgICAgICAgImFtb3VudCI6ewogICAgICAgICAgICAidmFsdWUiOjE1My4xMywKICAgICAgICAgICAgImN1cnJlbmN5IjoiRVVSIgogICAgICAgICB9LAogICAgICAgICAiZGVzY3JpcHRpb24iOiJPcmRlciAwMDAwMDAwMDEiLAogICAgICAgICAicGFydG5lciI6ewogICAgICAgICAgICAiY29tbWlzc2lvbiI6ewogICAgICAgICAgICAgICAiZmVlIjp7CiAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6MS4yNSwKICAgICAgICAgICAgICAgICAgImN1cnJlbmN5IjoiRVVSIgogICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgfSwKICAgICAgICAgInR5cGUiOiJPTkxJTkVfUEFZTUVOVCIsCiAgICAgICAgICJjcmVhdGVkRGF0ZSI6IjIwMjEtMDItMTdUMTE6MzY6MTUuMzY3WiIKICAgICAgfSwKICAgICAgewogICAgICAgICAicGF5bWVudElkIjoiUEFZODE1NTc2NTc2NzQxMzkxIiwKICAgICAgICAgImV4dGVybmFsUGF5bWVudElkIjoiMTIxLzA2LzIwMTgiLAogICAgICAgICAic3RhdHVzIjoiQk9PS0VEIiwKICAgICAgICAgImFtb3VudCI6ewogICAgICAgICAgICAidmFsdWUiOjIzLjUyLAogICAgICAgICAgICAiY3VycmVuY3kiOiJFVVIiCiAgICAgICAgIH0sCiAgICAgICAgICJkZXNjcmlwdGlvbiI6Ik9yZGVyIDAwMDAwMDAwMiIsCiAgICAgICAgICJ0eXBlIjoiT05MSU5FX1BBWU1FTlQiLAogICAgICAgICAiY3JlYXRlZERhdGUiOiIyMDIxLTAxLTExVDA3OjI2OjMzLjMwMloiLAogICAgICAgICAiYm9va2VkRGF0ZSI6IjIwMjEtMDEtMTFUMDc6Mjk6MzYuNDY4WiIKICAgICAgfQogICBdLAogICAicGFnaW5hdGlvbiI6ewogICAgICAiZmlyc3QiOnRydWUsCiAgICAgICJsYXN0Ijp0cnVlLAogICAgICAiY3VycmVudFBhZ2VOdW1iZXIiOjEsCiAgICAgICJjdXJyZW50UGFnZUVsZW1lbnRzQ291bnQiOjIsCiAgICAgICJwYWdlU2l6ZSI6MTAsCiAgICAgICJ0b3RhbFBhZ2VzIjoxLAogICAgICAidG90YWxFbGVtZW50cyI6MiwKICAgICAgInBhZ2VMaW1pdEV4Y2VlZGVkIjp0cnVlCiAgIH0KfQ.EuuDkfr9rv90nlZ0hbjTGa014qw_oB8EDTy1DEwfpgeFuEOK7yeEJztPX07jhT3pwdIB7Dc8c9sbSCgKMCvIjoXReNicw6LyJxQwyTs9tR8BEF-UWoLKxSqUP1h_T4jpPw9YH8GMGa1UZI9nktICNezbz35fAk5UH5RhMtIbvrpxVyz4AgBGv5oxqOOS2tXj1vIjZnJ8Vu46LkLKhUZ7RyHjJxUrf5UjkghwMY4URqkKD7jX7-YENfNy5tnH1kfyvtn1osxRfjDGY1wX4JbFUlVFJdkHed0WhcEIIoqYf4MUZ6yD5XvUu1784V3Gq2VVmvoVZiawAU-nUZtbmskr4w
Listę płatności można wyświetlić w Panelu sprzedawcy w sekcji płatności lub wykorzystać poniższy zasób.
Zasób
GET <CINKCIARZ_PAY_HOST>/payments
Zobacz adresy serwerów
Nagłówki
Nazwa | Wartość | Uwagi |
---|---|---|
Authorization | Bearer <access_token> |
Musi zawierać token dostępowy typu Bearer. Więcej informacji w Pobranie tokena dostępowego. |
Parametry zapytania
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
paymentIds | String | NIE | Identyfikatory płatności (parametr paymentIds musi być powielany w żądaniu np. /payments?paymentIds=PAY772237692548117&paymentIds=PAY815576576741391 ). |
externalPaymentId | String | NIE | Identyfikator zewnętrzny płatności. |
createdDateFrom | String | NIE | Data i czas utworzenia płatności od, zgodna z ISO 8601 format YYYY-MM-ddTHH:mm:ss.fffZ. |
createdDateTo | String | NIE | Data i czas utworzenia płatności do, zgodna z ISO 8601 format YYYY-MM-ddTHH:mm:ss.fffZ. |
bookedDateFrom | String | NIE | Data i czas zaksięgowania płatności od, zgodna z ISO 8601 format YYYY-MM-ddTHH:mm:ss.fffZ. |
bookedDateTo | String | NIE | Data i czas zaksięgowania płatności do, zgodna z ISO 8601 format YYYY-MM-ddTHH:mm:ss.fffZ. |
pageNumber | Number | NIE | Numer strony. |
pageSize | Number | NIE | Liczba elementów na stronie. |
sort | String | NIE | Kryteria sortowania. |
Wartość pola sort dla płatności
Istnieje możliwość sortowania po polach:
- createdDate
- bookedDate
- amount
W celu sortowania malejąco po dacie utworzenia płatności należy podać wartość: paymentDate,DESC
.
Odpowiedź
Obiekt Response zawierający dane płatności
Nazwa pola | Typ | Wymagalność | Ograniczenia | Opis |
---|---|---|---|---|
data | Array | TAK | max. 100 elementów | Lista z elementami typu Payment. |
pagination | Pagination | TAK | Metadane zwróconej strony. |
Obiekt Payment zawierający szczegóły płatności
Nazwa pola | Typ | Wymagalność | Ograniczenia | Opis |
---|---|---|---|---|
paymentId | String | TAK | max. 40 znaków | Identyfikator płatności w systemie Cinkciarz Pay. |
externalPaymentId | String | TAK | max. 64 znaki | Identyfikator płatności w systemie Partnera. |
status | String | TAK | max. 14 znaków | Status płatności. Wartości zgodne z cyklem życia płatności. |
amount | Amount | TAK | Kwota płatności wraz z walutą. | |
description | String | TAK | min. 1 znak max. 128 znaki | Opis płatności. |
partner | Partner | NIE | Dane dotyczące partnera. | |
type | String | TAK | max. 20 znaki | Typ płatności. |
createdDate | String | TAK | max. 128 znaków | Data i czas utworzenia płatności zgodna z ISO 8601 format YYYY-MM-ddTHH:mm:ss.fffZ. |
cancelledDate | String | NIE | max. 128 znaków | Data i czas anulowania płatności zgodna z ISO 8601 format YYYY-MM-ddTHH:mm:ss.fffZ. |
bookedDate | String | NIE | max. 128 znaków | Data i czas zaksięgowania płatności zgodna z ISO 8601 format YYYY-MM-ddTHH:mm:ss.fffZ. |
Pole type
może przyjmować wartości:
Wartość | Opis |
---|---|
ONLINE_PAYMENT | Płatność online |
PAYMENT_LINK_PARTNER | Płatność linkiem |
Obiekt Partner zawierający informację dotyczące partnera
Nazwa pola | Typ | Wymagalność | Ograniczenia | Opis |
---|---|---|---|---|
commission | Commission | NIE | Opłaty poniesione przez Partnera. |
Obiekt Amount zawierający kwotę i walutę płatności
Nazwa pola | Typ | Wymagalność | Ograniczenia | Opis |
---|---|---|---|---|
value | Number | TAK | Kwota. Max. 19 znaków ze wsparciem dla 2 miejsc po separatorze dziesiętnym (jako separator dziesiętny używana jest kropka (.). Liczba miejsc po separatorze dziesiętnym zależy od waluty i została podana w Lista wspieranych walut. | |
currency | String | TAK | 3 znaki | Kod waluty zgodny z ISO 4217. Dozwolone kody walut zdefiniowane zostały w Lista wspieranych walut. |
Obiekt Commission zawierający informację o pobranych prowizjach płatności
Nazwa pola | Typ | Wymagalność | Ograniczenia | Opis |
---|---|---|---|---|
fee | Fee | TAK | Kwota prowizji wraz z walutą. |
Obiekt Fee zawierający wartość prowizji płatności
Nazwa pola | Typ | Wymagalność | Ograniczenia | Opis |
---|---|---|---|---|
value | Number | TAK | Kwota. Max. 19 znaków ze wsparciem dla 2 miejsc po separatorze dziesiętnym (jako separator dziesiętny używana jest kropka (.). Liczba miejsc po separatorze dziesiętnym zależy od waluty i została podana w Lista wspieranych walut. | |
currency | String | TAK | 3 znaki | Kod waluty zgodny z ISO 4217. Dozwolone kody walut zdefiniowane zostały w Lista wspieranych walut. |
Obiekt Pagination zawierający metadane zwróconej strony z danymi płatności
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
first | Boolean | TAK | Określa, czy zwrócone dane znajdują się na pierwszej stronie. |
last | Boolean | TAK | Określa, czy zwrócone dane znajdują się na ostatniej stronie. |
currentPageNumber | Number | TAK | Określa numer zwróconej strony. |
currentPageElementsCount | Number | TAK | Określa liczbę elementów na zwróconej stronie. |
pageSize | Number | TAK | Określa wielkość strony. |
totalPages | Number | TAK | Określa liczbę dostępnych stron. |
totalElements | Number | TAK | Określa liczbę dostępnych elementów. |
pageLimitExceeded | Boolean | TAK | Określa, czy limit stron został osiągnięty. |
Błędy API
Metoda GET /payments może zwrócić jedynie błędy techniczne.
Powiadomienia płatności
Obiekt wysyłany na adres notificationUrl podany przez Partnera:
{
"paymentId": "PAY815576576741391",
"externalPaymentId": "121/06/2018",
"code": "COMPLETED",
"type": "PAYMENT"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJwYXltZW50SWQiOiJQQVk4MTU1NzY1NzY3NDEzOTEiLCJleHRlcm5hbFBheW1lbnRJZCI6IjEyMS8wNi8yMDE4IiwiY29kZSI6IkNPTVBMRVRFRCIsInR5cGUiOiJQQVlNRU5UIn0.OvFeZeef4wWRMV5uLTlYwKXnSKGDbNLXJ1FpHiRHLQ5fxLcNMibMdYX8sXsvBsBWcjOrZOj4GKSBG1HGu9HLpdRJOE0WtL4P6CMV0_blzfXAwI_Pf6EIR0Iv84PmT2RBeUKn12ndLEirSoeap3PGeSo6z1-58mRGStZ9juSLP27MzKWb_l93FgVh5TNH3BWFsmXY2AOE9s1epZidLoGgB-XFuC6rLDA34FuC1Ao3BbLYSoo1DMxd6_TWVCO-jnPsIeofZdfbDkY1rV1SEeqxcQscsy1HHMZB02rehXI-8V4l4K2OhSXLY0Nhq7Qe3_KSWVVXTQCZmoROz6KAAdxTfA
Nagłówki żądania:
Content-Type: application/json
Content-Type: application/jose+json
Po wykonaniu akcji przez klienta na stronie zatwierdzania płatności realizowany jest asynchroniczny proces płatności. W ramach procesu wysyłane są powiadomienia o zmianie statusu płatności na adres notificationUrl podany przez Partnera przy tworzeniu płatności lub przy konfiguracji punktu płatności. Powiadomienia są wysyłane metodą POST oraz mogą być dostarczone do systemu Partnera w losowej kolejności. Wynika to z faktu, iż mogą występować opóźnienia pomiędzy systemem Cinkciarz Pay, a systemem Partnera lub system może być niedostępny w momencie wysyłki powiadomienia. Jeżeli Partner otrzyma jedno z powiadomień kończących proces płatności to nie powinien reagować na inne powiadomienia, które będą dostarczane do jego systemu dla danej płatności.
Poniżej znajduje się opis parametrów komunikatu, który jest wysyłany do Partnera.
Obiekt PaymentStatus
Nazwa pola | Typ | Wymagalność | Ograniczenia | Opis |
---|---|---|---|---|
paymentId | String | TAK | max. 40 znaków | Identyfikator płatności w systemie Cinkciarz Pay. |
externalPaymentId | String | TAK | max. 64 znaki | Identyfikator płatności w systemie Partnera. |
code | String | TAK | max. 14 znaków | Status płatności. |
type | String | TAK | max. 7 znaków | Typ powiadomienia. Dla płatności przymuje zawsze wartość PAYMENT . |
description | String | NIE | max. 512 znaków | Opis statusu płatności. Może być wysłany dla statusu REJECTED. |
completedDate | String | NIE | max. 128 znaki | Data i czas zakończenia płatności zgodna z ISO 8601 format YYYY-MM-ddTHH:mm:ss.fffZ. Wysyłana zawsze dla statusu COMPLETED. |
cancelledDate | String | NIE | max. 128 znaki | Data i czas anulowania płatności zgodna z ISO 8601 format YYYY-MM-ddTHH:mm:ss.fffZ. Wysyłana zawsze dla statusu CANCELLED. |
rejectedDate | String | NIE | max. 128 znaki | Data i czas odrzucenia płatności zgodna z ISO 8601 format YYYY-MM-ddTHH:mm:ss.fffZ. Wysyłana zawsze dla statusu REJECTED. |
paymentMethod | String | NIE | max. 15 znaków | Metoda płatności wybrana przez klienta. Wartość jest zawsze wysyłana dla statusu COMPLETED i może być wysłana dla statusów CANCELLED oraz REJECTED. |
reasonType | String | NIE | max. 32 znaki | Powód anulowania. Wartość jest zawsze wysyłana dla statusu CANCELLED. |
paymentMethodProviderTransactionId | String | NIE | max. 36 znaków | Identyfikator transakcji dostawcy metody płatności. |
additionalParameters | Object | NIE | max. 1024 znaki | Dodatkowe parametry zdefiniowane w żądaniu utworzenia płatności. |
Pole code może przyjąć wartości z tabeli poniżej:
Nazwa statusu | Opis |
---|---|
PROCESSING | Płatność została zatwierdzona przez klienta. |
COMPLETED | Płatność została zakończona pomyślnie. |
BOOKED | Środki zostały zaksięgowane. |
CANCELLED | Płatność została anulowana przez system. |
REJECTED | Płatność została odrzucona przez klienta. |
Pole paymentMethod może przyjąć wartości z tabeli poniżej:
Nazwa metody | Opis |
---|---|
CURRENCY_WALLET | Portfel walutowy |
CREDIT_CARD | Karta płatnicza |
IDEAL | iDEAL |
EPS | EPS |
UNIONPAY | UnionPay |
BLIK | BLIK |
TRUSTLY | Trustly |
PAY_BY_LINK | Przelew online |
GOOGLE_PAY | Google Pay |
PAYPAL | PayPal |
SKRILL_WALLET | Skrill |
APPLE_PAY | Apple Pay |
RAPID_TRANSFER | Rapid Transfer |
VIPPS | Vipps |
Pole reasonType może przyjąć wartości z tabeli poniżej:
Nazwa powodu anulowania | Opis |
---|---|
TOKEN_EXPIRED | Czas na opłacenie transakcji płatności minął |
PAY_LATER_EXPIRED | Wygasł czas na opłacenie transakcji odroczonej |
NOT_AVAILABLE | Transakcja płatnicza jest niedozwolona |
PROCESS_EXPIRED | Transakcja płatności wygasła |
AUTHENTICATION_FAILED_3_DS | Uwierzytelnianie 3D Secure nie zostało wykonane lub nie zostało pomyślnie wykonane |
BLOCKED_CARD | Karta użyta do transakcji jest zablokowana |
EXPIRED_CARD | Ważność karty użytej do transakcji wygasła |
INVALID_CARD_NUMBER | Podany numer karty jest nieprawidłowy |
CVC_DECLINED | Podany kod bezpieczeństwa karty jest nieprawidłowy |
NOT_ENOUGH_BALANCE | Karta nie ma wystarczających środków na pokrycie należnej kwoty |
WITHDRAWAL_COUNT_EXCEEDED | Przekroczono liczbę wypłat dozwolonych dla karty |
WITHDRAWAL_AMOUNT_EXCEEDED | Kwota wypłaty dozwolona dla karty została przekroczona |
TRANSACTION_NOT_PERMITTED | Transakcja płatnicza jest niedozwolona |
CVC_LENGTH_INVALID | Nieprawidłowa długość kodu CVC |
EXPIRY_DATE_INVALID | Nieprawidłowa data ważności karty |
INVALID_CVC | Nieprawidłowy kod CVC |
NOT_SUPPORTED | Bank nie obsługuje lub nie zezwala na tego typu transakcje |
RESTRICTED_CARD | Karta zablokowana |
UNSUPPORTED_CURRENCY_SPECIFIED | Podana waluta nie jest obsługiwana |
OTHER | Płatność anulowana |
Parametry przekierowania
Zdekodowany parametr data:
{
"paymentId": "PAY893669703633781",
"externalPaymentId": "464/46846/45",
"result": "SUCCESS"
}
Po wykonaniu akcji przez klienta na stronie zatwierdzania płatności realizowane jest przekierowanie na stronę Partnera. Jeżeli klient wykonał pomyślnie akcję, to zostanie przekierowany na adres returnUrl podany przy tworzeniu płatności lub domyślnie skonfigurowany w punkcie płatności. W przypadku, gdy wystąpią problemy techniczne, klient jest przekierowany na adres errorUrl (jest tak samo konfigurowalny, jak adres returnUrl).
Do adresu returnUrl podanego przez Partnera system Cinkciarz Pay dołącza informację o statusie płatności w parametrze data:
https://shop.com/success?data=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJwYXltZW50SWQiOiJQQVk4OTM2Njk3MDM2MzM3ODEiLCJleHRlcm5hbFBheW1lbnRJZCI6IjQ2NC80Njg0Ni80NSIsInJlc3VsdCI6IlNVQ0NFU1MifQ.S83VbMBroVHrAVfXs-tk_Q3BdulpAj3lni0vdegxZ7zCQHhJuIU_DYCFQ3OTG5-EHTJ6zzsmLjjzTw5S8XVy96MXQfHbJKY-jVWEAEB5mRiLgJMn4PssQRLgaGwWbhbFbvD5qqPCFpIz96-FWnkvoxuPaa86Ywfdhd-aPAZ43m3afIAXaKOt9Iy5A0fmsbtZsiwAtrFYMmPoNZcEl02NZ9paIaJ8RXaoU4oTKgMEVjZECQ4smqfnpVg7UD1UIw54F_NaTppx0fAAIZYp5n9lzT9-DwXMe875AbH0ZzRq6-500fSCmJQc3_ym9bM8Xa5gbKSlNQrw2t4pjxJkXbPOGw
Sekcja JWS Payload zawiera dane zapisane w formacie JSON.
Obiekt AdditionalParameters
Nazwa pola | Typ | Wymagalność | Ograniczenia | Opis |
---|---|---|---|---|
paymentId | String | TAK | max. 40 znaków | Identyfikator płatności w systemie Cinkciarz Pay. |
externalPaymentId | String | TAK | max. 64 znaki | Identyfikator płatności z systemu Partnera. |
result | String | TAK | max. 50 znaków | Status płatności. Dopuszczalne wartości opisano poniżej. |
Dopuszczalne wartości pola result:
Wartość | Opis |
---|---|
SUCCESS | Płatność poprawnie zatwierdzona. |
SUCCESS_WITH_PAY_LATER | Płatność poprawnie zatwierdzona z wykorzystaniem funkcjonalności Zapłać później. |
REJECTED | Klient zrezygnował z zatwierdzenia płatności. |
ERROR | Nastąpił problem z zaakceptowaniem płatności (klient może ponownie ją opłacić, jeżeli posiada link). |
PENDING | Płatność jest przetwarzana. |
BLIK Level 0
Po utworzeniu płatności zatwierdzenie płatności metodą BLIK może być zrealizowane na dwa sposoby:
- Przekierowanie na stronę płatności Cinkciarz Pay (
approveUrl
). - Pominięcie interfejsu płatniczego Cinkciarz Pay.
W drugim przypadku system partnera musi zostać zintegrowany z zasobami opisanymi poniżej w celu inicjacji zatwierdzenia płatności metodą BLIK Level 0.
Przykład użycia:
Zatwierdzenie płatności
Umożliwia potwierdzenie transakcji płatności dla metody BLIK Level 0. Transakcja w tym przypadku jest zatwierdzona w takiej samej walucie, jaka została podana w kroku utworzenia płatności.
curl -X POST \
-H "Authorization: Bearer M1ODU2ZDI5NzU3ZWFkYTRjMjEyMTIwNmRiNmQ2MjdmM" \
-H "Content-Type: application/json" \
-H "Accept-Language: pl,cs;q=0.9,en;q=0.8,pl-PL;q=0.7" \
-H "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)" \
-H "User-Real-Ip: 64.233.160.25" \
-H "User-Real-Port: 45688" \
-H "User-Screen-Resolution: 1920x1080" \
-H "fingerprint: {"some.domain":"1df8g16161f8we81sfwe8"}" \
-d "@data.json" \
"<CINKCIARZ_PAY_HOST>/payments/token/BernF3Ix5ozjyOBkePeiMkZNgideCMkvUox7bn8Povvq8CXYkv/confirmations"
data.json
{
"type": "BLIK",
"blikCode": "123456",
"additionalData": {
"email": "[email protected]",
"firstName": "John",
"lastName": "Kowalski"
},
"notificationsLocale": "en-GB"
}
curl -X POST \
-H "Authorization: Bearer M1ODU2ZDI5NzU3ZWFkYTRjMjEyMTIwNmRiNmQ2MjdmM" \
-H "Content-Type: application/jose+json" \
-H "Accept-Language: pl,cs;q=0.9,en;q=0.8,pl-PL;q=0.7" \
-H "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)" \
-H "User-Real-Ip: 64.233.160.25" \
-H "User-Real-Port: 45688" \
-H "User-Screen-Resolution: 1920x1080" \
-H "fingerprint: {"some.domain":"1df8g16161f8we81sfwe8"}" \
-d "@data.jws" \
"<CINKCIARZ_PAY_HOST>/payments/token/BernF3Ix5ozjyOBkePeiMkZNgideCMkvUox7bn8Povvq8CXYkv/confirmations"
data.jws
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoiQkxJSyIsImJsaWtDb2RlIjoiMTIzNDU2IiwiYWRkaXRpb25hbERhdGEiOnsiZW1haWwiOiJqLmtvd2Fsc2tpQGNvbm90b3hpYS5jb20iLCJmaXJzdE5hbWUiOiJKb2huIiwibGFzdE5hbWUiOiJLb3dhbHNraSJ9LCJub3RpZmljYXRpb25zTG9jYWxlIjoiZW4tR0IifQ.dJAliOmP8hOThHP73JfPoMgTA1TKktTgnTyj9idzJhTWMyy_St5GgfobWtX85y0SZmohEfm4SOgoBQbArvJFmbTmhJJjpXi5EnTqWL-HFF1i0OoHCD3Em3RBEDtSnVTIVTKyWKshl1puM-LbYdRr02iHlALrM7r72Snc8KrFfYM2_t5kvTzvlNFvMo_TLu_45F-n-2VR8GeyP6bjT9pZm3v1wjbSZbVXYpFXPmJgbAhECng4jEIguE9OQaeP8kKG6_NYYZR5GW72S0zDAjCMCy5bdLWXbe8mr8Ohj6Sf8xAPoSX3vKHyrElO9G4R0CvFUNE7d2V4pNaGtlus4MjXKg
Nagłówki odpowiedzi:
HTTP/1.1 201 Created
Content-Type: application/json
HTTP/1.1 201 Created
Content-Type: application/jose+json
Odpowiedź:
{
"paymentStatus": "WAITING_FOR_NOTIFICATION"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJwYXltZW50U3RhdHVzIjoiV0FJVElOR19GT1JfTk9USUZJQ0FUSU9OIn0.Up-KrFC3ikd3W88C7-vUu5sJFFva-p34p4kgHpaF0yTF3IKuOUc6fSivleWwZy6pV5mGvYR2_nzdMs3xH5nfHrzj4Cwws9Mi0ZwxWy9Zm-fcnmbMsPBQ1NbsuTIvC8SmZccmJHdVR8wxAtXVkFKiDGJ66_h0UdrUWKijhlpoZ-B_WULd8tSP5iOnAyamohx7_JwAKAapLxagZdexi_Fmoh3IYyzzVe8gEjR3g7upWJ5NU_8AK_6e17aiSskXnEe9-lMrcShG3M2FwU7qvCGrAN6QYxq5g-n0-RbG-wkzX6GSQMQUJcAcy5r5sP6t7ZxwBZ36BNOBYBxWNwLjCoIXxQ
Zasób
POST <CINKCIARZ_PAY_HOST>/payments/token/{token}/confirmations
Nagłówki
Nazwa | Wartość | Wymagalność | Uwagi |
---|---|---|---|
Authorization | Bearer <access_token> |
TAK | Musi zawierać token dostępowy typu Bearer. Więcej informacji w Pobranie tokena dostępowego. |
Content-Type | application/json lub dla podpisanego żądania application/jose+json |
TAK | |
Accept-Language |
<language> | TAK | Nagłówek ustawiający odpowiedni język powiadomień e-mail ze statusem płatności, które otrzyma klient. Przekazana wartość nadpisze nagłówek User-Accept-Language ustawiony przy tworzeniu płatności. Musi być zgodny ze specyfikacją RFC 7231. |
User-Agent | Wartość nagłówka User-Agent z przeglądarki klienta. |
TAK | |
User-Real-Ip | Adres IP klienta. | TAK | |
User-Real-Port | Port klienta. | TAK | |
User-Screen-Resolution | Rozdzielczość ekranu klienta (np. 1920x1080 ). |
TAK | |
fingerprint | Hash identyfikatora sesji klienta. | TAK |
Parametry ścieżki
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
token | String | TAK | Token płatności z pola token w obiekcie PaymentInfo. |
Zawartość
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
type | String | TAK | Typ metody płatności. |
blikCode | String | TAK | Kod T6 z systemu BLIK. |
customerId | String | NIE | Identyfikator zalogowanego klienta w systemie partnera. Parametr wymagany dla metody BLIK OneClick. |
additionalData | AdditionalData | TAK | Dodatkowe informacje dotyczące klienta. |
notificationsLocale | String | NIE | Parametr nadpisujący nagłówek Accept-Language, który ustawia odpowiedni język powiadomień e-mail ze statusem płatności, które otrzyma klient. Powinien być zgodny ze standardem BCP 47. |
Pole notificationsLocale
może przyjmować wartości:
Wartość | Opis |
---|---|
en-GB | Angielski |
pl-PL | Polski |
Obiekt AdditionalData zawierający dodatkowe informacje o Kliencie
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
String | TAK | E-mail klienta. | |
firstName | String | TAK | Imię klienta. |
lastName | String | TAK | Nazwisko klienta. |
Odpowiedź
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
paymentStatus | String | TAK | Status płatności. |
reason | String | NIE | Powód odrzucenia. |
Możliwe wartości pola paymentStatus
:
Wartość | Opis |
---|---|
INITIATED | Płatność zainicjalizowana. |
WAITING_FOR_NOTIFICATION | Płatność oczekuje na potwierdzenie od zewnętrznego dostawcy płatności. |
AUTHORIZATION_REQUESTED | Płatność wymaga autoryzacji u zewnętrznego dostawcy płatności. |
CANCELLED | Płatność anulowana. |
CONFIRMED | Płatność potwierdzona. |
Możliwe wartości pola reason
:
Wartość | Opis |
---|---|
ER_WRONG_TICKET | Nie odnaleziono danego kodu BLIK. |
ER_TIC_EXPIRED | Czas ważności kodu BLIK wygasł. |
ER_TIC_STS | Kod BLIK został anulowany. |
ER_TIC_USED | Kod BLIK został już wykorzystany. |
INSUFFICIENT_FUNDS | Niewystarczające środki na rachunku bankowym. |
LIMIT_EXCEEDED | Przekroczony limit na rachunku bankowym. |
ER_BAD_PIN | Zły pin został kilkukrotnie podany w aplikacji. |
USER_DECLINED | Odrzucono transakcję w aplikacji. |
USER_TIMEOUT | Minął czas na akceptację transakcji w aplikacji. |
TIMEOUT | Wystąpiło opóźnienie w komunikacji w systemie wydawcy. |
AM_TIMEOUT | Wystąpiło opóźnienie w komunikacji z aplikacją mobilną. |
ER_DATAAMT_HUGE | Wartość transakcji przekracza limit. |
ALIAS_DECLINED | Niewłaściwy alias. |
ALIAS_NOT_FOUND | Nie znaleziono aliasu. |
OTHER | Inne. |
Błędy API
Metoda POST /payments/token/{token}/confirmations może zwrócić poniższe błędy biznesowe:
- payment-not-found
- payment-expired
- point-of-sale-not-found
- point-of-sale-not-active
- payment-method-not-available
- transaction-below-limit
- transaction-above-limit
BLIK OneClick
Po utworzeniu płatności transakcja może zostać zatwierdzona z pominięciem interfejsu płatniczego Cinkciarz Pay. Poniższe zasoby umożliwiają zainicjowanie zatwierdzenia płatności po stronie systemu partnera, gdy użytkownik zapamiętał system/sklep w aplikacji mobilnej banku, płacąc wcześniej z wykorzystaniem metody BLIK Level 0.
W celu wykorzystania metody BLIK OneClick:
- Partner musi uprzednio zintegrować się z zasobami opisanymi dla metody BLIK Level 0.
- Partner musi przejść proces certyfikacji (certyfikacja UX) związany z integracją metody BLIK OneClick.
- Klient musi być zalogowany po stronie systemu partnera.
- Klient zrealizował wcześniej płatność metodą BLIK Level 0, będąc zalogowanym w systemie partnera i zapamiętał system/sklep w aplikacji mobilnej banku.
Przykład użycia:
Pobranie profilu klienta
W celu zainicjowania płatności BLIK OneClick należy pobrać profil klienta zawierający aliasy (aplikacje mobilne), które zostały wcześniej zapamiętane. Jeżeli zasób zwróci aliasy, to powinny one zostać zaprezentowane klientowi na stronie wyboru metody płatności przed metodą BLIK Level 0.
curl -X POST \
-H "Authorization: Bearer M1ODU2ZDI5NzU3ZWFkYTRjMjEyMTIwNmRiNmQ2MjdmM" \
-H "Content-Type: application/json" \
-d "@data.json" \
"<CINKCIARZ_PAY_HOST>/profiles/POS2239342415401088/blik"
data.json
{
"customerId": "324235632463"
}
curl -X POST \
-H "Authorization: Bearer M1ODU2ZDI5NzU3ZWFkYTRjMjEyMTIwNmRiNmQ2MjdmM" \
-H "Content-Type: application/jose+json" \
-d "@data.jws" \
"<CINKCIARZ_PAY_HOST>/profiles/POS2239342415401088/blik"
data.jws
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJjdXN0b21lcklkIjoiMzI0MjM1NjMyNDYzIn0.Zr31GV-PY0GgrHxHRoC2hKC_mVHXbtTLpJnQiz0JjbKUQ8cMu32ffErIrlbCAYsO6u9lD1GcKGN8KyAXwN8aZHShe0e6goJwGiYjq40o9TQhyPzsnfGhqTSm3jlKJSM0cPTvO9225ZA1WdQiIvE_e-QFUYXQBHxMP3Khz4pgCpEIlTwTsPSLRc5eTt2x8mPEJDJI0kcpW8gPsbTCcxRv-hWM4F7XysRAkbd6bYf_6FKhMP1yjed6h9-ywtlS9FU3DHYivOSROYbz-GlZij9kI1qb29vH0qLBenxW1IjTfGCJx8UPRa4880G9I-Cr8tQKxbW0gqfIyuNU5YAgpP3yHQ
Nagłówki odpowiedzi:
HTTP/1.1 200 OK
Content-Type: application/json
HTTP/1.1 200 OK
Content-Type: application/jose+json
Odpowiedź:
{
"aliases": [
{
"aliasName": "XYZ John Kowalski",
"aliasKey": "455332"
},
{
"aliasName": "DDD John Kowalski",
"aliasKey": "775986"
}
]
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJhbGlhc2VzIjpbeyJhbGlhc05hbWUiOiJYWVogSm9obiBLb3dhbHNraSIsImFsaWFzS2V5IjoiNDU1MzMyIn0seyJhbGlhc05hbWUiOiJEREQgSm9obiBLb3dhbHNraSIsImFsaWFzS2V5IjoiNzc1OTg2In1dfQ.WJ-tEz01Kk2ZL_uUAalPeb3nXbUZIFg8KLqcInEuAc7M_AxLcAHLR7QCZEiydrwDogc44ZpJ6bH5i9Z__gT087GD22VFsz2sKmfhCmWUpqsdvHQ6pJw7j1N4nNQ613MDKeS9G4GzL5UnzDJcjEIG9eCKIvI50IAEQeQIfPzgh4CPAGlCVat90Fn14dRaqYHLTh04hRDYuW2e0wiW6a3_QuNSzC0p44hB88-ofe7F5Qm2BniEkg5MJ1GqPiNe8DvNeIIQ5peVWYqGV8_u6Ez6tAlOFlVL_xGHhtaul7VEPzTWdiFepVtyE3eSRTrejYh05I8e07UwC2x2HB33KaQE_w
Zasób
POST <CINKCIARZ_PAY_HOST>/profiles/{pointOfSaleId}/blik
Nagłówki
Nazwa | Wartość | Wymagalność | Uwagi |
---|---|---|---|
Authorization | Bearer <access_token> |
TAK | Musi zawierać token dostępowy typu Bearer. Więcej informacji w Pobranie tokena dostępowego. |
Content-Type | application/json lub dla podpisanego żądania application/jose+json |
TAK |
Parametry ścieżki
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
pointOfSaleId | String | TAK | Identyfikator punktu płatności. |
Zawartość
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
customerId | String | TAK | Identyfikator zalogowanego klienta w systemie partnera. |
Odpowiedź
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
aliases | Array | TAK | Lista z elementami typu Alias. |
Obiekt Alias zawierający informacje o aliasie
Nazwa pola | Typ | Wymagalność | Ograniczenia | Opis |
---|---|---|---|---|
aliasName | String | TAK | max. 35 znaków | Nazwa aliasu. |
aliasKey | String | TAK | max. 19 znaków | Identyfikator aliasu. |
Zatwierdzenie płatności
Umożliwia potwierdzenie transakcji płatności dla metody BLIK OneClick. Transakcja w tym przypadku jest zatwierdzona w takiej samej walucie, jaka została podana w kroku utworzenia płatności.
curl -X POST \
-H "Authorization: Bearer M1ODU2ZDI5NzU3ZWFkYTRjMjEyMTIwNmRiNmQ2MjdmM" \
-H "Content-Type: application/json" \
-H "Accept-Language: pl,cs;q=0.9,en;q=0.8,pl-PL;q=0.7" \
-H "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)" \
-H "User-Real-Ip: 64.233.160.25" \
-H "User-Real-Port: 45688" \
-H "User-Screen-Resolution: 1920x1080" \
-H "fingerprint: {"some.domain":"1df8g16161f8we81sfwe8"}" \
-d "@data.json" \
"<CINKCIARZ_PAY_HOST>/payments/token/BernF3Ix5ozjyOBkePeiMkZNgideCMkvUox7bn8Povvq8CXYkv/confirmations"
data.json
{
"type": "BLIK",
"aliasKey": "455332",
"aliasName": "XYZ John Kowalski",
"customerId": "324235632463",
"additionalData": {
"email": "[email protected]",
"firstName": "John",
"lastName": "Kowalski"
},
"notificationsLocale": "en-GB"
}
curl -X POST \
-H "Authorization: Bearer M1ODU2ZDI5NzU3ZWFkYTRjMjEyMTIwNmRiNmQ2MjdmM" \
-H "Content-Type: application/jose+json" \
-H "Accept-Language: pl,cs;q=0.9,en;q=0.8,pl-PL;q=0.7" \
-H "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)" \
-H "User-Real-Ip: 64.233.160.25" \
-H "User-Real-Port: 45688" \
-H "User-Screen-Resolution: 1920x1080" \
-H "fingerprint: {"some.domain":"1df8g16161f8we81sfwe8"}" \
-d "@data.jws" \
"<CINKCIARZ_PAY_HOST>/payments/token/BernF3Ix5ozjyOBkePeiMkZNgideCMkvUox7bn8Povvq8CXYkv/confirmations"
data.jws
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoiQkxJSyIsImFsaWFzS2V5IjoiNDU1MzMyIiwiYWxpYXNOYW1lIjoiWFlaIEpvaG4gS293YWxza2kiLCJjdXN0b21lcklkIjoiMzI0MjM1NjMyNDYzIiwiYWRkaXRpb25hbERhdGEiOnsiZW1haWwiOiJqLmtvd2Fsc2tpQGNvbm90b3hpYS5jb20iLCJmaXJzdE5hbWUiOiJKb2huIiwibGFzdE5hbWUiOiJLb3dhbHNraSJ9LCJub3RpZmljYXRpb25zTG9jYWxlIjoiZW4tR0IifQ.PMqJe3r3eSMSewTSp1iFvP6w_tVQDTaHqEc8TxsAWlvmoLy4Q_usippg2gDMySAkT5rMhAjOroE2BhZEIJPnz0Wv3SJGjzwtu0KtddTEn9RNgPqgh6L6E_U6usLBmLI77ICgkEpl1EflAvfR1IQnL27U2T050Fku_QvWo-PgOkxyCW8ATpueamM0rmm3CaAOhX0h_iFq08WvlmlbDEY-dtX-Pz6bm5zcdPGmgZeq-lcb5r_RVcPVPcLsG0TTJIk56etwl-Q3dIhrGwMI8iASF7Vy3x0wtKFYmop7KBXDrs_jQ3fWMCDiWHJLMFf4bYC45GxXv7Mz385o8Z41xYAZKQ
Nagłówki odpowiedzi:
HTTP/1.1 201 Created
Content-Type: application/json
HTTP/1.1 201 Created
Content-Type: application/jose+json
Odpowiedź:
{
"paymentStatus": "WAITING_FOR_NOTIFICATION"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJwYXltZW50U3RhdHVzIjoiV0FJVElOR19GT1JfTk9USUZJQ0FUSU9OIn0.Up-KrFC3ikd3W88C7-vUu5sJFFva-p34p4kgHpaF0yTF3IKuOUc6fSivleWwZy6pV5mGvYR2_nzdMs3xH5nfHrzj4Cwws9Mi0ZwxWy9Zm-fcnmbMsPBQ1NbsuTIvC8SmZccmJHdVR8wxAtXVkFKiDGJ66_h0UdrUWKijhlpoZ-B_WULd8tSP5iOnAyamohx7_JwAKAapLxagZdexi_Fmoh3IYyzzVe8gEjR3g7upWJ5NU_8AK_6e17aiSskXnEe9-lMrcShG3M2FwU7qvCGrAN6QYxq5g-n0-RbG-wkzX6GSQMQUJcAcy5r5sP6t7ZxwBZ36BNOBYBxWNwLjCoIXxQ
Zasób
POST <CINKCIARZ_PAY_HOST>/payments/token/{token}/confirmations
Nagłówki
Nazwa | Wartość | Wymagalność | Uwagi |
---|---|---|---|
Authorization | Bearer <access_token> |
TAK | Musi zawierać token dostępowy typu Bearer. Więcej informacji w Pobranie tokena dostępowego. |
Content-Type | application/json lub dla podpisanego żądania application/jose+json |
TAK | |
Accept-Language |
<language> | TAK | Nagłówek ustawiający odpowiedni język powiadomień e-mail ze statusem płatności, które otrzyma klient. Przekazana wartość nadpisze nagłówek User-Accept-Language ustawiony przy tworzeniu płatności. Musi być zgodny ze specyfikacją RFC 7231. |
User-Agent | Wartość nagłówka User-Agent z przeglądarki klienta. |
TAK | |
User-Real-Ip | Adres IP klienta. | TAK | |
User-Real-Port | Port klienta. | TAK | |
User-Screen-Resolution | Rozdzielczość ekranu klienta (np. 1920x1080 ). |
TAK | |
fingerprint | Hash identyfikatora sesji klienta. | TAK |
Parametry ścieżki
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
token | String | TAK | Token płatności z pola token w obiekcie PaymentInfo. |
Zawartość
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
type | String | TAK | Typ metody płatności. |
aliasKey | String | TAK | Identyfikator wybranego aliasu przez klienta. Wartość można pobrać z zasobu zwracającego profil klienta. |
aliasName | String | TAK | Nazwa wybranego aliasu przez klienta. Wartość można pobrać z zasobu zwracającego profil klienta. |
customerId | String | TAK | Identyfikator zalogowanego klienta w systemie partnera. |
additionalData | AdditionalData | TAK | Dodatkowe informacje dotyczące klienta. |
notificationsLocale | String | NIE | Parametr nadpisujący nagłówek Accept-Language, który ustawia odpowiedni język powiadomień e-mail ze statusem płatności, które otrzyma klient. Powinien być zgodny ze standardem BCP 47. |
Pole notificationsLocale
może przyjmować wartości:
Wartość | Opis |
---|---|
en-GB | Angielski |
pl-PL | Polski |
Obiekt AdditionalData zawierający dodatkowe informacje o Kliencie
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
String | TAK | E-mail klienta. | |
firstName | String | TAK | Imię klienta. |
lastName | String | TAK | Nazwisko klienta. |
Odpowiedź
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
paymentStatus | String | TAK | Status płatności. |
reason | String | NIE | Powód odrzucenia. |
Możliwe wartości pola paymentStatus
:
Wartość | Opis |
---|---|
INITIATED | Płatność zainicjalizowana. |
WAITING_FOR_NOTIFICATION | Płatność oczekuje na potwierdzenie od zewnętrznego dostawcy płatności. |
AUTHORIZATION_REQUESTED | Płatność wymaga autoryzacji u zewnętrznego dostawcy płatności. |
CANCELLED | Płatność anulowana. |
CONFIRMED | Płatność potwierdzona. |
Możliwe wartości pola reason
:
Wartość | Opis |
---|---|
ER_WRONG_TICKET | Nie odnaleziono danego kodu BLIK. |
ER_TIC_EXPIRED | Czas ważności kodu BLIK wygasł. |
ER_TIC_STS | Kod BLIK został anulowany. |
ER_TIC_USED | Kod BLIK został już wykorzystany. |
INSUFFICIENT_FUNDS | Niewystarczające środki na rachunku bankowym. |
LIMIT_EXCEEDED | Przekroczony limit na rachunku bankowym. |
ER_BAD_PIN | Zły pin został kilkukrotnie podany w aplikacji. |
USER_DECLINED | Odrzucono transakcję w aplikacji. |
USER_TIMEOUT | Minął czas na akceptację transakcji w aplikacji. |
TIMEOUT | Wystąpiło opóźnienie w komunikacji w systemie wydawcy. |
AM_TIMEOUT | Wystąpiło opóźnienie w komunikacji z aplikacją mobilną. |
ER_DATAAMT_HUGE | Wartość transakcji przekracza limit. |
ALIAS_DECLINED | Niewłaściwy alias. |
ALIAS_NOT_FOUND | Nie znaleziono aliasu. |
OTHER | Inne. |
Błędy API
Metoda POST /payments/token/{token}/confirmations może zwrócić poniższe błędy biznesowe:
- payment-not-found
- payment-expired
- point-of-sale-not-found
- point-of-sale-not-active
- payment-method-not-available
- transaction-below-limit
- transaction-above-limit
BLIK OneClick certyfikacja UX
Aby aktywować płatności BLIK OneClick, należy pomyślnie przejść przez etap weryfikacji zgodności z wymaganiami ustalonymi przez Polski Standard Płatności.
Po wdrożeniu płatności BLIK OneClick, prosimy o skontaktowanie się z nami na adres e-mail [email protected], aby rozpocząć proces certyfikacji.
Prezentacja metody płatności
Zakres | Umożliwienie klientowi zapoznanie się z Regulaminem Pojedynczej Transakcji Płatniczej Conotoxia Sp. z o.o. (dotyczy integracji przez API) |
---|---|
Oczekiwany rezultat | Partner, decydując się na integrację przez API, musi umożliwić klientowi swojego systemu/sklepu zapoznanie się z Regulaminem Pojedynczej Transakcji Płatniczej. |
Przykład |
Zakres | Wyeksponowanie logo BLIK na ekranie wyboru metody płatności |
---|---|
Oczekiwany rezultat | Przy metodzie płatności BLIK widoczne jest logo BLIK, które jest spójne z wizerunkiem znaku BLIK. |
Przykład |
Zakres | BLIK level 0 na pierwszym ekranie wyboru metody płatności |
---|---|
Oczekiwany rezultat | BLIK musi być widoczną, możliwą do wyboru formą płatności bezpośrednio z poziomu witryny sklepu. Jeśli użytkownik nie zapisał sklepu w aplikacji mobilnej, na pierwszym miejscu metod płatności jest "BLIK". Po zapisaniu sklepu, pierwszą metodą płatności jest "BLIK bez kodu" (z etykietą aplikacji mobilnej), a następnie "BLIK z kodem" (nazwa zmieniła się z "BLIK"). |
Przykład |
Zakres | Zasady pisowni BLIK wielkimi literami |
---|---|
Oczekiwany rezultat | Wszystkie odniesienia do BLIK są napisane wielkimi literami. |
Przykład | BLIK, BLIKIEM, BLIKOWI itd. |
Rejestracja aliasu
Zakres | Płatności bez kodu BLIK dostępne są wyłącznie dla użytkowników zalogowanych do witryny sklepu |
---|---|
Oczekiwany rezultat | Płatności bez kodu BLIK w modelu OneClick Level 0 są dostępne tylko dla użytkowników zalogowanych do witryny sklepu. |
Zakres | Parametry zapisu sklepu w aplikacji bankowej |
---|---|
Oczekiwany rezultat | Do każdej transakcji BLIK sklep przesyła nazwę oraz identyfikator aliasu potrzebne do wyświetlenia i utworzenia zaproszenia do zapamiętania sklepu w aplikacji bankowej użytkownika. Alias jest ważny 2 lata od daty rejestracji. |
Zakres | Zarządzanie aliasami - umożliwienie zapisywania oraz usuwania |
---|---|
Oczekiwany rezultat | Aliasami można zarządzać tylko z poziomu aplikacji mobilnej banku. Nie można dokonać płatności bez kodu BLIK przy użyciu usuniętego lub wygasłego aliasu. Metoda płatności "BLIK bez kodu" nie jest widoczna na liście metod płatności – widoczna jest tylko metoda "BLIK". Zalogowany użytkownik może płacić jedynie kodem BLIK, ale może ponownie zapamiętać sklep w aplikacji bankowej podczas lub zaraz po płatności kodem BLIK. |
Przykład |
Wybór zapisanego aliasu i rozpoczęcie transakcji
Zakres | Brak zarejestrowanego aliasu |
---|---|
Oczekiwany rezultat | Jeśli alias nie jest zarejestrowany, jedyną metodą płatności dostępną w systemie sklepu jest BLIK, a użytkownik może zapłacić tylko za pomocą kodu BLIK. |
Przykład |
Zakres | Wybór aliasu |
---|---|
Oczekiwany rezultat | Jeśli użytkownik zapisze sklep, pierwszą metodą na liście metod płatności jest "BLIK bez kodu" z wyświetloną etykietą aplikacji mobilnej, a następnie "BLIK z kodem". Nazwa metody płatności "BLIK" zmienia się na "BLIK z kodem", gdy użytkownik zapamięta sklep. |
Przykład |
Zakres | Obsługa wielu banków |
---|---|
Oczekiwany rezultat | Zapisane aliasy są widoczne zarówno w aplikacji bankowej X, jak i aplikacji bankowej Y. |
Zakres | Obsługa wielu banków - prezentacja listy wielu aliasów |
---|---|
Oczekiwany rezultat | Jeśli zapisano więcej niż jeden alias, sklep wyświetli wszystkie zapisane aliasy, umożliwiając użytkownikowi wybór jednego z nich. Aliasy powinny być prezentowane w kolejności, w jakiej zostały przekazane Agentowi przez system BLIK, a pierwszy na liście powinien być wybrany domyślnie. Można zaimplementować widok, w którym tylko pierwszy alias jest widoczny, a pozostałe dostępne po wybraniu opcji "Zmień". |
Przykład |
Zakres | Obsługa wielu banków - autoryzacja w wybranej aplikacji bankowej |
---|---|
Oczekiwany rezultat | Wybrany alias uruchamia autoryzację w wybranej aplikacji mobilnej. Transakcja została zakończona pomyślnie. |
Zakres | Zmiana wyboru na płatność kodem BLIK |
---|---|
Oczekiwany rezultat | Użytkownik ma możliwość zmiany metody płatności - z "BLIK bez kodu" na "BLIK z kodem". |
Zakres | Pierwsza płatność bez kodu BLIK - informacja jednorazowa |
---|---|
Oczekiwany rezultat | Jeśli jest to pierwsza płatność użytkownika po zarejestrowaniu aliasu, użytkownikowi powinien zostać wyświetlony jednorazowy komunikat wyjaśniający, jak działają płatności OneClick. |
Przykład |
Potwierdzenie w aplikacji banku
Zakres | Potwierdzenie w aplikacji bankowej - instrukcja obsługi |
---|---|
Oczekiwany rezultat | Pojawia się ekran z instrukcją potwierdzenia płatności w aplikacji bankowej. Na ekranie użytkownik nie powinien mieć żadnych innych działań do wykonania na tym etapie, uwaga użytkownika nie powinna być rozpraszana w celu potwierdzenia transakcji. Ekran nie powinien zawierać licznika czasu pozostałego do potwierdzenia transakcji. |
Przykład |
Transakcja zakończona powodzeniem
Zakres | Wyświetlenie strony statusu pomyślnej płatności |
---|---|
Oczekiwany rezultat | Sklep wyświetla użytkownikowi informację o udanej płatności - wyświetlając stronę z podziękowaniem za zakup. |
Przykład |
Błędy autoryzacji
Zakres | Transakcja zakończona niepowodzeniem - wyświetlenie informacji o statusie wraz z możliwością powtórzenia transakcji (tylko z kodem BLIK) |
---|---|
Oczekiwany rezultat | W przypadku transakcji bez kodu BLIK, gdy wystąpi błąd: -musi zostać wyświetlony komunikat o błędzie transakcji informujący użytkownika o rzeczywistej przyczynie błędu, -użytkownik musi mieć możliwość powtórzenia transakcji przy użyciu kodu BLIK. |
Przykład |
Zakres | Nieprawidłowy kod BLIK przy ponownym wprowadzaniu - czyszczenie pola |
---|---|
Oczekiwany rezultat | W przypadku transakcji z kodem BLIK, gdy wystąpi błąd umożliwiający powtórzenie transakcji, pole do wprowadzenia kodu zostanie wyczyszczone, a użytkownik będzie mógł natychmiast wprowadzić nowy kod. |
BLIK status płatności
Pozwala sprawdzić status płatności po jej zatwierdzeniu. Zasób może być wykorzystany w celu aktualizacji statusu transakcji zatwierdzonej metodą BLIK Level 0 lub BLIK OneClick na ekranie klienta.
curl -X 'GET' \
-H "Authorization: Bearer M1ODU2ZDI5NzU3ZWFkYTRjMjEyMTIwNmRiNmQ2MjdmM" \
"<CINKCIARZ_PAY_HOST>/payments/status?paymentId=PAY445458962445154"
Nagłówki odpowiedzi:
HTTP/1.1 201 Created
Content-Type: application/json
HTTP/1.1 201 Created
Content-Type: application/jose+json
Odpowiedź:
{
"paymentStatus": "CONFIRMED",
"paymentId": "PAY445458962445154"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJwYXltZW50U3RhdHVzIjoiQ09ORklSTUVEIiwicGF5bWVudElkIjoiUEFZNDQ1NDU4OTYyNDQ1MTU0In0.HQHzzoMgBh-gjc1EFlpcSozMSG4HGCaO_U2kWrLLTIihyMLcv-_ySPCLguA8r4OKeXeQRzaX2rCPAVwUyA8Xyuhy9bHXgNHjURw_4OfZy1DvkJxLy6HujsrRixd8NjXKT23bsDSb0Wv_HPn6KL2ATF1vOH0TjNP0dkIe26gcBjPLfo7Sez22nHgjqhWZBIsaZBh9GRr3zURdyjAJkQAzeSPu93OGwPPGsqZVY2oELkXP7sP9iwOKe9BrR2hqskJsWC4PTY8JZvuWOlv8-ho8EZfgugwL6bMn0qh8XVa_Ld5uOuZo2wePhdvGPVrZi7pVWMCIu6iNj9V8tVA0okflOA
Zasób
GET <CINKCIARZ_PAY_HOST>/payments/status?paymentId={paymentId}
Nagłówki
Nazwa | Wartość | Uwagi |
---|---|---|
Authorization | Bearer <access_token> |
Musi zawierać token dostępowy typu Bearer. Więcej informacji w Pobranie tokena dostępowego. |
Parametry zapytania
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
paymentId | String | TAK | Identyfikator płatności z pola paymentId w obiekcie PaymentInfo. |
Odpowiedź
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
paymentId | String | TAK | Identyfikator płatności. |
paymentStatus | String | TAK | Status płatności. |
reason | String | NIE | Powód odrzucenia. |
Możliwe wartości pola paymentStatus
:
Wartość | Opis |
---|---|
INITIATED | Płatność zainicjalizowana. |
WAITING_FOR_NOTIFICATION | Płatność oczekuje na potwierdzenie od zewnętrznego dostawcy płatności. |
AUTHORIZATION_REQUESTED | Płatność wymaga autoryzacji u zewnętrznego dostawcy płatności. |
CANCELLED | Płatność anulowana. |
CONFIRMED | Płatność potwierdzona. |
Możliwe wartości pola reason
:
Wartość | Opis |
---|---|
ER_WRONG_TICKET | Nie odnaleziono danego kodu BLIK. |
ER_TIC_EXPIRED | Czas ważności kodu BLIK wygasł. |
ER_TIC_STS | Kod BLIK został anulowany. |
ER_TIC_USED | Kod BLIK został już wykorzystany. |
INSUFFICIENT_FUNDS | Niewystarczające środki na rachunku bankowym. |
LIMIT_EXCEEDED | Przekroczony limit na rachunku bankowym. |
ER_BAD_PIN | Zły pin został kilkukrotnie podany w aplikacji. |
USER_DECLINED | Odrzucono transakcję w aplikacji. |
USER_TIMEOUT | Minął czas na akceptację transakcji w aplikacji. |
TIMEOUT | Wystąpiło opóźnienie w komunikacji w systemie wydawcy. |
AM_TIMEOUT | Wystąpiło opóźnienie w komunikacji z aplikacją mobilną. |
ER_DATAAMT_HUGE | Wartość transakcji przekracza limit. |
ALIAS_DECLINED | Niewłaściwy alias. |
ALIAS_NOT_FOUND | Nie znaleziono aliasu. |
OTHER | Inne. |
EPS
Po utworzeniu płatności transakcja może zostać zatwierdzona z pominięciem interfejsu płatniczego Cinkciarz Pay dla metody EPS. Poniższe zasoby pozwolą wykonać płatność poprzez bezpośrednie przekierowanie klienta na stronę banku. Przykładowe diagramy sekwencji znajdują się w rozdziale Proces płatności - EPS.
Przykład użycia:
Dostępność metody
Przed wywołaniem zatwierdzenia płatności metodą EPS należy sprawdzić jej dostępność oraz pobrać listę dostępnych banków wykorzystując zasób opisany w rozdziale Dostępność metody płatności.
Ikony banków
Dla każdego dostępnego banku reprezentowanego przez obiekt Issuer można pobrać ikonę i przedstawić ją klientowi.
Zasób
GET <CONOTOXIA_PAY_HOST>/images/logos/eps/{issuerId}.svg
Parametry ścieżki
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
issuerId | String | TAK | Identyfikator banku z pola id w obiekcie Issuer. |
Zatwierdzenie płatności
Umożliwia potwierdzenie transakcji płatności dla metody EPS. Transakcja w tym przypadku jest zatwierdzona w takiej samej walucie, jaka została podana w kroku utworzenia płatności.
curl -X POST \
-H "Authorization: Bearer M1ODU2ZDI5NzU3ZWFkYTRjMjEyMTIwNmRiNmQ2MjdmM" \
-H "Content-Type: application/json" \
-H "Accept-Language: pl,cs;q=0.9,en;q=0.8,pl-PL;q=0.7" \
-H "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)" \
-H "User-Real-Ip: 64.233.160.25" \
-H "User-Real-Port: 45688" \
-H "User-Screen-Resolution: 1920x1080" \
-H "fingerprint: {"some.domain":"1df8g16161f8we81sfwe8"}" \
-d "@data.json" \
"<CINKCIARZ_PAY_HOST>/payments/token/BernF3Ix5ozjyOBkePeiMkZNgideCMkvUox7bn8Povvq8CXYkv/confirmations"
data.json
{
"type": "EPS",
"issuer": "6c48eff1-48be-4751-8eaa-71b96cc06b4d",
"issuerCode": "BANK_CODE",
"additionalData": {
"email": "[email protected]",
"firstName": "John",
"lastName": "Kowalski"
},
"notificationsLocale": "en-GB"
}
curl -X POST \
-H "Authorization: Bearer M1ODU2ZDI5NzU3ZWFkYTRjMjEyMTIwNmRiNmQ2MjdmM" \
-H "Content-Type: application/jose+json" \
-H "Accept-Language: pl,cs;q=0.9,en;q=0.8,pl-PL;q=0.7" \
-H "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)" \
-H "User-Real-Ip: 64.233.160.25" \
-H "User-Real-Port: 45688" \
-H "User-Screen-Resolution: 1920x1080" \
-H "fingerprint: {"some.domain":"1df8g16161f8we81sfwe8"}" \
-d "@data.jws" \
"<CINKCIARZ_PAY_HOST>/payments/token/BernF3Ix5ozjyOBkePeiMkZNgideCMkvUox7bn8Povvq8CXYkv/confirmations"
data.jws
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoiRVBTIiwiaXNzdWVyIjoiNmM0OGVmZjEtNDhiZS00NzUxLThlYWEtNzFiOTZjYzA2YjRkIiwiaXNzdWVyQ29kZSI6IkJBTktfQ09ERSIsImFkZGl0aW9uYWxEYXRhIjp7ImVtYWlsIjoiai5rb3dhbHNraUBjb25vdG94aWEuY29tIiwiZmlyc3ROYW1lIjoiSm9obiIsImxhc3ROYW1lIjoiS293YWxza2kifSwibm90aWZpY2F0aW9uc0xvY2FsZSI6ImVuLUdCIn0.SIocHLiz-_FTdoq2TF88wg9EbnTjJKBuc1T3tvAJLKnpylZBVS5Navck0qIBc-7Y28wyTdVYDg_zHkCoTbzFAB94WdRc0X4_gN55cx4QAxwgWaUmnmSy5BLAVu_Wwj2D9_QU7UMKT_EU5jAjSsm93GjAlXBxzmg-mJ6rsEzER2Tf2tosPPlBX4Vr25qteurcv5RpQSTcw3wZhw4TBtLpw--YfBBXcM9_g3jFKU5k4T0CEbZCzPciA7KDTMbPaz1phV97tcelcMJLDDMxfiew6gRgWftoGd0JqAd2dehhS3U2i7YbyhO62mccSBjxaOy4qS6J77OkbKJntReFW5RKuA
Nagłówki odpowiedzi:
HTTP/1.1 201 Created
Content-Type: application/json
HTTP/1.1 201 Created
Content-Type: application/jose+json
Odpowiedź:
{
"redirectUrl": "https://www.example.com/redirect",
"redirectMethod": "GET"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJyZWRpcmVjdFVybCI6Imh0dHBzOi8vd3d3LmV4YW1wbGUuY29tL3JlZGlyZWN0IiwicmVkaXJlY3RNZXRob2QiOiJHRVQifQ.J5h5_dlyWEmLviMRGQaVMH-b7jBv5CwUQvMWAO51HERInNjqfDWkZdAjB56AARR6BK_FLN7UBPB9DFwtChoReR6xg20gOJld4Ctl00l2wvZ6lPRazIt4MA1Quo3pkM7p64vZQ6QX2mM8vVRqMjdGQc8HgEhHgnwgciU8w9rdxWbFxTWdZnalG2Fu9KXIKG5ZnWTmYO3L91HEWwL9SjI_lL_Os7r8V_ORPQPIX5-A3RUR3s1kTiI0gwPJzRlWzhVTIlRbnRBvj6m5GTJkK3ULug01k1O9UfWoaKNRgJ9TSMNgTi1PHdbm1P_rZRZ5FqMeTb2tWhcRBJquCTaHXF_BNQ
Zasób
POST <CINKCIARZ_PAY_HOST>/payments/token/{token}/confirmations
Nagłówki
Nazwa | Wartość | Wymagalność | Uwagi |
---|---|---|---|
Authorization | Bearer <access_token> |
TAK | Musi zawierać token dostępowy typu Bearer. Więcej informacji w Pobranie tokena dostępowego. |
Content-Type | application/json lub dla podpisanego żądania application/jose+json |
TAK | |
Accept-Language |
<language> | TAK | Nagłówek ustawiający odpowiedni język powiadomień e-mail ze statusem płatności, które otrzyma klient. Przekazana wartość nadpisze nagłówek User-Accept-Language ustawiony przy tworzeniu płatności. Musi być zgodny ze specyfikacją RFC 7231. |
User-Agent | Wartość nagłówka User-Agent z przeglądarki klienta. |
TAK | |
User-Real-Ip | Adres IP klienta. | TAK | |
User-Real-Port | Port klienta. | TAK | |
User-Screen-Resolution | Rozdzielczość ekranu klienta (np. 1920x1080 ). |
TAK | |
fingerprint | Hash identyfikatora sesji klienta. | TAK |
Parametry ścieżki
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
token | String | TAK | Token płatności z pola token w obiekcie PaymentInfo. |
Zawartość
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
type | String | TAK | Typ metody płatności. |
issuer | String | TAK | Identyfikator banku z pola id w obiekcie Issuer. |
issuerCode | String | TAK | Kod banku z pola code w obiekcie Issuer. |
additionalData | AdditionalData | TAK | Dodatkowe informacje dotyczące klienta. |
notificationsLocale | String | NIE | Parametr nadpisujący nagłówek Accept-Language, który ustawia odpowiedni język powiadomień e-mail ze statusem płatności, które otrzyma klient. Powinien być zgodny ze standardem BCP 47. |
Pole notificationsLocale
może przyjmować wartości:
Wartość | Opis |
---|---|
en-GB | Angielski |
pl-PL | Polski |
Obiekt AdditionalData zawierający dodatkowe informacje o Kliencie
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
String | TAK | E-mail klienta. | |
firstName | String | TAK | Imię klienta. |
lastName | String | TAK | Nazwisko klienta. |
Odpowiedź
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
redirectUrl | String | TAK | Adres URL banku, na który należy przekierować klienta. |
redirectMethod | String | TAK | Metoda HTTP, która powinna być wykorzystana przy przekierowaniu. |
Błędy API
Metoda POST /payments/token/{token}/confirmations może zwrócić poniższe błędy biznesowe:
- payment-not-found
- payment-expired
- point-of-sale-not-found
- point-of-sale-not-active
- payment-method-not-available
- transaction-below-limit
- transaction-above-limit
Dostępność metody płatności
W celu sprawdzenia, czy wybrana metoda płatności jest dostępna, należy wywołać poniższy zasób. Zasób zwraca listę metod płatności wraz ze statusem. Dodatkowo dla niektórych metod płatności mogą zostać zwrócone dodatkowe dane takie jak lista dostępnych banków (EPS).
curl -X GET \
-H "Authorization: Bearer M1ODU2ZDI5NzU3ZWFkYTRjMjEyMTIwNmRiNmQ2MjdmM" \
"<CINKCIARZ_PAY_HOST>/payments/methods?currency=EUR&pointOfSaleId=PAY815576576741391"
Nagłówki odpowiedzi:
HTTP/1.1 200 Success
Content-Type: application/json
HTTP/1.1 200 Success
Content-Type: application/jose+json
Odpowiedź:
{
"data": [
{
"type": "BLIK",
"status": "UNAVAILABLE"
},
{
"type": "EPS",
"status": "ACTIVE",
"issuers": [
{
"id": "edc8afd1-6258-4982-b523-aab56e423c8a",
"name": "Bank name",
"code": "BANK_CODE"
}
]
}
]
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJkYXRhIjpbeyJ0eXBlIjoiQkxJSyIsInN0YXR1cyI6IlVOQVZBSUxBQkxFIn0seyJ0eXBlIjoiRVBTIiwic3RhdHVzIjoiQUNUSVZFIiwiaXNzdWVycyI6W3siaWQiOiJlZGM4YWZkMS02MjU4LTQ5ODItYjUyMy1hYWI1NmU0MjNjOGEiLCJuYW1lIjoiQmFuayBuYW1lIiwiY29kZSI6IkJBTktfQ09ERSJ9XX1dfQ.Z9U8MrbEXRukhRCE6LNyN3gzKwbJx6CRxi729XKU3epIjMPlFkG4OWd7JAfCgI8PnPu1po2ThWdmGASOEw0OKMkAB8V7XDmpwputhnElltVb2CR7lBcFouE8_gIdjtedE_4WfDmLaYYHJ00eHopNP3jYQYlW3l9ZY-no1cXKGFR5AoE_1V30BUXOcopLG8iaXCnyUv0Awnb6mjbtZhQG8lVeHzroA5HMGYTIMR-5B3CYaHok92xxO5tBG8ju42XcDH0xfFO5FkpQVc7AbUYloXYNErrRRekLX0bHec6g1UUan0W5KfaTlWIl_Q90Psv4ycZ5qQ5pR1Yhfwr5T-va2w
Zasób
GET <CINKCIARZ_PAY_HOST>/payments/methods?currency={currency}&pointOfSaleId={pointOfSaleId}
Nagłówki
Nazwa | Wartość | Wymagalność | Uwagi |
---|---|---|---|
Authorization | Bearer <access_token> |
TAK | Musi zawierać token dostępowy typu Bearer. Więcej informacji w Pobranie tokena dostępowego. |
Parametry zapytania
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
currency | String | TAK | Kod waluty zgodny z ISO 4217. Dozwolone kody walut zdefiniowane zostały w Lista wspieranych walut. |
pointOfSaleId | String | TAK | Identyfikator punktu płatności. |
Odpowiedź
Obiekt Response zawierający dane metod płatności
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
data | Array | TAK | Lista z elementami typu PaymentMethod. |
Obiekt PaymentMethod zawierający szczegóły metody płatności
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
type | String | TAK | Typ metody płatności. |
status | String | TAK | Status metody płatności. |
issuers | Array | NIE | Lista z elementami typu Issuer. |
Pole status
może przyjmować wartości:
Wartość | Opis |
---|---|
ACTIVE | Metoda płatności jest dostępna. |
UNAVAILABLE | Metoda płatności jest niedostępna. |
Obiekt Issuer zawierający szczegóły banku
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
id | String | TAK | Identyfikator banku. |
name | String | TAK | Nazwa banku. |
code | String | TAK | Kod banku. |
Ponawianie płatności
Umożliwia utworzenie transakcji płatności z parametrami już istniejącej transakcji.
curl -X POST \
-H "Authorization: Bearer M1ODU2ZDI5NzU3ZWFkYTRjMjEyMTIwNmRiNmQ2MjdmM" \
-H "Content-Type: application/json" \
-d "@data.json" \
"<CINKCIARZ_PAY_HOST>/payments/retry"
data.json
{
"paymentId": "PAY219171134105423"
}
curl -X POST \
-H "Authorization: Bearer M1ODU2ZDI5NzU3ZWFkYTRjMjEyMTIwNmRiNmQ2MjdmM" \
-H "Content-Type: application/jose+json" \
-d "@data.jws" \
"<CINKCIARZ_PAY_HOST>/payments/retry"
data.jws
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJwYXltZW50SWQiOiJQQVkyMTkxNzExMzQxMDU0MjMifQ.KqU6VswZiaB071gKsCxlU2pc0UWxOofnedinH3z9rxpuxynceKIu3DtDlciK4larlxi9i_MzNUW1nRM3pmNucmXX8GVEtUBtiKNfo1Ktp9SvK8T-lViNx3w37kOuErL7qpolUWeYGjxxs9Wo-m1Ke51wUl0xnx859H9o8pAHlEmKRpVq8Gyjh3DxqCSTsAjB_PTRo4T988uWN-usiCOr22frfxpexsDEAurkXrjk4cXjyx1hNZbazw40JQD5rvWkKpwEFOmjFMQSQP9LhYP5iGmbgVDg91_oCg33idMxSXYke2FsCHtFTf1HTDD3krAvMUK0D9aXthF-jmqHpgv8xA
Nagłówki odpowiedzi:
HTTP/1.1 201 Created
Content-Type: application/json
HTTP/1.1 201 Created
Content-Type: application/jose+json
Odpowiedź:
{
"paymentId": "PAY715037422182587",
"approveUrl": "https://<CINKCIARZ_APPROVAL_HOST>/approve",
"token": "dGBcEMQoyff6OCQY5l1rehXAwgCDnEwhtp573P1EJyswGBJ79G"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJwYXltZW50SWQiOiJQQVk3MTUwMzc0MjIxODI1ODciLCJhcHByb3ZlVXJsIjoiaHR0cHM6Ly88Q0lOS0NJQVJaX0FQUFJPVkFMX0hPU1Q-L2FwcHJvdmUiLCJ0b2tlbiI6ImRHQmNFTVFveWZmNk9DUVk1bDFyZWhYQXdnQ0RuRXdodHA1NzNQMUVKeXN3R0JKNzlHIn0.CRTGAMRkd2kHey33ID65n0hrv_0L1NSv628HtKw7dMp8W5Lou1OsJyUkDYa3VfeHUf0V6j2YLJmOt8bU09I_8zpwQH1-5-JIFnmLkByqp_a0RDKnmslFwD9K4p__OE9QqpLta-u7u5h8v5zK0esQ0w2-9wcKzVfwUrhl8ZiTNxP3BZL5ZDAUoECK9MWmT_aYchc2RuuNcdXiGEh-t-ELM_MwxlRYI-ab1froAEFHkaxxZTbzAmJsbPcWBtTR-whWOLKVZV5eLTIV1Z-8-ZD7q-pCHqalbkN5H8czrBuXySb92pDf58iRUsm4lgXY17PmO51fwhlfQ-UtKpQBDWmtFQ
Zasób
POST <CINKCIARZ_PAY_HOST>/payments/retry
Nagłówki
Nazwa | Wartość | Wymagalność | Uwagi |
---|---|---|---|
Authorization | Bearer <access_token> |
TAK | Musi zawierać token dostępowy typu Bearer. Więcej informacji w Pobranie tokena dostępowego. |
Content-Type | application/json lub dla podpisanego żądania application/jose+json |
TAK |
Zawartość
Obiekt PaymentRetryData zawierający dane płatności
Nazwa pola | Typ | Wymagalność | Ograniczenia | Opis |
---|---|---|---|---|
paymentId | String | TAK | max. 40 znaków | Identyfikator ponawianej płatności. |
Odpowiedź
Obiekt PaymentInfo zawierający identyfikator utworzonej płatności, adres URL do akceptacji płatności i token płatności.
Nazwa pola | Typ | Wymagalność | Ograniczenia | Opis |
---|---|---|---|---|
paymentId | String | TAK | max. 40 znaków | Identyfikator płatności w systemie Cinkciarz Pay. |
approveUrl | String | TAK | max. 256 znaków | Adres URL, na który Partner przekierowuje klienta w celu akceptacji utworzonej płatności. |
token | String | TAK | max. 50 znaków | Unikalny token do potwierdzenia płatności. |
Błędy API
Metoda POST /payments/retry może wrócić poniższe błędy biznesowe:
- illegal-payment-status
- invalid-jws
- public-key-already-revoked
- point-of-sale-not-found
- contract-category-not-supported
- payment-method-not-available
- transaction-below-limit
- point-of-sale-forbidden-error-url
- point-of-sale-forbidden-notification-url
- point-of-sale-forbidden-return-url
- point-of-sale-not-active
- currency-unavailable
Zwroty
Utworzenie zwrotu
curl -X POST \
-H "Authorization: Bearer M1ODU2ZDI5NzU3ZWFkYTRjMjEyMTIwNmRiNmQ2MjdmM" \
-H "Content-Type: application/json" \
-d "@data.json" \
"<CINKCIARZ_PAY_HOST>/refunds"
data.json
{
"paymentId": "PAY715037422182587",
"reason": "Damaged cover",
"amount": {
"currency": "PLN",
"value": 34.99
},
"externalRefundId": "234/03/2016",
"notificationUrl": "http://shop.com/notifications"
}
curl -X POST \
-H "Authorization: Bearer M1ODU2ZDI5NzU3ZWFkYTRjMjEyMTIwNmRiNmQ2MjdmM" \
-H "Content-Type: application/jose+json" \
-d "@data.jws" \
"<CINKCIARZ_PAY_HOST>/refunds"
data.jws
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJwYXltZW50SWQiOiJQQVk3MTUwMzc0MjIxODI1ODciLCJyZWFzb24iOiJEYW1hZ2VkIGNvdmVyIiwiYW1vdW50Ijp7ImN1cnJlbmN5IjoiUExOIiwidmFsdWUiOjM0Ljk5fSwiZXh0ZXJuYWxSZWZ1bmRJZCI6IjIzNC8wMy8yMDE2Iiwibm90aWZpY2F0aW9uVXJsIjoiaHR0cDovL3Nob3AuY29tL25vdGlmaWNhdGlvbnMifQ.NacbH-nTXcqY8Yv7Ib1B2l2RUS-vRe8MTGauT_9wYEoGUdpZD8Pks8T2_dLVGxtO4An66VNHn61YYNY3XQCVAaeb2oQ_g1jXacTNIFIgoMCF8v6-nKu3sigYgvCntuM98XfRgLD-T7i6chR-TizggWhJ5dSpNRXwEpNfV9YGUgtroLb9Bt4H99Ys-S6Twzfg23Bj6JZEFb121Dsk7cZE2TEdwDjkiM3PUaWqIVbPDXP-N-kYx2ZZKrv4kIyLBa9990i4yn_KxCHcPSrPcyXE4cROTOSjunfCX_y-PfM96H7oR-5vI9cVnuPrSaF2kf6cHjtsUPnOHGqA7Owj7zfEvQ
Nagłówki odpowiedzi:
HTTP/1.1 201 Created
Content-Type: application/json
HTTP/1.1 201 Created
Content-Type: application/jose+json
Odpowiedź:
{
"id": "REF505142910935123"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJpZCI6IlJFRjUwNTE0MjkxMDkzNTEyMyJ9.fNuI_zsMz8JPhAiQjpvcGYwiYGkFuR6LWdueA4RgU-GcCzH4RdZULnMg4V-hyu3Of0G6u9qaqVw8SSPRRy_O59CijaYLI6cMSzg2W5L-mMHVUveWTgI-DLQ1v0Jemx5sri27vsq7TDMcfDNnGigWFkmvJx1nYeWS_1lTzXdYrDHxldjJhGUbF2aLr_hzrn4SRqlTf0XYc8vVGm65OS64iowFn2osd-ByXAr9LOMUsSenW14qwBLwth9_BartZO_ce1j1sBlBTYGlgPpy6xVaQjbaUcJySEqVY0vwXpCGPygLyYqt0w55F82s2bW7Qg7QW4bUu5GNAVjTai4QKjUHSg
Umożliwia utworzenie transakcji zwrotu do płatności. Dyspozycję utworzenia zwrotu można również wykonać z Panelu sprzedawcy ze strony szczegółów wybranej płatności.
Zasób
POST <CINKCIARZ_PAY_HOST>/refunds
Zobacz adresy serwerów
Nagłówki
Nazwa | Wartość | Uwagi |
---|---|---|
Authorization | Bearer <access_token> |
Musi zawierać token dostępowy typu Bearer. Więcej informacji w Pobranie tokena dostępowego. |
Content-Type | application/json lub dla podpisanego żądania application/jose+json |
Zawartość
Obiekt RefundData zawierający dane zwrotu
Nazwa pola | Typ | Wymagalność | Ograniczenia | Opis |
---|---|---|---|---|
paymentId | String | TAK | max. 40 znaków | Identyfikator płatności z systemu Cinkciarz Pay. |
reason | String | TAK | min. 5 znaków max. 512 znaków | Powód, dla którego wykonywany jest zwrot. |
amount | Amount | NIE | Kwota zwrotu. W przypadku, gdy kwota nie zostanie podana lub gdy jest ona równa kwocie płatności, utworzony zostanie zwrot pełny. Waluta musi być zawsze zgodna z walutą, w której dokonano płatności. | |
externalRefundId | String | NIE | min. 1 znak max. 64 znaki | Identyfikator zwrotu po stronie Partnera. |
notificationUrl | String | NIE | min. 1 znak max. 2048 znaki | Adres URL, na który będą wysyłane powiadomienia o statusie zwrotu. Jako domyślny wykorzystywany jest adres URL, przekazany przez Partnera w ramach umowy o współpracy. |
notificationUrlParameters | Object | NIE | max. 1024 znaki | Dodatkowe parametry, które są wysyłane w powiadomieniach URL informujących o statusie zwrotu. |
Obiekt Amount zawierający kwotę zwrotu
Nazwa pola | Typ | Wymagalność | Ograniczenia | Opis |
---|---|---|---|---|
value | Number | TAK | Kwota. Max. 19 znaków ze wsparciem dla 2 miejsc po separatorze dziesiętnym (jako separator dziesiętny używana jest kropka (.). Liczba miejsc po separatorze dziesiętnym zależy od waluty i została podana w Lista wspieranych walut. | |
currency | String | TAK | 3 znaki | Kod waluty zgodny z ISO 4217. Dozwolone kody walut zdefiniowane zostały w Lista wspieranych walut. |
Odpowiedź
Obiekt RefundInfo zawierający identyfikator utworzonego zwrotu
Nazwa pola | Typ | Wymagalność | Ograniczenia | Opis |
---|---|---|---|---|
id | String | TAK | max. 40 znaków | Identyfikator zwrotu w systemie Cinkciarz Pay. |
Błędy API
Metoda POST /refunds może zwrócić poniższe błędy biznesowe:
- invalid-jws
- public-key-already-revoked
- payment-not-completed
- point-of-sale-forbidden-notification-url
- point-of-sale-not-active
- refund-amount-too-large
- refund-incorrect-currency-code
- max-refunds-reached
- other-refunds-not-completed
- refund-money-below-minimal-amount
- refund-not-allowed
- currency-unavailable
Lista zwrotów
curl -X GET \
-H "Authorization: Bearer M1ODU2ZDI5NzU3ZWFkYTRjMjEyMTIwNmRiNmQ2MjdmM" \
"<CINKCIARZ_PAY_HOST>/refunds?refundIds=REF192843325139567&refundIds=REF942484723821414"
Nagłówki odpowiedzi:
HTTP/1.1 200 Success
Content-Type: application/json
HTTP/1.1 200 Success
Content-Type: application/jose+json
Odpowiedź:
{
"data": [
{
"refundId": "REF192843325139567",
"externalRefundId": "128/06/2018",
"status": "NEW",
"amount": {
"value": 9.99,
"currency": "EUR"
},
"description": "Wrong order",
"type": "PARTIAL",
"createdDate": "2020-01-24T10:06:10.945Z"
},
{
"refundId": "REF942484723821414",
"externalRefundId": "121/06/2018",
"status": "COMPLETED",
"amount": {
"value": 109.99,
"currency": "EUR"
},
"description": "Wrong order",
"partner": {
"commission": {
"fee": {
"value": 1.25,
"currency": "EUR"
}
}
},
"type": "FULL",
"createdDate": "2020-11-25T15:14:38.226Z",
"bookedDate": "2020-11-25T15:15:50.140Z"
}
],
"pagination": {
"first": true,
"last": true,
"currentPageNumber": 1,
"currentPageElementsCount": 2,
"pageSize": 10,
"totalPages": 1,
"totalElements": 2,
"pageLimitExceeded": true
}
}
eyJhbGciOiJSUzI1NiIsImtpZCI6Il8yNzVUd3dYOVhtaVotak1wLTJwNDZ0SUsyZE0tR2xWM3dYTU1GUTM5UUEifQ.ewogICAiZGF0YSI6WwogICAgICB7CiAgICAgICAgICJyZWZ1bmRJZCI6IlJFRjE5Mjg0MzMyNTEzOTU2NyIsCiAgICAgICAgICJleHRlcm5hbFJlZnVuZElkIjoiMTI4LzA2LzIwMTgiLAogICAgICAgICAic3RhdHVzIjoiTkVXIiwKICAgICAgICAgImFtb3VudCI6ewogICAgICAgICAgICAidmFsdWUiOjkuOTksCiAgICAgICAgICAgICJjdXJyZW5jeSI6IkVVUiIKICAgICAgICAgfSwKICAgICAgICAgImRlc2NyaXB0aW9uIjoiV3Jvbmcgb3JkZXIiLAogICAgICAgICAidHlwZSI6IlBBUlRJQUwiLAogICAgICAgICAiY3JlYXRlZERhdGUiOiIyMDIwLTAxLTI0VDEwOjA2OjEwLjk0NVoiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAgInJlZnVuZElkIjoiUkVGOTQyNDg0NzIzODIxNDE0IiwKICAgICAgICAgImV4dGVybmFsUmVmdW5kSWQiOiIxMjEvMDYvMjAxOCIsCiAgICAgICAgICJzdGF0dXMiOiJDT01QTEVURUQiLAogICAgICAgICAiYW1vdW50Ijp7CiAgICAgICAgICAgICJ2YWx1ZSI6MTA5Ljk5LAogICAgICAgICAgICAiY3VycmVuY3kiOiJFVVIiCiAgICAgICAgIH0sCiAgICAgICAgICJkZXNjcmlwdGlvbiI6Ildyb25nIG9yZGVyIiwKICAgICAgICAgInBhcnRuZXIiOnsKICAgICAgICAgICAgImNvbW1pc3Npb24iOnsKICAgICAgICAgICAgICAgImZlZSI6ewogICAgICAgICAgICAgICAgICAidmFsdWUiOjEuMjUsCiAgICAgICAgICAgICAgICAgICJjdXJyZW5jeSI6IkVVUiIKICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgIH0sCiAgICAgICAgICJ0eXBlIjoiRlVMTCIsCiAgICAgICAgICJjcmVhdGVkRGF0ZSI6IjIwMjAtMTEtMjVUMTU6MTQ6MzguMjI2WiIsCiAgICAgICAgICJib29rZWREYXRlIjoiMjAyMC0xMS0yNVQxNToxNTo1MC4xNDBaIgogICAgICB9CiAgIF0sCiAgICJwYWdpbmF0aW9uIjp7CiAgICAgICJmaXJzdCI6dHJ1ZSwKICAgICAgImxhc3QiOnRydWUsCiAgICAgICJjdXJyZW50UGFnZU51bWJlciI6MSwKICAgICAgImN1cnJlbnRQYWdlRWxlbWVudHNDb3VudCI6MiwKICAgICAgInBhZ2VTaXplIjoxMCwKICAgICAgInRvdGFsUGFnZXMiOjEsCiAgICAgICJ0b3RhbEVsZW1lbnRzIjoyLAogICAgICAicGFnZUxpbWl0RXhjZWVkZWQiOnRydWUKICAgfQp9.Q1ydhLIDwWM4WX_bISLiMvfSSvd7DtOvcXLhwFyygYs8vZVDVrTpGCZOHAY9wpfEc0DcAbPZfC-i3EX5hf7Z_D5RbmOzBV3oazWRKZNuf8WflGI2K8J--gJNwuJKUq01tqVab2WLKv_EF7_zybuP9SZmhgKYJnZbz0AIiDW3H4hmieRm6GLjImSXNphel-eg4q4dT83wRndnmxpFdu_lbUa5BiQn9MrEk0uHdOVVnqP8vtZcfvlfF8KGoEAyCn7vFZGMBNmyaUXtipd3PRiXyepgV4oKfUTUbpOYdSBrilUHvDrvhXHmX9Kx0g7SVOfHRrs3WDfXZe9telxnljARTg
Listę zwrotów można wyświetlić w Panelu sprzedawcy w sekcji zwroty lub wykorzystać poniższy zasób.
Zasób
GET <CINKCIARZ_PAY_HOST>/refunds
Zobacz adresy serwerów
Nagłówki
Nazwa | Wartość | Uwagi |
---|---|---|
Authorization | Bearer <access_token> |
Musi zawierać token dostępowy typu Bearer. Więcej informacji w Pobranie tokena dostępowego. |
Parametry zapytania
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
paymentIds | String | NIE | Identyfikatory płatności (parametr paymentIds musi być powielany w żądaniu np. /payments?paymentIds=PAY772237692548117&paymentIds=PAY815576576741391 ). |
refundIds | String | NIE | Identyfikatory zwrotów (parametr refundIds musi być powielany w żądaniu np. /payments?refundIds=REF192843325139567&refundIds=REF942484723821414 ). |
externalRefundId | String | NIE | Identyfikator zewnętrzny zwrotu. |
createdDateFrom | String | NIE | Data i czas utworzenia zwrotu od, zgodna z ISO 8601 format YYYY-MM-ddTHH:mm:ss.fffZ. |
createdDateTo | String | NIE | Data i czas utworzenia zwrotu do, zgodna z ISO 8601 format YYYY-MM-ddTHH:mm:ss.fffZ. |
bookedDateFrom | String | NIE | Data i czas zaksięgowania zwrotu od, zgodna z ISO 8601 format YYYY-MM-ddTHH:mm:ss.fffZ. |
bookedDateTo | String | NIE | Data i czas zaksięgowania zwrotu do, zgodna z ISO 8601 format YYYY-MM-ddTHH:mm:ss.fffZ. |
pageNumber | Number | NIE | Numer strony. |
pageSize | Number | NIE | Liczba elementów na stronie. |
sort | String | NIE | Kryteria sortowania. |
Wartość pola sort dla zwrotów
Istnieje możliwość sortowania po polach:
- createdDate
- bookedDate
- amount
W celu sortowania malejąco po dacie utworzenia zwrotu należy podać wartość: refundDate,DESC
.
Odpowiedź
Obiekt Response zawierający dane zwrotów
Nazwa pola | Typ | Wymagalność | Ograniczenia | Opis |
---|---|---|---|---|
data | Array | TAK | max. 100 elementów | Lista z elementami typu Refund. |
pagination | Pagination | TAK | Metadane zwróconej strony. |
Obiekt Refund zawierający szczegóły zwrotu
Nazwa pola | Typ | Wymagalność | Ograniczenia | Opis |
---|---|---|---|---|
refundId | String | TAK | max. 40 znaków | Identyfikator zwrotu w systemie Cinkciarz Pay. |
externalRefundId | String | NIE | max. 64 znaki | Identyfikator zwrotu w systemie Partnera. |
status | String | TAK | max. 20 znaków | Status zwrotu. Wartości zgodne z cyklem życia zwrotu. |
amount | Amount | TAK | Kwota zwrotu wraz z walutą. | |
description | String | TAK | min. 1 znak max. 128 znaki | Opis zwrotu. |
partner | Partner | NIE | Dane dotyczące partnera. | |
type | String | TAK | max. 20 znaki | Typ zwrotu. |
createdDate | String | TAK | max. 128 znaków | Data i czas utworzenia zwrotu zgodna z ISO 8601 format YYYY-MM-ddTHH:mm:ss.fffZ. |
cancelledDate | String | NIE | max. 128 znaków | Data i czas anulowania zwrotu zgodna z ISO 8601 format YYYY-MM-ddTHH:mm:ss.fffZ. |
bookedDate | String | NIE | max. 128 znaków | Data i czas zaksięgowania zwrotu zgodna z ISO 8601 format YYYY-MM-ddTHH:mm:ss.fffZ. |
Pole type
może przyjmować wartości:
Wartość | Opis |
---|---|
PARTIAL | Zwrot częściowy |
FULL | Zwrot pełny |
Obiekt Partner zawierający informację dotyczące partnera
Nazwa pola | Typ | Wymagalność | Ograniczenia | Opis |
---|---|---|---|---|
commission | Commission | NIE | Opłaty poniesione przez Partnera. |
Obiekt Amount zawierający kwotę i walutę zwrotu
Nazwa pola | Typ | Wymagalność | Ograniczenia | Opis |
---|---|---|---|---|
value | Number | TAK | Kwota. Max. 19 znaków ze wsparciem dla 2 miejsc po separatorze dziesiętnym (jako separator dziesiętny używana jest kropka (.). Liczba miejsc po separatorze dziesiętnym zależy od waluty i została podana w Lista wspieranych walut. | |
currency | String | TAK | 3 znaki | Kod waluty zgodny z ISO 4217. Dozwolone kody walut zdefiniowane zostały w Lista wspieranych walut. |
Obiekt Commission zawierający informację o pobranych prowizjach zwrotu
Nazwa pola | Typ | Wymagalność | Ograniczenia | Opis |
---|---|---|---|---|
fee | Fee | TAK | Kwota prowizji wraz z walutą. |
Obiekt Fee zawierający wartość prowizji zwrotu
Nazwa pola | Typ | Wymagalność | Ograniczenia | Opis |
---|---|---|---|---|
value | Number | TAK | Kwota. Max. 19 znaków ze wsparciem dla 2 miejsc po separatorze dziesiętnym (jako separator dziesiętny używana jest kropka (.). Liczba miejsc po separatorze dziesiętnym zależy od waluty i została podana w Lista wspieranych walut. | |
currency | String | TAK | 3 znaki | Kod waluty zgodny z ISO 4217. Dozwolone kody walut zdefiniowane zostały w Lista wspieranych walut. |
Obiekt Pagination zawierający metadane zwróconej strony z danymi zwrotów
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
first | Boolean | TAK | Określa, czy zwrócone dane znajdują się na pierwszej stronie. |
last | Boolean | TAK | Określa, czy zwrócone dane znajdują się na ostatniej stronie. |
currentPageNumber | Number | TAK | Określa numer zwróconej strony. |
currentPageElementsCount | Number | TAK | Określa liczbę elementów na zwróconej stronie. |
pageSize | Number | TAK | Określa wielkość strony. |
totalPages | Number | TAK | Określa liczbę dostępnych stron. |
totalElements | Number | TAK | Określa liczbę dostępnych elementów. |
pageLimitExceeded | Boolean | TAK | Określa, czy limit stron został osiągnięty. |
Błędy API
Metoda GET /refunds może zwrócić jedynie błędy techniczne.
Powiadomienia zwrotu
Obiekt wysyłany na adres notificationUrl podany przez Partnera:
{
"refundId": "REF4589632145896",
"paymentId": "PAY78349563479853",
"externalPaymentId": "121/06/2018",
"code": "COMPLETED",
"type": "REFUND"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJyZWZ1bmRJZCI6IlJFRjQ1ODk2MzIxNDU4OTYiLCJwYXltZW50SWQiOiJQQVk3ODM0OTU2MzQ3OTg1MyIsImV4dGVybmFsUGF5bWVudElkIjoiMTIxLzA2LzIwMTgiLCJjb2RlIjoiQ09NUExFVEVEIiwidHlwZSI6IlJFRlVORCJ9.Mv-U08X_UOtLzt6V5jrPDJWXXYH--H9K3jdjCg9gTAyqg3gDqAJtpe2J0DxvqjtY-qV4HjR94nmcAuVyeVTQMvD4jiBYERNkPH4kUVsZ7bGy9hkvUbFTb9ijD62ZYLQHwXERqUpcEHEX_v_RttvBjrBJ0rTbHoyv-0CMjE3pUl9Oy8tFY2btwcXDWjeQ3PUuBOefscf8-n12LR7BkDU_Alzv_ZI7L6cUMbRby5vkz-Lpi5-aQ7J1YMWthTkxSQc0lLfxBT6GatOiFx1rnH7CyKvDlrH_sCd_P9ggs-3JfqscIBMozvqkaWCgW9nAzfeLJKOylHYU51KYTc8H65nXtQ
Nagłówki żądania:
Content-Type: application/json
Content-Type: application/jose+json
Po zleceniu zwrotu przez Partnera realizowany jest asynchroniczny proces zwrotu. W ramach procesu wysyłane są powiadomienia o zmianie statusu zwrotu na adres notificationUrl podany przez Partnera przy tworzeniu zwrotu lub przy konfiguracji punktu płatności. Powiadomienia są wysyłane metodą POST oraz mogą być dostarczone do systemu Partnera w losowej kolejności. Wynika to z faktu, iż mogą występować opóźnienia pomiędzy systemem Cinkciarz Pay, a systemem Partnera lub system może być niedostępny w momencie wysyłki powiadomienia. Jeżeli Partner otrzyma jedno z powiadomień kończących proces zwrotu to nie powinien reagować na inne powiadomienia, które będą dostarczane do jego systemu dla danego zwrotu.
Poniżej znajduje się opis parametrów komunikatu, który jest wysyłany do Partnera.
Obiekt RefundStatus
Nazwa pola | Typ | Wymagalność | Ograniczenia | Opis |
---|---|---|---|---|
refundId | String | TAK | max. 40 znaków | Identyfikator zwrotu w systemie Cinkciarz Pay. |
externalRefundId | String | NIE | max. 64 znaki | Identyfikator zwrotu w systemie Partnera. |
paymentId | String | TAK | max. 40 znaków | Identyfikator powiązanej płatności w systemie Cinkciarz Pay. |
externalPaymentId | String | TAK | max. 64 znaki | Identyfikator powiązanej płatności w systemie Partnera. |
code | String | TAK | max. 14 znaków | Status zwrotu. |
type | String | TAK | max. 7 znaków | Typ powiadomienia. Dla zwrotu przymuje zawsze wartość REFUND . |
maxRefundAchieved | Boolean | NIE | Czy jest możliwe utworzenie następnego zwrotu dla tej samej płatności. | |
additionalParameters | Object | NIE | max. 1024 znaki | Dodatkowe parametry zdefiniowane w żądaniu utworzenia zwrotu. |
Pole code może przyjąć wartości z tabeli poniżej (odpowiadają one statusom zwrotu):
Nazwa statusu | Opis |
---|---|
NEW | Zwrot został utworzony. |
PROCESSING | Zwrot jest przetwarzany. |
PENDING | Zwrot oczekuje na środki pieniężne. |
COMPLETED | Zwrot został zrealizowany. |
CANCELLED | Zwrot został anulowany. |
Błędy API - techniczne
Opis błędów zwracanych przez API Cinkciarz Pay dla wszystkich udostępnianych zasobów.
400 Bad Request
Nagłówki odpowiedzi:
HTTP/1.1 400 Bad Request
Content-Type: application/problem+json
HTTP/1.1 400 Bad Request
Content-Type: application/jose+json
Odpowiedź:
{
"title": "Bad Request",
"status": 400,
"detail": "Unexpected character ('f' (code 102)): was expecting comma to separate Object entries"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0aXRsZSI6IkJhZCBSZXF1ZXN0Iiwic3RhdHVzIjo0MDAsImRldGFpbCI6IlVuZXhwZWN0ZWQgY2hhcmFjdGVyICgnZicgKGNvZGUgMTAyKSk6IHdhcyBleHBlY3RpbmcgY29tbWEgdG8gc2VwYXJhdGUgT2JqZWN0IGVudHJpZXMifQ.Ou8rJviQ9T2Ebj9Q7Wwza0T4G6EIFBRbWCIuEX8bBjVwW8OL_hvqYYC_4lbAMkp2Si6rlzp373Pj4wlkxxX0hkub91wsMDDUHDkEysOXJY9jOGoUOgHmZTP7JrvGdEZcN8DtUulTn55s_rNxSO66-IKYoOOcFwEAL_0zJ4aDb8mXdcY_gmgLyVnq4EKJL2lBai88UG63mRayWiiIWR5I-UFvsQ8X0wRSrEzJwzz7zOl-DeKoku5dZTIwqtPOksy4BMJXDFLlcDg5MvIFa40yO1M8Hn8SN2bxMCCgo3NkzXC4RZ3lgAHyyvpLdHsJdfiU1iqz8YhgeV1MuxqaJ-sCEQ
Zwracany, gdy żądanie ma nieprawidłową strukturę.
401 Unauthorized
Nagłówki odpowiedzi:
HTTP/1.1 401 Unauthorized
Content-Type: application/problem+json
HTTP/1.1 401 Unauthorized
Content-Type: application/jose+json
Odpowiedź:
{
"title": "Unauthorized",
"status": 401
}
eyJhbGciOiJSUzI1NiIsImtpZCI6Il8yNzVUd3dYOVhtaVotak1wLTJwNDZ0SUsyZE0tR2xWM3dYTU1GUTM5UUEifQ.ewogICAgInRpdGxlIjogIlVuYXV0aG9yaXplZCIsCiAgICAic3RhdHVzIjogNDAxCn0K.wvj-U9YSpJlo5bG35qnBW6N-EGMYw2kURvibSSJbpl3dtVhHlQCdQQ9vicDUhrhTXrLd39DHg-r1Zyhj6b6WFmQvteci-bRu-kU97K0tiTqbWY2TeK9BD9Zbf5pI0U4bFqBAddK4nm2WGYGwsDBO2qeFKSLcVL5UGHowGwortl7DCsscIBjtsjUq_eNClwXsAPPt9UaFLZSXNf4WIy62LOl3ZCvFx-lBzYaKxC4cCewIznFo33epLJxE35xoFGu_3lcI2u1JFG5PUi7W5RKHmEQhnGwaobRkJ0mdAG76Ut-X8c7WoEuCk7E5MDeEoDf-BcISgVfn-lIyY5eGsZs4nQ
Wskazuje, że żądanie nie zostało przetworzone, ponieważ brakuje danych uwierzytelniających dla zasobu docelowego lub są one błędne.
403 Forbidden
Nagłówki odpowiedzi:
HTTP/1.1 403 Forbidden
Content-Type: application/problem+json
HTTP/1.1 403 Forbidden
Content-Type: application/jose+json
Odpowiedź:
{
"title": "Forbidden",
"status": 403
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0aXRsZSI6IkZvcmJpZGRlbiIsInN0YXR1cyI6NDAzfQ.Wwp9fE54f3KclIVvGVdU3ZpUGZ4qZtC4PTyLXyAJRdqlDTcyDjIJ1ccGVKLv1YYdd_TZewiVqMR_iKCMeAoKlrFq8qsPH8NRXfJ4LCOopfF9i9zdfLkNXIVJkqm_1H-qsU9AvorPSB1mqNKy4MYfj5k-KWN559yFagBL4P2shwR3Ee0_cDy8A11fbR_8jzs5nU-hWOFR5qME7QG7leEM9ZRuna2ogRShEhXMqbThRnbDLU73uVWPmlj_5hJ8FBDjl_v5KrUBOKDFp2Hdq1t9sjzqvJPzuKYr_J6rWLa3FTlOv6ew4RuvWDgUTCJW_xaQMKSC181OgtSuYcUlH7XISg
Zwracany, gdy klient nie posiada dostępu do żądanego zasobu.
405 Method Not Allowed
Nagłówki odpowiedzi:
HTTP/1.1 405 Method Not Allowed
Content-Type: application/problem+json
HTTP/1.1 405 Method Not Allowed
Content-Type: application/jose+json
Odpowiedź:
{
"title": "Method Not Allowed",
"status": 405,
"detail": "Request method 'PUT' not supported"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0aXRsZSI6Ik1ldGhvZCBOb3QgQWxsb3dlZCIsInN0YXR1cyI6NDA1LCJkZXRhaWwiOiJSZXF1ZXN0IG1ldGhvZCAnUFVUJyBub3Qgc3VwcG9ydGVkIn0.HScFAydfT_EHZwvbkT_izwBUAlb3CCt_X6nhs_XQxkHrbpQL1hDg5JrcxYGsC5O14yXgnwUMxKlc7YO66X1j9CZAbRxL5Hi95NKMJZuh0BM1geweQYGvBbrRrd6GylK-4Me5Nllr-nJkry1h7yPlYrbVo1KBVA6gT88j9yJuWhr7OWfW0-2LbQlHEwYvhr9Df0b6Yr1noqOV7Wb7sO8yvqSi9S5oCqVbsFPqRr8Pz7H41m7qcVKM9sTUlN82F5AFMI-jk6gqu3zcvJPdXcQNmLVn7nVXIItfPfvr0wyGCKHECq--d5bhBjL-1ARUv4rz8A0FgsINqTyz25JqHwQ_YA
Zwracany, gdy wywoływana metoda na zasobie jest inna niż zdefiniowana.
409 Conflict
Nagłówki odpowiedzi:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json
HTTP/1.1 409 Conflict
Content-Type: application/jose+json
Odpowiedź:
{
"title": "Conflict",
"status": 409,
"detail": "Currency from paymentData.totalAmount is different than the currency from products"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0aXRsZSI6IkNvbmZsaWN0Iiwic3RhdHVzIjo0MDksImRldGFpbCI6IkN1cnJlbmN5IGZyb20gcGF5bWVudERhdGEudG90YWxBbW91bnQgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGN1cnJlbmN5IGZyb20gcHJvZHVjdHMifQ.I9UnyltseJc-47VPDzwrRQ-i1rL1Y_y6mNAI7BEOEgkQ2rH8cKGE1oTeNI0wqbVaTCXYiCE95wDVFHJz4UGbwZWthMpHEt6IGcPj-OrxDREDnRgTPfyIRkTLIbud8BSHaQvdpSgJBneGe5BSIRDeu0Mo9h9ATo0b5lltQq_R4bb9zpAni6xQ2oO-XI2blPx2A2OvHr89D96gdMVUa6pWI_HIzixDsUMTXbDwO0DlC6jCLMv81_v4VWZuUMQ9dmiP0PsnodOKLZkxKc03X5Ymnfz6nrMdqZKiWdBK7StwReucW38itcxWsiKyZ3oMYzFKYWUdWQNH3pGoghzBZcbGNg
Zwracany, gdy wystąpią błędy walidacji biznesowej.
415 Unsupported Media Type
Nagłówki odpowiedzi:
HTTP/1.1 415 Unsupported Media Type
Content-Type: application/problem+json
HTTP/1.1 415 Unsupported Media Type
Content-Type: application/jose+json
Odpowiedź:
{
"title": "Unsupported Media Type",
"status": 415,
"detail": "Content type 'application/x-www-form-urlencoded' not supported"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0aXRsZSI6IlVuc3VwcG9ydGVkIE1lZGlhIFR5cGUiLCJzdGF0dXMiOjQxNSwiZGV0YWlsIjoiQ29udGVudCB0eXBlICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnIG5vdCBzdXBwb3J0ZWQifQ.Q7ri8IKmShewu9w2jNCZykGyP51lX-DoExwEbrcjwMjXrIwFRhiVNALRMySwULfoTOnIfk9fq7Je5Txuv-ftM-JSJ0Dif_rrRfcLigRUm0XBPzKLAl675uG4pRSvj5ZtJ9g98ti_zLbarSiYTjwouGqgKmsfz_K9ZwdNM8NCnB3X7G9z0CKchYRtFemprULYRYxBVymFr6on9mkeNsPc72q9TeQB0hXVmLTaNVGro_0yae7_avL0AOjKwY5AXrxCBRxuyhcYsSl_i2PJF5mGbitZFoPNidL16eL4xovVA-mMcuOKldEUpFilvAOCHrbCggAr3BQpauZVyiokRqi5Fw
Wysłana zawartość żądania jest niewspieranego typu.
500 Internal Server Error
Nagłówki odpowiedzi:
HTTP/1.1 500 Internal Server Error
Content-Type: application/problem+json
HTTP/1.1 500 Internal Server Error
Content-Type: application/jose+json
Odpowiedź:
{
"title": "Internal Server Error",
"status": 500
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0aXRsZSI6IkludGVybmFsIFNlcnZlciBFcnJvciIsInN0YXR1cyI6NTAwfQ.Lm349V3_rGQ-iW0YnARC6BZxhP8duh2NurOR_fyEtOp4EIc70PGupAr_A81gerc85ixEtS3Ux0DVZPxWIjbA8l9VyUk48fhpLPvC6hYk5b79fZ4YmHtkDdICpP0OT9YKeZhx3Htrhmn7BsP-cFLNudV_shod0GtGHa-ONBx56J4iV37EzQH4atThkusHiRW4p8NzuwRch9I-hnS26aR3KhDmiWQl0xsKDYrPnOu3-45vufpfl4qZ0gPDhsKGgsts9zVI1GONskf5-GJSLYLRstq39dxNGv_ZLRQ3IU1kxQHW4S1CmN8fbchxeA619WCh9NUdZOacu3jTXpBZlICX9w
Wystąpił nieoczekiwany błąd.
503 Service Unavailable
Nagłówki odpowiedzi:
HTTP/1.1 503 Service Unavailable
Content-Type: application/problem+json
HTTP/1.1 503 Service Unavailable
Content-Type: application/jose+json
Odpowiedź:
{
"title": "Service Unavailable",
"status": 503
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0aXRsZSI6IlNlcnZpY2UgVW5hdmFpbGFibGUiLCJzdGF0dXMiOjUwM30.C2_7xbFp0VJu141nO0fr5cUHKOipLic6XzY7_7Jqu0G8UkyjdCq4W8spggDsLIycfoDpzeJYuGkuIEJEK6Rh2phPiCBaphDHYmTYJPhy3lTPlxElIPya4Ml8WCr9Hf3-zec5NlOzCZDJRUcysjQOo4eI15LB--0YU2Fo4au7metxuZ83N71j0o-DJha083Em3VnmWNH4QE92983EUYPnEP0Y2jBjI-cEEZHgGe1ADzon7wrY60WIOKvvZ2WlDiWb_-cs6aLtLcNYAs5Fw1IB9L6OlCKuTmWM0OFwpeTvpQUCt1UGT4GGZw2rYBsgxsSvyUJOPdyskrFrIzmK7ypJsA
Serwis nie jest dostępny.
Błędy API - biznesowe
Opis błędów zwracanych przez API Cinkciarz Pay, których typ jest zdefiniowany przez klucz type.
invalid-jws
Nagłówki odpowiedzi:
HTTP/1.1 400 Bad Request
Content-Type: application/problem+json
HTTP/1.1 400 Bad Request
Content-Type: application/jose+json
Odpowiedź:
{
"type": "invalid-jws",
"status": 400,
"title": "Invalid JWS",
"validation-errors": [
{
"message": "Header 'kid' is missing",
"message-key": "KidHeaderMissing",
"context-key": "jws"
}
]
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoiaW52YWxpZC1qd3MiLCJzdGF0dXMiOjQwMCwidGl0bGUiOiJJbnZhbGlkIEpXUyIsInZhbGlkYXRpb24tZXJyb3JzIjpbeyJtZXNzYWdlIjoiSGVhZGVyICdraWQnIGlzIG1pc3NpbmciLCJtZXNzYWdlLWtleSI6IktpZEhlYWRlck1pc3NpbmciLCJjb250ZXh0LWtleSI6Imp3cyJ9XX0.ZiOPshS9m_DC_ZqKC-PZ-1EdCKcMXTtkuBzhTuCMKRBBLEMZ2B2e5kWxA2b8MLHrGOVeHfbePqFBozf9jLnoP7b0l_zSUrVcaMBvODwQ_jKjBai1GRH6vRDS16NHSFfnup0HTu2mX5RWF21FfFpoO3DDOGx17ngKPSte_5j1O3t-iZGvmZoxG1VDH3WCXmp0dPBmuq23Orsda-1hNcvM2Olz9sFFK7jQDWA9H-Pf0Su1XJrC9QnQCeHojlQZ0MsGAv0lQc59Pl7qUYgNCu3hIT7DwHvdaQwR2DETroEJuV7n4b6SiP5TLHbi94C7kMEwCB-T9WtERTsTojD4id0jPg
Zwracany, gdy format przesłanego komunikatu JWS jest nieprawidłowy:
- brak nagłówka
kid
(message-key: KidHeaderMissing
), - brak nagłówka
alg
(message-key: AlgHeaderMissing
), - nagłówek
alg
zawiera algorytm, który nie jest wspierany (message-key: UnsupportedAlgorithm
).
invalid-pem
Nagłówki odpowiedzi:
HTTP/1.1 400 Bad Request
Content-Type: application/problem+json
HTTP/1.1 400 Bad Request
Content-Type: application/jose+json
Odpowiedź:
{
"type": "invalid-pem",
"status": 400,
"title": "Can not read public key from PEM",
"detail": "Can not read public key from PEM"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoiaW52YWxpZC1wZW0iLCJzdGF0dXMiOjQwMCwidGl0bGUiOiJDYW4gbm90IHJlYWQgcHVibGljIGtleSBmcm9tIFBFTSIsImRldGFpbCI6IkNhbiBub3QgcmVhZCBwdWJsaWMga2V5IGZyb20gUEVNIn0.gD_vJFnDZOP3TyWrT7qZcTMlMMq4oExAsglE6gKwjmXdawHTYSatavxBW3Xw6P5w8JPCtyS_JtERg5gLPfrZiu3wfgxC27cLN33kIyfT4HH4OpuNTSpQyhmf7zYksIfXSsUFsFLX_FbFK9-hLbH8iUj6ryJOUj4hXHxSAUPtl45z5yqRyWADC_wQDmYzuoSW_ULzTEBYnQkt63950AODXtJHxDskaMIYFfzKoWIPiSRDdluPfTALua4iN8rKqNL9RSaMHx0UKX3wTJk1qaQDicpVkXvTydpgX5hnXwaPsd38lSSyMh1CR0Vn5aZmLssO21kwKhuyacmHOwU6imljdQ
Zwracany, gdy wysyłany klucz publiczny jest nieprawidłowy.
invalid-public-key
Nagłówki odpowiedzi:
HTTP/1.1 400 Bad Request
Content-Type: application/problem+json
HTTP/1.1 400 Bad Request
Content-Type: application/jose+json
Odpowiedź:
{
"type": "invalid-public-key",
"status": 400,
"title": "Invalid public key",
"detail": "Invalid public key"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoiaW52YWxpZC1wdWJsaWMta2V5Iiwic3RhdHVzIjo0MDAsInRpdGxlIjoiSW52YWxpZCBwdWJsaWMga2V5IiwiZGV0YWlsIjoiSW52YWxpZCBwdWJsaWMga2V5In0.SIWrgXX6OuvFsjH-10ON59jO1X6SJrBKzyyJj0Qp_sN4tkHn2kP8PXKvIBJkxwyfAKvTtOinq5PwivEHP8oyVm_JpMUtgkGRHGzU91LGzn-SnbqT5oydzfBwQWgHevvgZ3bGeSo72F2L3Ahaq0UmtID9G-mx8otoW6iU2JArhV-0LfZn1bwzxJydiLie7AFBMi4ekJ6ksewL5RPZRgPEs_BR-sPapbym4eL51vr70n8Vbe3O_PJcEbrYml0yx4BXqdDI_0NDsU7JoV6aekOyoU_9s0PjRqtKqa-Oz5C-wyXwtr-4mIy23AtEZMi8AS0loWnoFpPbX7T4E6PM1PMC2A
Zwracany, gdy podczas dodawania nowego klucza publicznego, klucz będzie niepoprawny.
sample-text-signature-not-match
Nagłówki odpowiedzi:
HTTP/1.1 400 Bad Request
Content-Type: application/problem+json
HTTP/1.1 400 Bad Request
Content-Type: application/jose+json
Odpowiedź:
{
"type": "sample-text-signature-not-match",
"status": 400,
"title": "Sample text signature not match",
"detail": "Sample decoded text must have signed with SHA-256 signature"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoic2FtcGxlLXRleHQtc2lnbmF0dXJlLW5vdC1tYXRjaCIsInN0YXR1cyI6NDAwLCJ0aXRsZSI6IlNhbXBsZSB0ZXh0IHNpZ25hdHVyZSBub3QgbWF0Y2giLCJkZXRhaWwiOiJTYW1wbGUgZGVjb2RlZCB0ZXh0IG11c3QgaGF2ZSBzaWduZWQgd2l0aCBTSEEtMjU2IHNpZ25hdHVyZSJ9.aBsf1MOmQc4eadXoaBQG7Pj2klmwNUfC1CFbBYc_1-krZOIXhBBff6lLa9ozDEqQeVh1CEnNPQ_ZxQzsfNYK4-wUIiE1F1ar1B29YQdb7YFqw9vAct3t8Tc5SfMO7LrbkpG6gSI1ox6tUFL9g6atwOwZF33kkPME4n5pKyxbBL2fK5hElcOqITJrmJnMxmZAOYPkgoj_dwtuK7PDREKO_E9YdXF8GBibCJnTJFnovXdfLIYfM4NS3pSgWUHFysLZS9Y4RxLJff9rGfXhX0i3KjxbLFhHgn_tBrKfgfCd7ysAb2aTMqAba15ULNPBNjRG8k4B-zpKGbVRRlSF5BFDhg
Zwracany, gdy podczas dodawania nowego klucza publicznego, przykładowa wiadomość w polu encodedText została podpisana z wykorzystaniem innej sygnatury niż SHA-256.
validation-error
Nagłówki odpowiedzi:
HTTP/1.1 400 Bad Request
Content-Type: application/problem+json
HTTP/1.1 400 Bad Request
Content-Type: application/jose+json
Odpowiedź:
{
"type": "validation-error",
"status": 400,
"title": "Request parameters are not valid",
"detail": "Property 'category1' with value 'E_COMMERCE' is unknown for object 'PaymentData'",
"validation-errors": [
{
"message-key": "unknown-property",
"context-key": "category1",
"message": "Unsupported 'category1' property"
}
]
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoidmFsaWRhdGlvbi1lcnJvciIsInN0YXR1cyI6NDAwLCJ0aXRsZSI6IlJlcXVlc3QgcGFyYW1ldGVycyBhcmUgbm90IHZhbGlkIiwiZGV0YWlsIjoiUHJvcGVydHkgJ2NhdGVnb3J5MScgd2l0aCB2YWx1ZSAnRV9DT01NRVJDRScgaXMgdW5rbm93biBmb3Igb2JqZWN0ICdQYXltZW50RGF0YSciLCJ2YWxpZGF0aW9uLWVycm9ycyI6W3sibWVzc2FnZS1rZXkiOiJ1bmtub3duLXByb3BlcnR5IiwiY29udGV4dC1rZXkiOiJjYXRlZ29yeTEiLCJtZXNzYWdlIjoiVW5zdXBwb3J0ZWQgJ2NhdGVnb3J5MScgcHJvcGVydHkifV19.FR68VXiW-UunA7ttQgb02acaB2Klk1nP6aTTstQ2ojJALbQZac7HcJdzhee0W7s3sUTIE-aUFz2mtaIQVtNX-wXGTZ_fBoORb8MGZiddeQAcq2AnCW1O8KX5R2hZzoj_25HzF3CLHHHOGKBHLPbVw0YIqMoCIXLJuNyP63zvLg8rJNUirnD-_Th_yiH4izEWZwsAlQlMW6AECIYfxjg7KEZHEdirtg5wzUZTFLHMIaO3PiJCcFxDx2kuSzGH7QhUv2YfRttsERmZWTTI-MEfmihyqNe_AWR9Eq6Pd4Pcg1sjwSNcpBkeRATg0P-GC63KoZADSi9e7pv5vJQSGKbpjw
Zwracany, gdy podane parametry żądania są nieprawidłowe.
payment-not-found
Nagłówki odpowiedzi:
HTTP/1.1 404 Not Found
Content-Type: application/problem+json
HTTP/1.1 404 Not Found
Content-Type: application/jose+json
Odpowiedź:
{
"type": "payment-not-found",
"title": "Payment not found",
"status": 404,
"detail": "Payment identified by myGr2rDrbreYhLwTxmZes1J6qTqXcVZsSeMB3elwovvscmnChm token not found"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoicGF5bWVudC1ub3QtZm91bmQiLCJ0aXRsZSI6IlBheW1lbnQgbm90IGZvdW5kIiwic3RhdHVzIjo0MDQsImRldGFpbCI6IlBheW1lbnQgaWRlbnRpZmllZCBieSBteUdyMnJEcmJyZVloTHdUeG1aZXMxSjZxVHFYY1Zac1NlTUIzZWx3b3Z2c2NtbkNobSB0b2tlbiBub3QgZm91bmQifQ.TxMbv4nbfWRX5LrWOBCpTU7tHm-r5Hk2nzYL9MONAcPCPfYuO9MTr0dqdmCGy6W0fso7Ka_KFgFUDI5IMD6K_cu0fmQEfHsfXWrMTjENWbDmBS5varbrKtwRpjkHcND--Jegsgo5l6ToHC9beqY-DZn0hVg8dzAPS2y4J0e1UwEtUcAOQsCIM1ASrK-t0oO-j9Oi4K6-a1yEU9m_GmAIVV7hSG2xOmGQUwn6ATdPSRWn83mbnJbOqPESsn4Mqye4IM53i7aKgw5tOKvez3NgCJ20sQHraHAndfqoSc4vpRHqcGEvRcuMnknv2qaXvSvosERPxWocvH_YajqGj5C7CQ
Identyfikator płatności jest niepoprawny.
payment-expired
Nagłówki odpowiedzi:
HTTP/1.1 410 Gone
Content-Type: application/problem+json
HTTP/1.1 410 Gone
Content-Type: application/jose+json
Odpowiedź:
{
"type": "payment-expired",
"title": "Payment expired",
"status": 410,
"detail": "Payment with identifier PAY715037422182587 expired"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoicGF5bWVudC1leHBpcmVkIiwidGl0bGUiOiJQYXltZW50IGV4cGlyZWQiLCJzdGF0dXMiOjQxMCwiZGV0YWlsIjoiUGF5bWVudCB3aXRoIGlkZW50aWZpZXIgUEFZNzE1MDM3NDIyMTgyNTg3IGV4cGlyZWQifQ.GCuNAcmY907pl4Q1ge629UencSPpTxrw_vDFnqwhhgJo46cuvX6YicEyrq5rtC-OBOvkb3S9ZKjFqerXRTFaMbJPKm6ip-1Xjqjc90xizFSu1hSNuJWSD9JrhqXyrKZWz9QHvHb5mQZW5tDItior_DekOtQzZzBSBEd1b403UG8aHHNbunlbwTM6IoXQbX8o1qXHfRqqqgKGumw1b6zprI1xG2rFD6CUMUAzhu6SGyk_8nx3euKG_EosVr-TQ_m42r9s6F1zL9l9l-TouHqe1Y0PkM1WZqmWnjtZZ7P0KfQf3mm6pNIBEYK_F2370lGNgSJe7RYsIxpRxr03VOy4SA
Token płatności wygasł lub płatność została już zatwierdzona.
point-of-sale-not-found
Nagłówki odpowiedzi:
HTTP/1.1 404 Not Found
Content-Type: application/problem+json
HTTP/1.1 404 Not Found
Content-Type: application/jose+json
Odpowiedź:
{
"type": "point-of-sale-not-found",
"title": "Point of sale not found",
"status": 404,
"detail": "Point of sale with identifier POS458963214589658 not found"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoicG9pbnQtb2Ytc2FsZS1ub3QtZm91bmQiLCJ0aXRsZSI6IlBvaW50IG9mIHNhbGUgbm90IGZvdW5kIiwic3RhdHVzIjo0MDQsImRldGFpbCI6IlBvaW50IG9mIHNhbGUgd2l0aCBpZGVudGlmaWVyIFBPUzQ1ODk2MzIxNDU4OTY1OCBub3QgZm91bmQifQ.edVVxd62DAqXQp55GKTGQx1hIZQXvUhYBVVe_ADlruRnGKCPUDvu-LN3yit5QCuqauYN82Q4e60hiI3ImUxxIFboI56l4hf4r0hmgMSzljfbvpCHvtdfAAAPuf2NQgRtN8Ftxmnr2I21-OSiGv1pNjl0iT_FkkULws2MJKWZvPcWgFiEXiwPPcK9IIaIEVc-Wi-RnH1vYUzzC-EDXVexDUWOZ9wxon4pwKVj-drUC2jVDYmsUOm60uqFKMacIL_VozqlZni-InD-oZxbB4ZmwZm7qY0FMBjx7lhxv0NsRxvN7SXjqOOCoUKL-ZsL8t6wdBK056ymq13sFzdMtuv0iQ
Identyfikator punktu płatności jest niepoprawny.
store-not-found
Nagłówki odpowiedzi:
HTTP/1.1 404 Not Found
Content-Type: application/problem+json
HTTP/1.1 404 Not Found
Content-Type: application/jose+json
Odpowiedź:
{
"type": "store-not-found",
"title": "Store not found",
"status": 404,
"detail": "Store with identifier STR458963125698745 not found"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoic3RvcmUtbm90LWZvdW5kIiwidGl0bGUiOiJTdG9yZSBub3QgZm91bmQiLCJzdGF0dXMiOjQwNCwiZGV0YWlsIjoiU3RvcmUgd2l0aCBpZGVudGlmaWVyIFNUUjQ1ODk2MzEyNTY5ODc0NSBub3QgZm91bmQifQ.OPcCLDrHeWZmNRc5jbY0AW1vOrcuPWN4JHFOkJ_12pydWYlgQV4FWUkmvVIjSlGsIbUm1lcEUm2U0dKRNAYMwJStRLnG-UJkEOCogeHuPavElP0fg0tHbk-hxtxSaqqHndekjwni01aTwYepxG52OyPTJTDuUCVXASZy7LVl2zrzFIhZalnfbHBEDNrcsD0faMShmcSuB78ekIQwRYQpGguO_WhNd0E2gv6Txjh5QnpnE-FxHo4D14pZzF7HR5j1WZOBcaRj9qvPdtLhbbTqHicBfAmFnRC9uHEMjVSiRf3rJuzckvhjjz3lLoaC0XezZye7yP7-Lv2VGFxAU6WuGQ
Identyfikator sklepu powiązanego z punktem płatności jest niepoprawny.
public-key-already-revoked
Nagłówki odpowiedzi:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json
HTTP/1.1 409 Conflict
Content-Type: application/jose+json
Odpowiedź:
{
"type": "public-key-already-revoked",
"title": "Public key already revoked",
"status": 409,
"detail": "Client public key with kid lpSoenUSsyxPtZlkP3tGLH9iPLZn1L4zf0G9jUhX3zQ already revoked"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoicHVibGljLWtleS1hbHJlYWR5LXJldm9rZWQiLCJ0aXRsZSI6IlB1YmxpYyBrZXkgYWxyZWFkeSByZXZva2VkIiwic3RhdHVzIjo0MDksImRldGFpbCI6IkNsaWVudCBwdWJsaWMga2V5IHdpdGgga2lkIGxwU29lblVTc3l4UHRabGtQM3RHTEg5aVBMWm4xTDR6ZjBHOWpVaFgzelEgYWxyZWFkeSByZXZva2VkIn0.b8ynD7Vp2ShxJf6O2LAgat5JhEa-mdk7t0bHxCnWCG2RBkdo2LGPjogKWk850X9RBAHzCISOHgOiRu8zOKJKd5DlblgJeYSWhvpYXnt2H0vNUXkMst10MaWm06K0KUAVHATrK9FR0aloqPqcTSeklLjyGrNu4sRG3G_dJWNYH_s_IUCwUH7fAK050sGwCxyybNHQ0rZ0O3sozxpMZaaF0tYc7nLgr6ZiyDeFIdd9eC6SyFGNcuzEFG1c4G9ZiYjiBwRMAwu75dmyN-cRM2nJvHMNJ16CK8C4fOcPwY2ZXrjutdBejDAjhiRuGcXXFcEA1ydAdX8oOhpJTKGw-21Y-A
Zwracany, gdy klucz użyty do weryfikacji podpisu został odwołany.
public-key-is-not-activated
Nagłówki odpowiedzi:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json
HTTP/1.1 409 Conflict
Content-Type: application/jose+json
Odpowiedź:
{
"type": "public-key-is-not-activated",
"title": "Public key is not activated",
"status": 409,
"detail": "Client public key with kid lpSoenUSsyxPtZlkP3tGLH9iPLZn1L4zf0G9jUhX3zQ is not activated"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoicHVibGljLWtleS1pcy1ub3QtYWN0aXZhdGVkIiwidGl0bGUiOiJQdWJsaWMga2V5IGFscmVhZHkgaXMgbm90IGFjdGl2YXRlZCIsInN0YXR1cyI6NDA5LCJkZXRhaWwiOiJDbGllbnQgcHVibGljIGtleSB3aXRoIGtpZCBscFNvZW5VU3N5eFB0WmxrUDN0R0xIOWlQTFpuMUw0emYwRzlqVWhYM3pRIGlzIG5vdCBhY3RpdmF0ZWQifQ.Mb_Naf5LCuvvUpEmCU1nt4sCT9KFnPZcwl3Zq1fnT0Zu0vOOqyOGhAiYA69VxwkhZ170FHA3L6a_56qNx4sNjL9V2oIVs4zLg0HI6jjrqZUWdGEPUgQO3Iq35J1f_afKi4GVaSw3-q0L9eIGyBcumTB1948IR0pNzAGtuR_8ep7wO536lJLJwJod9auS-XEtHba4d0zxiGHy-bqLTZKSOH_xwqWHpUSN3ZI0pD2fiz9HT8rv4_tsE0du-O79ykVdFnG-kWiNowC5ZNBG6wdNRBDAWW2-RHmXVsPaanPEcZ5zhfM9Q7Rw-zDH_21hQ4XSwtf32xu15Y5Ipa03bB_37g
Zwracany, gdy klucz użyty do weryfikacji podpisu nie został aktywowany.
contract-category-not-supported
Nagłówki odpowiedzi:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json
HTTP/1.1 409 Conflict
Content-Type: application/jose+json
Odpowiedź:
{
"type": "contract-category-not-supported",
"title": "Category not supported",
"status": 409,
"detail": "Partner contract not support E_COMMERCE category"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoiY29udHJhY3QtY2F0ZWdvcnktbm90LXN1cHBvcnRlZCIsInRpdGxlIjoiQ2F0ZWdvcnkgbm90IHN1cHBvcnRlZCIsInN0YXR1cyI6NDA5LCJkZXRhaWwiOiJQYXJ0bmVyIGNvbnRyYWN0IG5vdCBzdXBwb3J0IEVfQ09NTUVSQ0UgY2F0ZWdvcnkifQ.VlRf2_U17qrfbwmPX2G3c6PvPzrwjChhHbGKl4DTBywtlNJhQnV7WkGGI1KG_uKU8h3m3RAj0pXX7tWSo58Wyv0fCZJEmtRL8mOQTCXfMfFPEVqXIr5krTbHfJIA7cgE0X2ucknvRFBMdtrJC70wcxR_wbAgi4UnDBItgS0YT5vmVfrAgbBDj6_NLJ9vhupZ4G4aav7BwV3MG9sI1g1CIpR2k1x1z9p29T6MO27yUXejKp1vCxACy6kWF1F947uabpDpkgqUnW08hem3cfIoO7ZofIXlyXGKIcQAIhluTm46AgIEgcW9p7GCnN9xLNFgC-91iMQNJ78KZ1RfLvpwyw
Kategoria podana w dyspozycji płatności jest inna niż zdefiniowana w umowie.
payment-method-not-available
Nagłówki odpowiedzi:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json
HTTP/1.1 409 Conflict
Content-Type: application/jose+json
Odpowiedź:
{
"type": "payment-method-not-available",
"title": "Payment method is not available",
"status": 409,
"detail": "Payment method ANY is not available"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoicGF5bWVudC1tZXRob2Qtbm90LWF2YWlsYWJsZSIsInRpdGxlIjoiUGF5bWVudCBtZXRob2QgaXMgbm90IGF2YWlsYWJsZSIsInN0YXR1cyI6NDA5LCJkZXRhaWwiOiJQYXltZW50IG1ldGhvZCBBTlkgaXMgbm90IGF2YWlsYWJsZSJ9.fckM8zBoxoFQkEV-6tl9U_2WaEwB8J-lEm1JvQUIsIOoianhyFiAdROgpCMNj1J4BP4i1BvgiRbQzPLIk83gZAIh5e5CRazC_ThzzzKDa-cgCRuZiAyJVDGcOiq9z94MJjYW0YPNnZaPvQ0cTw67M5csPtJrG2KUXgCopHXHLcW_C16nFRUm22clr4OXzTX0yUr8qUY3H4FdFI9q6LkzsnugwJzYRkkiBCMM-zrFdYcCTzGLQQjejeUT0QEaVSIAx2-IGyk2f--UGYn4hCp6pbIJDa-NDlwZzDFJK53_foiQk7acnsW3djd1HTjP4nY4SjiYJnG3GJmKtZNCNBIG_Q
Wybrana metoda płatności jest niedostępna.
transaction-below-limit
Nagłówki odpowiedzi:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json
HTTP/1.1 409 Conflict
Content-Type: application/jose+json
Odpowiedź:
{
"type": "transaction-below-limit",
"title": "Transaction below limit",
"status": 409,
"detail": "The 0.01 EUR transaction is below the 1.00 EUR limit",
"limitType": "CURRENCY",
"money": {
"value": 0.01,
"currency": "EUR"
},
"limit": {
"value": 1.00,
"currency": "EUR"
}
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoidHJhbnNhY3Rpb24tYmVsb3ctbGltaXQiLCJ0aXRsZSI6IlRyYW5zYWN0aW9uIGJlbG93IGxpbWl0Iiwic3RhdHVzIjo0MDksImRldGFpbCI6IlRoZSAwLjAxIEVVUiB0cmFuc2FjdGlvbiBpcyBiZWxvdyB0aGUgMS4wMCBFVVIgbGltaXQiLCJsaW1pdFR5cGUiOiJDVVJSRU5DWSIsIm1vbmV5Ijp7InZhbHVlIjowLjAxLCJjdXJyZW5jeSI6IkVVUiJ9LCJsaW1pdCI6eyJ2YWx1ZSI6MS4wLCJjdXJyZW5jeSI6IkVVUiJ9fQ.YHIf3PxPqdUlrCh68ycOTgaw01q5jbVfIrlHtfQv_dLbQpEYpXZdqTd8PUB5nZYCuFzhU88aC7TW0kdsAdFrRCUMjxAx5Gas2p2YtL4QGONdpUV-bi8jtOvk9zMnzZY5_j-fPZ4pkUYX3vTdFOJh2-S5CB8dYj0M4behdTwABxzwuVDpw2OMUiVXGA4QDfL-GBSOr3arEnCwqcbAhoq_ocszrP1rozALocGy7Q7Z2J8sP-I9DJEe2JDfslUo4R9SMqBNDYmXW_48FVK9XFWi5TliyIFGa-vnzxW6MvLtV-iRtFYsNZpMydkCRJs3Giw42PFvAZN-OpiEKdL2q1hKgg
Kwota transakcji znajduje się poniżej limitu.
Możliwe wartości pola limitType
:
Wartość | Opis |
---|---|
CURRENCY | Podana kwota transakcji znajduje się poniżej zdefiniowanej wartości dla danej waluty. |
COMMISSION | Dla wybranej metody płatności opłaty przewyższają kwotę transakcji. |
transaction-above-limit
Nagłówki odpowiedzi:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json
HTTP/1.1 409 Conflict
Content-Type: application/jose+json
Odpowiedź:
{
"type": "transaction-above-limit",
"title": "Transaction above limit",
"status": 409,
"detail": "The 250000.00 EUR transaction exceeded the 200000.00 EUR limit",
"limitType": "PAYMENT_METHOD",
"money": {
"value": 250000.00,
"currency": "EUR"
},
"limit": {
"value": 200000.00,
"currency": "EUR"
}
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoidHJhbnNhY3Rpb24tYWJvdmUtbGltaXQiLCJ0aXRsZSI6IlRyYW5zYWN0aW9uIGFib3ZlIGxpbWl0Iiwic3RhdHVzIjo0MDksImRldGFpbCI6IlRoZSAyNTAwMDAuMDAgRVVSIHRyYW5zYWN0aW9uIGV4Y2VlZGVkIHRoZSAyMDAwMDAuMDAgRVVSIGxpbWl0IiwibGltaXRUeXBlIjoiUEFZTUVOVF9NRVRIT0QiLCJtb25leSI6eyJ2YWx1ZSI6MjUwMDAwLjAsImN1cnJlbmN5IjoiRVVSIn0sImxpbWl0Ijp7InZhbHVlIjoyMDAwMDAuMCwiY3VycmVuY3kiOiJFVVIifX0.dhQxLLsPdU2OLLaeC46wpk2FzG3pcSj1_WOLWqQxrvQqzSYv85k0Vu4u2KVxxuO6cnnDT-J73w1Z9yeocDV2Ic90RvKVlQDG9GGn0cfpoC4LrqWB8OfDXDbFxNyfEWnIx7T_7-qWrS_kF9ZdxkTPHenzU2rFK-L_Gf_ez973BWCPd2ewGtnTgpFldziwGWce54N1so-f6crsR4nY_4z0SztK-Blu9L6sBWLSlNw0HXc_Fu8pCW_ADAadAysuxvRlR2w7c2NdxeLz9qOB2E2T_pB1piEchHs456_q2oKR-lzYEUoBBgNt0Lk4giWSA8tAvBK44BoT3Jn2OOQBy5tELw
Kwota transakcji znajduje się powyżej limitu.
Możliwe wartości pola limitType
:
Wartość | Opis |
---|---|
PAYMENT_METHOD | Limit dotyczy wybranej metody płatności. |
POINT_OF_SALE | Limit dotyczy punktu płatności. |
payment-not-completed
Nagłówki odpowiedzi:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json
HTTP/1.1 409 Conflict
Content-Type: application/jose+json
Odpowiedź:
{
"type": "payment-not-completed",
"title": "Payment not completed",
"status": 409,
"detail": "Payment with identifier PAY219171134105423 is not completed"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoicGF5bWVudC1ub3QtY29tcGxldGVkIiwidGl0bGUiOiJQYXltZW50IG5vdCBjb21wbGV0ZWQiLCJzdGF0dXMiOjQwOSwiZGV0YWlsIjoiUGF5bWVudCB3aXRoIGlkZW50aWZpZXIgUEFZMjE5MTcxMTM0MTA1NDIzIGlzIG5vdCBjb21wbGV0ZWQifQ.V1kAPtSnwLtNK14yPdnQlI__PUjgfgrG0a3munPpp8zZJuzu2BRYWTNX-rsPzVwnQbXvA6yCrm_wQJzhDffb2nbXqqUWqyim_mps7FTuw1oq_vWTNv_AKGvA_g4zLFlPOyCeEtlDe7706FScGrspG8LW8385nJm-LAlXZSHp-18lcMzDKlT10gWKVZZKeKBvaWjqVEMHCcAyOhbmo3WV_UjeNUVcKbmPKdiaNQSYayRbvRwIL2qNRPLVO73LYHP8KZW_BrkbTS4AoIysu6S80_RDSbkA5X7UzoxxsDYbqVyN4Bp5mlgONaCu1V64v1MddqPhKkdoqaoP4vLzZOh9Gw
Płatność, na którą jest realizowany zwrot nie jest zakończona.
point-of-sale-forbidden-error-url
Nagłówki odpowiedzi:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json
HTTP/1.1 409 Conflict
Content-Type: application/jose+json
Odpowiedź:
{
"type": "point-of-sale-forbidden-error-url",
"title": "Forbidden error url",
"status": 409,
"detail": "Error url is not allowed in point of sale with identifier POS444785125632569"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoicG9pbnQtb2Ytc2FsZS1mb3JiaWRkZW4tZXJyb3ItdXJsIiwidGl0bGUiOiJGb3JiaWRkZW4gZXJyb3IgdXJsIiwic3RhdHVzIjo0MDksImRldGFpbCI6IkVycm9yIHVybCBpcyBub3QgYWxsb3dlZCBpbiBwb2ludCBvZiBzYWxlIHdpdGggaWRlbnRpZmllciBQT1M0NDQ3ODUxMjU2MzI1NjkifQ.V5tMxdvMW1StIcEx0MK9WWl-mT4AOetKNSAdwuRFnErjrFF5mX1iDsJvSAEogKF_LPO5LIn6ANRzzms1EvmwOqAxyp6BAnln4fI6oYf8Je1sZoooL0cvGYn3PIp_cBbSqr8bRLfnVwsywEwBagb_WCL8_azwJbQF6UUQ8SpA8L-0wAwzlFbrU_27-OA46YPhArc3zm4HDKzWBGVjtffFCCakTSDCqTqiKiEMy6B4-6wLpo_-N7ov8o3hmy6ZWiDI9lNGKgYH2_EluNx08Iv8w_qqfSaGHQJCBJOqXgAWToCTWSMaWKp7XCTn-8_w_IAvmZBQv3XKqNR6sXysF8fKug
Podany url wykorzystywany przy przekierowaniu klienta nie został zdefiniowany w punkcie płatności.
point-of-sale-forbidden-notification-url
Nagłówki odpowiedzi:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json
HTTP/1.1 409 Conflict
Content-Type: application/jose+json
Odpowiedź:
{
"type": "point-of-sale-forbidden-notification-url",
"title": "Forbidden notification url",
"status": 409,
"detail": "Notification url is not allowed in point of sale with identifier POS458963215697589"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoicG9pbnQtb2Ytc2FsZS1mb3JiaWRkZW4tbm90aWZpY2F0aW9uLXVybCIsInRpdGxlIjoiRm9yYmlkZGVuIG5vdGlmaWNhdGlvbiB1cmwiLCJzdGF0dXMiOjQwOSwiZGV0YWlsIjoiTm90aWZpY2F0aW9uIHVybCBpcyBub3QgYWxsb3dlZCBpbiBwb2ludCBvZiBzYWxlIHdpdGggaWRlbnRpZmllciBQT1M0NTg5NjMyMTU2OTc1ODkifQ.W2LwMY38GsUYk1bgwOfaerd3rNk23__NDrLtcOhvw0crs7beC2ZC9uWj7kiKNwfhe87lr8eWpfoDU6Y1Fx9KBqBo5k702Vjo9FbRg4NkssKoefkeFcS0ZVA_OpfOdWS_7aalqfvnzJVgNKuyIme6PfCHVfGjYUNjrablAHSSY366HoQE6wciqbZwKSmqTcXnCV-wmNKhSZxsUbyD8ehKxQQF8wxVB0ahumCN_My9V93_QA5LhBoVOsEjxg2MhS0XMa4YF2586TurPr--Pul9Iv_sLaqkhkYcTimFlcMS59aPsrcgNlBLtHiXZ5TNnQNVDeglfW-F-pnhny51WzL3bw
Podany url dla otrzymywania powiadomień nie został zdefiniowany w punkcie płatności.
point-of-sale-forbidden-return-url
Nagłówki odpowiedzi:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json
HTTP/1.1 409 Conflict
Content-Type: application/jose+json
Odpowiedź:
{
"type": "point-of-sale-forbidden-return-url",
"title": "Forbidden return url",
"status": 409,
"detail": "Return url is not allowed in point of sale with identifier POS444785125632569"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoicG9pbnQtb2Ytc2FsZS1mb3JiaWRkZW4tcmV0dXJuLXVybCIsInRpdGxlIjoiRm9yYmlkZGVuIHJldHVybiB1cmwiLCJzdGF0dXMiOjQwOSwiZGV0YWlsIjoiUmV0dXJuIHVybCBpcyBub3QgYWxsb3dlZCBpbiBwb2ludCBvZiBzYWxlIHdpdGggaWRlbnRpZmllciBQT1M0NDQ3ODUxMjU2MzI1NjkifQ.VcazGlGDpKZe08L_tb0vR3agEggUm_SrJb2L_JJMvVt0ogL7aAxo74VYFakwrXDeMLorgQf--99kwYL5_VEEn0aPmlf6gDdKCaF7pZ7Kv3RRyVlkglUaOpE4sIca0QaYROJ8oetq1npbPyFclYSRUhsBdy5Ns42L3tARxfQvkzKgntDmsWLwZPcJqrE0-G1Yt3YEtAYbyW2pZWK1SVGbM2xraRoBECb9o4_NLiEez7nTryp1J_iwgihmj0FvTHF7GEjlmn19BWWTV_x8BUSZGHCtEyzdQnJXmPjXOEs7vv_A_SkJ1cZxXk5a6Tp8G6xao52CAf-Xc_4avjIbB88zfg
Podany url wykorzystywany przy przekierowaniu klienta nie został zdefiniowany w punkcie płatności.
point-of-sale-not-active
Nagłówki odpowiedzi:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json
HTTP/1.1 409 Conflict
Content-Type: application/jose+json
Odpowiedź:
{
"type": "point-of-sale-not-active",
"title": "Point of sale not active",
"status": 409,
"detail": "Point of sale with identifier POS458963214589658 is not active"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoicG9pbnQtb2Ytc2FsZS1ub3QtYWN0aXZlIiwidGl0bGUiOiJQb2ludCBvZiBzYWxlIG5vdCBhY3RpdmUiLCJzdGF0dXMiOjQwOSwiZGV0YWlsIjoiUG9pbnQgb2Ygc2FsZSB3aXRoIGlkZW50aWZpZXIgUE9TNDU4OTYzMjE0NTg5NjU4IGlzIG5vdCBhY3RpdmUifQ.D5QoiTItOt_TePiGbq-f0a-30pWm4Fhyr9ZSxWgj60skXri_NxcmP2AbwwHd-YO4i8LQGyzqrKUnGrCUlU2tJVfYGJCt_LCvkwa_TwnQ66O4Bsua1AaaIYzqlMxcCOGDusof4BRc6EvIXlQR6MmfbiBYWBlNhH1OipxmmJv0ToWXfvJXhgAHfMuGbbm_wzGYysDJNJpv8kg3KEyrd5cR9ocJpapHMYfAXu-HPLi60XlAQdRjeAoxypZcmFT5USUu26fjrB9rwC23EMeaiJVcaHt655c8xG6io2VB98l8pnRxu_ISbz1YlZMpHxXS_3dLAYSu1xwgI5EWM-2mVBHjXw
Punkt płatności jest nieaktywny.
refund-amount-too-large
Nagłówki odpowiedzi:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json
HTTP/1.1 409 Conflict
Content-Type: application/jose+json
Odpowiedź:
{
"type": "refund-amount-too-large",
"title": "Refund amount too large",
"status": 409,
"detail": "Refund amount (or sum of the all partial refunds amount) is higher than payment amount"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoicmVmdW5kLWFtb3VudC10b28tbGFyZ2UiLCJ0aXRsZSI6IlJlZnVuZCBhbW91bnQgdG9vIGxhcmdlIiwic3RhdHVzIjo0MDksImRldGFpbCI6IlJlZnVuZCBhbW91bnQgKG9yIHN1bSBvZiB0aGUgYWxsIHBhcnRpYWwgcmVmdW5kcyBhbW91bnQpIGlzIGhpZ2hlciB0aGFuIHBheW1lbnQgYW1vdW50In0.Y0LeMGM7_gh_SgX6jEW3UhWkKqYAAGXcpaF9IuzSCAjCcSZhyA2AQ88tZ0JJkQMnynENyvQ7AdNE4_TzrJOQC21YnfXHjYzTkGwHT6BoYdTIPWfN6Tzr55cjcXEFfEXNprV0NFGu-C6JjLDRmpdtkfZZgrilhsh5UpSFe5JsXcBWIAv1qGLKC3vBNETW4DQmOuNIxzJ5h4C6Q4bxQKV2RbVtOIT8OoB11AAu2CExBiHURDx-JJOscAyHBQdprEiyAU7sZDaQk-n5coCxXY8fjn6J1j_F3qP__AZ4Bl8UmOjfw8JDhtrpAUvqj1PqL78wLPv5NryOUdzERBtImq4jaA
Kwota zwrotu przekracza kwotę płatności. W przypadku zwrotu częściowego suma wszystkich kwot zwrotów częściowych przekracza kwotę płatności.
refund-incorrect-currency-code
Nagłówki odpowiedzi:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json
HTTP/1.1 409 Conflict
Content-Type: application/jose+json
Odpowiedź:
{
"type": "refund-incorrect-currency-code",
"title": "Incorrect refund currency code",
"status": 409,
"detail": "Refund currency code not match with payment currency code"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoicmVmdW5kLWluY29ycmVjdC1jdXJyZW5jeS1jb2RlIiwidGl0bGUiOiJJbmNvcnJlY3QgcmVmdW5kIGN1cnJlbmN5IGNvZGUiLCJzdGF0dXMiOjQwOSwiZGV0YWlsIjoiUmVmdW5kIGN1cnJlbmN5IGNvZGUgbm90IG1hdGNoIHdpdGggcGF5bWVudCBjdXJyZW5jeSBjb2RlIn0.CnZIXPicq85DcmHtXFFzAqkmdw1bg6CmRVHTrkD5ui4mrs82ncjchy4p5CALffpFLFfetMhddAcp6gpnxsWmPjyRTRAHoCk4-_PbZwdE6Nw1nH4lyeFqBHtx0XrA4HVnPHn3EyEIexJ74b2vq-vwJAHI2rODu_IMA9Wegn7efYhnyZtBCCflviLgimv1I8j5J2vomyHjHiOms4GEcV78zKndS3qnG_xBSklPfYcY7rv4zbnHtuZP4l1nL9FZ0DFIMu9oSwJEZRUimrHtP4gFTrJ2_Js0apUqLUTNPXw4tIfdlyFF4fxqjjuJOfzv6omq2Putp13o4Xn-BKaXT-SuuQ
Waluta zwrotu jest inna niż waluta, którą dokonano płatności.
max-refunds-reached
Nagłówki odpowiedzi:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json
HTTP/1.1 409 Conflict
Content-Type: application/jose+json
Odpowiedź:
{
"type": "max-refunds-reached",
"title": "The maximum number of refunds for payment has been reached",
"status": 409,
"detail": "The maximum number of refunds for payment with identifier PAY445458962445154 has been reached"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoibWF4LXJlZnVuZHMtcmVhY2hlZCIsInRpdGxlIjoiVGhlIG1heGltdW0gbnVtYmVyIG9mIHJlZnVuZHMgZm9yIHBheW1lbnQgaGFzIGJlZW4gcmVhY2hlZCIsInN0YXR1cyI6NDA5LCJkZXRhaWwiOiJUaGUgbWF4aW11bSBudW1iZXIgb2YgcmVmdW5kcyBmb3IgcGF5bWVudCB3aXRoIGlkZW50aWZpZXIgUEFZNDQ1NDU4OTYyNDQ1MTU0IGhhcyBiZWVuIHJlYWNoZWQifQ.CG5b7j1H1NtjZTmJ17IEyzLBnHaePOUKiaTdwfZUYqIrhLObogufRc6Pz8xXh0VACZp4CLSsxneRaEPsCgc9eyjKHp-u-rh9FbSBrMM7QUd6uyS7-AUvuD_FDTSAt3Xd_JBFo0pEUJ4AqeQ7CZDoTOo_nYZT76CY56Q2iHl5gv49HnpdyBr_oq6aAHavqXArF7nst9P9k1ZqZGJJTwkGJ6Hz1FN2xGM8BWiDqwjBik4cSIahMigdA1zfpgrCL0jDPlzNfIvlqeAY1AVXIkCiu4DdueuUegTXSf-HP3VePhJ9nnUJB7QZAUpGUxB_Jq1XHUnWsrW8hQi6ju-nuEvKIg
Osiągnięto maksymalną liczbę zwrotów dla płatności.
other-refunds-not-completed
Nagłówki odpowiedzi:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json
HTTP/1.1 409 Conflict
Content-Type: application/jose+json
Odpowiedź:
{
"type": "other-refunds-not-completed",
"title": "Not all refunds are completed for payment",
"status": 409,
"detail": "Not all refunds are completed for payment with identifier PAY382793112712843"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoib3RoZXItcmVmdW5kcy1ub3QtY29tcGxldGVkIiwidGl0bGUiOiJOb3QgYWxsIHJlZnVuZHMgYXJlIGNvbXBsZXRlZCBmb3IgcGF5bWVudCIsInN0YXR1cyI6NDA5LCJkZXRhaWwiOiJOb3QgYWxsIHJlZnVuZHMgYXJlIGNvbXBsZXRlZCBmb3IgcGF5bWVudCB3aXRoIGlkZW50aWZpZXIgUEFZMzgyNzkzMTEyNzEyODQzIn0.TC6S889u1aD8EHvMQxuMfp6_7ZuU1YfSeB5zdamuH91EHUmLdkohjHa6CYxxtFDAyTrjsuujg9Uxm-2oFuDqoTw4DyfBEMUtb0Znf9qlfSHuXJ_J6M92De6PoiEOdsRz22hR4K70l1R9dY_iZHbtFLhkL38NFJL5E3EmhrTvoapVG1QizuYgYOVXNXk1j6AHoYdXgvdPDl581qhJmFxnQkkKTcfQSoMjxuvREzbgXz5reAkWkQAUHQuIMOHUrhsk0WyV8tOy27DbSQ1-sK0FAZNuSe4fFZACWmbz1zFMRTy83Uuxl64OAluZXea04FG3thCwEpw0llPAXF-UmpUhYA
Część zwrotów utworzonych dla tej płatności nie została zakończona.
sample-text-verification-failed
Nagłówki odpowiedzi:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json
HTTP/1.1 409 Conflict
Content-Type: application/jose+json
Odpowiedź:
{
"type": "sample-text-verification-failed",
"title": "Sample text verification failed",
"status": 409,
"detail": "Signed text from encodedText not equals to unsigned text from decodedText"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoic2FtcGxlLXRleHQtdmVyaWZpY2F0aW9uLWZhaWxlZCIsInRpdGxlIjoiU2FtcGxlIHRleHQgdmVyaWZpY2F0aW9uIGZhaWxlZCIsInN0YXR1cyI6NDA5LCJkZXRhaWwiOiJTaWduZWQgdGV4dCBmcm9tIGVuY29kZWRUZXh0IG5vdCBlcXVhbHMgdG8gdW5zaWduZWQgdGV4dCBmcm9tIGRlY29kZWRUZXh0In0.bC1YhfaC5dukeaCFlsB-2SdllMsiOOkMCCjDpfauLthRu3RS-Ri_Lv0EH0D8dcE_Jr9Kaz9yUZlyTvs_Tbqy8clFRQLFvHB0TpOed4zt96ViY27Q9BLMmJS5HrlLSoAh4KG3I3ZkOKDQhyW1GJgFg98TKRox3bC9-xTpBedLkFOuVEbZsvQ7H2L5P3NU8nCbcvhguKCykcGkB_Misl5h7G_yrXk_vOZOKZSvFumUP-qjpBvSatXB7Sr7y-ca68RBu2smlPv8iDYwD61uPrrZZ5LOZvqUjJQEOBEzzCq4A2jTbQEZPeOVPvz4hdqYbCYlJysh5xNK2AnMZk2fzJ-bqw
Zwracany, gdy podpisana wiadomość w polu encodedText nie jest zgodna z wartością podaną w decodedText.
public-key-has-wrong-length
Nagłówki odpowiedzi:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json
HTTP/1.1 409 Conflict
Content-Type: application/jose+json
Odpowiedź:
{
"type": "public-key-has-wrong-length",
"title": "Public key has wrong bytes length",
"status": 409,
"detail": "Client public key must have a minimum of 2 048 bytes"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoicHVibGljLWtleS1oYXMtd3JvbmctbGVuZ3RoIiwidGl0bGUiOiJQdWJsaWMga2V5IGhhcyB3cm9uZyBieXRlcyBsZW5ndGgiLCJzdGF0dXMiOjQwOSwiZGV0YWlsIjoiQ2xpZW50IHB1YmxpYyBrZXkgbXVzdCBoYXZlIGEgbWluaW11bSBvZiAywqAwNDggYnl0ZXMifQ.Vn0oLx-dZFMNfAKuyPXNNOo8gy2L8_gYkb1TkBYitHkcvS_jnFBuOEbq7LX-ah16NDSKQVO_rm5TVNzAMUqqe5fusek2zV_R8rDccDHuHWlk217BVWvBr9C6_W4VjNqjtOExpf8r7W5ycnvMLomKwIb1h-2cJTzjpB2nMW-PGSgMot-N2lnlu5EuXMmZ0jZ2d2sDoAcI9y6yeRPPt6cmtZ-a_PxJ2LNG_BL1av8Sht8qR9o46j4cHInIVabN5CdehaD7YDqRGT6GdAMVE4vme1ZOoE4xqBIHpszFXoDwFITLByOWY84D1QWfqKDSDaKlF_i0dfF1f2G3uDnE8fCBUA
Zwracany, gdy dodawany klucz publiczny jest mniejszy niż 2048 bajtów.
public-key-already-exist
Nagłówki odpowiedzi:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json
HTTP/1.1 409 Conflict
Content-Type: application/jose+json
Odpowiedź:
{
"type": "public-key-already-exist",
"title": "Public key already exist",
"status": 409,
"detail": "Client public key with kid lpSoenUSsyxPtZlkP3tGLH9iPLZn1L4zf0G9jUhX3zQ already exist",
"kid": "lpSoenUSsyxPtZlkP3tGLH9iPLZn1L4zf0G9jUhX3zQ"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoicHVibGljLWtleS1hbHJlYWR5LWV4aXN0IiwidGl0bGUiOiJQdWJsaWMga2V5IGFscmVhZHkgZXhpc3QiLCJzdGF0dXMiOjQwOSwiZGV0YWlsIjoiQ2xpZW50IHB1YmxpYyBrZXkgd2l0aCBraWQgbHBTb2VuVVNzeXhQdFpsa1AzdEdMSDlpUExabjFMNHpmMEc5alVoWDN6USBhbHJlYWR5IGV4aXN0Iiwia2lkIjoibHBTb2VuVVNzeXhQdFpsa1AzdEdMSDlpUExabjFMNHpmMEc5alVoWDN6USJ9.QxoW3-rftVjDcNOtreF9ttRLUriMat_xJzpRvM3vPf08TZDK5RHdR6idUti18dKzX78hmmHS-PWXRwT9maCREqZBguqJfzFGwyBs5ui5jKi4V_SsX8-irb8EB-EhznyXQ5FidrF75_Vc69u9HythdIrnj3OimAnmALVKs8uDvZ-m-dED3Ua3-lE1sBIWExJ5R7bzNkuvpIRpzkt5vrEfqmnAYjVkL1ceUBCBgiqPqdi38CoIL0YQFUBlESUGYmXggXXYQcETVlftiieS1D1CJvTlIL5TRUTNXmt98-uvQsNcIkpYwyrtwqCrCkJr4TUh8AwX0dHwW7ThGKk8W9MooA
Zwracany, gdy klucz publiczny już istnieje.
refund-money-below-minimal-amount
Nagłówki odpowiedzi:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json
HTTP/1.1 409 Conflict
Content-Type: application/jose+json
Odpowiedź:
{
"type": "refund-money-below-minimal-amount",
"title": "Refund money below minimal amount",
"status": 409,
"detail": "Refund money 0.01 PLN is below 1 PLN minimal amount for PLN currency",
"limit": {
"value": "1",
"currency": "PLN"
}
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoicmVmdW5kLW1vbmV5LWJlbG93LW1pbmltYWwtYW1vdW50IiwidGl0bGUiOiJSZWZ1bmQgbW9uZXkgYmVsb3cgbWluaW1hbCBhbW91bnQiLCJzdGF0dXMiOjQwOSwiZGV0YWlsIjoiUmVmdW5kIG1vbmV5IDAuMDEgUExOIGlzIGJlbG93IDEgUExOIG1pbmltYWwgYW1vdW50IGZvciBQTE4gY3VycmVuY3kiLCJsaW1pdCI6eyJ2YWx1ZSI6IjEiLCJjdXJyZW5jeSI6IlBMTiJ9fQ.YE1dB6RJiXNu0t9gjKKEV4MaizlbSJm3Xo5VnZCOmKw4qy7LKEvmK2ggS21bTknzcUQA3n_jIqVzkoWfK52XXWUlINhWRWcmRnJ2Xukb280WYbg2xusBs1FGpdLAlrQ7nrbDVFZye7Q1Mhh8p_mh4r6-aWVe4vHpuj7lKQzYKAFa-aZ9AEnVw2PRXu1-jsbL4WcGhdnFYcTYLkO1jgg2WHes5zZNyKnPgf7mUVFpjN0rHl_gELzJL0JBjEw0MQw7txDb0qPr6kyfdN4lQfnJzY7vy3nWElTzyXL42n0C74QLV1oaKB0gJi0SZ4tyh4IxvjQjU90FD6Ib3kq0hxGjlQ
Wartość zwrotu jest poniżej minimalnej wartości.
refund-not-allowed
Nagłówki odpowiedzi:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json
HTTP/1.1 409 Conflict
Content-Type: application/jose+json
Odpowiedź:
{
"type": "refund-not-allowed",
"title": "Refund cannot be executed for selected payment method",
"status": 409,
"detail": "Refund cannot be executed for POLI payment method"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoicmVmdW5kLW5vdC1hbGxvd2VkIiwidGl0bGUiOiJSZWZ1bmQgY2Fubm90IGJlIGV4ZWN1dGVkIGZvciBzZWxlY3RlZCBwYXltZW50IG1ldGhvZCIsInN0YXR1cyI6NDA5LCJkZXRhaWwiOiJSZWZ1bmQgY2Fubm90IGJlIGV4ZWN1dGVkIGZvciBQT0xJIHBheW1lbnQgbWV0aG9kIn0.GsJDGxE6ywoU5l9BRdXiIQu3iQC-WlqzEeRCK2WVkM_4FxSQAlt35DkcQhhUC07xt5hoW39Q1jjZx5iXb9TFIWlvqBmyXyru6b-G35zuugmJ7KB2h7rtnwapuPs6jcoHciuzEWDCeCRz75Ln9E217uFSa4RkPjZ2scyEI9YRh3bjORhv3P9CzZ2zrpqhzjRcAdq1x9z1YZrKw-5sPaHKHVLDhw3VewiR89QJ0G90xvkd96aBktupuXaEWr8xblXYozGW2Hon7qnNhapH9oU5FCsuq3DnebUtal75fxRbFxOt9Juq2LTkt2bMCgVHQHXsveWF40UAsaVGm_P0ePJRxA
Nie można zlecić zwrotu dla wybranej metody płatności.
currency-unavailable
Nagłówki odpowiedzi:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json
HTTP/1.1 409 Conflict
Content-Type: application/jose+json
Odpowiedź:
{
"type": "currency-unavailable",
"title": "Currency is unavailable",
"status": 409,
"detail": "Currency HRK is unavailable"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoiY3VycmVuY3ktdW5hdmFpbGFibGUiLCJ0aXRsZSI6IkN1cnJlbmN5IGlzIHVuYXZhaWxhYmxlIiwic3RhdHVzIjo0MDksImRldGFpbCI6IkN1cnJlbmN5IEhSSyBpcyB1bmF2YWlsYWJsZSJ9.VmM7LCkFQYuLESlnrL1MHkPxkR3ogCKJQmjfVTlnMiv2mbISaAD7qeFeHW3iCxSbmRpMqt-EzAIUuTKWSmEVovI-h7ORv1DD1OWCQEUpIkhcXXkyjZwuZC2o759vpJbHQDhBHkHvWrnVbXR7U86UAmMkxg337gU1rhP9IGhe3DhAhGD4HEe3o9idL9X9qw7yAtP3YpzJ05NNMmkQ8mOmIhXXqEttFiPyeGtagd6rCDKxwq3T5yIIPUMyRBJePzPugbeXdbWySbbK_0bisUF7DeSC0j0m-_dKjBbnFTWrfiGPjDJKVRpqzqi9_ZrYnlIaghNhhNKBjhw6k2SfHuCiSg
Wybrana waluta jest niedostępna.
illegal-payment-status
Nagłówki odpowiedzi:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json
HTTP/1.1 409 Conflict
Content-Type: application/jose+json
Odpowiedź:
{
"type": "illegal-payment-status",
"title": "Payment has illegal status",
"status": 409,
"detail": "Payment with identifier PAY715037422182587 has illegal CANCELLED status"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoiaWxsZWdhbC1wYXltZW50LXN0YXR1cyIsInRpdGxlIjoiUGF5bWVudCBoYXMgaWxsZWdhbCBzdGF0dXMiLCJzdGF0dXMiOjQwOSwiZGV0YWlsIjoiUGF5bWVudCB3aXRoIGlkZW50aWZpZXIgUEFZNzE1MDM3NDIyMTgyNTg3IGhhcyBpbGxlZ2FsIENBTkNFTExFRCBzdGF0dXMifQ.SAye3kVEi2LClHU749i5CkWQG4vyVU7hUf-UFGLjisTe2GIW3abbUk5pNuOi2IFeX-DNuum6xzLQJdkb3hFszSDaUz5Nx8Yx-ZY-yo42fdAifoQIG6-QQf2dp_5YAzWB45dSKZCZQgTAak7YK0GAvrxSfRz6wDbAS50uIAniC68h7_-WXDI_BorjeknIIkiCXZZFWVkMEb0hBs2Y-fmg0fyJ3xw5vMAeqyyjNNGj7ty_6rXgxzUko6Epg0GZGAZbkVmuwKdQhd7tx3FvPff22uGW-dD02dqzAv74f8PbDD7uK_B7MtfenJZ4trxGM67rOMegDQr7Xtnaxw3GXZObpw
Płatność jest w niedozwolonym dla kontekstu statusie.
payment-confirmation-in-progress
Nagłówki odpowiedzi:
HTTP/1.1 423 Locked
Content-Type: application/problem+json
HTTP/1.1 423 Locked
Content-Type: application/jose+json
Odpowiedź:
{
"type": "payment-confirmation-in-progress",
"title": "Payment confirmation in progress",
"status": 423,
"detail": "Payment with identifier PAY3478563249569345444 is being confirmed"
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoicGF5bWVudC1jb25maXJtYXRpb24taW4tcHJvZ3Jlc3MiLCJ0aXRsZSI6IlBheW1lbnQgY29uZmlybWF0aW9uIGluIHByb2dyZXNzIiwic3RhdHVzIjo0MjMsImRldGFpbCI6IlBheW1lbnQgd2l0aCBpZGVudGlmaWVyIFBBWTM0Nzg1NjMyNDk1NjkzNDU0NDQgaXMgYmVpbmcgY29uZmlybWVkIn0.Rtg3ee1l8iF3lGw5xag19Cl5MWU0X8UsZ6PSMTcuBdxAu0HKx-vX3NuR9C3bNVHnxehxvT8IM_G465LB7GsVyzIk-2Yt5kpQ5fzKO5J3woQNck57M8mqsWj_eNlKr-efh51fbZiz6h2yEOFdk0EDHPxyDJ6ZDox3mRZ7TkxkSbYm26J4UjZTDalH4e-tM98LDzHmfppwaUpNsKgn9bUZSdCdE-zmSZZQ3EvWYax2V_BDWozdvWEvNqO5QYRnkpn3S1c0lKR6Zo9CntV6d2iwcbnOv-ppMV5uGRRAuQrUTa3I1BPMgTlD9igFNe3gDF2heOsQhV6YbbLuvNdQ-ugmxw
Transakcja jest w trakcie zatwierdzania.
payment-confirmation-problem
Nagłówki odpowiedzi:
HTTP/1.1 504 Gateway Timeout
Content-Type: application/problem+json
HTTP/1.1 504 Gateway Timeout
Content-Type: application/jose+json
Odpowiedź:
{
"type": "payment-confirmation-problem",
"title": "Payment confirmation problem",
"status": 504,
"detail": "There are temporary issues with payment confirmation. Please wait for payment status notifications in asynchronous process."
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJ0eXBlIjoicGF5bWVudC1jb25maXJtYXRpb24tcHJvYmxlbSIsInRpdGxlIjoiUGF5bWVudCBjb25maXJtYXRpb24gcHJvYmxlbSIsInN0YXR1cyI6NTA0LCJkZXRhaWwiOiJUaGVyZSBhcmUgdGVtcG9yYXJ5IGlzc3VlcyB3aXRoIHBheW1lbnQgY29uZmlybWF0aW9uLiBQbGVhc2Ugd2FpdCBmb3IgcGF5bWVudCBzdGF0dXMgbm90aWZpY2F0aW9ucyBpbiBhc3luY2hyb25vdXMgcHJvY2Vzcy4ifQ.ShMxFF0056m7dnvxS17GuhAquihrgqbLHawdIG9uN16wjiRD_MW4WMuV7weGd1Yzuc-EKANNfKgtyyTErmoPAf4mKtHlQN4Cuw5S5tPPojZ3hwp6GzWTERaUGOOeyb2mQ-QLs7EiodFe6yrfg0uFKMi3Zog3llbKIIvd0zh4BZU3O_IAor5W2tM6zDbIY2H15OzD2q1oaxByDXnJcm6Obd0DmLBu2XnU869HqkAYSAYB1d3vA19XHmsg4b_HsHrq0npS2YdekbCbynJ9xZ8sZIbNBMteWn-YB4PZ_M5Bnr3Pt1LEWQ0-mAUQnC4c_J_9tTzTQQbKZyu6RpUX7munrg
Występują problemy z komunikacją z dostawcą metody płatności. Należy czekać na powiadomienia o statusie płatności.
Procesy biznesowe
Proces płatności
Poniżej przedstawiony został proces płatności. Przedstawiony scenariusz zawiera tylko pozytywny przypadek, który ma na celu przedstawić logikę działania całego procesu.
Warunki wstępne
Klient utworzył, w sklepie internetowym Merchanta koszyk z listą produktów do zakupu.
Scenariusz
- Klient na stronie sklepu wybrał metodę płatności udostępnianą przez Merchanta, a następnie kliknął przycisk „Płacę” (Krok 1.).
- Serwer Merchanta wysyła komunikat PaymentData do serwera Cinkciarz Pay (Krok 2.).
- Serwer Cinkciarz Pay sprawdza poprawność otrzymanego komunikatu i tworzy dyspozycję płatności (Krok 3.).
- Serwer Cinkciarz Pay wysyła odpowiedź PaymentInfo do serwera Merchanta (Krok 4.).
- Serwer Merchanta zapisuje status transakcji potwierdzający przyjęcie dyspozycji w Cinkciarz Pay (Krok 5.) i przekierowuje klienta na adres approveUrl otrzymany w odpowiedzi PaymentInfo (Krok 6.).
- Klient wybiera metodę płatności na stronie Cinkciarz Pay i klika przycisk „Zapłać” (Krok 7.).
- Serwer Cinkciarz Pay przyjmuje do przetwarzania zaakceptowaną przez klienta płatności (Krok 8.).
- Serwer Cinkciarz Pay wykonuje przekierowanie do serwera Merchanta - na adres returnUrl podany przy zakładaniu dyspozycji płatności lub skonfigurowany w punkcie płatności (zwykle na stronę z podziękowaniem za dokonany zakup) (Krok 9.).
Po przyjęciu do przetwarzania zaakceptowanej płatności (Krok 8.) realizowany jest asynchroniczny proces przetwarzania płatności:
- Serwer Cinkciarz Pay po zakończeniu przetwarzania płatności wysyła do serwera Merchanta na adres notificationUrl komunikat PaymentStatus z informacją o statusie transakcji (Krok 11.).
- Serwer Merchanta zapisuje status zakończonej transakcji (Krok 12.) i wysyła kod odpowiedzi HTTP 200 OK, który oznacza poprawne otrzymanie informacji o statusie transakcji (Krok 13.).
- Serwer Merchanta akceptuje wykonaną transakcję płatności (Krok 14.).
Proces płatności - EPS
Poniżej przedstawiony został proces płatności dla wybranej metody płatności EPS, gdzie pominięty został interfejs płatniczy Cinkciarz Pay. Funkcjonalność prezentacji listy banków oraz wyboru banku przez użytkownika musi być zaimplementowana po stronie serwera Merchanta. Przedstawiony scenariusz zawiera tylko pozytywny przypadek, który ma na celu przedstawić logikę działania całego procesu.
Cykl życia płatności
Proces zwrotu
Zwrot środków na portfel klienta może być wykonany w dwóch trybach:
- pełnym;
- częściowym.
Zwrot realizowany jest zawsze w walucie, w której dokonana była płatność. Dla pełnego zwrotu podanie kwoty i waluty nie jest wymagane, natomiast dla zwrotu częściowego waluta musi być zgodna z walutą, w której dokonana została płatność.
W przypadku zwrotu częściowego, suma wszystkich kwot poszczególnych zwrotów częściowych nie może przekroczyć całkowitej kwoty płatności, dla której wykonywany jest zwrot.
Zwrot na kwotę równą kwocie płatności traktowany jest jako zwrot pełny. Jeśli istnieje zwrot częściowy dla płatności, to nie jest możliwe wykonanie zwrotu całkowitego.
Przedstawiony scenariusz zawiera tylko pozytywny przypadek dla zwrotu pełnego, który ma przedstawić logikę działania całego procesu.
Warunki wstępne
W systemie Cinkciarz Pay istnieje zakończona lub zaksięgowana płatność, dla której ma zostać wykonany zwrot.
Scenariusz
- Serwer Partnera wysyła komunikat RefundData do serwera Cinkciarz Pay (Krok 1.).
- Serwer Cinkciarz Pay tworzy zwrot (Krok 2.).
- Serwer Cinkciarz Pay wysyła odpowiedź RefundInfo do Partnera (Krok 3.).
- Serwer Partnera zapisuje informację o utworzeniu zwrotu (Krok 4.).
Równolegle do kroku 4. realizowany jest proces przetwarzania zwrotu:
- Serwer Cinkciarz Pay po zakończeniu przetwarzania zwrotu wysyła do serwera Partnera na adres notificationUrl komunikat RefundStatus z informacją o statusie zwrotu (Krok 5.).
- Serwer Partnera zapisuje informację o wykonaniu zwrotu (Krok 6.) i i wysyła kod odpowiedzi HTTP 200 OK, który oznacza poprawne otrzymanie informacji o statusie zwrotu (krok 7.).
Cykl życia zwrotu
Status PENDING może wystąpić w sytuacjach, gdy rachunek płatniczny Partnera nie zawiera wystarczających środków, aby zrealizować zwrot. Zwroty są w takich sytuacjach kolejkowane i oczekują na wpłynięcie środków.
Bezpieczeństwo
System Cinkciarz Pay stosuje poniższe elementy, które zapewniają bezpieczeństwo komunikacji z systemem Partnera:
- całość komunikacji odbywa się z wykorzystaniem protokołu HTTPS;
- wymagane jest przesyłanie tokena autoryzacyjnego w nagłówku Authorization w celu korzystania z API (więcej informacji w rozdziale Uwierzytelnienie);
- wszystkie komunikaty wysyłane z systemu Partnera muszą być podpisane (więcej informacji w rozdziale Komunikacja z Cinkciarz Pay);
- wszystkie komunikaty wysyłane z systemu Cinkciarz Pay są podpisywane (więcej informacji w rozdziale Komunikacja z Partnerem);
- dodatkowe dane, które są dołączane do parametrów URL są podpisywane przez Cinkciarz Pay przy realizacji przekierowania na stronę Partnera (więcej informacji w rozdziale Autentyczność parametrów URL).
Autentyczność komunikatu
Specyfikacja JSON Web Signature definiuje, w jaki sposób mogą być podpisane przesyłane komunikaty. JWS jest kodowany przy użyciu base64url i składa się z trzech części oddzielonych od siebie kropkami (.). Ogólna struktura JWS wygląda następująco:
base64url(utf8(header)).base64url(payload).base64url(signature)
Przykładowy minimalny nagłówek JWS akceptowany przez Cinkciarz Pay:
{
"alg": "RS256",
"kid": "iQn7M-Eyzw5sde5GwaOu51Xzl8WFXJzNW3pmCBENhhk"
}
Header
Pierwsza część to nagłówek (header), który zawiera m.in. informację o zastosowanym do wyliczenia sygnatury algorytmie - parametr "alg". Możliwe wartości, jakie może przyjmować parametr "alg" zostały podane w tabeli poniżej:
Identyfikator | Nazwa algorytmu |
---|---|
RS256 | SHA256withRSA |
RS384 | SHA384withRSA |
RS512 | SHA512withRSA |
Minimalny nagłówek JWS oprócz parametru "alg" musi zawierać także parametr "kid" identyfikujący klucz publiczny, który służy do weryfikacji sygnatury.
Payload
Druga część JWS to tzw. payload, który zawiera przesyłany komunikat. Specyfikacja JWS nie definiuje typu przesyłanego komunikatu (może to być np. XML lub String), jednak Cinkciarz Pay wymaga by komunikat przesyłany był w formacie JSON (kodowanie UTF-8).
Signature
Trzecia część JWS to cyfrowy podpis (signature), który wyliczany jest z zastosowaniem algorytmu podanego w nagłówku JWS dla połączonych ze sobą zakodowanego nagłówka i zakodowanego komunikatu, oddzielonych znakiem kropki (.).
Komunikacja z Cinkciarz Pay
JWS Header
{
"alg": "RS256",
"typ": "JWT",
"cty": "application/json",
"kid": "DFDOlB7DU6-0hRYA5Uu4BbTG-qrecsKtBHSy3TjiIs8"
}
JWS Payload
{
"description": "Payment description",
"externalPaymentId": "342HHH88LKDJ89876767",
"category": "E_COMMERCE",
"pointOfSaleId": "POS45896321596547859",
"totalAmount": {
"currency": "USD",
"value": 19.99
}
}
Przykładowe żądanie utworzenia płatności:
curl -X POST \
-H "Authorization: Bearer M1ODU2ZDI5NzU3ZWFkYTRjMjEyMTIwNmRiNmQ2MjdmM" \
-H "Content-Type: application/jose+json" \
-d "@data.jws" \
"<CINKCIARZ_PAY_HOST>/payments"
data.jws
eyJraWQiOiJERkRPbEI3RFU2LTBoUllBNVV1NEJiVEctcXJlY3NLdEJIU3kzVGppSXM4IiwiY3R5IjoiYXBwbGljYXRpb24vanNvbiIsInR5cCI6IkpXVCIsImFsZyI6IlJTMjU2In0.ew0KICAiZGVzY3JpcHRpb24iOiAiUGF5bWVudCBkZXNjcmlwdGlvbiIsDQogICJleHRlcm5hbFBheW1lbnRJZCI6ICIzNDJISEg4OExLREo4OTg3Njc2NyIsDQogICJjYXRlZ29yeSI6ICJFX0NPTU1FUkNFIiwNCiAgInBvaW50T2ZTYWxlSWQiOiAiUE9TNDU4OTYzMjE1OTY1NDc4NTkiLA0KICAidG90YWxBbW91bnQiOiB7DQogICAgImN1cnJlbmN5IjogIlVTRCIsDQogICAgInZhbHVlIjogMTkuOTkNCiAgfQ0KfQ.J2uDZEZL_hlgLAscv3EMX8lKCPBOf1X3UoUEDGhBF0cKFSAvHaDAAtnyzacL53RWsaHmAfDTRHqqFuF6g6wBRStbWukC1pOqXNEYHTXgfHJ01Sh7JZr7IRuX92ol-OgiP7DK01wDnlZ80_wGnJUpWGQjiQEoUzJhOcFyZ44_jSKh7dwU7SWh9wj5FWmC1A8RlBXLpMf6QWCKlA1njw4r7RXUmbLLbdiA71Oiy1LN_Ezf8srYP5y_QhhtoyXxkLEe75YP5ky6d0UObrKpUVbhvj7lwnqMzZVBfD1aIL5F2s8gUg8nQeCUWPUYIRvDNQkmAFTSbqjD2sCG1ysm8JDspA
Nagłówki odpowiedzi:
HTTP/1.1 201 Created
Content-Type: application/jose+json
Odpowiedź:
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOCIsImtpZCI6InpDNGo0QWNoZHp3S1hTX01xc2g0QWZ3VnlTdUdzRmdnT18yeHY1dHVzemsifQ.eyJwYXltZW50SWQiOiAiUEFZNzE1MDM3NDIyMTgyNTg3IiwiYXBwcm92ZVVybCI6ICJodHRwczovLzxDSU5LQ0lBUlpfUEFZX0hPU1Q-L2FwcHJvdmUifQ.T8YBr9hhEjIEe2JtFEuVo0GAssd2-9ZL7IEGjMNoamqD6c9Ha1W6Nunlrs-CpYHUabejhcI6Z3EKzuA8Ra9YyKki_BOoK_oPAnKSJMaP6DgYeJ0cxqawqdMYkT0Ku3TpUwte-hwIoWVNFKqfjBncwNfhAXPyx4Ti6eqAQENpL8VmfvsrcmLn96BqbxYo1Hp07K_AmVulJs701a_s0BdSysLmAyhmLcQfVwSWCpTgMc7NXbe1R95T6xRYCsif2FvVZke4cM8f9zDZZI5-V7tgUhx8v3BVUEtanjPsPdDcTUs5ZLYl6EH8yCtWECGxbxxJbV2WDGJTPn6mbNRBtsjsNQ
Wszystkie komunikaty wysyłane z systemu Partnera do systemu Cinkciarz Pay muszą być przesyłane w formacie JWS. Jedynie w przypadku dodawania klucza publicznego nie jest wymagane podpisywanie komunikatu.
Poniżej przedstawiony został przykładowy JWS (Compact Serialized), jaki może być przesłany do Cinkciarz Pay:
eyJraWQiOiJERkRPbEI3RFU2LTBoUllBNVV1NEJiVEctcXJlY3NLdEJIU3kzVGppSXM4IiwiY3R5IjoiYXBwbGljYXRpb24vanNvbiIsInR5cCI6IkpXVCIsImFsZyI6IlJTMjU2In0.ew0KICAiZGVzY3JpcHRpb24iOiAiUGF5bWVudCBkZXNjcmlwdGlvbiIsDQogICJleHRlcm5hbFBheW1lbnRJZCI6ICIzNDJISEg4OExLREo4OTg3Njc2NyIsDQogICJjYXRlZ29yeSI6ICJFX0NPTU1FUkNFIiwNCiAgInBvaW50T2ZTYWxlSWQiOiAiUE9TNDU4OTYzMjE1OTY1NDc4NTkiLA0KICAidG90YWxBbW91bnQiOiB7DQogICAgImN1cnJlbmN5IjogIlVTRCIsDQogICAgInZhbHVlIjogMTkuOTkNCiAgfQ0KfQ.J2uDZEZL_hlgLAscv3EMX8lKCPBOf1X3UoUEDGhBF0cKFSAvHaDAAtnyzacL53RWsaHmAfDTRHqqFuF6g6wBRStbWukC1pOqXNEYHTXgfHJ01Sh7JZr7IRuX92ol-OgiP7DK01wDnlZ80_wGnJUpWGQjiQEoUzJhOcFyZ44_jSKh7dwU7SWh9wj5FWmC1A8RlBXLpMf6QWCKlA1njw4r7RXUmbLLbdiA71Oiy1LN_Ezf8srYP5y_QhhtoyXxkLEe75YP5ky6d0UObrKpUVbhvj7lwnqMzZVBfD1aIL5F2s8gUg8nQeCUWPUYIRvDNQkmAFTSbqjD2sCG1ysm8JDspA
Po zdekodowaniu JWS otrzymuje się JWS Header oraz JWS Payload zawierający minimalny komunikat PaymentData. Do podpisu użyto algorytmu asymetrycznego RSASSA-PKCS1-V1_5 with SHA-256 (RS256). W celu weryfikacji sygnatury należy wykorzystać przykładowy klucz publiczny:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtbQuQMzUo5jTMLdq7Y0p
QuZbOwiAJ7Ty3oB3aww78wAEY8Irb+Ns9fkwRadUaKfkT9OMuj6EWos6QvxFXRAe
kxqMVoTnQaaZsAEA471ZBdt3sZxTxDQhf96I7JOTr1BA1J2fgQN1zRB8hnMotEF1
iaGTBtI1yN1RypSsL/mpdgF05E1Urh2OqMSDbv9Arl1cBqt79jJzAXi0uj2CyVp8
7ID0NruLSwD2zFRxW5/NAee1w4lAbuk7EBMCPLkrikW7xsKQyGIubMO4cpeCWZwU
FTnWOHgpft+HdQqnkaTCpWLIEFOG7DRh7h3kU6oHXIoH7KkhMBRNdw104ZNk1rQw
WwIDAQAB
-----END PUBLIC KEY-----
Do weryfikacji odpowiedzi otrzymanej z Cinkciarz Pay należy użyć klucza publicznego udostępnianego przez API GET /jwks.
Komunikacja z Partnerem
Przykładowa odpowiedź API:
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJwYXltZW50SWQiOiJQQVk3MTUwMzc0MjIxODI1ODciLCJhcHByb3ZlVXJsIjoiaHR0cHM6Ly88Q0lOS0NJQVJaX0FQUFJPVkFMX0hPU1Q-L2FwcHJvdmUiLCJ0b2tlbiI6ImRHQmNFTVFveWZmNk9DUVk1bDFyZWhYQXdnQ0RuRXdodHA1NzNQMUVKeXN3R0JKNzlHIn0.CRTGAMRkd2kHey33ID65n0hrv_0L1NSv628HtKw7dMp8W5Lou1OsJyUkDYa3VfeHUf0V6j2YLJmOt8bU09I_8zpwQH1-5-JIFnmLkByqp_a0RDKnmslFwD9K4p__OE9QqpLta-u7u5h8v5zK0esQ0w2-9wcKzVfwUrhl8ZiTNxP3BZL5ZDAUoECK9MWmT_aYchc2RuuNcdXiGEh-t-ELM_MwxlRYI-ab1froAEFHkaxxZTbzAmJsbPcWBtTR-whWOLKVZV5eLTIV1Z-8-ZD7q-pCHqalbkN5H8czrBuXySb92pDf58iRUsm4lgXY17PmO51fwhlfQ-UtKpQBDWmtFQ
Nagłówki odpowiedzi:
HTTP/1.1 201 Created
Content-Type: application/jose+json
JWS Header
{
"alg": "RS256",
"typ": "JWT",
"cty": "application/json",
"kid": "zC4j4AchdzwKXS_Mqsh4AfwVySuGsFggO_2xv5tuszk"
}
JWS Payload
{
"paymentId": "PAY715037422182587",
"approveUrl": "https://<CINKCIARZ_APPROVAL_HOST>/approve",
"token": "dGBcEMQoyff6OCQY5l1rehXAwgCDnEwhtp573P1EJyswGBJ79G"
}
Wszystkie komunikaty oraz odpowiedzi wysyłane z systemu Cinkciarz Pay do systemu Partnera są wysyłane w formacie JWS. Przykłady zawarte w dokumentacji dla uproszczenia są podawane w formie zdekodowanej. W celu weryfikacji otrzymanego komunikatu należy pobrać klucz publiczny Cinkciarz Pay i przy jego pomocy zweryfikować autentyczność otrzymanych danych.
Autentyczność parametrów URL
Zdekodowany parametr data (sekcja JWS Payload):
{
"paymentId": "PAY893669703633781",
"externalPaymentId": "464/46846/45",
"result": "SUCCESS"
}
System Cinkciarz Pay po przekierowaniu klienta na stronę Partnera zamieszcza w ramach skonfigurowanego adresu URL dodatkowe parametry określające status realizacji płatności przez klienta. W celu zapewnienia autentyczności, parametry te są podpisywane.
Poniżej zaprezentowany jest przykładowy adres URL:
https://shop.com/success?data=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJwYXltZW50SWQiOiJQQVk4OTM2Njk3MDM2MzM3ODEiLCJleHRlcm5hbFBheW1lbnRJZCI6IjQ2NC80Njg0Ni80NSIsInJlc3VsdCI6IlNVQ0NFU1MifQ.S83VbMBroVHrAVfXs-tk_Q3BdulpAj3lni0vdegxZ7zCQHhJuIU_DYCFQ3OTG5-EHTJ6zzsmLjjzTw5S8XVy96MXQfHbJKY-jVWEAEB5mRiLgJMn4PssQRLgaGwWbhbFbvD5qqPCFpIz96-FWnkvoxuPaa86Ywfdhd-aPAZ43m3afIAXaKOt9Iy5A0fmsbtZsiwAtrFYMmPoNZcEl02NZ9paIaJ8RXaoU4oTKgMEVjZECQ4smqfnpVg7UD1UIw54F_NaTppx0fAAIZYp5n9lzT9-DwXMe875AbH0ZzRq6-500fSCmJQc3_ym9bM8Xa5gbKSlNQrw2t4pjxJkXbPOGw
Generowanie klucza publicznego
Linux
Instalacja potrzebnego oprogramowania
W celu wygenerowania klucza publicznego należy użyć programu openssl.
Poniższe kroki przedstawiają proces instalacji oprogramowania:
- Należy uruchomić konsolę
- W zależności od dystrybucji, należy zainstalować openssl menadżerem pakietów podanym poleceniem
Dystrybucje oparte na Debianie (Ubuntu, Parrot OS)
sudo apt install openssl
CentOS
sudo yum install openssl
Generowanie klucza
- Należy uruchomić konsolę
- W celu wygenerowania pary kluczy należy wprowadzić następujące polecenia:
openssl genpkey -out "klucz-prywatny.pem" -algorithm RSA -pkeyopt rsa_keygen_bits:2048
openssl rsa -in "klucz-prywatny.pem" -out "klucz-publiczny.pem" -outform PEM -pubout
- Klucz publiczny znajduje się w pliku "klucz-publiczny.pem"
macOS
Instalacja potrzebnego oprogramowania
W celu wygenerowania klucza należy użyć programu openssl.
Poniższe kroki przedstawiają proces instalacji oprogramowania:
- Należy uruchomić Terminal
- W celu instalacji openssl niezbędnym jest zainstalowanie menadżera pakietów dla macOS homebrew:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- W celu instalacji openssl menadżerem pakietów należy wprowadzić następujące polecenie:
brew install libressl
Generowanie klucza
- Należy uruchomić Terminal
- W celu wygenerowania pary kluczy należy wprowadzić następujące polecenia:
openssl genpkey -out “klucz-prywatny.pem” -algorithm RSA -pkeyopt rsa_keygen_bits:2048
openssl rsa -in “klucz-prywatny.pem” -out “klucz-publiczny.pem” -outform PEM -pubout
- Klucz publiczny znajduje się w pliku "klucz-publiczny.pem"
Windows
Instalacja potrzebnego oprogramowania
W celu wygenerowania klucza należy użyć programu openssl, który jest częścią
oprogramowania libressl dostarczonego przez OpenBSD dla systemu Windows.
Poniższe kroki przedstawiają proces instalacji oprogramowania:
- Należy pobrać libressl z oficjalnej strony:
https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.5.5-windows.zip - Należy rozpakować archiwum libressl-2.5.5-windows.zip
Generowanie klucza
- Należy przejść do wypakowanego katalogu
libressl-2.5.5-windows/x86/
- Należy uruchomić program openssl.exe
- W celu wygenerowania pary kluczy należy wprowadzić podane polecenia:
genpkey -out “klucz-prywatny.pem” -algorithm RSA -pkeyopt rsa_keygen_bits:2048
rsa -in “klucz-prywatny.pem” -out “klucz-publiczny.pem” -outform PEM -pubout
- Klucz publiczny znajduje się w bieżącym katalogu w pliku "klucz-publiczny.pem"
Bezpieczeństwo klucza prywatnego
Klucz prywatny należy przechowywać w bezpiecznej lokalizacji takiej jak moduł HSM (Hardware Security Module). Jeśli nie jest dostępna sprzętowa metoda ochrony, należy użyć bezpiecznego magazynu kluczy prywatnych systemu operacyjnego. Bezpieczne przechowywanie klucza prywatnego zmniejszy prawdopodobieństwo jego kompromitacji.
Dodanie klucza publicznego
curl -X POST \
-H "Authorization: Bearer M1ODU2ZDI5NzU3ZWFkYTRjMjEyMTIwNmRiNmQ2MjdmM" \
-H "Content-Type: application/json" \
-d "@public-key.json" \
"<CINKCIARZ_PAY_HOST>/public_keys"
public-key.json
{
"pem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnIo4OMp7I5ugVgGQquUL\nFFdC0m1sL+1e7M1zX8lobKPJpQwApDKaEFTBWjrK5aXvzAsxqKzKzG3yUCSGqa/f\nhuzdzs3kBlvIFCPwk5dM5uc5v2+2W0SF0/8lF3NBUjK2jz8s3Nyb3cCWCfysRF+1\nKhF/4ushqX4spCraIU2GkavZ6ETn/Oyfu1fJnZSuH16fwj2OwGsFnTUHam5yrihn\nhtxIkp4eUbhBOkjMMwb4XLygD1dlcg61Pbe60dmuwV+ZWQzfoi4QzlZd9kpePEva\nbPar+AUItKilx5XvNm86PLGBbcsGIMhtew019UP0MrgF1S2/99ZsF2V76haipaXS\nkQIDAQAB\n-----END PUBLIC KEY-----"
}
Nagłówki odpowiedzi:
HTTP/1.1 201 Created
Content-Type: application/json
Odpowiedź:
{
"kid": "lpSoenUSsyxPtZlkP3tGLH9iPLZn1L4zf0G9jUhX3zQ",
"status": "INACTIVE"
}
W celu umożliwienia bezpiecznej komunikacji pomiędzy Cinkciarz Pay i systemem Partnera istotne jest dostarczenie przez Partnera klucza publicznego, którym będą weryfikowane komunikaty wysyłane przez system. Klucz publiczny w formacie PEM można dodać do systemu Cinkciarz Pay:
- Wykorzystując Panel sprzedawcy.
- Wywołując zasób POST /public_keys z Cinkciarz Pay API, który został opisany poniżej.
Zasób
POST <CINKCIARZ_PAY_HOST>/public_keys
Zobacz adresy serwerów
Nagłówki
Nazwa | Wartość | Uwagi |
---|---|---|
Authorization | Bearer <access_token> |
Musi zawierać token dostępowy typu Bearer. Więcej informacji w Pobranie tokena dostępowego. |
Content-Type | application/json |
Zawartość
Obiekt PublicKey zawierający dane klucza publicznego
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
pem | String | TAK | Klucz publiczny Partnera. |
sampleData | SampleData | NIE | Obiekt zawierający przykładowe teksty do weryfikacji klucza publicznego. |
Obiekt SampleData zawierający przykładowe teksty do weryfikacji klucza publicznego
Przykład żądania z wypełnionym opcjonalnym polem
sampleData
:
curl -X POST \\
-H "Authorization: Bearer M1ODU2ZDI5NzU3ZWFkYTRjMjEyMTIwNmRiNmQ2MjdmM" \\
-H "Content-Type: application/json" \\
-d "@public-key.json" \\
"<CINKCIARZ_PAY_HOST>/public_keys"
public-key.json
{
"pem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnIo4OMp7I5ugVgGQquUL\nFFdC0m1sL+1e7M1zX8lobKPJpQwApDKaEFTBWjrK5aXvzAsxqKzKzG3yUCSGqa/f\nhuzdzs3kBlvIFCPwk5dM5uc5v2+2W0SF0/8lF3NBUjK2jz8s3Nyb3cCWCfysRF+1\nKhF/4ushqX4spCraIU2GkavZ6ETn/Oyfu1fJnZSuH16fwj2OwGsFnTUHam5yrihn\nhtxIkp4eUbhBOkjMMwb4XLygD1dlcg61Pbe60dmuwV+ZWQzfoi4QzlZd9kpePEva\nbPar+AUItKilx5XvNm86PLGBbcsGIMhtew019UP0MrgF1S2/99ZsF2V76haipaXS\nkQIDAQAB\n-----END PUBLIC KEY-----",
"sampleData": {
"decodedText": "test",
"encodedText": "HHjI8WE+jlc/K7vgoYCAqe0NlIGpEHkIcx7iUze2T2hOMOpVogtAUq2XJLDWIkJ6kOIFAfYWrCfXullMIfRKix7ch9CHnBTGg0e0DHOZEw42C/50YhMzg1GpfLSJutQpOMU/KEjSXdvuJiKwngHWqpvJTxHTYJkPkLHzUzANz3iB1XB8KBepnHBW2WQ8SUBb8qw27AD1Gc6bySIgx8OoFSpZAsyDQanPtz/TkYBpakakRdw0ISc/cAM8KKTjOxTbHOwWcNDlwAmoBNS+eUGeH/yNBwjPnK1TS0yhmdgrerIrJ+yZm1VI5EHPbzWMBWx142LE/M9d9AEozAMYCUtOlg=="
}
}
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
decodedText | String | TAK | Przykładowy tekst przesyłany w celu weryfikacji poprawności klucza publicznego. |
encodedText | String | TAK | Przykładowy tekst z pola decodedText podpisany przez klucz prywatny z sygnaturą SHA-256. |
Odpowiedź
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
kid | String | TAK | Identyfikator klucza publicznego Partnera. |
status | String | TAK | Status klucza publicznego Partnera. |
Pole status
może przyjmować wartości:
Wartość | Opis |
---|---|
ACTIVATED | Klucz publiczny jest aktywny. |
INACTIVE | Klucz publiczny wymaga aktywacji. |
REVOKED | Klucz publiczny został odwołany. |
Błędy API
Metoda POST /public_keys może zwrócić poniższe błędy biznesowe:
- invalid-pem
- invalid-public-key
- sample-text-signature-not-match
- sample-text-verification-failed
- public-key-has-wrong-length
- public-key-already-exist
- public-key-is-not-activated
Pobranie kluczy publicznych
curl -X GET \
-H "Authorization: Bearer M1ODU2ZDI5NzU3ZWFkYTRjMjEyMTIwNmRiNmQ2MjdmM" \
"<CINKCIARZ_PAY_HOST>/v2/public_keys"
Nagłówki odpowiedzi:
HTTP/1.1 200 Success
Content-Type: application/json
HTTP/1.1 200 Success
Content-Type: application/jose+json
Odpowiedź:
{
"data": [
{
"kid": "chi09N6Bog_0IvtrahDhZRGF7kiHTAhQaIm4x_wdpQU",
"pem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoPYw28jrN71VoWHfSkTR\nb4v8OdYMjwZRs2dg5vPZjv0xryNAqHpHYP5+SCpEz6YRFGzuCWhqkNgSKmZgLBxv\nBVJt8YqZOtbnB4as/4TI0dy73YUmw00LYXLTcrS6al6OFtC4SehUREgoVG9V8Hlf\nx9T0bnNOW5R0z3LvkC+Y8e1Gm+xtX+K5uX00md5TI1jk5GqoE9D7cuv5mBX50Igi\nzMqbZYttu/gdA3TWD6JnceMU2WPKJDLowGN4RnUtQJQiApfRQZDPblB+9AKJkiTy\n8N4g9hAVmKbwC3cehO1vMB7ujOlJrNAXjh1rO7B3OJQ0JXcpb2UhrPZ/DIuRdLvX\n6QIDAQAB\n-----END PUBLIC KEY-----",
"status": "ACTIVE"
}
],
"pagination": {
"first": true,
"last": true,
"currentPageNumber": 1,
"currentPageElementsCount": 2,
"pageSize": 10,
"totalPages": 1,
"totalElements": 2,
"pageLimitExceeded": false
}
}
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJ6QzRqNEFjaGR6d0tYU19NcXNoNEFmd1Z5U3VHc0ZnZ09fMnh2NXR1c3prIn0.eyJkYXRhIjpbeyJraWQiOiJjaGkwOU42Qm9nXzBJdnRyYWhEaFpSR0Y3a2lIVEFoUWFJbTR4X3dkcFFVIiwicGVtIjoiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBb1BZdzI4anJONzFWb1dIZlNrVFJcbmI0djhPZFlNandaUnMyZGc1dlBaanYweHJ5TkFxSHBIWVA1K1NDcEV6NllSRkd6dUNXaHFrTmdTS21aZ0xCeHZcbkJWSnQ4WXFaT3RibkI0YXMvNFRJMGR5NzNZVW13MDBMWVhMVGNyUzZhbDZPRnRDNFNlaFVSRWdvVkc5VjhIbGZcbng5VDBibk5PVzVSMHozTHZrQytZOGUxR20reHRYK0s1dVgwMG1kNVRJMWprNUdxb0U5RDdjdXY1bUJYNTBJZ2lcbnpNcWJaWXR0dS9nZEEzVFdENkpuY2VNVTJXUEtKRExvd0dONFJuVXRRSlFpQXBmUlFaRFBibEIrOUFLSmtpVHlcbjhONGc5aEFWbUtid0MzY2VoTzF2TUI3dWpPbEpyTkFYamgxck83QjNPSlEwSlhjcGIyVWhyUFovREl1UmRMdlhcbjZRSURBUUFCXG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0iLCJzdGF0dXMiOiJBQ1RJVkUifV0sInBhZ2luYXRpb24iOnsiZmlyc3QiOnRydWUsImxhc3QiOnRydWUsImN1cnJlbnRQYWdlTnVtYmVyIjoxLCJjdXJyZW50UGFnZUVsZW1lbnRzQ291bnQiOjIsInBhZ2VTaXplIjoxMCwidG90YWxQYWdlcyI6MSwidG90YWxFbGVtZW50cyI6MiwicGFnZUxpbWl0RXhjZWVkZWQiOmZhbHNlfX0.AVbO7pKOwd_wDBTuC9TriU4wafUxuXJ1G35REfhbgzSH0HvoIeymGsb5ItdUmFXzLnQqV5OsptawinIErNzx4DW-RUsheijJztenHHxOPlsE3m1LMfzJqg78qVYnzZatWRlNT86u0O-DIvfcdWcL0MGQDpTxs2V8IJCJWIZqEDm-V3WpUcjgMuqhj_jl-GL1TRhnLZjZkW8YwfvLNBXfpcvfyI58Q4mnhaMsmw6ikgjI3ocIhuGW-uXvA2E-gJxmaoN-O3BqG1u2XWKtWOA_sRf6-0P8PTI2JA-AToUjdK9yd-lcufIkyJvFUYf3XmzgV8uoCH11tCM3gd-Vp-_kfg
Dodane klucze publiczne można zweryfikować w Panelu sprzedawcy w sekcji konfiguracja. Można je również pobrać wywołując zasób GET /v2/public_keys opisany poniżej.
Zasób
GET <CINKCIARZ_PAY_HOST>/v2/public_keys
Zobacz adresy serwerów
Nagłówki
Nazwa | Wartość | Uwagi |
---|---|---|
Authorization | Bearer <access_token> |
Musi zawierać token dostępowy typu Bearer. Więcej informacji w Pobranie tokena dostępowego. |
Parametry zapytania
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
pageNumber | Number | NIE | Numer strony. |
inStatuses | String | NIE | Lista statusów, w których ma zawierać się status kluczy publicznych. |
notInStatuses | String | NIE | Lista statusów, w których nie ma zawierać się status kluczy publicznych. |
Odpowiedź
Obiekt data zawierający listę dodanych kluczy publicznych
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
data | Array | TAK | Lista obiektów typu PublicKey. |
pagination | Pagination | TAK | Metadane zwróconej strony. |
Obiekt PublicKey zawierający informację o kluczu publicznym
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
kid | String | TAK | Identyfikator klucza publicznego. |
pem | String | TAK | Klucz publiczny. |
status | String | TAK | Status klucza publicznego. |
Pole status
może przyjmować wartości:
Wartość | Opis |
---|---|
ACTIVATED | Klucz publiczny jest aktywny. |
INACTIVE | Klucz publiczny wymaga aktywacji. |
REVOKED | Klucz publiczny został odwołany. |
Obiekt Pagination zawierający metadane zwróconej strony z kluczami publicznymi
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
first | Boolean | TAK | Określa, czy zwrócone dane znajdują się na pierwszej stronie. |
last | Boolean | TAK | Określa, czy zwrócone dane znajdują się na ostatniej stronie. |
currentPageNumber | Number | TAK | Określa numer zwróconej strony. |
currentPageElementsCount | Number | TAK | Określa liczbę elementów na zwróconej stronie. |
pageSize | Number | TAK | Określa wielkość strony. |
totalPages | Number | TAK | Określa liczbę dostępnych stron. |
totalElements | Number | TAK | Określa liczbę dostępnych elementów. |
pageLimitExceeded | Boolean | TAK | Określa, czy limit stron został osiągnięty. |
Błędy API
Metoda GET /v2/public_keys może zwrócić jedynie błędy techniczne.
Pobranie klucza Cinkciarz Pay
curl -X GET \
-H "Authorization: Bearer M1ODU2ZDI5NzU3ZWFkYTRjMjEyMTIwNmRiNmQ2MjdmM" \
"<CINKCIARZ_PAY_HOST>/jwks"
Nagłówki odpowiedzi:
HTTP/1.1 200 Success
Content-Type: application/json
Odpowiedź:
{
"keys": [
{
"kty": "RSA",
"kid": "zC4j4AchdzwKXS_Mqsh4AfwVySuGsFggO_2xv5tuszk",
"use": "sig",
"n": "hFava6Gd2uyA9XHmD7IIxiKD-S2vBcJ0QtgjodtvDeI4y3r5Ab_s_XMvTvbdSkCf0nmK84UwWwayQwnTboafvktCRndfnvSXWCVClgiVWJmnNibPhtsMI_uelmc99OjtPM93UZ6_yiohi1mKpC_w8MygxHX7R3rFMxssO5h-qXPfjWYWAiC0-B_Vf592E52N-dOF_yUi5hAP14gFbPv_LSWn2dSWkg2i6n5lTL6QzNQueBw3Q04odYXrbALPm1M0ucwgDewWW8LTzRAsqKwIeY9iTblq9ywxnExbq5qORgtNVk3zunqEYRKQfJIINFZgJSmqxxAfvnzlJyvuih97zQ",
"e": "AQAB"
}
]
}
W celu weryfikacji komunikatów otrzymywanych z systemu Cinkciarz Pay wymagane jest posiadanie klucza publicznego systemu Cinkciarz Pay. W celu pozyskania klucza należy wykorzystać zasób GET /jwks.
Zasób
GET <CINKCIARZ_PAY_HOST>/jwks
Zobacz adresy serwerów
Nagłówki
Nazwa | Wartość | Uwagi |
---|---|---|
Authorization | Bearer <access_token> |
Musi zawierać token dostępowy typu Bearer. Więcej informacji w Pobranie tokena dostępowego. |
Odpowiedź
Obiekt PublicKeys zawierający listę kluczy publicznych systemu Cinkciarz Pay
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
keys | Array | TAK | Lista obiektów typu PublicKey. |
Obiekt PublicKey zawierający informację o kluczu publicznym Cinkciarz Pay
Nazwa pola | Typ | Wymagalność | Opis |
---|---|---|---|
kty | String | TAK | Typ klucza. |
kid | String | TAK | Identyfikator klucza publicznego. |
use | String | TAK | Sposób użycia klucza. |
n | String | TAK | Moduł standardowego PEM. |
e | String | TAK | Wykładnik standardowego PEM. |
Błędy API
Metoda GET /jwks może zwrócić jedynie błędy techniczne.
Lista wspieranych walut
Waluta | Kod waluty | Liczba cyfr po separatorze dziesiętnym | Minimalna liczba jednostek waluty dla transakcji |
---|---|---|---|
Dirham Zjednoczonych Emiratów Arabskich | AED | 2 | 1 |
Dolar australijski | AUD | 2 | 1 |
Lew bułgarski | BGN | 2 | 1 |
Dolar kanadyjski | CAD | 2 | 1 |
Frank szwajcarski | CHF | 2 | 1 |
Juan chiński | CNY | 2 | 1 |
Korona czeska | CZK | 2 | 10 |
Korona duńska | DKK | 2 | 10 |
Euro | EUR | 2 | 1 |
Funt brytyjski | GBP | 2 | 1 |
Dolar hongkoński | HKD | 2 | 1 |
Forint węgierski | HUF | 0 | 100 |
Nowy szekel izraelski | ILS | 2 | 1 |
Jen japoński | JPY | 0 | 100 |
Peso meksykańskie | MXN | 2 | 1 |
Korona norweska | NOK | 2 | 10 |
Dolar nowozelandzki | NZD | 2 | 1 |
Polski złoty | PLN | 2 | 1 |
Lej rumuński | RON | 2 | 1 |
Korona szwedzka | SEK | 2 | 10 |
Dolar singapurski | SGD | 2 | 1 |
Lira turecka | TRY | 2 | 1 |
Dolar amerykański | USD | 2 | 1 |
Rand południowoafrykański | ZAR | 2 | 1 |
Bat tajlandzki | THB | 2 | 100 |
Dinar serbski | RSD | 2 | 10 |
Algorytm wysyłania powiadomień
Nieudana próba wysłania: | Kolejna próba wysłania za: |
---|---|
1 | 5 sekund |
2 - 11 | 10 sekund |
12 - 20 | 600 sekund |
21 - 110 | 1800 sekund |
> 110 | Kolejne próby nie będą podejmowane |