Заявки:

Это запись о проведенном (или отмененном) обмене. Каждая заявка содержит как минимум: дату, имя пользователя, объем валюты, счет Отдаю, счет Получаю, прибыль обменного пункта.


🔹 API для админки

/api/orders

Метод: GET;
Описание: Загрузка списка заявок;
Права: 🟡 - админка;
Параметры (их указывать не обязательно):

Запрос: GET api/orders?start=0&count=10&dateStart=2025-04-17T00:00

Ответ:

{
  "type": "success",
  "message": null,
  "data": {
    "items": [
      {
        "id": 267,
        "userId": 3,
        "userName": "admin",
        "userMail": "[email protected]",
        "from": {
          "id": 1,
          "name": "Сбер RUB",
          "code": "RUB",
          "amount": 886.729
        },
        "to": {
          "id": 6,
          "name": "USDT BEP-20",
          "code": "USDT",
          "amount": 10
        },
        "dateCreated": "2025-05-23 22:48:38",
        "dateUpdated": "2025-05-23 22:51:15",
        "walletFrom": "",
        "walletTo": "0xd2404FA0EEB8c876eC8dE9BA92d5bF8c436B4177",
        "requisites": "",
        "profit": 0.43,
        "status": "completed",
        "isActive": false,
        "course": 88.67,
        "fieldsGive": {
          "ФИО": "4144"
        },
        "fieldsGet": {},
        "isManualGive": true,
        "isManualGet": false,
        "rateGive": 0.011764705882352941,
        "rateGet": 1,
        "statusHistory": [
          {
            "date": "2025-05-23 22:48:37",
            "src": "user",
            "status": "new"
          },
          {
            "date": "2025-05-23 22:48:50",
            "src": "admin_panel",
            "status": "payed"
          },
          {
            "date": "2025-05-23 22:50:11",
            "src": "autopay",
            "status": "waitingForPayout"
          },
          {
            "date": "2025-05-23 22:51:13",
            "src": "autopay",
            "status": "completed"
          }
        ],
        "refId": null
      }
    ],
    "total": 1,
    "page": 1,
    "pageSize": 10
  },
  "action": null
}

Подробности:

/api/order/{id}

Метод: GET;
Описание: Загрузка заявки по id;
Права: 🟡 - админка;
Параметры:

Запрос: GET /api/order/267

Ответ:

{
  "type": "success",
  "message": null,
  "data": {
    "id": 267,
    "userId": 3,
    "userName": "admin",
    "userMail": "[email protected]",
    "from": {
      "id": 1,
      "name": "Сбер RUB",
      "code": "RUB",
      "amount": 886.729
    },
    "to": {
      "id": 6,
      "name": "USDT BEP-20",
      "code": "USDT",
      "amount": 10
    },
    "dateCreated": "2025-05-23 22:48:38",
    "dateUpdated": "2025-05-23 22:51:15",
    "walletFrom": "",
    "walletTo": "0xd2404FA0EEB8c876eC8dE9BA92d5bF8c436B4177",
    "requisites": "",
    "profit": 0.43,
    "status": "completed",
    "isActive": false,
    "course": 88.67,
    "fieldsGive": {
      "ФИО": "4144"
    },
    "fieldsGet": {},
    "isManualGive": true,
    "isManualGet": false,
    "rateGive": 0.011764705882352941,
    "rateGet": 1,
    "statusHistory": [
      {
        "date": "2025-05-23 22:48:37",
        "src": "user",
        "status": "new"
      },
      {
        "date": "2025-05-23 22:48:50",
        "src": "admin_panel",
        "status": "payed"
      },
      {
        "date": "2025-05-23 22:50:11",
        "src": "autopay",
        "status": "waitingForPayout"
      },
      {
        "date": "2025-05-23 22:51:13",
        "src": "autopay",
        "status": "completed"
      }
    ],
    "refId": null
  },
  "action": null
}

/api/order

Метод: POST;
Описание: Редактирование существующих заявок;
Права: 🔴 админка + isEditOrders;
Параметры: ids - id заявок;

Запрос: POST api/order

{
  "ids": [
    "258"
  ],
  "status": "waitingForPayment",
  "isActive": false,
  "requisites": "",
  "profit": 0,
  "walletFrom": "0xbe992f08c9324f03f9f4a15379fe6daec1236ef6",
  "rateGive": 1,
  "rateGet": 0.25674
}

Удаление заявок

Заявки не могут быть удалены, но можно поставить статус "Удаленная". Возможно, позже будет добавлена возможность архивации заявок. Если нужно именно удалить заявку, можно это сделать через базу данных.


🔹 API для сайта

Каждый пользователь видит только свои заявки.

/api/user/orders

Метод: GET;
Описание: Загрузка списка заявок;
Права: 🔵 авторизованный пользователь;
Параметры (их указывать не обязательно):

Ответ:

