Доступність
  • Розмір шрифту

    Звичайний

    Великий

  • Міжсимвольний інтервал

    Звичайний

    Великий

  • Кольорова схема

    Звичайна

    Чорно-біла

Зв'язатися з нами

Опис програми тестування

Опис програми тестування
Версія Опис змін Дата
v.1.0 Початкова версія 30.04.26
v.1.1

Додана таблиця з хостами

Назви нових змінних прописані в описі програми тестування

21.05.26
 
v.1.2

Оновлена таблиця з хостами

Внесені зміни у опис програми відповідно до змін типу авторизації з Oauth2 на api-key

23.07.26

 

Hosts

 

Назва змінної PREPROD SANDBOX PREPROD LIVE PROD SANDBOX PROD LIVE

apiHost sandbox.preprod.api.upc.ua live.preprod.api.upc.ua sandbox.api.upc.ua

live.api.upc.ua

 

Доступ до рахунку (Account Information Service)

 

1. Тестові сценарії для створення account Consent

 

Тест кейс # 1. Сreate Consent тип "detailed" | POST /consents/account-access

 

Документація API

Вимоги до заголовків та тіла запиту описані в документації до відповідної версії

 

Передумови:

Користувач зареєстрований в системі

Має дійсний токен доступу (див. API-ключі)

 

Кроки виконання:

  1. Обрати провайдера, до якого створюється Consent, та зафіксувати providerId
  2. Обрати список accounts для створення Consent, зафіксувати IBANи
  3. Зробити Виклик до API:

 

POST https://{apiHost}/providers/{providerId}/ais/v2/consents/account-access

 

HEADERS:

X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}

TPP-Redirect-URI: "https://google.com"

Content-Type: application/json

X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку 

PSU-IP-Address: "1.1.1.1"

TPP-Explicit-Authorisation-Preferred: true

Client-SCA-Approach-Preference: decoupled

// АБО: Client-SCA-Approach-Preference: redirect

PSU-ID: "+380971112233" // Не обов'язковий при Client-SCA-Approach-Preference redirect

PSU-ID-Type: "PHONE" // Не обов'язковий при Client-SCA-Approach-Preference redirect

 

BODY:

{
  "access": {
    "payments": [
      {
        "account": {
          "iban": "UA1234567890123456789012134567"
        },
        "rights": [
          "accountDetails",
          "balances",
          "transactions"
        ]
      }
    ]
  },
  "consentType": "detailed",
  "recurringIndicator": true,
  "validTo": "2026-06-28",
  "frequencyPerDay": "4"
}

 

Очікуваний результат:

  1. Створено Consent з типом "detailed"
  2. У відповіді присутній consentId.

 

Приклад відповіді:

{
  "consentStatus": "received",
  "consentId": "019c0916-ef4d-7228-babe-e0b2a03d57dd",
  "_links": {
    "self": {
      "href": "/sandbox/ais/v2.0/consents/account-access/019c0916-ef4d-7228-babe-e0b2a03d57dd"
    },
    "status": {
      "href": "/sandbox/ais/v2.0/consents/account-access/019c0916-ef4d-7228-babe-e0b2a03d57dd/status"
    },
    "startAuthorisation": {
      "href": "/sandbox/ais/v2.0/consents/account-access/019c0916-ef4d-7228-babe-e0b2a03d57dd/authorisations"
    }
  }
}

 

Тест кейс # 2. Сreate Consent тип "accountList" | POST /consents/account-access

 

Документація API

Вимоги до заголовків та тіла запиту описані в документації до відповідної версії

 

Передумови:

  • Користувач зареєстрований в системі
  • Має дійсний токен доступу (див. API-ключі)

 

Кроки виконання:

  1. Обрати провайдера до якого створюється Consent, зафіксувати providerId
  2. Зробити Виклик до API:

 

POST https://{apiHost}/providers/{providerId}/ais/v2/consents/account-access

 

HEADERS:

X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}

TPP-Redirect-URI: "https://google.com"

Content-Type: application/json

X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку 

PSU-IP-Address: "1.1.1.1"

TPP-Explicit-Authorisation-Preferred: true

Client-SCA-Approach-Preference: decoupled

// АБО: Client-SCA-Approach-Preference: redirect

PSU-ID: "+380971112233" // Не обов'язковий при Client-SCA-Approach-Preference redirect

PSU-ID-Type: "PHONE" // Не обов'язковий при Client-SCA-Approach-Preference redirect

 

BODY:

