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
| Champ | Type | Requis | Description |
|---|---|---|---|
| external_id | string | Non | Identifiant externe optionnel de la transaction |
| service | string | Oui | Type de service : "energy", "bandwidth", "resource_bundle" ou "activate_address" |
| params | object | Oui | Objet de paramètres du service |
| params.address | string | Oui | Adresse du portefeuille TRON (34 caractères) |
| params.amount* | integer | Conditionnel | Quantité d'énergie ou de bandwidth à acheter. Requis quand service="energy" ou "bandwidth" et params.amounts n'est pas fourni. |
| params.energy_amount* | integer | Non | Obsolète. Utilisez params.amount ou params.amounts.energy. |
| params.amounts* | object | Conditionnel | Objet de quantités de ressources. Requis quand service="resource_bundle". Peut aussi être utilisé pour les services "energy" et "bandwidth". |
| params.amounts.energy | integer | Conditionnel | Quantité d'énergie à acheter. Requis dans amounts pour "resource_bundle". |
| params.amounts.bandwidth | integer | Conditionnel | Quantité de bande passante à acheter. Requis dans amounts pour "resource_bundle". |
| params.duration | integer | Oui | Durée en heures. Actuellement, seule 1 heure est prise en charge pour l'énergie, le bandwidth et le resource_bundle. |
| params.activate_address | boolean | Non | Activer 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.amounts → params.amount → params.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
| Champ | Type | Description |
|---|---|---|
| code | integer | Code de réponse (0 = succès) |
| request_id | string | Identifiant unique de la requête |
| result | object | Données de réponse |
| result.id | string | ID interne de la transaction |
| result.external_id | string|null | ID externe de la transaction (si fourni) |
| result.service | string | Type de service : "energy", "bandwidth", "resource_bundle" ou "activate_address" |
| result.params | object | Paramètres originaux de la requête |
| result.params.activate_address | boolean | Si l'activation d'adresse a été demandée |
| result.status | string | Statut de la transaction (voir la liste des statuts) |
| result.amount | float | Montant de la transaction |
| result.created_at | string | Horodatage de création (format ISO 8601) |
| result.hash | string | Hash 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'Erreur | Key | Description |
|---|---|---|
| 1 | auth | Erreur d'authentification (token ou signature incorrecte) |
| 2 | invalid_service_or_params | Service ou paramètres invalides |
| 5 | wallet_not_found | Portefeuille non trouvé |
| 6 | insufficient_funds | Fonds insuffisants |
| 10 | invalid_tron_address | Adresse TRON invalide |
| 11 | invalid_energy_amount | Quantité d'énergie invalide |
| 12 | invalid_duration | Durée invalide |
| 50 | invalid_bandwidth_amount | Quantité de bande passante invalide |
| 24 | address_not_activated | Adresse non activée |
| 25 | address_already_activated | Adresse déjà activée |
| 35 | service_unavailable | Service non disponible |
| 500 | internal_server_error | Erreur interne du serveur |
