API ÖDEME ADRESİ
TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx
TRX bu adrese gönderin. İşlem özetiniz (tx hash) enerji tahsisini talep etmek için kullanılacaktır.

PHP'nin tam entegrasyonu kullanılarak iexbase/tron-api Bu kütüphane, her adımı projenize kopyalayabileceğiniz bağımsız bir kod bloğu olarak sunar. Herhangi bir PHP framework'ü veya saf PHP ile çalışır.

Önkoşullar: PHP 7.4+, Composer, ext-gmp ve ext-bcmath etkinleştirilmiş, fonlanmış bir Tron cüzdanı.
PHP'de oturum açma hakkında: TronEnergy API cüzdan imzası gerektirir. tronWeb.trx.signMessageV2(). O iexbase/tron-api Kütüphane bu tam imzalama ilkelini sunmadığı için, bu kılavuz imzalama adımı için küçük bir Node.js yardımcı fonksiyonu kullanıyor. Geri kalan her şey ( TRX gönderme, API çağırma, USDT gönderme) PHP'de kalıyor. Geçerli bir signMessageV2 imzası üreten tamamen PHP tabanlı bir imzalama çözümünüz varsa, diğer adımları değiştirmeden yardımcı fonksiyonu değiştirebilirsiniz.

Akış

API anahtarı yok. Kayıt yok. Kodunuz, TRX zincir üzerinde TronEnergy ödeme adresine gönderir, sahipliği kanıtlayan bir mesaj imzalar ve ardından yetkilendirmeyi talep eder. Energy yaklaşık 3 saniye içinde ulaşır. Ardından kodunuz, yetkilendirilmiş enerjiyi kullanarak USDT gönderir.

1
TRX gönder
Zincir üzerindeki ödeme adresine 4 veya daha fazla TRX gönderin (minimum 4, maksimum 1000).
2
İmza
Gönderenin siz olduğunuzu kanıtlamak için tx_hash:delegate_to'yu imzalayın.
3
İddia
İşlem özetini ve imzasını içeren POST /delegate isteğini gönderin. Energy yaklaşık 3 saniye içinde ulaşacaktır.
Fiyatlandırma doğrusaldır: TRX başına 16.250 Energy . Minimum sipariş 4 TRX (65.000 Energy — tek bir standart USDT transferi), maksimum 1.000 TRX (16,25 milyon Energy ). Gönderdiğiniz miktar, size geri verilecek Energy miktarını tam olarak belirler — kademe yok, paket yok. Tek bir standart transfer için şunu kullanın: $trxAmount = 4Yeni bir cüzdana para transferi için şunu kullanın: 8Toplu işlemler için daha fazlasını kullanın. Aşağıdaki kod bir tanesini kullanıyor. $trxAmount Değişken olduğu için tek bir yerden değiştirebilirsiniz.

Adım adım

1. Kurulum

besteci
composer require iexbase/tron-api

2. Kurulum

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
Kimlik bilgilerini asla doğrudan koda yazmayın. Özel anahtarınızı ortam değişkenlerinden veya bir gizli anahtar yöneticisinden yükleyin. Gizli anahtarları asla git'e kaydetmeyin.

3. Ödeme Bilgilerini Alın (İsteğe bağlı)

Ödeme bilgilerini al
// 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 gönderin

TRX gönder
// 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. Mesajı İmzalayın

API TRX gönderen cüzdanın aynı cüzdan tarafından yetkilendirme talebinde bulunulduğunu kanıtlayan bir imza gerektirir. Bunu küçük bir Node.js yardımcı programı ile yapıyoruz. Dosyayı şu şekilde kaydedin: sign.js PHP dosyanızın yanında:

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 aynı klasöre kurun: npm install tronwebArdından PHP&#39;den çağırın:

PHP&#39;den imzala
// 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. Yetki Devrini Talep Edin

talep yetki devri
// $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 gönderin

USDT gönder
// Energy is now delegated. Send USDT. $contract = $tron->contract($usdt); $transfer = $contract->transfer($delegateTo, 10 * pow(10, 6)); echo "USDT sent: " . $transfer . "\n";

Hata Yönetimi

Talep çağrısını küçük bir yeniden deneme yardımcısıyla sarmalayın. En sık karşılaşılan hata şudur: payment_verification_failed İşlem henüz zincir üzerinde indekslenmemişse, birkaç saniye bekleyin ve bir kez daha deneyin.

hata yönetimi
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'); }

Tam Örnek

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