For the complete documentation index, see llms.txt. This page is also available as Markdown.

Завершение платежного ордера

Описание

Endpoint используется для финализации платежного ордера и обработки платежа.

При успешном завершении:

  • Статус ордера изменяется на завершённый

  • Баланс пользователя пополняется согласно сумме платежа

  • Операция логируется в систему

Вы можете использовать данный endpoint для обработки вебхуков и колбеков от платежных шлюзов.


Endpoint

POST https://api.mmoweb.biz/v2/payment/order/complete

Content-Type: application/json


Параметры

Все параметры передаются в JSON теле запроса.

Параметр
Тип
Обязателен
Формат
Описание

payment_system

string

Да

cstm:[a-z]{4,20}

Идентификатор платежной системы (например: cstm:yandex, cstm:paypal)

order_id

string

Да

Order:[A-Za-z0-9]{8,11}

Уникальный идентификатор ордера, выданный при создании

payment_id

string

Нет

Строчное значение

ID платежа в платежной системе (используется для отслеживания)

Форматы параметров:

  • payment_system: начинается с cstm:, за которым следуют 4-20 строчных букв (пример: cstm:stripe, cstm:cryptobox)

  • order_id: начинается с Order:, за которым следуют 8-11 буквенно-цифровых символов (пример: Order:abc12345)


Примеры

Базовое завершение платежа

Завершение платежа без payment_id


Ответы

Успешное завершение (200 OK)

Ошибка валидации параметров (400 Bad Request)

Ордер не найден (404 Not Found)

Когда встречается: ордер не существует, не принадлежит текущему проекту/команде или платежная система не совпадает

Ордер уже завершен (409 Conflict)

Ошибка обновления статуса (500 Internal Server Error)

Ошибка при обработке платежа (зависит от конкретной ошибки)


Коды ошибок

Код
HTTP Status
Описание
Что делать

VALIDATION_ERROR

400

Один или несколько параметров не соответствуют формату

Проверьте формат payment_system и order_id согласно спецификации

ORDER_NOT_FOUND

404

Ордер не существует, не принадлежит проекту или платежная система не совпадает

Убедитесь что используете правильный order_id и payment_system

ORDER_ALREADY_COMPLETED

409

Этот ордер уже был завершен

Дублированная обработка вебхука; это нормально — повторно завершение не требуется

ORDER_UPDATE_FAILED

500

Ошибка при обновлении статуса в БД

Повторите попытку позже; если ошибка повторяется, свяжитесь с поддержкой

PAYMENT_PROCESSING_ERROR

Переменный

Ошибка при обработке платежа в системе

Проверьте логи; платеж может быть обработан, но сообщение не отправлено


Поток обработки платежа

  1. Получение вебхука — платежная система отправляет колбек на ваш сервер

  2. Вызов API — ваш сервер вызывает этот endpoint с данными платежа

  3. Валидация — проверяется формат параметров и существование ордера

  4. Обновление статуса — статус ордера изменяется на завершённый

  5. Обработка платежа — платеж обрабатывается (зачисление на баланс и т.д.)

  6. Логирование — операция записывается в логи для аудита

  7. Ответ — возвращается результат обработки


Важные особенности

Идемпотентность

Если ордер уже завершен, endpoint вернет ошибку ORDER_ALREADY_COMPLETED (409). Это нормальное поведение и означает, что платеж уже был обработан. Не пересылайте запрос повторно.

Совпадение платежной системы

Параметр payment_system в запросе должен совпадать с платежной системой, которая была указана при создании ордера. Если системы не совпадают, ордер не будет найден.

Payment ID (опционально)

Параметр payment_id не обязателен, но рекомендуется передавать ID платежа из платежной системы для отслеживания и согласования.

Время обработки

После завершения ордера баланс пользователя пополняется немедленно. Убедитесь, что платеж действительно прошел в платежной системе перед вызовом этого endpoint'а.


Рекомендации

Безопасность:

  • Проверяйте подпись вебхука от платежной системы перед вызовом API

  • Убедитесь что payment_system соответствует вашей конфигурации

  • Используйте HTTPS для всех запросов

Надёжность:

  • Реализуйте retry logic с экспоненциальной задержкой при ошибках 5xx

  • Сохраняйте полные логи всех вебхуков для отладки

  • Обрабатывайте ответ ORDER_ALREADY_COMPLETED как успех (платеж уже обработан)

Интеграция:

  • Тестируйте с тестовыми платежами перед запуском в production

  • Проверяйте что все параметры имеют правильный формат

  • Убедитесь что токен приложения имеет необходимые разрешения

Last updated

Was this helpful?