{
  "access": {
    "payments": [
      {
        "rights": [
          "accountDetails",
          "balances",
          "transactions"
        ]
      }
    ]
  },
  "consentType": "accountList",
  "recurringIndicator": true,
  "validTo": "2026-06-28",
  "frequencyPerDay": "4"
}

 

Очікуваний результат:

  1. Створено Consent з типом "accountList"
  2. У відповіді присутній consentId.

 

Приклад відповіді:

{
  "consentStatus": "received",
  "consentId": "019c0916-ef4d-7228-babe-e0b2a03d57dd",
  "_links": {
    "self": {
      "href": "/sandbox/ais/v2.0/consents/account-access/019c0916-ef4d-7228-babe-e0b2a03d57dd"
    },
    "status": {
      "href": "/sandbox/ais/v2.0/consents/account-access/019c0916-ef4d-7228-babe-e0b2a03d57dd/status"
    },
    "startAuthorisation": {
      "href": "/sandbox/ais/v2.0/consents/account-access/019c0916-ef4d-7228-babe-e0b2a03d57dd/authorisations"
    }
  }
}

 

Тест кейс # 3. Сreate Consent тип "aspspManaged" | POST /consents/account-access

 

Документація API

Вимоги до заголовків та тіла запиту описані в документації до відповідної версії

 

Важливо:

  • тип "aspspManaged" підтримується лише зі специфікації версії 2.2.0 (2.0.6)

 

Передумови:

  • Користувач зареєстрований в системі
  • Має дійсний токен доступу (див. API-ключі)

 

Кроки виконання:

  1. Обрати провайдера до якого створюється Consent, зафіксувати providerId
  2. Зробити Виклик до API:

 

POST https://{apiHost}/providers/{providerId}/ais/v2.0/consents/account-access

 

HEADERS:

X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}

TPP-Redirect-URI: "https://google.com"

Content-Type: application/json

X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку 

PSU-IP-Address: "1.1.1.1"

TPP-Explicit-Authorisation-Preferred: true

Client-SCA-Approach-Preference: decoupled

// АБО: Client-SCA-Approach-Preference: redirect

PSU-ID: "+380971112233" // Не обов'язковий при Client-SCA-Approach-Preference redirect

PSU-ID-Type: "PHONE" // Не обов'язковий при Client-SCA-Approach-Preference redirect

 

BODY:

{
  "access": {
    "payments": [
      {
        "rights": [
          "accountDetails",
          "balances",
          "transactions"
        ]
      }
    ]
  },
  "consentType": "aspspManaged",
  "recurringIndicator": true,
  "validTo": "2026-06-28",
  "frequencyPerDay": "4"
}

 

Очікуваний результат:

  1. Створено Consent з типом "aspspManaged"
  2. У відповіді присутній consentId.

 

Приклад відповіді:

{
  "consentStatus": "received",
  "consentId": "019c0916-ef4d-7228-babe-e0b2a03d57dd",
  "_links": {
    "self": {
      "href": "/sandbox/ais/v2.0/consents/account-access/019c0916-ef4d-7228-babe-e0b2a03d57dd"
    },
    "status": {
      "href": "/sandbox/ais/v2.0/consents/account-access/019c0916-ef4d-7228-babe-e0b2a03d57dd/status"
    },
    "startAuthorisation": {
      "href": "/sandbox/ais/v2.0/consents/account-access/019c0916-ef4d-7228-babe-e0b2a03d57dd/authorisations"
    }
  }
}

 

2. Тестові сценарії для авторизації Consent

 

Тест кейс # 4. Авторизація Consent | POST /consents/account-access/{consent-id}/authorisations

 

Документація API

Вимоги до заголовків та тіла запиту описані в документації до відповідної версії

 

Передумови:

Користувач має дійсний токен доступу (див. API-ключі)

Існує створений Consent (див. Тест кейс #1, #2 або #3), зафіксовано consentId

 

Кроки виконання:

  1. Зробити Виклик до API:

 

POST https://{apiHost}/providers/{providerId}/ais/v2/consents/account-access/{consent-id}/authorisations

 

HEADERS:

X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}

TPP-Redirect-URI: "https://google.com"

Content-Type: application/json

X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку 

PSU-IP-Address: "1.1.1.1"

TPP-Explicit-Authorisation-Preferred: true

Client-SCA-Approach-Preference: decoupled

// АБО: Client-SCA-Approach-Preference: redirect

PSU-ID: "+380971112233" // Не обов'язковий при Client-SCA-Approach-Preference redirect

