Criar Transação
Cria uma nova transação para compra de energia ou bandwidth, pacote de recursos ou ativação de endereço.
Um pacote de recursos permite que você compre energia e bandwidth em uma única requisição à API.
POST /v1/transaction/new
Requisição
Parâmetros da Requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| external_id | string | Não | Identificador externo opcional da transação |
| service | string | Sim | Tipo de serviço: "energy", "bandwidth", "resource_bundle" ou "activate_address" |
| params | object | Sim | Objeto com parâmetros do serviço |
| params.address | string | Sim | Endereço da carteira TRON (34 caracteres) |
| params.amount* | integer | Condicional | Quantidade de energia ou bandwidth a ser comprada. Obrigatório quando service="energy" ou "bandwidth" e params.amounts não é fornecido. |
| params.energy_amount* | integer | Não | Obsoleto. Use params.amount ou params.amounts.energy. |
| params.amounts* | object | Condicional | Objeto de quantidades de recursos. Obrigatório quando service="resource_bundle". Também pode ser usado para os serviços "energy" e "bandwidth". |
| params.amounts.energy | integer | Condicional | Quantidade de energia a ser comprada. Obrigatório dentro de amounts para "resource_bundle". |
| params.amounts.bandwidth | integer | Condicional | Quantidade de bandwidth a ser comprada. Obrigatório dentro de amounts para "resource_bundle". |
| params.duration | integer | Sim | Duração em horas. Atualmente apenas 1 hora é suportada para energia, bandwidth e resource_bundle. |
| params.activate_address | boolean | Não | Se o endereço deve ser ativado. Opcional para os serviços de energia, bandwidth e resource_bundle. |
* Recomendamos usar o objeto amounts como a abordagem mais universal. A API resolve a quantidade de recursos na seguinte ordem: params.amounts → params.amount → params.energy_amount.
bash
#!/bin/bash
API_TOKEN="seu_token_api"
API_SECRET="seu_segredo_api"
REQUEST_BODY='{
"external_id": "meu-id-externo-123",
"service": "energy",
"params": {
"address": "ENDERECO_TRX",
"amounts": {
"energy": 65000
},
"duration": 1
}
}'
# Calcula a assinatura
SIGNATURE=$(echo -n "${REQUEST_BODY}${API_SECRET}" | sha256sum | cut -d' ' -f1)
# Faz a requisição à 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 = 'seu_token_api';
const apiSecret = 'seu_segredo_api';
const requestBody = JSON.stringify({
external_id: 'meu-id-externo-123',
service: 'energy',
params: {
address: 'ENDERECO_TRX',
amounts: {
energy: 65000
},
duration: 1
}
});
// Calcula a assinatura
const signature = crypto
.createHash('sha256')
.update(requestBody + apiSecret)
.digest('hex');
// Faz a requisição à 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 = 'seu_token_api';
$apiSecret = 'seu_segredo_api';
$requestBody = json_encode([
'external_id' => 'meu-id-externo-123',
'service' => 'energy',
'params' => [
'address' => 'ENDERECO_TRX',
'amounts' => [
'energy' => 65000
],
'duration' => 1
]
]);
// Calcula a assinatura
$signature = hash('sha256', $requestBody . $apiSecret);
// Faz a requisição à 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 = 'seu_token_api'
api_secret = 'seu_segredo_api'
request_body = json.dumps({
'external_id': 'meu-id-externo-123',
'service': 'energy',
'params': {
'address': 'ENDERECO_TRX',
'amounts': {
'energy': 65000
},
'duration': 1
}
})
# Calcula a assinatura
signature = hashlib.sha256((request_body + api_secret).encode()).hexdigest()
# Faz a requisição à 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())Exemplo de Requisição para Pacote de Recursos
bash
#!/bin/bash
API_TOKEN="seu_token_api"
API_SECRET="seu_segredo_api"
REQUEST_BODY='{
"external_id": "meu-id-externo-123",
"service": "resource_bundle",
"params": {
"address": "ENDERECO_TRX",
"amounts": {
"energy": 65000,
"bandwidth": 345
},
"duration": 1,
"activate_address": true
}
}'
# Calcula a assinatura
SIGNATURE=$(echo -n "${REQUEST_BODY}${API_SECRET}" | sha256sum | cut -d' ' -f1)
# Faz a requisição à 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 = 'seu_token_api';
const apiSecret = 'seu_segredo_api';
const requestBody = JSON.stringify({
external_id: 'meu-id-externo-123',
service: 'resource_bundle',
params: {
address: 'ENDERECO_TRX',
amounts: {
energy: 65000,
bandwidth: 5000
},
duration: 1,
activate_address: true
}
});
// Calcula a assinatura
const signature = crypto
.createHash('sha256')
.update(requestBody + apiSecret)
.digest('hex');
// Faz a requisição à 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 = 'seu_token_api';
$apiSecret = 'seu_segredo_api';
$requestBody = json_encode([
'external_id' => 'meu-id-externo-123',
'service' => 'resource_bundle',
'params' => [
'address' => 'ENDERECO_TRX',
'amounts' => [
'energy' => 65000,
'bandwidth' => 5000
],
'duration' => 1,
'activate_address' => true
]
]);
// Calcula a assinatura
$signature = hash('sha256', $requestBody . $apiSecret);
// Faz a requisição à 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 = 'seu_token_api'
api_secret = 'seu_segredo_api'
request_body = json.dumps({
'external_id': 'meu-id-externo-123',
'service': 'resource_bundle',
'params': {
'address': 'ENDERECO_TRX',
'amounts': {
'energy': 65000,
'bandwidth': 5000
},
'duration': 1,
'activate_address': True
}
})
# Calcula a assinatura
signature = hashlib.sha256((request_body + api_secret).encode()).hexdigest()
# Faz a requisição à 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())Exemplo de Requisição para Ativação de Endereço
bash
#!/bin/bash
API_TOKEN="seu_token_api"
API_SECRET="seu_segredo_api"
REQUEST_BODY='{
"external_id": "meu-id-externo-123",
"service": "activate_address",
"params": {
"address": "ENDERECO_TRX"
}
}'
# Calcula a assinatura
SIGNATURE=$(echo -n "${REQUEST_BODY}${API_SECRET}" | sha256sum | cut -d' ' -f1)
# Faz a requisição à 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 = 'seu_token_api';
const apiSecret = 'seu_segredo_api';
const requestBody = JSON.stringify({
external_id: 'meu-id-externo-123',
service: 'activate_address',
params: {
address: 'ENDERECO_TRX'
}
});
// Calcula a assinatura
const signature = crypto
.createHash('sha256')
.update(requestBody + apiSecret)
.digest('hex');
// Faz a requisição à 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));Resposta
A resposta fornece detalhes sobre a transação criada.
Campos da Resposta
| Campo | Tipo | Descrição |
|---|---|---|
| code | integer | Código da resposta (0 = sucesso) |
| request_id | string | Identificador único da requisição |
| result | object | Dados da resposta |
| result.id | string | ID interno da transação |
| result.external_id | string|null | ID externo da transação (se fornecido) |
| result.service | string | Tipo de serviço: "energy", "bandwidth", "resource_bundle" ou "activate_address" |
| result.params | object | Parâmetros originais da requisição |
| result.params.activate_address | boolean | Se a ativação do endereço foi solicitada |
| result.status | string | Status da transação (ver lista de status) |
| result.amount | float | Valor da transação |
| result.created_at | string | Data e hora de criação (formato ISO 8601) |
| result.hash | string | Hash da transação (se concluída) |
Exemplo de Resposta
json
{
"code": 0,
"request_id": "bbf74bcd-fb36-4df8-adc8-25f2bacd087b",
"result": {
"id": "id_da_transacao",
"external_id": "meu-id-externo-123",
"service": "energy",
"params": {
"address": "ENDERECO_TRX",
"amounts": {
"energy": 65000
},
"duration": 1,
"activate_address": false
},
"status": "success",
"amount": 8.25,
"created_at": "2024-03-22T12:00:00Z",
"hash": null
}
}Possíveis Erros
| Código do Erro | Key | Descrição |
|---|---|---|
| 1 | auth | Erro de autenticação (token ou assinatura incorretos) |
| 2 | invalid_service_or_params | Serviço ou parâmetros inválidos |
| 5 | wallet_not_found | Carteira não encontrada |
| 6 | insufficient_funds | Saldo insuficiente |
| 10 | invalid_tron_address | Endereço TRON inválido |
| 11 | invalid_energy_amount | Quantidade de energia inválida |
| 12 | invalid_duration | Duração inválida |
| 50 | invalid_bandwidth_amount | Quantidade de bandwidth inválida |
| 24 | address_not_activated | Endereço não ativado (para serviço energy) |
| 25 | address_already_activated | Endereço já ativado (para serviço activate_address) |
| 35 | service_unavailable | Serviço indisponível |
| 500 | internal_server_error | Erro interno do servidor |
