Платіжна адреса 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 . Minimum order 4 TRX (65,000 Energy — one standard USDT transfer), maximum 1,000 TRX (16.25M Energy). The amount you send determines exactly how much Energy is delegated back — no tiers, no packages. For a single standard transfer, use $trxAmount = 4. For a new-wallet transfer, use 8. For batch work, use more. The code below uses a $trxAmount variable so you can change it in one place.

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

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

composer
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
Ніколи не записуйте облікові дані жорстко. Use environment variables or a secrets manager. The example above is for illustration only.

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

get payment info
// 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

send 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 (run with node)
// 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:

sign from 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. Претендуйте на делегування

claim delegation
// $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, ]), ]); $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); $result = json_decode($response, true); if (isset($result['error'])) { throw new Exception("Delegation failed: " . $result['message']); } echo "Delegated: " . $result['energy'] . " energy\n"; echo "Ref: " . $result['ref'] . "\n";

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

send USDT
// Send USDT using the delegated energy $usdtContract = $tron->contract($usdt); // Amount in smallest unit (6 decimals for USDT) // 10 USDT = 10 * 1,000,000 = 10000000 $amount = 10 * pow(10, 6); $recipient = 'TRecipientAddress'; $transfer = $usdtContract->transfer($recipient, $amount); echo "USDT sent: " . $transfer . "\n";

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

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

error handling
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