पूर्ण PHP एकीकरण का उपयोग करते हुए iexbase/tron-api यह लाइब्रेरी एक स्वतंत्र कोड ब्लॉक है जिसे आप अपने प्रोजेक्ट में कॉपी कर सकते हैं। यह किसी भी PHP फ्रेमवर्क या सामान्य PHP के साथ काम करता है।
पूर्वापेक्षाएँ: PHP 7.4+, कंपोजर, ext-gmp और ext-bcmath सक्षम, एक फंडेड Tron वॉलेट।
PHP में साइन इन करने के बारे में: TronEnergy API वॉलेट हस्ताक्षर की आवश्यकता होती है। tronWeb.trx.signMessageV2()द iexbase/tron-api लाइब्रेरी इस सटीक हस्ताक्षर प्रिमिटिव को उपलब्ध नहीं कराती है, इसलिए यह गाइड हस्ताक्षर चरण के लिए एक छोटे से Node.js हेल्पर का उपयोग करती है। बाकी सब कुछ ( TRX भेजना, API कॉल करना, USDT भेजना) PHP में ही रहता है। यदि आपके पास एक ऐसा PHP हस्ताक्षर समाधान है जो एक वैध signMessageV2 हस्ताक्षर उत्पन्न करता है, तो आप किसी अन्य चरण को बदले बिना हेल्पर को बदल सकते हैं।
प्रवाह
कोई API कुंजी नहीं। कोई साइन-अप नहीं। आपका कोड TronEnergy भुगतान पते पर ऑन-चेन TRX भेजता है, स्वामित्व साबित करने वाले संदेश पर हस्ताक्षर करता है, और फिर डेलीगेशन का दावा करता है। 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 require iexbase/tron-api
2. सेटअप
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 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 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 फ़ाइल के बगल में:
// 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 से कॉल करें:
// 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,
]),
]);
$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 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";
त्रुटि प्रबंधन
क्लेम कॉल को एक छोटे रिट्राई हेल्पर में लपेटें। सबसे आम त्रुटि यह है: 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');
}
पूर्ण उदाहरण
<?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";
}