PSU-ID-Type: "PHONE" // Не обов'язковий при Client-SCA-Approach-Preference redirect

 

BODY:

{}

 

  1. Створено авторизацію для Consent
  2. У відповіді присутній scaStatus та authorisationId.

 

Приклад відповіді:


{
  "consentStatus": "received",
  "consentId": "019c7aab-5419-7046-bcf5-e718134e0adc",
  "_links": {
    "self": {
      "href": "/sandbox/ais/v2.0/consents/account-access/019c7aab-5419-7046-bcf5-e718134e0adc"
    },
    "status": {
      "href": "/sandbox/ais/v2.0/consents/account-access/019c7aab-5419-7046-bcf5-e718134e0adc/status"
    },
    "startAuthorisation": {
      "href": "/sandbox/ais/v2.0/consents/account-access/019c7aab-5419-7046-bcf5-e718134e0adc/authorisations"
    }
  }
}

 

Для Client-SCA-Approach-Preference: redirect

  1. Прейти за посиланням scaRedirect (якщо Client-SCA-Approach-Preference: redirect) або ініціювати SCA через інший канал (якщо Client-SCA-Approach-Preference: decoupled)
  2. на Sandbox сторінці створено обробник, де можна прийняти або відхилити запит на авторизацію:
  3. Підтвердити авторизацію натиснувши "Accept"

 

Для Client-SCA-Approach-Preference: decoupled

Приклад відповіді:

{
  "scaStatus": "finalised",
  "_links": {
    "scaStatus": {
      "href": "/sandbox/ais/v2.0/consents/account-access/019c7b2e-6a91-7644-ae5d-c2617e6931d5/authorisations/019c7b2e-7c47-7d5b-beb5-593ac088df1e"
    }
  },
  "authorisationId": "019c7b2e-7c47-7d5b-beb5-593ac088df1e",
  "psuMessage": "Authorize payment in Bank's mobile application"
}

 

Для sandbox доступний емулятор, який автоматично підтверджує авторизацію через 1 секунду після створення авторизації.

 

