Платіжна адреса API
TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx
Надішліть TRX на цю адресу. Ваш хеш переданої пошти використовується для отримання делегування енергії.

Повна інтеграція з PHP за допомогою iexbase/tron-api бібліотека. Кожен крок — це окремий блок коду, який можна скопіювати у свій проєкт. Працює з будь-яким PHP-фреймворком або звичайним PHP.

Передумови: PHP 7.4+, Composer, увімкнено ext-gmp та ext-bcmath, фінансований гаманець Tron .
Про вхід у систему в PHP: API TronEnergy вимагає підпису гаманця, використовуючи tronWeb.trx.signMessageV2(). The iexbase/tron-api Бібліотека не надає саме цей примітив підписання, тому в цьому посібнику для кроку підписання використовується крихітний помічник Node.js. Все інше (надсилання TRX , виклик API , надсилання USDT ) залишається в PHP. Якщо у вас є рішення для підписання на чистому PHP, яке створює дійсний підпис signMessageV2, ви можете замінити помічник, не змінюючи жодного іншого кроку.

Потік

Без ключа API . Без реєстрації. Ваш код надсилає TRX у мережі на платіжну адресу TronEnergy , підписує повідомлення, що підтверджує право власності, а потім вимагає делегування. Energy надходить приблизно через 3 секунди. Потім ваш код надсилає USDT , використовуючи делеговану енергію.

1
Надіслати TRX
Надішліть 4 або більше TRX на платіжну адресу в мережі (мінімум 4, максимум 1000).
2
Знак
Підпишіть tx_hash:delegate_to, щоб довести, що ви є відправником.
3
Претензія
POST /delegate з хешем передачі та підписом. Energy надходить приблизно за 3 секунди.
Ціноутворення лінійне: 16 250 Energy за TRX . Мінімальне замовлення 4 TRX (65 000 Energy — один стандартний переказ USDT ), максимальне 1 000 TRX (16,25 млн Energy ). Сума, яку ви надсилаєте, визначає, скільки саме Energy делегується назад — без рівнів, без пакетів. Для одного стандартного переказу використовуйте $trxAmount = 4Для переказу коштів у новий гаманець використовуйте 8Для пакетної роботи використовуйте more. Код нижче використовує $trxAmount змінна, щоб ви могли змінити її в одному місці.

Крок за кроком

1. Встановлення

композитор
composer require iexbase/tron-api

2. Налаштування

setup.php
require_once 'vendor/autoload.php'; use IEXBase\TronAPI\Tron; $tron = new Tron(); $tron->setPrivateKey('YOUR_PRIVATE_KEY'); $tron->setAddress('YOUR_WALLET_ADDRESS'); $api = 'https://api.tronnrg.com'; $addr = 'TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx'; // API payment address $usdt = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t'; // USDT contract
Ніколи не записуйте облікові дані жорстко. Завантажте свій закритий ключ зі змінних середовища або менеджера секретів. Ніколи не передавайте секрети до git.

