# Приклад PURCHASE колекції

1\. Authorize by virtual device — `{{url}}/api-gateway/authorize_virtual_device`\
Для запиту потрібен serviceCode, котрий ми передаємо Вам перед інтеграцією на проді. \
У відповідь повернеться зашифрований серверний ключ - serverPublicKey у форматі jwe, котрий буде потрібен для виконання кроку  2.&#x20;

2\. Decrypt auth response — `{{url}}/cipher/decrypt_by_jwk?message={{responseJwe}}`\
Запит декриптує відповідь банку на своїй стороні за допомогою приватного ключа - userPrivateKey (котрий Мерчант генерує за інструкцією [Процес генерації комунікаційних JWK ключів клієнта](https://docs.merchant.alb.ua/autentifikaciya#proces-generaciyi-komunikaciinikh-jwk-klyuchiv-kliyenta) ) , щоб отримати серверний ключ - serverPublicKey у відкритому вигляді, котрий буде потрібен для виконання кроків 5 та 8. \
На Продакшн середовищі, Мерчант самостійно повинен виконувати декриптування на своїй стороні.

3\. Encrypt card number —  `{{url}}/cipher/encrypt_by_jwk?message={{card_number}}`\
За допомогою платіжного ключа - paymentPublicKey, котрий Банк надає Мерчанту, відбувається криптування номеру картки клієнта.\
Для тестування можна скористатися допоміжним методом "/ecom/help/encrypt\_by\_jwk". \
На Продакшн середовищі, Мерчант самостійно повинен виконувати криптування на своїй стороні.

4\. Ecnrypt Date and Security cvv — `{{url}}/cipher/encrypt_by_jwk?message={{year_month_day}}`\
За допомогою платіжного ключа - paymentPublicKey, котрий Банк надає Мерчанту, виконується криптування терміну дії та cvvа. Передається у форматі: рік, місяць, cvva - "2603123"\
Для тестування можна скористатися допоміжним методом  "/ecom/help/encrypt\_ru\_jwk". \
На Продакшн середовищі, Мерчант самостійно повинен виконувати криптування на своїй стороні.

5\. Encrypt create purchase request body — `{{url}}/cipher/encrypt_by_jwk?message={{body_request}}`\
{{body\_request}} - повинно відповідати обов'язковим вхідним параметрам [Запит проведення PURCHASE Крок 1](https://docs.merchant.alb.ua/platizhni-metodi-h2h/purchase/zapit-provedennya-purchase-krok-1) За допомогою розкриптованого серверного ключа - serverPublicKey, котрий отримано на кроках 1 і 2, виконується криптування тіла запиту для створення платежу на стороні Мерчанта. \
У відповідь отримуємо  зашифроване тіло запиту - {{encryptJweT}}\
Для тестів допускається використання допоміжного методу "/ecom/help/encrypt\_ru\_jwk"

6\. Create Purchase — `{{url}}/ecom/execute_request/payments/v3/create/purchase`\
Запит відправляє зашифроване тіло запиту - {{encryptJweT}}, згенероване на кроці 5. \
У відповіді отримуємо зашифровану відповідь - {{responseJwe}}, котра буде потрібна для виконання кроку 7.

7\. Decrypt craet purchase response —  `{{url}}/cipher/decrypt_by_jwk?message={{responseJwe}}`\
Запит декриптує відповідь від банку за допомогою приватного ключа - userPrivateKey, (котрий Мерчант генерує за інструкцією [Процес генерації комунікаційних JWK ключів клієнта](https://docs.merchant.alb.ua/autentifikaciya#proces-generaciyi-komunikaciinikh-jwk-klyuchiv-kliyenta)).\
У відповідь отримуємо розшифровану тіло відповіді на запит у кроці 6.&#x20;

8\. Encrypt execute purchase request body — `{{url}}/cipher/encrypt_by_jwk?message={{body_request}}`\
{{body\_request}} - повинно відповідати обов'язковим вхідним параметрам [PURCHASE крок 2 ](https://docs.merchant.alb.ua/platizhni-metodi-h2h/purchase/zapit-provedennya-purchase-krok-2)\
За допомогою розкриптованого серверного ключа - serverPublicKey, котрий отримано на кроках 1 і 2, виконується криптування тіла запиту на проведення платежу. \
У відповідь отримуємо  зашифроване тіло запиту - {{encryptJweT}}\
Для тестів допускається використання допоміжного методу "/ecom/help/encrypt\_by\_jwk"

9\. Execute Purchase — `{{url}}/ecom/execute_request/payments/v1/execute/purchase`\
Запит відправляє зашифроване тіло запиту - {{encryptJweT}}, згенероване на кроці 8. \
У відповіді отримуємо зашифровану відповідь - {{responseJwe}}, котра буде потрібна для виконання кроку 10.

10\. Decrypt execute purchase response — `{{url}}/cipher/decrypt_by_jwk?message={{responseJwe}}`\
Запит декриптує відповідь від банку за допомогою приватного ключа - userPrivateKey, (котрий Мерчант генерує за інструкцією [Процес генерації комунікаційних JWK ключів клієнта](https://docs.merchant.alb.ua/autentifikaciya#proces-generaciyi-komunikaciinikh-jwk-klyuchiv-kliyenta)).\
У відповідь отримуємо розшифровану тіло відповіді на запит у кроці 9.  \
Для тестів дозволено використання допоміжного методу "/ecom/help/encrypt\_by\_jwk"


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.merchant.alb.ua/opis-roboti-z-klyuchami/priklad-purchase-kolekciyi.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
