Розміщення замовлень
Розміщення замовлень
Створіть замовлення, а потім відстежуйте його до термінального статусу
Розміщення замовлення — це єдиний виклик POST /api/v1/orders. Він списує кошти
з балансу вашого акаунта й одразу повертає 201 зі status: "pending".
Виконання відбувається асинхронно — кінцевий результат надходить на ваш
webhook і завжди доступний для читання з GET /api/v1/orders/{id}.
Типи товарів
Кожен товар каталогу має тип продукту, який визначає, що ви маєте надіслати:
item_id товару, тип продукту, межі кількості та визначення полів ви
дізнаєтеся з експорту каталогу — окремого каналу даних, а не частини цього
API. API не надає ендпоінта для перегляду каталогу.
Поля запиту
item_id(ціле число, обовʼязково) — числовий id товару з каталогу.quantity(число) — див. таблицю типів товарів вище. Має бути в межах діапазону min/max товару.key: ціла кількість (за замовчуванням1).topup: десяткова сума (обовʼязково).service: пропустіть — вона завжди1.
merchant_order_id(рядок, необовʼязково) — ваш власний ідентифікатор, унікальний у межах акаунта. Використовуйте його для ідемпотентності та для звʼязування подій webhook із вашими записами.fields(обʼєкт) — обовʼязкові лише для товарівtopupіservice, індексовані за іменами полів товару. Товариkeyне приймаютьfields.
Значення полів: текст проти вибору
Кожне поле товару є або текстовим полем, або полем вибору:
- Текстове поле → надсилайте значення як рядок (наприклад,
"player_id": "123456789"). - Поле вибору → надсилайте числовий id вибору, а не мітку (наприклад,
"server": 17, де17— це id вибору «Europe (EU-West)»).
У відповідях надіслані fields повертаються з рендерингом значень вибору як
їхніх читабельних відображуваних назв (наприклад, "server": "Europe (EU-West)"), навіть якщо ви надіслали числовий id. Це лише для відображення —
під час створення продовжуйте надсилати числові id вибору.
Створення замовлення
cURL
Python
Успішне створення повертає 201 із замовленням у стані pending:
Життєвий цикл замовлення
Замовлення починається у стані pending, може ненадовго перейти в processing,
а потім завершується одним із трьох термінальних статусів:
codes— рядки доставлених ключів, для товарів типуkey.refund_amount— сума, повернута за недоставлені одиниці для замовленняpartialабоfailed.error/error_message— встановлюються, колиstatusдорівнюєfailed(наприклад,error: "OUT_OF_STOCK").
Товар, якого немає в наявності на момент створення, відхиляється одразу як
помилка валідації 400 («Item is not available»). Якщо запас або виконання дають
збій після прийняття замовлення, замовлення завершується термінальним
status: "failed" (відображається на вашому webhook) — а не HTTP-помилкою. Див.
Помилки.
Читання замовлення
Отримайте поточний стан будь-якого зі своїх замовлень за допомогою
GET /api/v1/orders/{id}:
cURL
Python
GET /api/v1/orders/{id} повертає 404 (code: "not_found") для замовлення,
яке не існує або не належить вашому акаунту. В API немає ендпоінта для
отримання списку замовлень — переглядайте замовлення в дашборді.
Webhook проти опитування
Надавайте перевагу webhook: Voodoo Center надсилає термінальну подію
на вашу URL, щойно замовлення завершується — опитування не потрібне. Опитування
GET /api/v1/orders/{id} — це прийнятний запасний варіант (наприклад, якщо
доставку webhook було пропущено), але webhook — це шлях із меншою затримкою та
меншим навантаженням.