Очікуваний результат:

  1. Відбувається перенаправлення на Google (або інший вказаний TPP-Redirect-URI, якщо середовище не sandbox)
  2. При виклику статусу GET по ConsentId має бути статус "valid" (див. Тест кейс #5)

 

3. Тестові сценарії перевірки Consent та Consent Authorisation

 

Тест кейс # 5. Отримання статусу Consent | GET /consents/account-access/{consent-id}/status

 

Документація API

Вимоги до заголовків та тіла запиту описані в документації до відповідної версії

 

Передумови:

  • Користувач має дійсний токен доступу (див. API-ключі)
  • Існує створений Consent (див. Тест кейс #1, #2 або #3), зафіксовано consentId

 

Кроки виконання:

  1. Зробити Виклик до API:

 

GET https://{apiHost}/providers/{providerId}/ais/v2/consents/account-access/{consent-id}/status

 

HEADERS:

X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}

Content-Type: application/json

X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку

 

BODY:

null

 

Очікуваний результат:

  1.  Тіло відповіді містить поточний статус Consent.

 

Приклад відповіді:

{
  "consentStatus": "valid"
}

 

Тест кейс # 6. Отримання статусу всіх Authorisations для одного Consent | GET /consents/account-access/{consent-id}/authorisations

 

Документація API

Вимоги до заголовків та тіла запиту описані в документації до відповідної версії

 

Передумови:

  1. Користувач має дійсний токен доступу (див. API-ключі)
  2. Існує створений Consent (див. Тест кейс #1, #2 або #3), зафіксовано consentId

 

Кроки виконання:

  1. Зробити Виклик до API:

 

GET https://{apiHost}/providers/{providerId}/ais/v2/consents/account-access/{consent-id}/authorisations

 

HEADERS:

X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}

Content-Type: application/json

X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку

 

BODY:

null

 

Очікуваний результат:

  1. Тіло відповіді містить список id авторизацій для Consent.

 

Приклад відповіді:

{
  "authorisationIds": [
    "019c0e6d-1ef7-7f4e-a552-d7cec5ff34d9"
  ]
}

 

Тест кейс # 7. Отримання статусу унікального Authorisation Consent | GET /consents/account-access/{consent-id}/authorisations/{authorisation-id}

 

Документація API

Вимоги до заголовків та тіла запиту описані в документації до відповідної версії

 

Передумови:

  • Користувач має дійсний токен доступу (див. API-ключі)
  • Існує створений Consent (див. Тест кейс #1, #2 або #3), зафіксовано consentId
  • Існує створена авторизація для Consent (див. Тест кейс #4), зафіксовано authorisationId (див. Тест кейс #6)

 

Кроки виконання:

  1. Зробити Виклик до API:

 

GET https://{apiHost}/providers/{providerId}/ais/v2/consents/account-access/{consent-id}/authorisations/{authorisation-id}

 

HEADERS:

X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}

Content-Type: application/json

X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку 

 

BODY:

null

 

Очікуваний результат:

  1. Тіло відповіді містить поточний статус авторизації Consent.

 

Приклад відповіді:

{
  "scaStatus": "finalised",
  "_links": {
    "scaStatus": {
      "href": "/sandbox/ais/v2.0/consents/account-access/019c0e6c-f7cf-70f7-983f-05df521de43d/authorisations/019c0e6d-1ef7-7f4e-a552-d7cec5ff34d9"
    },
    "scaRedirect": {
      "href": "https://portal.preprod.api.upc.ua/sca-client/mock/upc/bfdb6794-bcb8-4dde-9f3b-07acf73ef202/019c0e6d-1ef7-7f4e-a552-d7cec5ff34d9/consent"
    }
  },
  "authorisationId": "019c0e6d-1ef7-7f4e-a552-d7cec5ff34d9"
}

 

Тест кейс # 8. Отримання об'єкту Consent | GET /consents/account-access/{consent-id}

 

Документація API

Вимоги до заголовків та тіла запиту описані в документації до відповідної версії

 

Передумови:

  • Користувач має дійсний токен доступу (див. API-ключі)
  • Існує створений Consent (див. Тест кейс #1, #2 або #3), зафіксовано consentId

 

Кроки виконання:

  1. Зробити Виклик до API:

 

GET https://{apiHost}/providers/{providerId}/ais/v2/consents/account-access/{consent-id}

 

HEADERS:

X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}

Content-Type: application/json

X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку 

 

BODY:

{}

 

Очікуваний результат:

Тіло відповіді містить деталі Consent: поточний стату, права доступу, тип, термін дії тощо.

 

Приклад відповіді:

{
  "consentStatus": "valid",
  "_links": {
    "self": {
      "href": "/sandbox/ais/v2.0/consents/account-access/019c0e6c-f7cf-70f7-983f-05df521de43d"
    },
    "status": {
      "href": "/sandbox/ais/v2.0/consents/account-access/019c0e6c-f7cf-70f7-983f-05df521de43d/status"
    },
    "account": {
      "href": "/sandbox/ais/v2.0/accounts"
    }
  },
  "access": {
    "payments": [
      {
        "rights": [
          "accountDetails",
          "balances",
          "transactions"
        ]
      }
    ]
  },
  "consentType": "accountList",
  "recurringIndicator": true,
  "validTo": "2026-06-28",
  "frequencyPerDay": 4,
  "combinedServiceIndicator": false
}

 

Тест кейс # 9. Відкликання Consent | DELETE /consents/account-access/{consent-id}

 

Документація API

Вимоги до заголовків та тіла запиту описані в документації до відповідної версії

 

Передумови:

  • Користувач має дійсний токен доступу (див. API-ключі)
  • Існує створений Consent (див. Тест кейс #1, #2 або #3), зафіксовано consentId

 

Кроки виконання:

  1. Зробити Виклик до API:

 

DELETE https://{apiHost}/providers/{providerId}/ais/v2/consents/account-access/{consent-id}

 

HEADERS:

X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}

Content-Type: application/json

X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку 

 

BODY:

null

 

Очікуваний результат:

Отримано відповідь з кодом 204 No Content. При подальшому запиті статусу Consent (див. Тест кейс #5) має бути "terminatedByTpp" чи "revokedByPsu" залежно від того, хто ініціював відкликання.

 

4: Тестові сценарії використання account Consent

ВАЖЛИВО: Передумова для наступних тест кейсів
 

  • Користувач має дійсний токен доступу (див. API-ключі)
  • Існує створений Consent (див. Тест кейс #1, #2 або #3) та він має статус "valid" (див. Тест кейс #4)
  • Зафіксовано consentId

 

Тест кейс # 10. Отримання списку рахунків | GET /accounts

Документація API

Вимоги до заголовків та тіла запиту описані в документації до відповідної версії

 

Кроки виконання:

Зробити Виклик до API:

 

GET https://{apiHost}/providers/{providerId}/ais/v2/accounts

 

QUERY PARAMETERS:

withBalance: boolean // Ігнорується, якщо Consent не передбачає доступ до балансів

 

HEADERS:

X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}

Content-Type: application/json

X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку 

Consent-ID: "{consentId}"

PSU-IP-Address: "8.8.8.8"

PSU-Corporate-ID: "123456789" // Не обов'язковий

PSU-Corporate-ID-Type: "PHONE" // Не обов'язковий

 

BODY:

null

 

Очікуваний результат:

Список рахунків, які відповідають правам доступу, визначеним у Consent. Якщо Consent передбачає доступ до балансів, то у відповіді також будуть включені баланси для кожного рахунку.

 

Приклад відповіді без балансів:

{
  "accounts": [
    {
      "iban": "UA1234567890123456789012134567",
      "currency": "UAH",
      "resourceId": "e555222c-6304-40aa-9933-7952e2fd9999",
      "name": "Current account",
      "cashAccountType": "CACC",
      "_links": {
        "balances": {
          "href": "/sandbox/ais/v2.0/accounts/{resourceId}/balances"
        },
        "transactions": {
          "href": "/sandbox/ais/v2.0/accounts/{resourceId}/transactions?dateFrom=2017-01-01&bookingStatus=both"
        }
      }
    }
  ]
}

 

Приклад відповіді з балансами:

{
  "accounts": [
    {
      "iban": "UA313220000000026007233566001",
      "currency": "UAH",
      "resourceId": "e555222c-6304-40aa-9933-7952e2fd9999",
      "name": "Current account",
      "cashAccountType": "CACC",
      "balances": [
        {
          "balanceAmount": {
            "currency": "UAH",
            "amount": "500000.00"
          },
          "balanceType": "closingBooked"
        },
        {
          "balanceAmount": {
            "currency": "UAH",
            "amount": "500000.00"
          },
          "balanceType": "expected"
        }
      ],
      "_links": {
        "balances": {
          "href": "/sandbox/ais/v2.0/accounts/{resourceId}/balances"
        },
        "transactions": {
          "href": "/sandbox/ais/v2.0/accounts/{resourceId}/transactions?dateFrom=2017-01-01&bookingStatus=both"
        }
      }
    }
  ]
}

 

Тест кейс # 11. Отримання деталей рахунку | GET /accounts/{account-id}

Документація API

Вимоги до заголовків та тіла запиту описані в документації до відповідної версії

 

Кроки виконання:

  1. Зробити Виклик до API:

 

GET https://{apiHost}/providers/{providerId}/ais/v2/accounts/{account-id}

 

QUERY PARAMETERS:

withBalance: boolean // Ігноється, якщо Consent не передбачає доступ до балансів

 

HEADERS:

X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}

Content-Type: application/json

X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку 

Consent-ID: "{consentId}"

PSU-IP-Address: "8.8.8.8"

PSU-Corporate-ID: "123456789" // Не обов'язковий

PSU-Corporate-ID-Type: "PHONE" // Не обов'язковий

 

BODY:

null

 

Очікуваний результат:

Надає деталі по рахунку, якщо у Consent передбачені права доступу. Якщо Consent передбачає доступ до балансів, і withBalance=true то відповіді також будуть включені баланси для кожного рахунку.

 

Приклад відповіді без балансів:

{
  "iban": "UA1234567890123456789012134567",
  "currency": "UAH",
  "resourceId": "e555222c-6304-40aa-9933-7952e2fd9999",
  "name": "Current account",
  "cashAccountType": "CACC",
  "_links": {
    "balances": {
      "href": "/sandbox/ais/v2.0/accounts/{resourceId}/balances"
    },
    "transactions": {
      "href": "/sandbox/ais/v2.0/accounts/{resourceId}/transactions?dateFrom=2017-01-01&bookingStatus=both"
    }
  }
}

 

Приклад відповіді з балансами:

{
  "account": {
    "iban": "UA313220000000026007233566001",
    "currency": "UAH",
    "resourceId": "e55022cc-6304-40aa-9733-7952e2fd9597",
    "name": "Current account",
    "cashAccountType": "CACC",
    "balances": [
      {
        "balanceAmount": {
          "currency": "UAH",
          "amount": "500000.00"
        },
        "balanceType": "closingBooked"
      }
    ],
    "_links": {
      "balances": {
        "href": "/sandbox/ais/v2.0/accounts/e55022cc-6304-40aa-9733-7952e2fd9597/balances"
      },
      "transactions": {
        "href": "/sandbox/ais/v2.0/accounts/e55022cc-6304-40aa-9733-7952e2fd9597/transactions?dateFrom=2017-01-01&bookingStatus=both"
      }
    }
  }
}

 

Тест кейс # 12. Отримання транзакцій рахунку | GET /accounts/{account-id}/transactions

Документація API

Вимоги до заголовків та тіла запиту описані в документації до відповідної версії

 

Кроки виконання:

  1. Зробити Виклик до API:

 

GET https://{apiHost}/providers/{providerId}/ais/v2/accounts/{account-id}/transactions

 

QUERY PARAMETERS:

withBalance: boolean // Ігноється, якщо Consent не передбачає доступ до балансів

 

HEADERS:

X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}

Content-Type: application/json

X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку 

Consent-ID: "{consentId}"

PSU-IP-Address: "8.8.8.8"

PSU-Corporate-ID: "123456789" // Не обов'язковий

PSU-Corporate-ID-Type: "PHONE" // Не обов'язковий

 

BODY:

null

 

Очікуваний результат:

Надає деталі по транзакціям, якщо у Consent передбачені права доступу.

 

Приклад відповіді:

{
  "account": {
    "iban": "UA313220000000026007233566001",
    "currency": "UAH"
  },
  "transactions": {
    "booked": [
      {
        "transactionId": 123,
        "debtor": {
          "name": "Debtor name"
        },
        "debtorAccount": {
          "iban": "LV80BANK0000435195001",
          "currency": "EUR"
        },
        "creditor": {
          "name": "Creditor name"
        },
        "creditorAccount": {
          "iban": "LV80BANK0000435195321",
          "currency": "EUR"
        },
        "transactionAmount": {
          "currency": "EUR",
          "amount": 123.32
        },
        "bookingDate": "12.12.2012",
        "valueDate": "12.12.2012",
        "remittanceInformationUnstructured": "Some details"
      }
    ],
    "pending": [],
    "_links": {
      "account": {
        "href": "/sandbox/ais/v2.0/accounts/c59ab17b-6a71-4052-aef5-72165783f4bf"
      }
    }
  },
  "size": 0,
  "limit": 20
}

 

Тест кейс # 13. Отримання деталей транзакції | GET /accounts/{account-id}/transactions/{transactionId}

Документація API

Вимоги до заголовків та тіла запиту описані в документації до відповідної версії

 

Кроки виконання:

  1. Зробити Виклик до API:

 

GET https://{apiHost}/providers/{providerId}/ais/v2/accounts/{account-id}/transactions/{transaction-іd}

 

QUERY PARAMETERS:

dateFrom: date // Обов'язковий, у форматі YYYY-MM-DD

bookingStatus: string // обов'язковий. Можливі значення - booked, pending, both

 

HEADERS:

X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}

