# Інтеграція через API (/uk/in-store/integration/backend_integration)





Щоб ваші мерчанти могли користуватися Tapaya Accept SDK, ваш бекенд реєструє кожного мерчанта й запитує короткоживучий
токен входу для кожної сесії SDK. Обидва виклики використовують ваш Server Secret Token; як його згенерувати, описано в розділі
[Автентифікація в Platform API](/platform-api#authentication).

Онбординг мерчантів і отримання платіжних даних працюють однаково для всіх продуктів Tapaya й описані
у спільному розділі «Огляд»: [API для онбордингу мерчантів](/platform-api/merchant_onboarding) та
[Звітність і платежі](/platform-api/reporting).

<Callout title="Маршрутизація за середовищем" type="info">
  Accept SDK автоматично маршрутизує запити залежно від того, як його було ініціалізовано:

  * **Пісочниця (sandbox, за замовчуванням):** підключається до середовища пісочниці за адресою `https://api.sandbox.tapaya.com`.
  * **Робоче середовище:** підключається до робочого середовища за адресою `https://api.tapaya.com`.
</Callout>

## Автентифікація мерчантів (інтеграції через Accept SDK) [#merchant-authentication-accept-sdk-integrations]

<Callout title="Лише для інтеграцій через Accept SDK" type="info">
  Пропустіть цей розділ, якщо ви керуєте застосунком **Tapaya Terminal** напряму (intent/deeplink, без вбудованого SDK);
  тоді мерчантом, відповідальним за транзакцію (merchant of record), є обліковий запис, у який виконано вхід у Tapaya Terminal, і ваш бекенд
  ніколи не автентифікує сесію мерчанта. Див. [Інтеграція без SDK](./card_terminal#integrate-without-the-sdk).
</Callout>

Щоб ваші мерчанти могли користуватися Tapaya Accept SDK, ви маєте реалізувати на своєму бекенді такі ендпоінти.

<div className="fd-steps [&_h3]:fd-step">
  ### Реєстрація нового мерчанта [#register-a-new-merchant]

  Перш ніж мерчант зможе користуватися SDK, його потрібно зареєструвати в системі Tapaya. Зазвичай це робиться тоді, коли користувач
  реєструється у вашому сервісі. Мерчанта достатньо зареєструвати один раз. Зареєструвати його можна в Tapaya Platform
  UI або через API.

  **Ендпоінт:** `POST /merchant/auth/register`

  <CodeBlockTabs defaultValue="curl" groupId="http-client">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="curl">
        cURL
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="curl">
      ```bash
      curl -X 'POST' 'https://api.tapaya.com/merchant/auth/register' \
      -H 'Content-Type: application/json' \
      -H 'Authorization: REPLACE_ME' \
      -d '{
              "merchantToken": "unique_merchant_id_from_your_db",
              "merchantName": "Acme Corp",
              "email": "admin@acme.com"
          }'
      ```
    </CodeBlockTab>
  </CodeBlockTabs>

  **Параметри:**

  | Поле                                                                       | Тип      | Обов'язкове | Опис                                                                                                         |
  | -------------------------------------------------------------------------- | -------- | ----------- | ------------------------------------------------------------------------------------------------------------ |
  | `merchantToken`                                                            | `string` |             | Унікальний і незмінний ідентифікатор із вашої системи (наприклад, ID у базі даних), який ідентифікує         |
  | мерчанта. Якщо його не вказано, для вас буде згенеровано випадковий токен. |          |             |                                                                                                              |
  | `merchantName`                                                             | `string` |             | Зрозуміла людині назва, за якою мерчанта можна впізнати на панелі керування та у звітах. Якщо її не вказано, |
  | використовується `merchantToken`.                                          |          |             |                                                                                                              |
  | `email`                                                                    | `string` | ✓           | Електронна адреса адміністратора мерчанта, що використовується для входу та важливих повідомлень.            |

  **Відповіді:**

  | Код   | Опис                                 |
  | ----- | ------------------------------------ |
  | `200` | Мерчанта успішно зареєстровано       |
  | `400` | Помилка валідації запиту             |
  | `401` | Неавторизовано                       |
  | `409` | Конфлікт: мерчанта вже зареєстровано |

  **Тіло відповіді:**

  ```json
  {
      "merchantToken": "unique_merchant_id_from_your_db"
  }
  ```

  ### Генерування токена входу [#generate-login-token]

  Щоб мобільний пристрій міг ініціалізувати SDK для конкретного мерчанта, ви маєте згенерувати короткоживучий токен входу.
  Ваш мобільний застосунок запитує його у вашого бекенда, а ваш бекенд запитує його в Tapaya. Новий токен
  потрібен щоразу, коли SDK [ініціалізується](./sdk_integration#initialization).

  **Ендпоінт:** `POST /merchant/auth/login`

  <CodeBlockTabs defaultValue="curl" groupId="http-client">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="curl">
        cURL
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="curl">
      ```bash
      curl -X 'POST' 'https://api.tapaya.com/merchant/auth/login' \
      -H 'Content-Type: application/json' \
      -H 'Authorization: REPLACE_ME' \
      -d '{
              "merchantToken": "unique_merchant_id_from_your_db",
              "allowOnboarding": true,
              "employeeEmail": "john@acme.com"
          }'
      ```
    </CodeBlockTab>
  </CodeBlockTabs>

  **Параметри:**

  | Поле                                                                                                                                  | Тип       | Обов'язкове | Опис                                                                                                          |
  | ------------------------------------------------------------------------------------------------------------------------------------- | --------- | ----------- | ------------------------------------------------------------------------------------------------------------- |
  | `merchantToken`                                                                                                                       | `string`  | ✓           | Ідентифікатор мерчанта в системі інтегратора, для якого буде видано токен                                     |
  | автентифікації. Той самий, що й у `/auth/register`.                                                                                   |           |             |                                                                                                               |
  | `allowOnboarding`                                                                                                                     | `boolean` |             | `true`, якщо користувач може від імені мерчанта переглядати й оновлювати дані онбордингу/KYB, підключати нові |
  | способи оплати та приймати умови використання. Під час першого виклику має бути `true`, щоб мерчант міг                               |           |             |                                                                                                               |
  | підключити щонайменше один спосіб оплати. `false`, якщо користувачеві заборонено доступ до онбордингу і він може використовувати лише |           |             |                                                                                                               |
  | вже налаштовані способи оплати. Значення за замовчуванням: `true`.                                                                    |           |             |                                                                                                               |
  | `employeeEmail`                                                                                                                       | `string`  |             | Електронна адреса працівника, який користується терміналом.                                                   |

  **Відповіді:**

  | Код   | Опис                     |
  | ----- | ------------------------ |
  | `200` | Мерчант успішно увійшов  |
  | `400` | Помилка валідації запиту |
  | `401` | Неавторизовано           |
  | `404` | Не знайдено              |

  **Тіло відповіді:**

  ```json
  {
      "token": "EesrFq4PUK1WxHUj93hkrKASDFp8GxJ0"
  }
  ```

  Передайте цей `token` своєму мобільному застосунку, щоб [ініціалізувати](./sdk_integration#initialization) SDK. Передавайте
  його в мобільний застосунок у захищений спосіб і видаляйте одразу після використання. Токен прив'язаний до мерчанта, ідентифікованого за
  `merchantToken`.

  <Callout title="Попередження щодо безпеки" type="warn">
    Переконайтеся, що під час отримання токена для SDK ви використовуєте правильний `merchantToken`. Tapaya SDK використовує цей токен, щоб увійти
    від імені мерчанта, отримуючи доступ до його даних і коштів.
  </Callout>
</div>
