Guía de Integración para Empresas
Para obtener sus credenciales de acceso (API_KEY y SIGNATURE_SECRET), contacte a Transagro.
Las credenciales son confidenciales y solo deben ser compartidas con personal autorizado de su empresa.
Método: GET
Endpoint: /conagro/sellout-data
Timestamp: 1757500443000
Body: {}
Payload para la firma:
GET/conagro/sellout-data1757500443000{}
Firma generada (HMAC-SHA256, hexadecimal):
6e2e359a2568f98041ba0728ddc6c5e3
Headers a enviar:
x-api-key: su-api-key-aqui
x-signature: 6e2e359a2568f98041ba0728ddc6c5e3
x-timestamp: 1757500443000
Content-Type: application/json
https://apiconagro.hilagro.com.pyMETODO+ENDPOINT+TIMESTAMP+BODY
(body={} para GET).x-api-key: SU_API_KEY
x-signature: FIRMA_GENERADA
x-timestamp: TIMESTAMP_UNIX_MS
Content-Type: application/json
Ejemplo de payload para firma:
GET/conagro/sellout-data1757500443000{}
Nota: El timestamp debe estar en milisegundos y sincronizado.
GET /conagro/sellout-data — Datos de VentasGET /conagro/stock-data — Datos de Inventarioimport requests, hmac, hashlib, time
api_key = "SU_API_KEY"
secret = "SU_SECRET_KEY"
url = "https://apiconagro.hilagro.com.py/conagro/sellout-data"
timestamp = str(int(time.time() * 1000))
payload = f"GET{url}{timestamp}{{}}"
signature = hmac.new(secret.encode(), payload.encode(), hashlib.sha256).hexdigest()
headers = {
"x-api-key": api_key,
"x-signature": signature,
"x-timestamp": timestamp,
"Content-Type": "application/json"
}
resp = requests.get(url, headers=headers)
print(resp.status_code, resp.json())
const axios = require('axios');
const crypto = require('crypto');
class TransagroApiClient {
constructor(apiKey, secretKey, baseUrl = 'https://apiconagro.hilagro.com.py') {
this.apiKey = apiKey;
this.secretKey = secretKey;
this.baseUrl = baseUrl;
this.axiosInstance = axios.create({
baseURL: this.baseUrl,
timeout: 30000,
headers: {
'Content-Type': 'application/json'
}
});
}
generateSignature(method, url, timestamp, body = '') {
const payload = `${method}${url}${timestamp}${body}`;
return crypto
.createHmac('sha256', this.secretKey)
.update(payload)
.digest('hex');
}
async makeRequest(endpoint) {
const timestamp = Date.now().toString();
const fullUrl = `${this.baseUrl}${endpoint}`;
const signature = this.generateSignature('GET', fullUrl, timestamp);
try {
const response = await this.axiosInstance.get(endpoint, {
headers: {
'x-api-key': this.apiKey,
'x-signature': signature,
'x-timestamp': timestamp
}
});
return response.data;
} catch (error) {
if (error.response) {
throw new Error(`Error en la solicitud: ${error.response.status} - ${error.response.statusText}`);
}
throw error;
}
}
async getSelloutData() {
return this.makeRequest('/conagro/sellout-data');
}
async getStockData() {
return this.makeRequest('/conagro/stock-data');
}
}
// Ejemplo de uso
async function example() {
const client = new TransagroApiClient('su-api-key', 'su-secret-key');
try {
const data = await client.getSelloutData();
console.log(`Datos obtenidos: ${data.length} registros`);
} catch (error) {
console.error('Error:', error.message);
}
}
example();
| Código | Descripción |
|---|---|
| 200 | Solicitud exitosa |
| 400 | Solicitud incorrecta |
| 401 | No autorizado (API key inválida) |
| 403 | Prohibido (firma/timestamp inválido) |
| 404 | Endpoint no encontrado |
| 429 | Demasiadas solicitudes |
| 500 | Error interno del servidor |
© 2025 Transagro - API. Todos los derechos reservados.