К содержимому
TURANYOLРазработчикам

Песочница и тестовые данные

Песочница — полная копия API, работающая на своей базе. Тот же код, те же правила, те же коды ошибок — другие данные и ничего, что дойдёт до реального клиента.

Базовые URL

base urls
live     https://api.turanyol.com
sandbox  http://localhost:3050

Ключ привязан к одной среде

Ключ, созданный как Sandbox, работает только с базовым URL песочницы, боевой — только с боевым. Не тот ключ отклоняется с ERR_API_KEY_ENVIRONMENT: это намеренно отличается от невалидного ключа, чтобы отличать ошибку конфигурации от проблемы с учётными данными.

ERR_API_KEY_ENVIRONMENT

Тестовые номера телефонов

Вход — по телефонному OTP. В песочнице провайдер замокан: код возвращается в ответе и показывается на экране входа, поэтому SMS не отправляется никогда.

Тестовые аккаунты
РольТелефонПримечания
Партнёр+994500000040Kargo Express — orders:read, orders:pii, logistics:write
Партнёр+994500000041PayAZ — payments:read
Покупатель+994500000100Aysel Məmmədova — ES-1049, ES-1025, ES-1001
Продавец+994500000010Vendor A-101
Водитель+994500000020B-2083 completed, B-2084 assigned
Сборщик+994500000030Hub pickup queue
Агент поддержки+994500000002Günel Rəhimova
Администратор+994500000001Kamil Hüseynov

Тестовые данные

Песочница пересобирается из детерминированного seed с реалистичными бакинскими данными — прилавки Садарака, категории на az/ru/en, клиенты в 20 Yanvar, Gənclik, Yasamal, Nərimanov и Nizami, заказы во всех статусах, водители и партии.

Поток mock-оплаты картой

Оплата картой в песочнице идёт через mock-провайдер, поэтому весь поток можно пройти без PSP:

  1. Создайте заказ с paymentMethod CARD. Заказ вернётся как UNPAID с платёжным намерением и checkoutUrl.
  2. Откройте checkout URL. Mock-провайдер отдаёт небольшую страницу с кнопками «Оплатить» и «Ошибка».
  3. Выбор исхода заставляет провайдер отправить в API подписанный вебхук — тот же путь, что использовал бы настоящий PSP.
  4. Заказ становится PAID либо намерение FAILED, и клиент видит изменение по realtime-каналу.
Неоплаченные картой заказы автоматически отменяются по истечении таймаута оплаты, чтобы недоведённый тест не держал остатки вечно.

Сброс песочницы

База песочницы одноразовая. Попросите нас её сбросить, или, если стек запущен у вас:

shell
# 1. stop the sandbox API
pnpm --filter @turanyol/api exec -- true   # (stop the 'dev:api:sandbox' process)

# 2. re-apply migrations and re-seed the sandbox database
DATABASE_URL=postgresql://esadarak:esadarak@localhost:5433/esadarak_sandbox?schema=public \
  pnpm --filter @turanyol/api prisma:deploy
DATABASE_URL=postgresql://esadarak:esadarak@localhost:5433/esadarak_sandbox?schema=public \
  pnpm db:seed

# 3. start it again
pnpm dev:api:sandbox
Сброс ничего не отменяет в боевом API: ключи, вебхуки и заказы там не затрагиваются.

Что не отличается

Скоупы, лимиты запросов, машина состояний заказа и схема подписи вебхуков работают ровно как в продакшене. Работает в песочнице — работает и в бою; в этом весь смысл.

Статус песочницы