Skip to content

Créer une Transaction

Crée une nouvelle transaction pour l'achat d'énergie ou de bandwidth, un lot de ressources (resource bundle), ou l'activation d'adresse.

Un lot de ressources (resource bundle) vous permet d'acheter à la fois de l'énergie et de la bande passante en une seule requête API.

POST /v1/transaction/new

Requête

Paramètres de Requête

ChampTypeRequisDescription
external_idstringNonIdentifiant externe optionnel de la transaction
servicestringOuiType de service : "energy", "bandwidth", "resource_bundle" ou "activate_address"
paramsobjectOuiObjet de paramètres du service
params.addressstringOuiAdresse du portefeuille TRON (34 caractères)
params.amount*integerConditionnelQuantité d'énergie ou de bandwidth à acheter. Requis quand service="energy" ou "bandwidth" et params.amounts n'est pas fourni.
params.energy_amount*integerNonObsolète. Utilisez params.amount ou params.amounts.energy.
params.amounts*objectConditionnelObjet de quantités de ressources. Requis quand service="resource_bundle". Peut aussi être utilisé pour les services "energy" et "bandwidth".
params.amounts.energyintegerConditionnelQuantité d'énergie à acheter. Requis dans amounts pour "resource_bundle".
params.amounts.bandwidthintegerConditionnelQuantité de bande passante à acheter. Requis dans amounts pour "resource_bundle".
params.durationintegerOuiDurée en heures. Actuellement, seule 1 heure est prise en charge pour l'énergie, le bandwidth et le resource_bundle.
params.activate_addressbooleanNonActiver l'adresse si nécessaire. Optionnel pour les services energy, bandwidth et resource_bundle.

* Nous recommandons d'utiliser l'objet amounts comme approche la plus universelle. L'API résout la quantité de ressource dans l'ordre suivant : params.amountsparams.amountparams.energy_amount.

bash
#!/bin/bash
API_TOKEN="votre_token_api"
API_SECRET="votre_secret_api"
REQUEST_BODY='{
  "external_id": "mon-id-externe-123",
  "service": "energy",
  "params": {
    "address": "ADRESSE_TRX",
    "amounts": {
      "energy": 65000
    },
    "duration": 1
  }
}'

# Calculer la signature
SIGNATURE=$(echo -n "${REQUEST_BODY}${API_SECRET}" | sha256sum | cut -d' ' -f1)

# Faire la requête API
curl -X POST "https://api.tronzap.com/v1/transaction/new" \
  -H "Authorization: Bearer ${API_TOKEN}" \
  -H "X-Signature: ${SIGNATURE}" \
  -H "Content-Type: application/json" \
  -d "${REQUEST_BODY}"
javascript
const crypto = require('crypto');
const axios = require('axios');

const apiToken = 'votre_token_api';
const apiSecret = 'votre_secret_api';
const requestBody = JSON.stringify({
  external_id: 'mon-id-externe-123',
  service: 'energy',
  params: {
    address: 'ADRESSE_TRX',
    amounts: {
      energy: 65000
    },
    duration: 1
  }
});

// Calculer la signature
const signature = crypto
  .createHash('sha256')
  .update(requestBody + apiSecret)
  .digest('hex');

// Faire la requête API
axios({
  method: 'post',
  url: 'https://api.tronzap.com/v1/transaction/new',
  headers: {
    'Authorization': `Bearer ${apiToken}`,
    'X-Signature': signature,
    'Content-Type': 'application/json'
  },
  data: requestBody
})
.then(response => console.log(response.data))
.catch(error => console.error(error));
php
<?php
$apiToken = 'votre_token_api';
$apiSecret = 'votre_secret_api';
$requestBody = json_encode([
  'external_id' => 'mon-id-externe-123',
  'service' => 'energy',
  'params' => [
    'address' => 'ADRESSE_TRX',
    'amounts' => [
      'energy' => 65000
    ],
    'duration' => 1
  ]
]);

// Calculer la signature
$signature = hash('sha256', $requestBody . $apiSecret);

