# Контрольний список QA (/uk/online/getting-started/checklist)



Пройдіть цей контрольний список у [пісочниці (sandbox)](./testing), а перед прийомом реальних платежів виконайте перевірки для робочого середовища. Список
охоплює результати платежів, верифікацію, повторні спроби, конфігурацію та безпеку. Позначайте кожну перевірку, щойно її виконаєте.

<ChecklistProgress />

## 1. Результати платежів [#1-payment-outcomes]

<ChecklistItem id="OP-PO-1" code="PO-1" title="Успішний платіж">
  Оплатіть карткою 

  `4242 4242 4242 4242`

  . Отримана сесія має 

  `paymentStatus: successful`

  , а замовлення виконується рівно один раз.
</ChecklistItem>

<ChecklistItem id="OP-PO-2" code="PO-2" title="Відхилена картка">
  Оплатіть карткою 

  `4916 0184 7581 4056`

  . Замовлення залишається неоплаченим, а повторна спроба з карткою для успішного платежу спрацьовує, поки сесія відкрита.
</ChecklistItem>

<ChecklistItem id="OP-PO-3" code="PO-3" title="3-D Secure">
  Оплатіть карткою 

  `4012 0018 0000 0016`

   і пройдіть перевірку (challenge). Виконання замовлення чекає на отриманий статус.
</ChecklistItem>

<ChecklistItem id="OP-PO-4" code="PO-4" title="Помилка обробки">
  Використайте тестову картку з помилкою обробки для тестового платіжного шлюзу. Замовлення залишається неоплаченим, хоча форма картки прийняла картку.
</ChecklistItem>

