tigusigalpa / yandexcloud-billing-php
PHP SDK for Yandex Cloud Billing API
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/tigusigalpa/yandexcloud-billing-php
Requires
- php: ^8.0
- ext-json: *
- firebase/php-jwt: ^6.0
- guzzlehttp/guzzle: ^7.0
Requires (Dev)
- phpstan/phpstan: ^1.0
- phpunit/phpunit: ^9.0|^10.0
- squizlabs/php_codesniffer: ^3.6
README
PHP SDK для работы с Yandex Cloud Billing API.
Описание
Этот пакет предоставляет удобный интерфейс для работы с Yandex Cloud Billing API, позволяя получать информацию о биллинговых аккаунтах и бюджетах.
Возможности
- Получение информации о биллинговых аккаунтах
- Работа с бюджетами
- Анализ использования ресурсов и стоимости
- Поддержка OAuth и Service Account аутентификации
- Кэширование IAM токенов (файловая система, Redis)
- Laravel интеграция с Service Provider и Facade
- Artisan команды для управления
- Простой и интуитивный API
- Полная поддержка PSR-4 автозагрузки
- Обработка ошибок и исключений
Требования
- PHP 8.0 или выше
- Расширение JSON
- Guzzle HTTP клиент
Установка
Установите пакет через Composer:
composer require tigusigalpa/yandexcloud-billing-php
Аутентификация
Библиотека использует систему аутентификации через IAM-токены, которые автоматически получаются из OAuth токенов.
Получение OAuth токена
-
Через Yandex Cloud CLI (рекомендуется):
yc iam create-token
-
Через веб-интерфейс: Перейдите на страницу OAuth токенов
-
Через переменную окружения:
export YANDEX_OAUTH_TOKEN="your-oauth-token-here"
⚠️ Важно: Никогда не записывайте токены прямо в код! Используйте переменные окружения или конфигурационные файлы.
Подробная информация: AUTHENTICATION.md
Быстрый старт
OAuth аутентификация
<?php use Tigusigalpa\YandexCloudBilling\YandexCloudBillingClient; use Tigusigalpa\YandexCloudBilling\Exceptions\YandexCloudBillingException; use Tigusigalpa\YandexCloudBilling\Exceptions\AuthenticationException; try { // OAuth токен автоматически обменивается на IAM-токен $oauthToken = getenv('YANDEX_OAUTH_TOKEN'); // Из переменной окружения // Создание клиента (с автоматическим получением IAM-токена) $client = new YandexCloudBillingClient($oauthToken); // Получение списка биллинговых аккаунтов $accounts = $client->billingAccount()->list(); // Получение информации о конкретном аккаунте $account = $client->billingAccount()->get('billing-account-id'); // Получение бюджета $budget = $client->budget()->get('budget-id'); } catch (AuthenticationException $e) { echo "Ошибка аутентификации: " . $e->getMessage(); echo "Получите новый токен: yc iam create-token"; } catch (YandexCloudBillingException $e) { echo "Ошибка API: " . $e->getMessage(); }
Service Account аутентификация (рекомендуется для production)
<?php use Tigusigalpa\YandexCloudBilling\YandexCloudBillingClient; use Tigusigalpa\YandexCloudBilling\Cache\FileCache; // Создание клиента с Service Account $client = YandexCloudBillingClient::createWithServiceAccount( 'service-account-id', 'key-id', 'private-key-content' ); // Все остальные операции аналогичны OAuth $accounts = $client->billingAccount()->list();
Подробные примеры использования
Работа с биллинговыми аккаунтами
<?php use Tigusigalpa\YandexCloudBilling\YandexCloudBillingClient; $client = new YandexCloudBillingClient('your-oauth-token'); // Получение списка всех биллинговых аккаунтов $accounts = $client->billingAccount()->list(); // Получение информации о конкретном аккаунте $accountId = 'your-billing-account-id'; $account = $client->billingAccount()->get($accountId); // Получение списка привязанных облаков $boundClouds = $client->billingAccount()->listBoundClouds($accountId); // Привязка облака к биллинговому аккаунту $result = $client->billingAccount()->bindBillableObject($accountId, 'cloud-id'); // Получение списка привязок доступа $accessBindings = $client->billingAccount()->listAccessBindings($accountId);
Управление бюджетами
<?php use Tigusigalpa\YandexCloudBilling\YandexCloudBillingClient; use Tigusigalpa\YandexCloudBilling\Validators\BudgetValidator; $client = new YandexCloudBillingClient('your-oauth-token'); // Создание нового бюджета $budgetData = [ 'billingAccountId' => 'your-billing-account-id', 'name' => 'Месячный бюджет', 'amount' => '10000.00', 'resetPeriod' => 'MONTHLY', 'thresholdRules' => [ [ 'thresholdValue' => 80, 'thresholdType' => 'PERCENT', 'sendNotificationsToIds' => ['user-id'] ] ] ]; // Валидация данных BudgetValidator::validateCreateData($budgetData); // Создание бюджета $budget = $client->budget()->create($budgetData); // Получение списка бюджетов $budgets = $client->budget()->list('billing-account-id'); // Обновление бюджета $updateData = ['amount' => '15000.00']; $updatedBudget = $client->budget()->update('budget-id', $updateData); // Удаление бюджета $client->budget()->delete('budget-id');
Обработка ошибок
<?php use Tigusigalpa\YandexCloudBilling\YandexCloudBillingClient; use Tigusigalpa\YandexCloudBilling\Exceptions\YandexCloudBillingException; use Tigusigalpa\YandexCloudBilling\Exceptions\AuthenticationException; use Tigusigalpa\YandexCloudBilling\Exceptions\ValidationException; $client = new YandexCloudBillingClient('your-oauth-token'); try { $accounts = $client->billingAccount()->list(); } catch (AuthenticationException $e) { echo "Ошибка аутентификации: " . $e->getMessage(); } catch (ValidationException $e) { echo "Ошибка валидации: " . $e->getMessage(); } catch (YandexCloudBillingException $e) { echo "Общая ошибка API: " . $e->getMessage(); }
Примеры
В папке examples/ вы найдете дополнительные примеры:
basic_usage.php- Базовое использование APIbudget_management.php- Управление бюджетами
API Reference
YandexCloudBillingClient
Основной класс для работы с API.
Методы
billingAccount()- Возвращает ресурс для работы с биллинговыми аккаунтамиbudget()- Возвращает ресурс для работы с бюджетами
BillingAccountResource
Методы
list()- Получить список биллинговых аккаунтовget(string $billingAccountId)- Получить информацию о биллинговом аккаунтеlistBoundClouds(string $billingAccountId)- Получить список привязанных облаковbindBillableObject(string $billingAccountId, string $billableObjectId, string $billableObjectType = 'cloud')- Привязать объект к биллинговому аккаунтуlistAccessBindings(string $billingAccountId)- Получить список привязок доступа
BudgetResource
Методы
get(string $budgetId)- Получить информацию о бюджетеlist(string $billingAccountId)- Получить список бюджетовcreate(array $budgetData)- Создать бюджетupdate(string $budgetId, array $budgetData, ?string $updateMask = null)- Обновить бюджетdelete(string $budgetId)- Удалить бюджет
Документация
Подробная документация доступна в официальной документации Yandex Cloud.
Тестирование
composer test
Анализ кода
composer phpstan
Проверка стиля кода
composer cs-check
Исправление стиля кода
composer cs-fix
Лицензия
MIT License. Подробности в файле LICENSE.
Автор
- tigusigalpa - GitHub
- Email: sovletig@gmail.com
Поддержка
Если у вас есть вопросы или предложения, создайте issue в GitHub репозитории.