3. Отримати платіжну інформацію (необов'язково)

отримати платіжну інформацію
// Get pricing and payment address (optional, energy is always available) $supply = json_decode( file_get_contents("${api}/supply"), true ); echo "Pay to: " . $supply['pay_to'] . "\n"; echo "Energy per TRX: " . $supply['energy_per_trx'] . "\n";

4. Надішліть TRX

надіслати TRX
// Send TRX to the API payment address — pricing is linear. // 16,250 energy per TRX. Min 4 TRX, max 1,000 TRX. // $trxAmount = 4 → 65,000 energy (standard USDT transfer) // $trxAmount = 8 → 130,000 energy (new wallet transfer) // $trxAmount = 40 → 650,000 energy (10 standard transfers) // $trxAmount = 1000 → 16,250,000 energy (max) $trxAmount = 4; $payment = $tron->sendTrx($addr, $trxAmount); if (!isset($payment['result']) || !$payment['result']) { throw new Exception('TRX transfer failed'); } $txHash = $payment['txid']; echo "Payment sent: ${txHash}\n";

5. Підпишіть повідомлення

API вимагає підпису, який підтверджує, що той самий гаманець, що надіслав TRX , запитує делегування. Ми робимо це за допомогою крихітного помічника Node.js. Збережіть його як sign.js поруч із вашим PHP-файлом:

sign.js
// Usage: node sign.js <tx_hash> <delegate_to> // Outputs the signature to stdout. Reads private key from TRON_PRIVATE_KEY env var. const { TronWeb } = require('tronweb'); const [, , txHash, delegateTo] = process.argv; const tronWeb = new TronWeb({ fullHost: 'https://api.trongrid.io', privateKey: process.env.TRON_PRIVATE_KEY, }); tronWeb.trx.signMessageV2(`${txHash}:${delegateTo}`) .then(sig => process.stdout.write(sig)) .catch(e => { console.error(e.message); process.exit(1); });

Встановіть TronWeb у ту саму папку: npm install tronwebПотім викличте його з PHP:

знак з PHP
// Both the sender (in $tron) and the signer must be the SAME wallet. // Make sure TRON_PRIVATE_KEY in your environment matches the wallet that sent the TRX. $delegateTo = 'TWalletThatNeedsEnergy'; $signature = trim(shell_exec( sprintf('node sign.js %s %s', escapeshellarg($txHash), escapeshellarg($delegateTo) ) )); if (!$signature) { throw new Exception('Signing failed. Check that node and tronweb are installed and TRON_PRIVATE_KEY is set.'); } echo "Signed: " . substr($signature, 0, 20) . "...\n";

6. Претендуйте на делегування

делегування претензій
// $txHash, $delegateTo, and $signature are all defined in the previous steps. $ch = curl_init("${api}/delegate"); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ['Content-Type: application/json'], CURLOPT_POSTFIELDS => json_encode([ 'tx_hash' => $txHash, 'delegate_to' => $delegateTo, 'signature' => $signature, ]), ]); $result = json_decode(curl_exec($ch), true); curl_close($ch); echo "Energy: " . $result['energy'] . "\n"; echo "Ref: " . $result['ref'] . "\n";

7. Надішліть USDT

відправити долар США
// Energy is now delegated. Send USDT. $contract = $tron->contract($usdt); $transfer = $contract->transfer($delegateTo, 10 * pow(10, 6)); echo "USDT sent: " . $transfer . "\n";

Обробка помилок

Оберніть виклик claim у невеликий помічник повторної спроби. Найпоширеніша помилка - payment_verification_failed коли відправлення ще не проіндексовано в ланцюжку — зачекайте кілька секунд і повторіть спробу ще раз.

обробка помилок
function claimDelegation($api, $txHash, $delegateTo, $signature, $retries = 3) { for ($i = 0; $i < $retries; $i++) { $ch = curl_init("${api}/delegate"); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ['Content-Type: application/json'], CURLOPT_POSTFIELDS => json_encode([ 'tx_hash' => $txHash, 'delegate_to' => $delegateTo, 'signature' => $signature, ]), ]); $result = json_decode(curl_exec($ch), true); curl_close($ch); if (!isset($result['error'])) { return $result; // Success } switch ($result['error']) { case 'payment_verification_failed': // Most common: tx not yet indexed. Wait and retry. sleep(3); continue 2; case 'hash_already_used': throw new Exception('This tx hash has already been claimed'); case 'signature_mismatch': throw new Exception('Signer does not match payment sender. Sign with the same wallet that sent TRX.'); case 'delegation_failed': // Refund queued automatically if payment was verified throw new Exception('Delegation failed: ' . $result['message']); default: throw new Exception($result['message'] ?? 'Unknown error'); } } throw new Exception('Transaction not found after retries'); }

Повний приклад

delegate-energy.php
<?php require_once 'vendor/autoload.php'; use IEXBase\TronAPI\Tron; $tron = new Tron(); $tron->setPrivateKey(getenv('TRON_PRIVATE_KEY')); $tron->setAddress(getenv('TRON_WALLET_ADDRESS')); $api = 'https://api.tronnrg.com'; $addr = 'TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx'; try { $delegateTo = 'TRecipientWallet'; $trxAmount = 4; // min 4, max 1000 — energy = trxAmount × 16,250 // 1. Send TRX (linear pricing: 16,250 energy per TRX) $payment = $tron->sendTrx($addr, $trxAmount); $txHash = $payment['txid']; echo "Payment: ${txHash}\n"; // 2. Sign via Node helper (see Step 5 above) $signature = trim(shell_exec( sprintf('node sign.js %s %s', escapeshellarg($txHash), escapeshellarg($delegateTo) ) )); if (!$signature) throw new Exception('Signing failed'); // 3. Claim delegation (with retry) $result = claimDelegation($api, $txHash, $delegateTo, $signature); echo "Energy: " . $result['energy'] . "\n"; echo "Ref: " . $result['ref'] . "\n"; // 4. Send USDT (energy is now available) $contract = $tron->contract('TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t'); $transfer = $contract->transfer($delegateTo, 10 * pow(10, 6)); echo "USDT sent: ${transfer}\n"; } catch (Exception $e) { echo "Error: " . $e->getMessage() . "\n"; }
Telegram WhatsApp