{
  "type": "success",
  "message": null,
  "data": {
    "items": [
      {
        "id": 267,
        "userId": 3,
        "dateCreated": "2025-05-23 22:48:38",
        "dateUpdated": "2025-05-23 22:51:15",
        "walletFrom": "",
        "walletTo": "0xd2404FA0EEB8c876eC8dE9BA92d5bF8c436B4177",
        "requisites": "",
        "amountFrom": 886.729,
        "amountTo": 10,
        "status": "completed",
        "isActive": false,
        "fromXmlCode": "SBERRUB",
        "fromCode": "RUB",
        "fromName": "Сбер RUB",
        "toXmlCode": "USDTBEP20",
        "toCode": "USDT",
        "toName": "USDT BEP-20",
        "fieldsGive": {
          "ФИО": "4144"
        },
        "fieldsGet": {},
        "needsTxId": false,
        "dateStatusUpdated": "2025-05-23 22:51:13",
        "deleteInterval": 30
      }
    ],
    "total": 1,
    "page": 1,
    "pageSize": 10
  },
  "action": null
}

/api/user/order/{id}

Метод: GET;
Описание: Загрузка заявки по id;
Права: 🔵 авторизованный пользователь;
Параметры:

Ответ:

{
  "type": "success",
  "message": null,
  "data": {
    "id": 267,
    "userId": 3,
    "dateCreated": "2025-05-23 22:48:38",
    "dateUpdated": "2025-05-23 22:51:15",
    "walletFrom": "",
    "walletTo": "0xd2404FA0EEB8c876eC8dE9BA92d5bF8c436B4177",
    "requisites": "",
    "amountFrom": 886.729,
    "amountTo": 10,
    "status": "completed",
    "isActive": false,
    "fromXmlCode": "SBERRUB",
    "fromCode": "RUB",
    "fromName": "Сбер RUB",
    "toXmlCode": "USDTBEP20",
    "toCode": "USDT",
    "toName": "USDT BEP-20",
    "fieldsGive": {
      "ФИО": "4144"
    },
    "fieldsGet": {},
    "needsTxId": false,
    "dateStatusUpdated": "2025-05-23 22:51:13",
    "deleteInterval": 30
  },
  "action": null
}

/api/user/order

Метод: PUT;
Описание: Создание новой заявки;
Права: ✅ Открыт для всех;
Параметры:

Запрос:

{
  "email": "[email protected]",
  "currencyFromId": 1,
  "currencyToId": 6,
  "amountFrom": "2000.50",
  "amountTo": "22.87",
  "wallet": "0xd2404FA0EEB8c876eC8dE9BA92d5bF8c436B4177",
  "giveFields": {
    "ФИО": "444"
  },
  "getFields": {}
}

Ответы:

  1. Если пользователь с такой почтой еще не зарегистрирован, ему будет отправлено письмо для регистрации, и будет создана временная заявка. По ссылке в письме нужно перейти в течении 5мин:
{
  "type": "success",
  "message": "Вам отправлено письмо на $email для подтверждения регистрации. Пожалуйста, перейдите по ссылке.",
  "data": {
    "tempOrderId": "weahr291349adsf218yefhwe"
  },
  "action": null
}
  1. Если пользователь зарегистрирован, но еще не вошел на сайт, будет создана временная заявка, которая хранится 5 мин:
{
    "type": "success",
    "message": "Для создания заявки нужно войти с логином и паролем.",
    "data": {
      "login": "[email protected]",
      "tempOrderId": "weahr291349adsf218yefhwe"
    },
    "action": "LOGIN"    
}
  1. Если пользователь вошел на сайт, но у него уже есть активная заявка:
{
    "type": "success",
    "message": "У вас уже есть активная заявка",
    "data": {
      "id": 32
    },
    "action": "ORDER_BY_ID"    
}
  1. Если пользователь вошел на сайт, и активных заявок у него нет, тогда создаем новую.
{
  "type": "success",
  "message": "Заявка создана",
  "data": {
    "id": 268
  },
  "action": "ORDER_BY_ID"
}

Для каждого статуса заявки есть таймаут. Если статус не меняется в течение заданного времени, заявка закрывается автоматически.

/api/user/order/claim

Метод: PUT;
Описание: Связывает id временной заявки с id пользователя;
Права: 🔵 Авторизованный пользователь;
Параметры:

Ответы:

  1. У пользователя уже есть активная заявка:
{
  "type": "warning",
  "message": "У вас уже есть активная заявка",
  "data": {
    "id": 6
  },
  "action": "CHECKUP_ORDER"
}
  1. У пользователя нет активных заявок, создаем новую (переводим временную заявку в постоянную):
{
  "type": "success",
  "message": "Заявка успешно подтверждена",
  "data": {
    "id": 7
  },
  "action": "CHECKUP_ORDER"
}

/api/user/order/txid

Метод: PUT;
Описание: Задает txid (id транзакции) для активной заявки. При автоматическом приеме средств биржа выдает только один номер кошелька для каждой валюты. Если одновременно создать две заявки на той же валюте, нельзя будет понять, какая заявка оплачена первой. В таких случаях у пользователя запрашивается id транзакции.
Права: 🔵 Авторизованный пользователь;
Параметры: