Версия 0.1.3 · Команды установки используют точные версии.
PHP SDK для Telegram Stars и Premium
Установка независимого SDK Fragment Donor для PHP: username, подарки Stars/Premium и rate limit.
При покупке mnemonic кошелька и сессия/cookie Fragment передаются оператору API.
Runtime: PHP 8.2+. Устанавливайте пакет из реестра только после статуса PUBLISHED; до этого используйте сборку каталога php из public source.
Клиент предлагает username, покупку Stars, подарок Premium и баланс с naming, принятым в PHP. Запросы используют form-urlencoded. Баланс сохраняется decimal-строкой, дополнительные поля не удаляются.
Настройте timeout и данные кошелька на backend. Повтор чтения включается явно и ограничен; покупки никогда не повторяются автоматически. Точный constructor и типы ошибок приведены в README пакета.
Установка
composer require fragment-donor/sdk:^0.1Пример
<?php
declare(strict_types=1);
require __DIR__ . '/../vendor/autoload.php';
use FragmentDonor\{Client, Credentials, StarsRequest, PremiumRequest, RateLimitError, ServiceUnavailableError};
// Read-only by default. Never print or dump client credentials.
$client = new Client(credentials: new Credentials(
mnemonic: getenv('FRAGMENT_MNEMONIC') ?: '',
cookie: getenv('FRAGMENT_COOKIE') ?: '',
providerKey: getenv('TONCONSOLE_API_KEY') ?: null,
));
try {
$username = getenv('FRAGMENT_USERNAME') ?: 'durov';
$user = $client->getUserInfo($username);
echo 'Username: ' . $user->username() . PHP_EOL;
if (getenv('FRAGMENT_MNEMONIC')) {
$wallet = $client->walletBalance();
echo 'TON balance: ' . $wallet->ton() . PHP_EOL;
if (getenv('FRAGMENT_ALLOW_PURCHASES') === 'yes') {
// Exactly one deliberate real-money gift, never both or a blind retry.
$kind = getenv('FRAGMENT_PURCHASE_KIND');
if ($kind === 'stars') {
$client->buyStars(new StarsRequest($username, 50));
} elseif ($kind === 'premium') {
$client->buyPremium(new PremiumRequest($username, 3));
} else {
throw new LogicException('Select FRAGMENT_PURCHASE_KIND=stars or premium explicitly.');
}
}
}
} catch (RateLimitError | ServiceUnavailableError $error) {
echo 'Retry later: ' . ($error->retryAfter ?? 5) . ' seconds.' . PHP_EOL;
}
Читайте дальше
Telegram Stars API: 429, Retry-After и flood wait · Защита данных кошелька при интеграции API · Вопросы об API и SDK Fragment Donor