Wstęp
Standard Otwartej Bankowości na portalu Cinkciarz.pl
Na terenie Unii Europejskiej zasady dostępu do bankowych danych klientów określa dyrektywa PSD II. Regulacje, definiujące warunki funkcjonowania instytucji płatniczych, pozwalają klientom na swobodny wybór dostawcy usług finansowych. Z kolei banki oraz niebankowe instytucje płatnicze zostały zobowiązane do udostępnienia rachunków płatniczych klientów w sieci poprzez API (z ang. Application Programming Interface).
Opis produktu
Conotoxia Sp. z o.o. oferująca usługi na portalu Cinkciarz.pl, odpowiadając na stawiane wymagania, udostępnia dedykowane API dla rachunków płatniczych instytucjom finansowym z certyfikatem kwalifikowanym (czyli tzw. TPP). Interfejs dostępowy zbudowany jest na podstawie specyfikacji NextGenPSD2 API i umożliwia dostęp do rachunków płatniczych klientów portalu w zakresie: inicjowania nowych transakcji płatniczych, pobierania historii operacji na rachunku oraz ich szczegółów. Wykorzystanie funkcjonalności oferowanych przez interfejs jest możliwe tylko w sytuacji, w której klient (właściciel rachunku płatniczego) wyrazi na to zgodę.
Udostępniając nasze API, dajemy Ci możliwość wykorzystania opracowanych przez nas rozwiązań w Twoim biznesie. Wspólnymi siłami stworzymy nowe, innowacyjne produkty finansowe, a nasi klienci otrzymają możliwość swobodnego wyboru dostawcy usług finansowych.
Usługa inicjacji transakcji płatniczej umożliwia korzystanie z szybkich przekazów pieniężnych na terenie 30 krajów, w 28 walutach.
Nasze API jest stale rozwijane, a stworzona baza wiedzy i dokumentacji ułatwi Ci proces integracji z naszymi usługami. Pozostaniemy w stałym kontakcie i pomożemy Wam na każdym etapie wdrożenia.
Certyfikaty
TPP oraz ASPSP muszą posiadać ważny certyfikat kwalifikowany, zgodny z rozporządzeniem PSD2, służący do wzajemnej identyfikacji w interfejsie XS2A, otrzymany od kwalifikowanego dostawcy usług zaufania, spełniającego wymogi regulacyjne w obszarze usługi zaufania oraz identyfikacji elektronicznej. Certyfikat ten dodatkowo powinien spełniać wymagania zdefiniowane w RTS oraz specyfikacji technicznej ETSI (TS 119495). Za nadawanie certyfikatów odpowiedzialne są kwalifikowane centra świadczące usługi zaufania na terenie Unii Europejskiej.
Uzyskanie dostępu do API oraz sposób uwierzytelnienia
W celu uzyskania dostępu do API, konieczne jest przygotowanie dedykowanego użytkownika, któremu zostaną przypisane wymagane dane do autoryzacji (odpowiedni client_id i client_secret). Jako część procesu rejestracji klienta, wymagane jest przesłanie adresu email, na który zostanie przesłana wiadomość z potwierdzeniem i danymi autoryzacyjnymi, a także link (redirect_uri), pod który zostanie zwrócony code.
Dostęp do API jest zabezpieczony przy pomocy standardu OAuth 2.0 i wymaga podania wygenerowanego access_token otrzymanego po uwierzytelnieniu się użytkownika. Cały proces uzyskania dostępu przebiega z użyciem AuthorizationCodeFlow. Wygląda on następująco:
Poszczególne requesty są następnie autoryzowane z użyciem uzyskanego access_tokena, przekazywanego w nagłówku żądania: “Authorization”.
Dodatkowe informacje
Przygotowane przez nas API zostało zbudowane na podstawie specyfikacji NextGenPSD2 utworzonej przez Grupę Berlińską.
Opisy modułów
PIS
Usługa inicjowania transakcji płatniczej (Payment Initiation Service, PIS) – usługa umożliwiająca TPP inicjację transakcji płatniczej w imieniu klienta.
AIS
Usługa dostępu do informacji o rachunku (Account Information Service, AIS) – usługa umożliwiająca dostęp TPP do informacji o rachunkach płatniczych klienta, saldach tych rachunków, historii dokonanych transakcji oraz ich szczegółów.
CAF
Potwierdzenie Dostępności Środków (Confirmation on the Availability of Funds, CAF) - usługa umożliwiająca TPP weryfikację czy na rachunku płatniczym użytkownika znajduje się określona ilość funduszy. W ten sposób można określić czy dany użytkownik jest w stanie dokonać płatności na określoną sumę, zabezpieczając go jednocześnie przed przesyłaniem szczegółowych informacji o rachunku płatniczym. Usługa ta dedykowana jest dostawcom kart płatniczych.
Opisy endpointów
Inicjowanie płatności
(ang. Payment Initiation Request)
Request:
{
"debtorAccount":
{
"paymentAccountId": "12345667",
"currency": "USD",
"amount": 10
},
"creditorAccount":
{
"type": "IBAN",
"recipientId": "2335454",
"currency": "USD"
},
"message": "Message"
}
Response 201 - Created:
{
"transactionStatus": "RCVD",
"paymentId": "1234-wertiq-983",
"_links":
{
"scaOAuth":
{
"href": "string"
},
"scaStatus":
{
"href": "string"
},
"self":
{
"href": "/psd2/v1/payments/money-transfer/1234-wertiq-983"
},
"status":
{
"href": "/psd2/v1/payments/money-transfer/1234-wertiq-983/status"
}
},
"transactionFee": 0.3
}
Request:
POST /psd2/v1.0/payments/money-transfer
Parametry:
Nazwa | Format | Obligatoryjność | Typ | Opis |
---|---|---|---|---|
Content-Type | String | Wymagane | Header | application/json |
X-Request-ID | String | Wymagane | Header | Unikalne ID requestu. Unikalność ma być zapewniona przez użytkownika. |
PSU-IP-Address | String | Opcjonalne | Header | Adres IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
PSU-IP-Port | String | Opcjonalne | Header | Port IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
Body:
Nazwa | Format | Obligatoryjność | Opis |
---|---|---|---|
debtorAccount | Obiekt | Wymagane | Konto wysyłającego. |
paymentAccountId | String | Wymagane | ID konta. |
currency | String | Wymagane | Waluta której używa wysyłający. |
Amount | Liczba | Wymagane | Ilość waluty. |
creditorAccount | Obiekt | Wymagane | Konto na które dokonywana jest płatność. |
type | String | Wymagane | Typ konta. |
recipientId | String | Wymagane | ID konta. |
currency | String | Wymagane | Waluta w jakiej płatność ma dotrzeć do odbiorcy. |
message | String | Opcjonalne | Wiadomość dla odbiorcy. |
Pobranie odbiorców
Response 200 - OK:
{
"accounts":
[
{
"id": "1234567",
"alias": "Konto",
"type": "IBAN",
"currency": "USD"
}
]
}
Request:
GET /psd2/v1.0/accounts/recipients
Parametry:
Nazwa | Format | Obligatoryjność | Typ | Opis |
---|---|---|---|---|
X-Request-ID | String | Wymagane | Header | Unikalne ID requestu. Unikalność ma być zapewniona przez użytkownika. |
Consent-ID | String | Wymagane | Header | ID zgody na używanie określonej funkcjonalności. |
Pobranie szczegółów odbiorcy
Response 200 - OK:
{
"account":
{
"id": "123456",
"alias": "Konto",
"type": "iBAN",
"name": "John",
"lastName": "Smith",
"iban": "AL35202111090000000001234567",
"currency": "USD",
"bankName": "Bank of Albania",
"phone": "+355 00000000000",
"email": "[email protected]",
"_links":
{
"balances":
{
"href": "/psd2/v1/accounts/123456/balances"
},
"transactions":
{
"href": "/psd2/v1/accounts/123456/transactions"
}
}
}
}
Request:
GET /psd2/v1.0/accounts/recipients/{recipientId}
Parametry:
Nazwa | Format | Obligatoryjność | Typ | Opis |
---|---|---|---|---|
recipientId | String | Wymagane | Path | ID odbiorcy |
X-Request-ID | String | Wymagane | Header | Unikalne ID requestu. Unikalność ma być zapewniona przez użytkownika. |
Consent-ID | String | Wymagane | Header | ID zgody na używanie określonej funkcjonalności. |
Pobranie szczegółów płatności
(ang. Get Payment Information)
Request:
GET /psd2/v1.0/payments/money-transfer/{paymentId}
Parametry:
Nazwa | Format | Obligatoryjność | Typ | Opis |
---|---|---|---|---|
paymentId | String | Wymagane | Path | ID płatności |
X-Request-ID | String | Wymagane | Header | Unikalne ID requestu. Unikalność ma być zapewniona przez użytkownika. |
PSU-IP-Address | String | Opcjonalne | Header | Adres IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
PSU-IP-Port | String | Opcjonalne | Header | Port IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
Response 200 - OK
Pobranie statusu płatności
(ang. Payment initiation status request)
Request:
GET /psd2/v1.0/payments/money-transfer/{paymentId}/status
Parametry:
Nazwa | Format | Obligatoryjność | Typ | Opis |
---|---|---|---|---|
paymentId | String | Wymagane | Path | ID płatności |
X-Request-ID | String | Wymagane | Header | Unikalne ID requestu. Unikalność ma być zapewniona przez użytkownika. |
PSU-IP-Address | String | Opcjonalne | Header | Adres IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
PSU-IP-Port | String | Opcjonalne | Header | Port IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
Response 200 - OK:
{
"transactionStatus": "ACCP",
"fundsAvailable": true
}
Akceptacja płatności
Request:
POST /psd2/v1.0/payments/money-transfer/{paymentId}/commit
Parametry:
Nazwa | Format | Obligatoryjność | Typ | Opis |
---|---|---|---|---|
paymentId | String | Wymagane | Path | ID płatności |
X-Request-ID | String | Wymagane | Header | Unikalne ID requestu. Unikalność ma być zapewniona przez użytkownika. |
PSU-IP-Address | String | Opcjonalne | Header | Adres IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
PSU-IP-Port | String | Opcjonalne | Header | Port IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
Response 200 - OK:
{
"paymentId": "123465",
}
Szczegóły rachunku
Dostarcza informacji o szczegółach rachunku.
Response:
{
"account": {
"resourceId": "EXAMPLE560966344078535",
"paymentAccountId": "EXAMPLE560966344078535",
"currency": "XXX",
"_links":
{
"balances":
{
"href": "/psd2/v1.0/accounts/EXAMPLE560966344078535/balances"
},
"transations":
{
"href": "/psd2/v1.0/accounts/EXAMPLE560966344078535/transactions"
}
},
"balances":
[ // jeżeli request z flagą withBalance = true
{
"balanceType": "interimBooked",
"balanceAmount":
{
"currency": "PLN",
"amount": "12345.12"
}
},
{
"balanceType": "interimAvailable",
"balanceAmount":
{
"currency": "PLN",
"amount": "4555.00"
}
},
{
"balanceType": "interimBooked",
"balanceAmount":
{
"currency": "EUR",
"amount": "44452.00"
}
},
{
"balanceType": "interimAvailable",
"balanceAmount":
{
"currency": "EUR",
"amount": "123.45"
}
}
]
}
}
Request:
GET /psd2/v1.0/accounts/{paymentAccountId}
Parametry:
Nazwa | Format | Obligatoryjność | Typ | Opis |
---|---|---|---|---|
paymentAccountId | String | Wymagane | Path | ID konta użytkownika, o którym informacje mają zostać zwrócone. |
withBalance | Boolean | Opcjonalne | Query | Czy zwrócić również informacje o saldach. |
X-Request-ID | String | Wymagane | Header | Unikalne ID requestu. Unikalność ma być zapewniona przez użytkownika. |
Consent-ID | String | Wymagane | Header | ID zgody na używanie określonej funkcjonalności. |
PSU-IP-Address | String | Opcjonalne | Header | Adres IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
PSU-IP-Port | String | Opcjonalne | Header | Port IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
Currency: “XXX” oznacza multiwalutowość
Lista rachunków
Dostarcza listę rachunków
Response:
{
"accounts":
[
{
"resourceId": "EXAMPLE560966344078535",
"paymentAccountId": "EXAMPLE560966344078535",
"currency": "XXX",
"_links":
{
"balances":
{
"href": "/psd2/v1.0/accounts/EXAMPLE560966344078535/balances"
},
"transations":
{
"href": "/psd2/v1.0/accounts/EXAMPLE560966344078535/transactions"
}
},
"balances":
[ // jeżeli request z flagą withBalance
{
"balanceType": "interimBooked",
"balanceAmount":
{
"currency": "PLN",
"amount": "12345.12"
}
},
{
"balanceType": "interimAvailable",
"balanceAmount":
{
"currency": "PLN",
"amount": "4555.00"
}
},
{
"balanceType": "interimBooked",
"balanceAmount":
{
"currency": "EUR",
"amount": "44452.00"
}
},
{
"balanceType": "interimAvailable",
"balanceAmount":
{
"currency": "EUR",
"amount": "123.45"
}
}
]
}
]
}
Request:
GET /psd2/v1.0/accounts
Parametry:
Nazwa | Format | Obligatoryjność | Typ | Opis |
---|---|---|---|---|
withBalance | Boolean | Opcjonalne | Query | Czy zwrócić również informacje o saldach. |
X-Request-ID | String | Wymagane | Header | Unikalne ID requestu. Unikalność ma być zapewniona przez użytkownika. |
Consent-ID | String | Wymagane | Header | ID zgody na używanie określonej funkcjonalności. |
PSU-IP-Address | String | Opcjonalne | Header | Adres IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
PSU-IP-Port | String | Opcjonalne | Header | Port IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
Currency: “XXX” oznacza multiwalutowość
Saldo
Dostarcza listę sald dla określonego konta
Response:
{
"account":
{
"paymentAccountId": "123456789"
},
"balances":
[
{
"balanceType": "interimBooked",
"balanceAmount":
{
"currency": "PLN",
"amount": "12345.12"
}
},
{
"balanceType": "interimAvailable",
"balanceAmount":
{
"currency": "PLN",
"amount": "4555.00"
}
},
{
"balanceType": "interimBooked",
"balanceAmount":
{
"currency": "EUR",
"amount": "44452.00"
}
},
{
"balanceType": "interimAvailable",
"balanceAmount":
{
"currency": "EUR",
"amount": "123.45"
}
}
]
}
Request:
GET /psd2/v1.0/accounts/{paymentAccountId}/balances
Parametry:
Nazwa | Format | Obligatoryjność | Typ | Opis |
---|---|---|---|---|
paymentAccountId | String | Wymagane | Path | ID konta użytkownika, na temat którego informacje mają zostać zwrócone. |
X-Request-ID | String | Wymagane | Header | Unikalne i requestu. Unikalność ma być zapewniona przez użytkownika. |
Consent-ID | String | Wymagane | Header | ID zgody na używanie określonej funkcjonalności. |
PSU-IP-Address | String | Opcjonalne | Header | Adres IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
PSU-IP-Port | String | Opcjonalne | Header | Port IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
Lista transakcji
Dostarcza listę transakcji dla określonego konta.
Response:
{
"account":
{
"currencyAccountId":"id1243"
},
"transactions":
{
"booked":
[
{
"transactionId": "CXT1072395432531381",
"transactionType": "TRANSFER",
"amount":
{
"currency": "USD",
"value": "234.12"
}
"bookingDate": "2018-03-09T11:50:49.525Z",
"valueDate": "2018-03-09T11:50:49.525Z"
}
],
"pending":
[
{
"transactionId": "CXT1072395432531381",
"transactionType": "CK_DEPOSIT",
"amount":
{
"currency": "PLN",
"value": "234.12"
}
"date": "2018-03-09T11:50:49.525Z"
}
],
"_links":
{
"account":
{
"href":"/psd2/v1.3/accounts/id1243"
}
}
}
}
Request:
GET /psd2/v1.0/accounts/{paymentAccountId}/transactions
Parametry:
Nazwa | Format | Obligatoryjność | Typ | Opis |
---|---|---|---|---|
paymentAccountId | String | Wymagane | Path | ID konta użytkownika, o którym informacje mają zostać zwrócone. |
bookingStatus | String | Opcjonalne | Query | Dla jakiego statusu mają zostać zwrócone wyniki (“BOOKED”, “PENDING” lub “BOTH”). Domyślnie "BOTH" |
dateFrom | DateTime | Opcjonalne | Query | Data, od której mają zostać zwrócone transakcje, jeśli pole jest wypełnione. Pole nie może być wypełnione, jeżeli podano entryReferenceFrom |
dateTo | DateTime | Opcjonalne | Query | Data, do której mają zostać zwrócone transakcje jeśli pole jest wypełnione. Pole nie może być wypełnione, jeżeli podano entryReferenceFrom |
entryReferenceFrom | String | Opcjonalne | Query | ID transakcji, od której mają być wyfiltrowane transakcje, jeśli pole jest wypełnione. To pole nie może zostać przekazane, jeżeli dateFrom albo dateTo są wypełnione. |
X-Request-ID | String | Wymagane | Header | Unikalne ID requestu. Unikalność ma być zapewniona przez użytkownika. |
Consent-ID | String | Wymagane | Header | ID zgody na używanie określonej funkcjonalności. |
PSU-IP-Address | String | Opcjonalne | Header | Adres IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
PSU-IP-Port | String | Opcjonalne | Header | Port IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
Szczegóły transakcji
Dostarcza szczegóły określonej transakcji dla określonego konta.
Response:
{
"transactionsDetails":
{
"transactionId": "EXAMPLE1072395432531381",
"transactionType": "FEE",
"status": "BOOKED",
"amount":
{
"currency": "PLN",
"value": "234.12"
}
"bookingDate": "2018-03-09T11:50:49.525Z",
"valueDate": "2018-03-09T11:50:49.525Z"
}
}
Request:
GET /psd2/v1.0/accounts/{paymentAccountId}/transactions/{resourceId}
Parametry:
Nazwa | Format | Obligatoryjność | Typ | Opis |
---|---|---|---|---|
paymentAccountId | String | Wymagane | Path | ID konta użytkownika, o którym informacje mają zostać zwrócone. |
resourceId | String | Wymagane | Path | ID transakcji, dla której mają zostać zwrócone szczegółowe informacje. |
X-Request-ID | String | Wymagane | Header | Unikalne ID requestu. Unikalność ma być zapewniona przez użytkownika. |
Consent-ID | String | Wymagane | Header | ID zgody na używanie określonej funkcjonalności. |
PSU-IP-Address | String | Opcjonalne | Header | Adres IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
PSU-IP-Port | String | Opcjonalne | Header | Port IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
Utworzenie zgody
Utwórz consent
Request:
{
"access":
{
"accounts":
[
{
"paymentAccountId": "DE40100100103307118608",
"currency": "USD"
}
],
"balances":
[
{
"paymentAccountId": "DE40100100103307118608",
"currency": "USD"
}
],
"transactions":
[
{
"paymentAccountId": "DE40100100103307118608",
"currency": "USD"
}
],
"allPsd2": "allAccounts",
},
"recurringIndicator": true,
"validUntil": "2020-10-07T11:25:07.427237Z",
"frequencyPerDay": "4",
"combinedServiceIndicator": false
}
Response 201 - Created:
{
"consentStatus": "received",
"consentId": "1a43fa8b-92ef-4704-b6a9-16256656beb6",
"_links":
{
"self": "/psd2/v1.0/consents/1a43fa8b-92ef-4704-b6a9-16256656beb6",
"status": "/psd2/v1.0/consents/1a43fa8b-92ef-4704-b6a9-16256656beb6/status"
}
}
Request:
POST /psd2/v1.0/consents
Parametry:
Nazwa | Format | Obligatoryjność | Typ | Opis |
---|---|---|---|---|
Content-Type | String | Wymagane | Header | application/json |
X-Request-ID | String | Wymagane | Header | Unikalne ID requestu. Unikalność ma być zapewniona przez użytkownika. |
PSU-IP-Address | String | Opcjonalne | Header | Adres IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
PSU-IP-Port | String | Opcjonalne | Header | Port IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
Body:
Nazwa | Format | Obligatoryjność | Opis |
---|---|---|---|
access | Obiekt | Wymagane | Dostępu, do jakich danych dotyczy request. |
accounts | Lista obiektów | Opcjonalne | Dla jakich kont mają być dostępne informacje o kontach. |
paymentAccountId | String | Wymagane | ID konta, dla którego ma być przyznany dostęp. |
currency | String | Wymagane | Waluta, dla której ma być przyznany dostęp. |
balances | Lista obiektów | Opcjonalne | Dla jakich kont mają być dostępne informacje o stanach kont. |
transactions | Lista obiektów | Opcjonalne | Dla jakich kont mają być dostępne informacje o transakcjach. |
allPsd2 | String | Opcjonalne | Jeśli ma wartość “allAccounts”, wybiera wszystkie konta dostępne konta. |
recurringIndicator | Boolean | Wymagane | Jeśli wartość to true - zgody będzie można używać wielokrotnie aż do odwołania. Jeśli wartość to false - zgody będzie można użyć jednokrotnie. |
validUntil | DateTime | Wymagane | Do kiedy ma być ważna zgoda. |
frequencyPerDay | Int | Wymagane | Ile razy w ciągu dnia będzie można użyć tej zgody. |
combinedServiceIndicator | Boolean | Wymagane | Jeśli true to inicjalizacja płatności będzie wykonana w tej samej sesji. |
Pobranie informacje o zgodzie
Dostarcza szczegóły określonej zgody
Response:
{
"access":
{
"accounts":
[
{
"paymentAccountId": "DE40100100103307118608",
"currency": "usd"
}
],
"balances":
[
{
"paymentAccountId": "DE40100100103307118608",
"currency": "usd"
}
],
"transactions":
[
{
"paymentAccountId": "DE40100100103307118608",
"currency": "usd"
}
]
},
"recurringIndicator": true,
"validUntil": "2020-10-07T11:25:07.427237",
"frequencyPerDay": 4,
"lastActionDate": "2019-03-11T09:45:43.656144",
"consentStatus": "received"
}
Request:
GET /psd2/v1.0/consents/{consentId}
Parametry:
Nazwa | Format | Obligatoryjność | Typ | Opis |
---|---|---|---|---|
consentId | String | Wymagane | Path | ID zgody, o którym informacje mają zostać zwrócone. |
X-Request-ID | String | Wymagane | Header | Unikalne ID requestu. Unikalność ma być zapewniona przez użytkownika. |
PSU-IP-Address | String | Opcjonalne | Header | Adres IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
PSU-IP-Port | String | Opcjonalne | Header | Port IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
Pobranie statusu zgody
Dostarcza szczegóły określonej zgody.
Request:
GET /psd2/v1.0/consents/{consentId}/status
Parametry:
Nazwa | Format | Obligatoryjność | Typ | Opis |
---|---|---|---|---|
consentId | String | Wymagane | Path | ID zgody, o którym informacje mają zostać zwrócone. |
X-Request-ID | String | Wymagane | Header | Unikalne ID requestu. Unikalność ma być zapewniona przez użytkownika. |
PSU-IP-Address | String | Opcjonalne | Header | Adres IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
PSU-IP-Port | String | Opcjonalne | Header | Port IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
Response:
{
"consentStatus": "received"
}
Usunięcie zgody
Usuwa zgodę o określonym id
Request:
DELETE /psd2/v1.0/consents/{consentId}
Parametry:
Nazwa | Format | Obligatoryjność | Typ | Opis |
---|---|---|---|---|
consentId | String | Wymagane | Path | ID zgody o którym informacje mają zostać zwrócone. |
X-Request-ID | String | Wymagane | Header | Unikalne ID requestu. Unikalność ma być zapewniona przez użytkownika. |
PSU-IP-Address | String | Opcjonalne | Header | Adres IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
PSU-IP-Port | String | Opcjonalne | Header | Port IP użytkownika. Używane tylko, jeśli pole jest wypełnione. |
Response 204 - No Content
Potwierdzenie ilości środków
(ang. Confirmation of Funds Request) Sprawdza czy podane konto posiada odpowiednią ilość środków.
Request:
POST /psd2/v1.0/funds-confirmations
Parametry:
Request:
{
"account":
{
"paymentAccountId": "12345678998542"
},
"instructedAmount":
{
"currency": "USD",
"amount": 15.33
}
}
Nazwa | Format | Obligatoryjność | Typ | Opis |
---|---|---|---|---|
X-Request-ID | String | Wymagane | Header | Unikalne ID requestu. Unikalność ma być zapewniona przez użytkownika. |
Body:
Response 200 - OK:
{
"fundsAvailable": true
}
Nazwa | Format | Obligatoryjność | Opis |
---|---|---|---|
account | Obiekt | Wymagane | Konto którego stan będzie sprawdzany. |
paymentAccountId | String | Wymagane | ID konta którego stan będzie sprawdzany. |
instructedAmount | Obiekt | Wymagane | Sprawdzana ilość środków dla danej waluty. |
Currency | String | Wymagane | Sprawdzana waluta. |
Amount | Liczba | Wymagane | Sprawdzana ilość środków. |
OAuth 2.0
Autoryzacja użytkownika przy użyciu OAuth 2.0
Procedura autoryzacji
- Aplikacja przekierowuje użytkownika do OAuth serwer (serwera autoryzacji).
- Serwer autoryzacji wyświetla użytkownikowi formularz z polami do wpisania loginu i hasła.
- Serwer autoryzacji po pomyślnym zweryfikowaniu loginu i hasła wyświetla użytkownikowi zgody o które aplikacja prosi, które następnie użytkownik potwierdza.
- Serwer autoryzacji po pomyślnym zweryfikowaniu zgód przesyła code na podany adres zwrotny do aplikacji.
- Aplikacja przesyła code i client_secret do serwera autoryzacji.
- Serwer autoryzacji weryfikuje code oraz client_secret i zwraca aplikacji access_token
- Aplikacja jest uwierzytelniona i przy użyciu access_token może wysyłać żądania operacji do dostawcy usług.
Opisy endpointów używanych do autoryzacji
Pobierz kod autoryzacji
Request:
GET /connect/authorize
Parametry:
Nazwa | Format | Obligatoryjność | Typ | Opis |
---|---|---|---|---|
client_id | String | Wymagane | Query | Unikalny identyfikator klienta (TPP). |
redirect_uri | String | Wymagane | Query | URI klienta, na które jest przesyłany code. |
response_type | String | Wymagane | Query | Typ oczekiwanej odpowiedzi [code]. |
scope | String | Wymagane | Query | Zasoby do których aplikacja chce uzyskać dostęp. |
ui_locales | String | Opcjonalne | Query | Język interfejsu użytkownika. |
Wymień kod autoryzacji na Access Token
Request
{
"client_id": "TTPid",
"client_secret": "TTPsecret",
"grant_type": "authorization_code",
"redirect_uri": "https://youdomain.com/openbanking/code",
"code": "fdaee1c28dcd246bb4649ab76fd8099fc51e8c34f622175836ea2260d708b4d2"
}
Response 200 - OK
{
"access_token": "46b5572af88c95a6462871dd6fe6459a6336e3fedc2a06616dabbff3b5a64dbe",
"expires_in": 3600,
"token_type": "Bearer"
}
Request:
POST /connect/token
Parametry:
Nazwa | Format | Obligatoryjność | Typ | Opis |
---|---|---|---|---|
client_id | String | Wymagane | Body | Unikalny identyfikator klienta (TPP). |
client_secret | String | Wymagane | Body | Tajny klucz używany do uwierzytelnienia klienta. |
code | String | Wymagane | Body | Jednorazowy kod wymienialny na access_token. |
grant_type | String | Wymagane | Body | Rodzaj kodu wymianianego na access_token [authorization_code]. |
redirect_uri | String | Wymagane | Body | URI pod który użytkownik zostanie przekierowany po uzyskaniu autoryzacji, musi być takie same jak w /connect/authorize. |
Rodzaje zgód użytkownika
Zgody używane w polu scope
Nazwa | Opis |
---|---|
ais | Informacje o rachunku użytkownika. Pobranie informacji o rachunkach płatniczych użytkownika, saldach tych rachunków, historii dokonanych transakcji oraz ich szczegółów. |
piis | Potwierdzenie dostępności środków. Aplikacja potwierdza czy użytkownik posiada wystarczającą ilość środków pieniężnych na rachunku płatniczym. |
pis | Inicjowanie płatności. Aplikacja zleca w imieniu użytkownika transfer środków pieniężnych z jego rachunku. |
Zwracane błędy
Wszystkie zwracane błędy z API są w tym samym schemacie.
Model błędu
Response:
{
"type": "https://berlingroup.com/error-codes/FORMAT_ERROR",
"title": "Bad Request",
"code": "FORMAT_ERROR"
}
Nazwa | Opis |
---|---|
type | Adres URI opisujący typ błędu. |
title | Krótki opis błędu. |
detail | Szczegółowy opis błędu. |
code | Kod wyjaśniający charakter błędu. |
Obsługiwane kody statusów
HTTP Status Code | Tekst | Opis |
---|---|---|
400 | Bad Request | Żądanie nie może być obsłużone z powodu błędnej składni zapytania. |
401 | Unauthorized | Dostęp do żądanego zasobu wymaga uwierzytelnienia. |
403 | Forbidden | Klient nie posiada wymaganych uprawnień do żądanego zasobu. |
404 | Not Found | Żądany zasób nie został odnaleziony. |
405 | Method Not Allowed | Metoda zawarta w żądaniu nie jest dozwolona dla wskazanego zasobu. |
408 | Request Timeout | Klient nie przesłał żądania do serwera w określonym czasie. |
500 | Internal Server Error | Wewnętrzny błąd serwera. |
503 | Service Unavailable | Serwer nie jest w stanie w danej chwili zrealizować żądania klienta. |
Testowanie na sandboksie
Komunikacja pomiędzy TPP a ASPSP, zawsze jest zabezpieczona poprzez uwierzytelnienie połączenia kwalifikowanym certyfikatem klienta, z użyciem szyfrowania TLS w minimalnej wersji 1.2. Kwalifikowany certyfikat musi być wystawiony przez kwalifikowanego dostawcę usług zaufania zgodnie z regulacją eIDAS. Zawartość certyfikatu musi być zgodna z wymaganiami EBA-RTS, oraz wskazywać wszystkie role do których TPP się autoryzuje.
Użytkownik testowy:
Login: psuser
Hasło: psupass
Słownik pojęć
Nazwa | Opis |
---|---|
access_token | Tymczasowy token używany podczas dostępu do danych w imieniu użytkownika. |
client_id | Unikalny identyfikator klienta (TPP). |
client_secret | Tajny klucz używany do uwierzytelnienia klienta. |
code | Jednorazowy kod wymienialny na access_token. |
Wsparcie
W razie wątpliwości należy kontaktować się bezpośrednio z naszymi konsultantami wysyłając wiadomość na adres e-mail: [email protected].