<ChecklistItem id="OP-PO-5" code="PO-5" title="Необроблені стани">
  Ваш код вважає 

  `unpaid`

  , 

  `failed`

  , 

  `action_needed`

  , 

  `cancelled`

   і невідомі значення неоплаченими. Див. 

  [Статус платежу](/online/integration/api_integration#payment-status)

  .
</ChecklistItem>

## 2. Верифікація та виконання замовлення [#2-verification-and-fulfillment]

<ChecklistItem id="OP-VF-1" code="VF-1" title="Перевірка на сервері">
  Під час виконання замовлення референс замовлення, сума, валюта та 

  `paymentStatus`

   порівнюються зі збереженим замовленням, а не з даними переспрямування.
</ChecklistItem>

<ChecklistItem id="OP-VF-2" code="VF-2" title="URL успіху без оплати">
  Відкрийте URL успіху напряму, не оплачуючи. Замовлення залишається неоплаченим.
</ChecklistItem>

<ChecklistItem id="OP-VF-3" code="VF-3" title="Посилання для скасування">
  Перейдіть за посиланням для скасування в Checkout. Замовлення залишається неоплаченим, а ваш код не робить висновку про статус 

  `cancelled`

   лише на підставі самої навігації.
</ChecklistItem>

<ChecklistItem id="OP-VF-4" code="VF-4" title="Повторне повернення">
  Після успішного платежу двічі перезавантажте сторінку повернення. Замовлення виконується рівно один раз.
</ChecklistItem>

## 3. Повторні спроби та переривання [#3-retries-and-interruptions]

Для кожного незалежного випадку використовуйте нове тестове замовлення та нову сесію. Для тестів повторних спроб повторно використовуйте початкове замовлення, тіло запиту та idempotency key.

<ChecklistItem id="OP-RI-1" code="RI-1" title="Втрачена відповідь на створення">
  У своєму тестовому коді відкиньте відповідь на створення та повторіть запит з тим самим 

  `Idempotency-Key`

   і тілом. Повертається початкова сесія, а друга не створюється.
</ChecklistItem>

<ChecklistItem id="OP-RI-2" code="RI-2" title="Змінене тіло">
  Повторно використайте ключ з іншим тілом. API повертає HTTP 409, і ваш код не вважає це новою сесією.
</ChecklistItem>

<ChecklistItem id="OP-RI-3" code="RI-3" title="Клієнт не повертається">
  Оплатіть, а потім закрийте вкладку до повернення. Ваше завдання звірки отримує збережену сесію та записує платіж рівно один раз.
</ChecklistItem>

<ChecklistItem id="OP-RI-4" code="RI-4" title="Тайм-аут статусу">
  Змусьте отримання статусу завершитися тайм-аутом. Ваш застосунок зберігає ID сесії, залишає результат невизначеним і не створює сесію на заміну.
</ChecklistItem>

<ChecklistItem id="OP-RI-6" code="RI-6" title="Замінена сесія">
  Створіть другу сесію для того самого неоплаченого замовлення. Перша URL-адреса повідомляє 

  `expired`

   і не може прийняти оплату. Після оплати замовлення створення ще однієї сесії повертає HTTP 409.
</ChecklistItem>

<ChecklistItem id="OP-RI-5" code="RI-5" title="Закінчення терміну дії сесії">
  Дочекайтеся, поки мине 

  `expiresAt`

   (30 хвилин), і знову відкрийте URL. Новий платіж розпочати неможливо, а замовлення залишається неоплаченим.
</ChecklistItem>

## 4. Налаштування Checkout [#4-checkout-settings]

<ChecklistItem id="OP-CS-1" code="CS-1" title="Мерчант схвалений">
  Кожен мерчант, для якого ви приймаєте платежі, є в таблиці 

  **Checkout merchants**

   зі статусом 

  **Ready**

  .
</ChecklistItem>

<ChecklistItem id="OP-CS-2" code="CS-2" title="Адреси повернення">
  Типові URL успіху та скасування задано для облікових даних, які ви використовуєте (типові значення організації для Secret key, налаштування мерчанта для ключа мерчанта), вони використовують HTTPS, а їхні точні origin указано в 

  **Allowed websites**

   цих облікових даних.
</ChecklistItem>

<ChecklistItem id="OP-CS-3" code="CS-3" title="Перевизначення для окремих сесій">
  Кожен 

  `successUrl`

   або 

  `cancelUrl`

  , який ви надсилаєте, відповідає налаштованому origin.
</ChecklistItem>

<ChecklistItem id="OP-CS-4" code="CS-4" title="Гаманці">
  Apple Pay і Google Pay увімкнено або вимкнено так, як задумано. Для Google Pay у робочому режимі налаштовано Google Pay merchant ID.
</ChecklistItem>

<ChecklistItem id="OP-CS-6" code="CS-6" title="Гаманці у вбудованих платежах">
  Сума в гаманці відповідає замовленню на сервері. Зміна доставки чи знижок оновлює її. Скасування в гаманці залишає оформлення замовлення доступним, а платежі в очікуванні блокують повторне стягнення оплати.
</ChecklistItem>

<ChecklistItem id="OP-CS-5" code="CS-5" title="Брендинг">
  Колір і логотип виглядають правильно в 

  **Checkout preview**

   як у макеті для комп'ютера, так і в мобільному.
</ChecklistItem>

## 5. Безпека [#5-security]

<ChecklistItem id="OP-SE-1" code="SE-1" title="Ключ на сервері">
  Ваш checkout-ключ мерчанта або Secret key організації є лише в конфігурації сервера, ніколи в коді браузера, пакетах застосунків чи системі контролю версій.
</ChecklistItem>

<ChecklistItem id="OP-SE-2" code="SE-2" title="Суми визначає сервер">
  Сума, валюта та ID замовлення беруться з вашого збереженого замовлення, ніколи з браузера.
</ChecklistItem>

<ChecklistItem id="OP-SE-3" code="SE-3" title="Ендпоінти вбудованих платежів">
  Якщо ви використовуєте вбудовані платежі, 

  `prepare`

   і 

  `submit`

   прив'язані до оформлення замовлення з автентифікацією користувача або до підписаного HTTP-only cookie, а origin запитів, що змінюють дані, перевіряються.
</ChecklistItem>

<ChecklistItem id="OP-SE-4" code="SE-4" title="Content Security Policy">
  Якщо ви використовуєте вбудовані платежі, ваша CSP дозволяє origin скриптів і фреймів Tapaya, а перевірки 3-D Secure за неї й далі працюють.
</ChecklistItem>

## 6. Конфігурація пісочниці [#6-sandbox-configuration]

<ChecklistItem id="OP-PR-1" code="PR-1" title="API пісочниці">
  `TAPAYA_CHECKOUT_API_URL`

   вказує на 

  `https://api.sandbox.tapaya.com`

  .
</ChecklistItem>

<ChecklistItem id="OP-PR-2" code="PR-2" title="Ключ пісочниці">
  Інтеграція використовує checkout-ключ мерчанта або Secret key організації для пісочниці, завантажений з конфігурації сервера.
</ChecklistItem>

<ChecklistItem id="OP-PR-3" code="PR-3" title="Завдання звірки">
  Завдання, яке отримує невизначені сесії, заплановано у вашому тестовому середовищі.
</ChecklistItem>

## 7. Готовність до робочого середовища [#7-production-readiness]

<ChecklistItem id="OP-LV-1" code="LV-1" title="Готовність мерчанта">
  Мерчант у робочому режимі пройшов онбординг з онлайн-платежами, отримав схвалення платіжного процесора та має налаштований платіжний шлюз. У налаштуваннях Checkout мерчант має статус 

  **Ready**

  .
</ChecklistItem>

<ChecklistItem id="OP-LV-2" code="LV-2" title="Облікові дані робочого режиму">
  Сервер використовує облікові дані робочого середовища та 

  `https://api.tapaya.com`

  . Інтеграції через SDK задають 

  `TAPAYA_ENVIRONMENT=production`

  . Ключі пісочниці та тестові картки не використовуються для реальних платежів.
</ChecklistItem>

<ChecklistItem id="OP-LV-3" code="LV-3" title="Гаманці в робочому режимі">
  Домени магазинів для Apple Pay активні. Для Google Pay у робочому режимі налаштовано merchant ID. Підтримувані гаманці завершують платіж і відновлюються після скасування.
</ChecklistItem>

<ChecklistItem id="OP-LV-4" code="LV-4" title="Звірка в робочому режимі">
  URL повернення для робочого середовища, перевірка на сервері, виконання замовлень і завдання звірки використовують конфігурацію робочого середовища.
</ChecklistItem>

<ChecklistProgress />

<Callout title="Підсумкове погодження" type="tip">
  Виконайте тести в пісочниці та перевірки готовності до робочого середовища. Натисніть **Reset**, щоб почати чистий прохід, оскільки позначки з попередніх раундів тестування залишаються збереженими в цьому браузері.
</Callout>
