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



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

<ChecklistProgress />

## 1. Функціональне тестування [#1-functional-testing]

### Сценарії транзакцій [#transaction-flows]

<ChecklistItem id="TF-1" code="TF-1" title="Успішний платіж">
  Перевірте стандартну схвалену транзакцію із сумою 

  `1.01`

   (код 

  `00`

  ) у 

  [пісочниці (sandbox)](./testing)

  .
</ChecklistItem>

<ChecklistItem id="TF-2" code="TF-2" title="Автентифікацію картки відхилено">
  Змоделюйте відхилену транзакцію із сумою 

  `1.07`

   (код 

  `06`

  ) і переконайтеся, що застосунок коректно її обробляє без аварійного завершення.
</ChecklistItem>

<ChecklistItem id="TF-3" code="TF-3" title="Прострочена картка">
  Змоделюйте прострочену картку за допомогою суми 

  `6.05`

   (код 

  `54`

  ) і перевірте повідомлення для користувача.
</ChecklistItem>

<ChecklistItem id="TF-4" code="TF-4" title="Неправильний PIN">
  Змоделюйте введення неправильного PIN за допомогою суми 

  `6.06`

   (код 

  `55`

  ) і перевірте повідомлення для користувача.
</ChecklistItem>

<ChecklistItem id="TF-5" code="TF-5" title="Перевищено кількість спроб PIN">
  Змоделюйте вичерпання ліміту спроб введення PIN за допомогою суми 

  `8.06`

   (код 

  `75`

  ) і переконайтеся, що ваш застосунок вважає це остаточною невдачею.
</ChecklistItem>

<ChecklistItem id="TF-6" code="TF-6" title="Скасована транзакція">
  Ініціюйте платіж і скасуйте його в інтерфейсі SDK (кнопкою «Назад» або закриттям). Переконайтеся, що ваш застосунок коректно повертається на попередній екран.
</ChecklistItem>

<ChecklistItem id="TF-7" code="TF-7" title="Формування чека">
  Перевірте, що дані транзакції (код авторизації, TID, дата) правильно фіксуються та потрапляють у надруковані чеки або чеки, надіслані електронною поштою.
</ChecklistItem>

### Взаємодія з обладнанням [#hardware-interactions]

<ChecklistItem id="HI-1" code="HI-1" title="Зчитування NFC">
  Протестуйте фізичні картки (Visa, Mastercard) і цифрові гаманці (Apple Pay, Google Pay).
</ChecklistItem>

<ChecklistItem id="HI-2" code="HI-2" title="Перерване зчитування">
  Заберіть картку одразу після прикладання, але до звукового сигналу. Переконайтеся, що SDK пропонує прикласти картку ще раз або коректно завершується з помилкою.
</ChecklistItem>

<ChecklistItem id="HI-3" code="HI-3" title="Втрата мережі">
  Вимкніть інтернет/Wi-Fi під час транзакції. Перевірте, що застосунок повідомляє про помилку з'єднання і не зависає.
</ChecklistItem>

## 2. Онбординг і конфігурація [#2-onboarding--configuration]

### Налаштування мерчанта [#merchant-setup]

<ChecklistItem id="MS-1" code="MS-1" title="Онбординг нового користувача">
  Пройдіть увесь процес онбордингу з новим обліковим записом.
</ChecklistItem>

<ChecklistItem id="MS-2" code="MS-2" title="Перевірка статусу">
  Перевірте, що 

  `Accept.merchant.onboardingStatus()`

   повертає 

  `RequiresAction`

   для мерчанта, який очікує схвалення, і 

  `ReadyForPayments`

   для схваленого мерчанта.
</ChecklistItem>

## 3. Безпека та відповідність вимогам [#3-security--compliance]

### Цілісність пристрою [#device-integrity]

<ChecklistItem id="DI-1" code="DI-1" title="Виявлення root-доступу">
  Якщо у вас є тестовий пристрій із root-доступом, перевірте, що SDK відмовляється ініціалізуватися.
</ChecklistItem>

<ChecklistItem id="DI-2" code="DI-2" title="Дозволи">
  Відкличте дозволи (камера, геолокація) і спробуйте запустити SDK. Переконайтеся, що ваш застосунок просить користувача їх надати.
</ChecklistItem>

### Робота з даними [#data-handling]

