Included XML files for the "pay to new number" and "pay to old number" features in the Ozon platform.
4.5 KiB
4.5 KiB
Task API
Управление задачами: получение очереди, добавление задач, отправка результатов.
GET /api/v1/task/get_tasks 🔒
Получить список задач в очереди для текущего профиля.
Ответ:
{
"success": true,
"data": [
{
"bank_name": "ozon",
"material_id": "c340cd2e-cefd-48d6-a813-c4be097ae493",
"type": "FETCH_PROFILE",
"body": {}
},
{
"bank_name": "birbank",
"material_id": "a1b2c3d4-0000-0000-0000-000000000001",
"type": "FETCH_TRANSACTIONS",
"body": {}
},
{
"bank_name": "ozon",
"material_id": "a1b2c3d4-0000-0000-0000-000000000002",
"type": "CREATE_TRANSACTION",
"body": {
"amount": 1000,
"currency": 643,
"type": "bank",
"bank_participator_id": "string",
"extra": {}
}
}
]
}
material_id— UUID строка. Числовой формат поддерживается для обратной совместимости.
**Типы задач:**
| `type` | Описание | `body` |
|--------|----------|--------|
| `FETCH_PROFILE` | Получить баланс и данные аккаунта | пустой `{}` |
| `FETCH_TRANSACTIONS` | Получить историю транзакций | пустой `{}` |
| `CREATE_TRANSACTION` | Выполнить перевод | `CreateTransactionBody` |
**`CreateTransactionBody`:**
```json
{
"amount": 1000,
"currency": 643,
"type": "bank",
"bank_participator_id": "string",
"extra": {}
}
currency— ISO 4217 numeric код валюты (643 = RUB, 840 = USD, 944 = AZN, 410 = KRW)type—"bank"или"top-up"
POST /api/v1/task/task_result 🔒
Отправить результат выполненной задачи.
Тело запроса зависит от типа задачи (discriminator — поле type).
FETCH_PROFILE
{
"type": "FETCH_PROFILE",
"material_id": "c340cd2e-cefd-48d6-a813-c4be097ae493",
"bank_name": "ozon",
"data": {
"bank_account_id": "string",
"currency": 643,
"amount": 15000,
"extra": {}
}
}
FETCH_TRANSACTIONS
{
"type": "FETCH_TRANSACTIONS",
"material_id": "a1b2c3d4-0000-0000-0000-000000000001",
"bank_name": "birbank",
"data": [
{
"bank_transaction_id": "string",
"amount": 500,
"currency": 944,
"transaction_type": "bank",
"bank_participator_id": "string",
"status": "completed",
"extra": {},
"created_at": "2024-01-01T12:00:00"
}
]
}
CREATE_TRANSACTION
{
"type": "CREATE_TRANSACTION",
"material_id": "a1b2c3d4-0000-0000-0000-000000000002",
"bank_name": "ozon",
"data": {
"bank_transaction_id": "string",
"amount": 1000,
"currency": 643,
"transaction_type": "bank",
"bank_participator_id": "string",
"status": "completed",
"extra": {}
}
}
TransactionStatusEnum: "progress" | "completed" | "declined"
POST /api/v1/task/add_task
Добавить задачу в очередь (вызывается внешней системой, не клиентом).
POST /api/v1/task/add_bank
Зарегистрировать банк с webhook-URL.
Query параметры:
| Параметр | Тип | Описание |
|---|---|---|
bank_name |
string | Название банка |
webhook_url |
uri | URL для уведомлений |
Ошибка выполнения задачи
Если задача не может быть выполнена (аккаунт не найден, скрипт упал), в поле data передаётся:
{
"type": "FETCH_PROFILE",
"material_id": "c340cd2e-cefd-48d6-a813-c4be097ae493",
"bank_name": "ozon",
"data": {
"status": "error",
"description": "Account not found for material_id: c340cd2e-cefd-48d6-a813-c4be097ae493"
}
}
Связь с кодом проекта
| API | Метод в коде |
|---|---|
GET /api/v1/task/get_tasks |
NetworkService::getTasks() |
POST /api/v1/task/task_result |
NetworkService::postTaskResult() |
Хелпер в EventHandler: sendTaskResult(type, materialId, bankName, data) — создаёт NetworkService в отдельном потоке и вызывает postTaskResult().