Content-Type: application/json

X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку 

Consent-ID: "{consentId}"

PSU-IP-Address: "8.8.8.8"

PSU-Corporate-ID: "123456789" // Не обов'язковий

PSU-Corporate-ID-Type: "PHONE" // Не обов'язковий

 

BODY:

null

 

Очікуваний результат:

Надає деталі по транзакції, якщо у Consent передбачені права доступу.

 

Приклад відповіді:

{
  "account": {
    "iban": "LV80BANK0000435195001",
    "currency": "EUR"
  },
  "transactionsDetails": {
    "transactionId": 123,
    "debtor": {
      "name": "Debtor name"
    },
    "debtorAccount": {
      "iban": "LV80BANK0000435195001",
      "currency": "EUR"
    },
    "creditor": {
      "name": "Creditor name"
    },
    "creditorAccount": {
      "iban": "LV80BANK0000435195321",
      "currency": "EUR"
    },
    "transactionAmount": {
      "currency": "EUR",
      "amount": 123.32
    },
    "bookingDate": "12.12.2012",
    "valueDate": "12.12.2012",
    "remittanceInformationUnstructured": "Some details"
  }
}

 

Ініціація платежу (Payment Initiation Service)

1. Тестові сценарії Payment Initiation Service

Тест кейс # 1. Сreate consent initiation payments | POST /payments/instant-credit-transfers | POST /payments/credit-transfers

Документація API

Вимоги до заголовків та тіла запиту описані в документації до відповідної версії

 

Передумови:

  • Користувач зареєстрований в системі
  • Має дійсний токен доступу (див. API-ключі)

 

Кроки виконання:

  1. Обрати провайдера до якого створюється платіж, зафіксувати providerId
  2. обрати тип {payment-product} - instant-credit-transfers або credit-transfers
  3. Зробити виклик до API:

 

POST https://{apiHost}/providers/{provider-id}/pis/v2/payments/{payment-product}

 

HEADERS:

X-Request-ID: 123e4567-e89b-12d3-a456-426614174000 // {uuid}

PSU-IP-Address: "1.1.1.1"

Content-Type: application/json

X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку

 

BODY:

{
  "debtorAccount": {
    "iban": "UA313220000000026007233566001",
    "currency": "UAH"
  },
  "instructedAmount": {
    "currency": "UAH",
    "amount": "12.21"
  },
  "creditor": {
    "name": "Coden Postal",
    "creditorId": "CP122540",
    "creditorIdType": "PSPT"
  },
  "creditorAccount": {
    "iban": "UA633220000000029908753443001",
    "currency": "UAH"
  },
  "remittanceInformationUnstructured": [
    "Some details"
  ]
}

 

Очікуваний результат:

  1. Створено платіж з "transactionStatus": "RCVD"
  2. У відповіді присутній "paymentId".

 