// Faire la requête API
$ch = curl_init('https://api.tronzap.com/v1/transaction/new');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $requestBody);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
  'Authorization: Bearer ' . $apiToken,
  'X-Signature: ' . $signature,
  'Content-Type: application/json'
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>
python
import hashlib
import json
import requests

api_token = 'votre_token_api'
api_secret = 'votre_secret_api'
request_body = json.dumps({
  'external_id': 'mon-id-externe-123',
  'service': 'energy',
  'params': {
    'address': 'ADRESSE_TRX',
    'amounts': {
      'energy': 65000
    },
    'duration': 1
  }
})

# Calculer la signature
signature = hashlib.sha256((request_body + api_secret).encode()).hexdigest()

# Faire la requête API
headers = {
  'Authorization': f'Bearer {api_token}',
  'X-Signature': signature,
  'Content-Type': 'application/json'
}

response = requests.post(
  'https://api.tronzap.com/v1/transaction/new',
  headers=headers,
  data=request_body
)

print(response.json())

Exemple de Requête pour un Lot de Ressources

bash
#!/bin/bash
API_TOKEN="votre_token_api"
API_SECRET="votre_secret_api"
REQUEST_BODY='{
  "external_id": "mon-id-externe-123",
  "service": "resource_bundle",
  "params": {
    "address": "ADRESSE_TRX",
    "amounts": {
      "energy": 65000,
      "bandwidth": 345
    },
    "duration": 1,
    "activate_address": true
  }
}'

# Calculer la signature
SIGNATURE=$(echo -n "${REQUEST_BODY}${API_SECRET}" | sha256sum | cut -d' ' -f1)

# Faire la requête API
curl -X POST "https://api.tronzap.com/v1/transaction/new" \
  -H "Authorization: Bearer ${API_TOKEN}" \
  -H "X-Signature: ${SIGNATURE}" \
  -H "Content-Type: application/json" \
  -d "${REQUEST_BODY}"
javascript
const crypto = require('crypto');
const axios = require('axios');

const apiToken = 'votre_token_api';
const apiSecret = 'votre_secret_api';
const requestBody = JSON.stringify({
  external_id: 'mon-id-externe-123',
  service: 'resource_bundle',
  params: {
    address: 'ADRESSE_TRX',
    amounts: {
      energy: 65000,
      bandwidth: 5000
    },
    duration: 1,
    activate_address: true
  }
});

// Calculer la signature
const signature = crypto
  .createHash('sha256')
  .update(requestBody + apiSecret)
  .digest('hex');

// Faire la requête API
axios({
  method: 'post',
  url: 'https://api.tronzap.com/v1/transaction/new',
  headers: {
    'Authorization': `Bearer ${apiToken}`,
    'X-Signature': signature,
    'Content-Type': 'application/json'
  },
  data: requestBody
})
.then(response => console.log(response.data))
.catch(error => console.error(error));
php
<?php
$apiToken = 'votre_token_api';
$apiSecret = 'votre_secret_api';
$requestBody = json_encode([
  'external_id' => 'mon-id-externe-123',
  'service' => 'resource_bundle',
  'params' => [
    'address' => 'ADRESSE_TRX',
    'amounts' => [
      'energy' => 65000,
      'bandwidth' => 5000
    ],
    'duration' => 1,
    'activate_address' => true
  ]
]);

// Calculer la signature
$signature = hash('sha256', $requestBody . $apiSecret);

// Faire la requête API
$ch = curl_init('https://api.tronzap.com/v1/transaction/new');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $requestBody);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
  'Authorization: Bearer ' . $apiToken,
  'X-Signature: ' . $signature,
  'Content-Type: application/json'
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>
python
import hashlib
import json
import requests

api_token = 'votre_token_api'
api_secret = 'votre_secret_api'
request_body = json.dumps({
  'external_id': 'mon-id-externe-123',
  'service': 'resource_bundle',
  'params': {
    'address': 'ADRESSE_TRX',
    'amounts': {
      'energy': 65000,
      'bandwidth': 5000
    },
    'duration': 1,
    'activate_address': True
  }
})

