СУРОҒАИ ПАРДОХТИ API
TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx
TRX ба ин суроға фиристед. Хэши tx-и шумо барои гирифтани тақсимоти энергия истифода мешавад.

Интегратсияи пурраи PHP бо истифода аз iexbase/tron-api китобхона. Ҳар як қадам як блоки рамзии мустақил аст, ки шумо метавонед онро ба лоиҳаи худ нусхабардорӣ кунед. Бо ҳама гуна чаҳорчӯбаи PHP ё PHP-и оддӣ кор мекунад.

Пешшартҳо: PHP 7.4+, Composer, ext-gmp ва ext-bcmath фаъол аст, ҳамёни Tron бо маблағгузорӣ.
Дар бораи имзо дар PHP: API TronEnergy имзои ҳамёнро талаб мекунад, ки бо истифода аз он tronWeb.trx.signMessageV2(). Он 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 бо хэш ва имзои TX. Energy дар ~3 сония мерасад.
Нархгузорӣ хаттӣ аст: 16,250 Energy барои TRX . Ҳадди ақал фармоиш 4 TRX (65,000 Energy — як интиқоли стандартии USDT ), ҳадди аксар 1,000 TRX (16.25M Energy ). Маблағе, ки шумо мефиристед, дақиқ муайян мекунад, ки чӣ қадар Energy баргардонида мешавад — бе сатҳҳо, бе бастаҳо. Барои як интиқоли стандартии ягона, истифода баред $trxAmount = 4Барои интиқоли ҳамёни нав, истифода баред. 8Барои кори гурӯҳӣ, бештар истифода баред. Коди зер аз a истифода мебарад. $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 фиристед

usdt фиристед
// Energy is now delegated. Send USDT. $contract = $tron->contract($usdt); $transfer = $contract->transfer($delegateTo, 10 * pow(10, 6)); echo "USDT sent: " . $transfer . "\n";

Коркарди хатогиҳо

Даъвати даъворо дар ёвари хурди такрорӣ печонед. Хатои маъмултарин ин аст payment_verification_failed вақте ки tx ҳанӯз дар занҷир индексатсия нашудааст - чанд сония интизор шавед ва як маротиба такрор кунед.

коркарди хатогиҳо
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