Приклад відповіді:

{
  "transactionStatus": "RCVD",
  "paymentId": "019cfaf3-6d52-76a0-9064-969a181c03ee",
  "_links": {
    "self": {
      "href": "/sandbox/pis/v2.0/payments/instant-credit-transfers/019cfaf3-6d52-76a0-9064-969a181c03ee"
    },
    "status": {
      "href": "/sandbox/pis/v2.0/payments/instant-credit-transfers/019cfaf3-6d52-76a0-9064-969a181c03ee/status"
    },
    "startAuthorisation": {
      "href": "/sandbox/pis/v2.0/payments/instant-credit-transfers/019cfaf3-6d52-76a0-9064-969a181c03ee/authorisations"
    }
  }
}

 

Тест кейс # 2. Старт авторизації платежу| POST /payments/{payment-product}/{payment-id}/authorisations

 

Документація API

Вимоги до заголовків та тіла запиту описані в документації до відповідної версії

 

Передумови:

  • Користувач має дійсний токен доступу (див. API-ключі)
  • Існує створений платіж (див. Тест кейс #1), зафіксовано paymentId

 

УВАГА: тип {payment-product} в запиті повинен відповідати типу, для якого створювався платіж у Тест кейс #1

Можливі значення {payment-product} - instant-credit-transfers або credit-transfers

 

Кроки виконання:

Зробити Виклик до API:

 

POST https://{apiHost}/providers/{provider-id}/pis/v2/payments/{payment-product}/{payment-id}/authorisations

 

HEADERS:

X-Request-ID: 123e4567-e89b-12d3-a456-426614174000

Client-Redirect-URI: https://google.com

Content-Type: application/json

X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку 

PSU-ID: "2353909119" // use this value for sandbox

PSU-ID-Type: "PHONE"

 

BODY:

{}

 

Очікуваний результат:

  1. Створено платіж з "transactionStatus": "RCVD"
  2. У відповіді присутній "paymentId".

 

Приклад відповіді:

{
  "scaStatus": "received",
  "_links": {
    "scaStatus": {
      "href": "/sandbox/pis/v2.0/payments/instant-credit-transfers/019cfb75-7982-78b5-9a50-b92813afcd7b/authorisations/019cfb75-8e7d-755d-bbc2-e1e5928a3698"
    },
    "scaRedirect": {
      "href": "https://portal.preprod.api.upc.ua/sca-client/mock/upc/bfdb6794-bcb8-4dde-9f3b-07acf73ef202/019cfb75-8e7d-755d-bbc2-e1e5928a3698/consent"
    }
  },
  "authorisationId": "019cfb75-8e7d-755d-bbc2-e1e5928a3698"
}

 

Для Client-SCA-Approach-Preference: redirect

Додатково: на sandbox доступна емуляція підтвердження платежу з боку користувача з PSU-ID: "2353909119".

  1. Перейти за посиланням у _links/scaRedirect (якщо Client-SCA-Approach-Preference: redirect) або ініціювати SCA через інший канал (якщо Client-SCA-Approach-Preference: decoupled)
  2. на Sandbox сторінці створено обробник, де можна прийняти або відхилити запит на авторизацію:
  3. Підтвердити авторизацію натиснувши "Confirm"

 

2: Тестові сценарії перевірки платежу

 

Тест кейс # 3. Отримання деталей платежу | GET /payments/{payment-product}/{payment-id}

 

Документація API

Вимоги до заголовків та тіла запиту описані в документації до відповідної версії

 

Передумови:

  • Користувач має дійсний токен доступу (див. API-ключі)
  • Існує створений платіж (див. Тест кейс #1, #2), зафіксовано payment-id

 

Кроки виконання:

  1. Зробити Виклик до API:

 

GET https://{apiHost}/providers/{provider-id}/pis/{apiGroupVersion}/payments/{payment-product}/{payment-id}

 

HEADERS:

X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}

Content-Type: application/json

X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку 

 

BODY:

null

 

Очікуваний результат:
 
Тіло відповіді містить поточний статус Consent.

 

Приклад, фрагмент відповіді:

{
  "transactionStatus": "RCVD",
  "_links": {
    "self": {
      "href": "/sandbox/pis/v2.0/payments/instant-credit-transfers/019cfbb3-d015-7a47-bd16-76f18e90d58e"
    }
    //...
  }
}

 

Тест кейс # 4. Отримання статус платежу | GET /payments/{payment-product}/{payment-id}/status

 

Документація API

Вимоги до заголовків та тіла запиту описані в документації до відповідної версії

 

Передумови:

  • Користувач має дійсний токен доступу (див. API-ключі)
  • Існує створений Consent (див. Тест кейс #1, #2), зафіксовано consentId (він же payment-id)

 

Кроки виконання:

  1. Зробити Виклик до API:

 

GET https://{apiHost}/providers/{provider-id}/pis/{apiGroupVersion}/payments/{payment-product}/{payment-id}/status

 

HEADERS:

X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}

Content-Type: application/json

X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку

 

BODY:

null

 

Очікуваний результат:

Тіло відповіді містить поточний статус Consent.

 

Приклад, фрагмент відповіді:

{
  "transactionStatus": "RCVD"
}

 

Тест кейс # 5. Отримання авторизацій платежу | GET /payments/{payment-product}/{payment-id}/authorisations

 

Документація API

Вимоги до заголовків та тіла запиту описані в документації до відповідної версії

 

Передумови:

  • Користувач має дійсний токен доступу (див. API-ключі)
  • Існує створений платіж (див. Тест кейс #1, #2), зафіксовано consentId (він же payment-id)

 

Кроки виконання:

  1. Зробити Виклик до API:

 

GET https://{apiHost}/providers/{provider-id}/pis/{apiGroupVersion}/payments/{payment-product}/{payment-id}/authorisations

 

HEADERS:

X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}

Content-Type: application/json

X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку

 

BODY:

null

 

Очікуваний результат:

  1. Тіло відповіді містить наявні authorisationIds

 

Приклад відповіді:

{
  "authorisationIds": [
    "019cfbb3-eee5-771a-b877-89a5a17cd505"
  ]
}

 

Тест кейс # 6. Отримання деталі авторизації платежу | GET /payments/{payment-product}/{payment-id}/authorisations/{authorisation-id}

 

Документація API

Вимоги до заголовків та тіла запиту описані в документації до відповідної версії

 

Передумови:

  • Користувач має дійсний токен доступу (див. API-ключі)
  • Існує створений платіж (див. Тест кейс #1, #2), зафіксовано consentId (він же payment-id)
  • зафіксовано authorisation-id (див. Тест кейс #5)

 

Кроки виконання:

  1. Зробити Виклик до API:

 

GET https://{apiHost}/providers/{provider-id}/pis/{apiGroupVersion}/payments/{payment-product}/{payment-id}/authorisations/{authorisation-id}

 

HEADERS:

X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}

Content-Type: application/json

X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку

 

BODY:

null

 

Очікуваний результат:

Тіло відповіді містить деталі authorisationIdю

 

Приклад відповіді:

{
  "scaStatus": "finalised",
  "_links": {
    "scaStatus": {
      "href": "/sandbox/pis/v2.0/payments/instant-credit-transfers/019cfbb3-d015-7a47-bd16-76f18e90d58e/authorisations/019cfbb3-eee5-771a-b877-89a5a17cd505"
    },
    "scaRedirect": {
      "href": "https://portal.preprod.api.upc.ua/sca-client/mock/upc/bfdb6794-bcb8-4dde-9f3b-07acf73ef202/019cfbb3-eee5-771a-b877-89a5a17cd505/consent"
    }
  },
  "authorisationId": "019cfbb3-eee5-771a-b877-89a5a17cd505"
}