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

v1.0.0 2025-10-25 14:08 UTC

This package is auto-updated.

Last update: 2025-10-25 14:14:00 UTC


README

Yandex Cloud Billing PHP SDK

PHP SDK для работы с Yandex Cloud Billing API.

Latest Version on Packagist Total Downloads License

Описание

Этот пакет предоставляет удобный интерфейс для работы с 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 токена

  1. Через Yandex Cloud CLI (рекомендуется):

    yc iam create-token
  2. Через веб-интерфейс: Перейдите на страницу OAuth токенов

  3. Через переменную окружения:

    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 - Базовое использование API
  • budget_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.

Автор

Поддержка

Если у вас есть вопросы или предложения, создайте issue в GitHub репозитории.