Руководство
Markdown-версияПокупка и статусы заказа
Как проходит покупка, когда списываются и возвращаются деньги, где взять ключ.
Шаги
- Перед покупкой можно проверить наличие: GET /products/{id}/availability.
- POST /purchase/{productId} с
idempotencyKey. Заказ создаётся, и стоимость сразу резервируется с баланса — в одной операции. Если денег не хватает, заказ не создаётся (402). - Товар с ручной выдачей завершается сразу. Товар с автоматической выдачей покупается у поставщика, после получения ключа заказ ещё короткое время проверяется и только потом становится
completed. - Ключ приходит в поле
keyответа покупки или GET /orders/{id}. В вебхуке ключа нет.
Статусы
| status | Значение | Деньги |
|---|---|---|
pending | Выполняется. Дождитесь вебхука или опрашивайте заказ раз в 5–10 секунд. | Зарезервированы |
completed | Выполнен, ключ доступен. | Списаны |
failed | Не выполнен, причина в failureReason. | Возвращены |
cancelled | Отменён поставщиком. | Возвращены |
completed, failed и cancelled — окончательные: статус больше не меняется.
Ответ 202
Если покупка у поставщика не уложилась примерно в 50 секунд, API отвечает 202 с заказом в статусе pending. Это не ошибка и не повод покупать снова: заказ продолжает выполняться. Узнайте исход через вебхук или GET /orders/{id}. В редких случаях, когда исход нужно перепроверить, заказ остаётся в pending дольше — деньги всё это время зарезервированы и вернутся, если заказ не будет выполнен.
Ставьте таймаут HTTP-клиента не меньше 90 секунд: покупка может длиться до ~50 секунд.