gregorybiter/roapp-sdk

sdk roapp bot rest

Maintainers

Package info

github.com/GregoryBiter/roapp-sdk-php

pkg:composer/gregorybiter/roapp-sdk

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.0.1 2026-04-30 15:38 UTC

This package is auto-updated.

Last update: 2026-04-30 15:40:35 UTC


README

PHP SDK для работы с Roapp CRM API — современной системой управления сервисными центрами и ремонтами.

License PHP Version

📦 Установка

composer require gregorybiter/roapp-sdk

Требования:

  • PHP >= 7.4
  • Расширение cURL
  • Расширение JSON

⚠️ ВАЖНО: Модули (Models)

Warning

На данный момент не рекомендуется использовать высокоуровневые модули из пространства имен Gbit\Roapp\Models (такие как Order, People, Product и т.д.). Они находятся в стадии активной переработки под новую структуру API (V2).

Рекомендуемый способ взаимодействия — использование универсальных методов класса RoappClient.

🔑 Аутентификация

SDK использует Bearer Token. Получите ваш API ключ в личном кабинете Roapp: Настройки > API.

use Gbit\Roapp\RoappClient;

$client = new RoappClient("ваш_api_ключ");

⚡ Быстрый старт (Рекомендуемый подход)

Используйте методы getData, request и requestWithRetry для прямого взаимодействия с эндпоинтами.

📥 Получение данных (с авто-пагинацией)

Метод getData позволяет автоматически собрать данные со всех страниц, если это необходимо.

// Получить все заказы (автоматически перебирает все страницы)
$allOrders = $client->getData('v2/orders', [], true);

// Получить только первую страницу (50 записей)
$ordersPage1 = $client->getData('v2/orders', ['page' => 1], false);

echo "Всего заказов в базе: " . $allOrders['count'];

📤 Создание и обновление данных

// Создание заказа
$newOrder = $client->request('v2/orders', [
    'branch_id' => 1,
    'order_type_id' => 1,
    'client_id' => 12345,
    'description' => 'Ремонт iPhone 13'
], 'POST');

// Частичное обновление (PATCH)
$client->request('v2/orders/123', ['status_id' => 5], 'PATCH');

🔄 Продвинутые запросы

🔁 Автоматические повторы (Retry)

Если API возвращает ошибку 429 (Too Many Requests), метод requestWithRetry автоматически подождет и повторит запрос.

$response = $client->requestWithRetry(
    'v2/orders',    // эндпоинт
    ['page' => 1],  // параметры
    'GET',          // метод
    3,              // макс. количество попыток
    1               // базовая задержка (сек)
);

🛠️ Низкоуровневый доступ (Класс Api)

Если вам нужен полный контроль над cURL или вы хотите использовать SDK без обертки RoappClient:

use Gbit\Roapp\Api;

$api = new Api('ваш_api_ключ');
$response = $api->api('v2/orders', ['status' => 'new'], 'GET');

🔥 Обработка ошибок

SDK предоставляет информативное исключение RoappApiException, которое содержит детали ответа сервера.

use Gbit\Roapp\RoappApiException;

try {
    $result = $client->request('v2/orders/invalid-id', [], 'GET');
} catch (RoappApiException $e) {
    // Получить HTTP код (400, 401, 404, 429 и т.д.)
    $code = $e->getHttpCode();
    
    // Сообщение на русском языке (если доступно)
    echo $e->getUserFriendlyMessage();
    
    // Проверка специфических ошибок
    if ($e->isValidationError()) {
        print_r($e->getValidationErrors());
    }
    
    if ($e->isRateLimitError()) {
        echo "Превышен лимит запросов (3 зап/сек)";
    }
}

📝 Логирование

По умолчанию ошибки логируются в файл logs/error.log. Вы можете добавлять свои записи:

use Gbit\Roapp\RoappClient;

RoappClient::pushLogs("Информационное сообщение");
RoappClient::pushLogs("Критическая ошибка", true); // true = ERROR, false = WARNING

📖 Справочник эндпоинтов (V2)

Основные маршруты API V2 (рекомендуются к использованию):

Сущность Эндпоинт
Заказы v2/orders
Финансы v2/finance
Счета v2/finance/accounts
Клиенты v2/people
Товары v2/products

Полный список доступен в Официальной документации Roapp API.

🤝 Поддержка и разработка

📄 Лицензия

Проект распространяется под лицензией MIT.