# Calculer la signature
signature = hashlib.sha256((request_body + api_secret).encode()).hexdigest()

# Faire la requête API
headers = {
  'Authorization': f'Bearer {api_token}',
  'X-Signature': signature,
  'Content-Type': 'application/json'
}

response = requests.post(
  'https://api.tronzap.com/v1/transaction/new',
  headers=headers,
  data=request_body
)

print(response.json())

Exemple de Requête pour l'Activation d'Adresse

bash
#!/bin/bash
API_TOKEN="votre_token_api"
API_SECRET="votre_secret_api"
REQUEST_BODY='{
  "external_id": "mon-id-externe-123",
  "service": "activate_address",
  "params": {
    "address": "ADRESSE_TRX"
  }
}'

# Calculer la signature
SIGNATURE=$(echo -n "${REQUEST_BODY}${API_SECRET}" | sha256sum | cut -d' ' -f1)

# Faire la requête API
curl -X POST "https://api.tronzap.com/v1/transaction/new" \
  -H "Authorization: Bearer ${API_TOKEN}" \
  -H "X-Signature: ${SIGNATURE}" \
  -H "Content-Type: application/json" \
  -d "${REQUEST_BODY}"
javascript
const crypto = require('crypto');
const axios = require('axios');

const apiToken = 'votre_token_api';
const apiSecret = 'votre_secret_api';
const requestBody = JSON.stringify({
  external_id: 'mon-id-externe-123',
  service: 'activate_address',
  params: {
    address: 'ADRESSE_TRX'
  }
});

// Calculer la signature
const signature = crypto
  .createHash('sha256')
  .update(requestBody + apiSecret)
  .digest('hex');

// Faire la requête API
axios({
  method: 'post',
  url: 'https://api.tronzap.com/v1/transaction/new',
  headers: {
    'Authorization': `Bearer ${apiToken}`,
    'X-Signature': signature,
    'Content-Type': 'application/json'
  },
  data: requestBody
})
.then(response => console.log(response.data))
.catch(error => console.error(error));

Réponse

La réponse fournit les détails de la transaction créée.

Champs de Réponse

ChampTypeDescription
codeintegerCode de réponse (0 = succès)
request_idstringIdentifiant unique de la requête
resultobjectDonnées de réponse
result.idstringID interne de la transaction
result.external_idstring|nullID externe de la transaction (si fourni)
result.servicestringType de service : "energy", "bandwidth", "resource_bundle" ou "activate_address"
result.paramsobjectParamètres originaux de la requête
result.params.activate_addressbooleanSi l'activation d'adresse a été demandée
result.statusstringStatut de la transaction (voir la liste des statuts)
result.amountfloatMontant de la transaction
result.created_atstringHorodatage de création (format ISO 8601)
result.hashstringHash de la transaction (si terminée)

Exemple de Réponse

json
{
    "code": 0,
    "request_id": "bbf74bcd-fb36-4df8-adc8-25f2bacd087b",
    "result": {
        "id": "transaction_id",
        "external_id": "mon-id-externe-123",
        "service": "energy",
        "params": {
            "address": "ADRESSE_TRX",
            "amounts": {
                "energy": 65000
            },
            "duration": 1,
            "activate_address": false
        },
        "status": "success",
        "amount": 8.25,
        "created_at": "2024-03-22T12:00:00Z",
        "hash": "transaction_hash"
    }
}

Erreurs Possibles

Code d'ErreurKeyDescription
1authErreur d'authentification (token ou signature incorrecte)
2invalid_service_or_paramsService ou paramètres invalides
5wallet_not_foundPortefeuille non trouvé
6insufficient_fundsFonds insuffisants
10invalid_tron_addressAdresse TRON invalide
11invalid_energy_amountQuantité d'énergie invalide
12invalid_durationDurée invalide
50invalid_bandwidth_amountQuantité de bande passante invalide
24address_not_activatedAdresse non activée
25address_already_activatedAdresse déjà activée
35service_unavailableService non disponible
500internal_server_errorErreur interne du serveur

Tron Energy API Documentation