<ChecklistItem id="DH-1" code="DH-1" title="Керування токенами">
  Перевірте, що токен SDK із 

  `POST /merchant/auth/login`

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

<ChecklistItem id="DH-2" code="DH-2" title="Жодних конфіденційних даних">
  Переконайтеся, що журнали вашого застосунку 

  **не виводять**

   повні номери карток або необроблені дані магнітної смуги (track data).
</ChecklistItem>

## 4. Граничні випадки [#4-edge-cases]

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

<ChecklistItem id="EC-2" code="EC-2" title="Вхідний дзвінок">
  Зателефонуйте на тестовий пристрій під час платежу. SDK має обробити переривання (зазвичай призупиненням або завершенням з помилкою).
</ChecklistItem>

<ChecklistItem id="EC-3" code="EC-3" title="Низький заряд батареї">
  Перевірте поведінку, коли пристрій перебуває в режимі «Енергозбереження» (продуктивність деяких NFC-чипів знижується).
</ChecklistItem>

## 5. Сесії з NFC-мітками (необов'язково) [#5-nfc-tag-sessions-optional]

Цей розділ потрібен, лише якщо ваш застосунок зчитує або записує NFC-мітки за допомогою [`com.tapaya:accept-nfc`](../integration/nfc_tags). Виконуйте ці перевірки на телефоні та, якщо ви їх підтримуєте, на терміналі Sunmi серії P з `accept-nfc-sunmi`.

<ChecklistItem id="NT-1" code="NT-1" title="Перевірка підтримки">
  Перевірте, що 

  `isSupported()`

   повертає 

  `true`

   на телефоні й терміналі Sunmi та 

  `false`

   на пристрої без NFC.
</ChecklistItem>

<ChecklistItem id="NT-2" code="NT-2" title="Зчитування і запис">
  Прикладіть мітку NTAG або Ultralight, перевірте, що сесія повідомляє правильний UID, потім виконайте 

  `writePage`

   і зчитайте сторінку назад за допомогою 

  `readPages`

  .
</ChecklistItem>

<ChecklistItem id="NT-3" code="NT-3" title="Неправильний ключ">
  Для MIFARE Classic пройдіть автентифікацію з неправильним ключем і переконайтеся, що отримуєте 

  `AUTH_FAILED`

  , потім пройдіть її успішно з правильним ключем.
</ChecklistItem>

<ChecklistItem id="NT-4" code="NT-4" title="Скасування очікування прикладання">
  Скасуйте виклик 

  `openSession()`

  , поки він очікує прикладання, і одразу відкрийте нову сесію.
</ChecklistItem>

<ChecklistItem id="NT-5" code="NT-5" title="Платіж має пріоритет">
  Почніть платіж під час сесії. Сесія завершується зі статусом 

  `PAYMENT`

  , а платіж проходить.
</ChecklistItem>

<ChecklistItem id="NT-6" code="NT-6" title="Мітку прибрано">
  Приберіть мітку під час сесії та переконайтеся, що сесія завершується зі статусом 

  `CARD_REMOVED`

  .
</ChecklistItem>

<ChecklistItem id="NT-7" code="NT-7" title="NFC вимкнено">
  На телефоні вимкніть NFC і переконайтеся, що 

  `openSession()`

   завершується помилкою 

  `NFC_DISABLED`

  .
</ChecklistItem>

<ChecklistItem id="NT-8" code="NT-8" title="Застосунок у фоновому режимі">
  На телефоні переведіть застосунок у фоновий режим під час сесії та переконайтеся, що сесія завершується зі статусом 

  `ACTIVITY_PAUSED`

  .
</ChecklistItem>

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

<ChecklistItem id="PR-1" code="PR-1" title="Перемикання середовища">
  **КРИТИЧНО:**

   Переконайтеся, що для збірки робочого середовища встановлено 

  `isProduction = true`

  .
</ChecklistItem>

<ChecklistItem id="PR-2" code="PR-2" title="Токени робочого середовища">
  Перевірте, що бекенд звертається до ендпоінтів Tapaya API робочого середовища.
</ChecklistItem>

<ChecklistItem id="PR-3" code="PR-3" title="Перевірка версії">
  Переконайтеся, що ви використовуєте останню стабільну версію Tapaya Accept SDK.
</ChecklistItem>

<ChecklistProgress />

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