Guía de la API del Proveedor: Procesamiento de Pedidos Manuales
Guía completa sobre cómo utilizar la API de Proveedor para obtener pedidos manuales, enviar cuentas y marcar pedidos como completados. Incluye ejemplos de código y mejores prácticas.
Sarah JohnsonRequisitos previos
Antes de comenzar, asegúrate de tener:
- Una cuenta de proveedor con acceso a la API
- Tu clave de API (puedes generarla desde tu panel de proveedor)
- Acceso a los endpoints de la API de Administración v2
Paso 1: Obtén tu clave de API
- Inicia sesión en tu panel de proveedor
- Ve a Configuración de API (
/api-settings) - Haz clic en "Generar clave de API" si no tienes una
- Copia tu clave de API y guárdala de forma segura
Importante: Tu clave de API debe mantenerse en secreto. Nunca la compartas públicamente ni la subas a un sistema de control de versiones.
Paso 2: Obtén pedidos manuales
Usa el endpoint GET /api/admin/v2/orders para obtener pedidos manuales pendientes y en proceso.
Solicitud de API
curl -X GET "https://tu-dominio.com/api/admin/v2/orders?status=pending,processing&productType=manual&limit=50&offset=0" \
-H "X-Api-Key: TU_CLAVE_API"
Parámetros de la solicitud
status(opcional): Filtro por estado del pedido. Admite valores separados por comas:pending,processingproductType(obligatorio para pedidos manuales): Establecer comomanualentityType(opcional): Filtrar porproductosmm_servicesubCategory(opcional): Filtrar por nombre de subcategoríalimit(opcional): Número de pedidos a devolver (máx. 500, por defecto 50)offset(opcional): Desplazamiento de paginación (por defecto 0)
Ejemplo de respuesta
{
"orders": [
{
"id": 12345,
"order": 12345,
"status": "pending",
"paymentStatus": "completed",
"quantity": 10,
"user": {
"id": "507f1f77bcf86cd799439011",
"email": "cliente@ejemplo.com",
"name": "Juan Pérez"
},
"items": [
{
"product": {
"id": "507f1f77bcf86cd799439012",
"name": "Seguidores de Instagram",
"type": "product"
},
"quantity": 10,
"unitPrice": 5.00,
"totalPrice": 50.00
}
],
"createdAt": "2024-01-01T10:00:00.000Z"
}
],
"count": 1,
"total": 1
}
Notas importantes
- Solo se devuelven pedidos con
paymentStatus: "completed" - Los pedidos se filtran para evitar procesamiento duplicado (intervalo de 30 minutos)
- Solo puedes ver pedidos de productos/servicios que te pertenezcan como proveedor
Paso 3: Procesa pedidos y envía cuentas
Una vez que tengas los pedidos, procésalos y prepara las credenciales de las cuentas. Luego usa el endpoint POST /api/admin/v2/orders-update para enviar cuentas y actualizar el estado del pedido.
Solicitud de API
curl -X POST "https://tu-dominio.com/api/admin/v2/orders-update" \
-H "X-Api-Key: TU_CLAVE_API" \
-H "Content-Type: application/json" \
-d '{
"order": 12345,
"status": "completed",
"accounts": [
"usuario1:contraseña1",
"usuario2:contraseña2",
"usuario3:contraseña3"
],
"supplierOrderId": "SUP-PEDIDO-12345"
}'
Parámetros del cuerpo de la solicitud
order(obligatorio): El ID del pedido (número)status(opcional): Nuevo estado del pedido. Valores válidos:pending,processing,completed,partial,cancelled,erroraccounts(opcional, para pedidos de productos): Array de credenciales de cuentas en formato"usuario:contraseña"o"email:contraseña"supplierOrderId(opcional): Tu ID interno del pedido para seguimiento
Formato de las cuentas
Para pedidos de productos, las cuentas deben proporcionarse como un array de cadenas. Cada cadena representa una cuenta:
- Formato:
"usuario:contraseña"o"email:contraseña" - Ejemplo:
["user1:pass123", "user2:pass456"] - Cantidad: Proporciona cuentas que coincidan con la cantidad del pedido
Ejemplo de flujo de trabajo completo
Aquí tienes un ejemplo completo usando JavaScript/Node.js:
const axios = require('axios');
const API_BASE_URL = 'https://tu-dominio.com/api/admin/v2';
const API_KEY = 'TU_CLAVE_API';
// Paso 1: Obtener pedidos manuales pendientes y en proceso
async function getOrders() {
try {
const response = await axios.get(`${API_BASE_URL}/orders`, {
params: {
status: 'pending,processing',
productType: 'manual',
limit: 50,
offset: 0
},
headers: {
'X-Api-Key': API_KEY
}
});
return response.data.orders;
} catch (error) {
console.error('Error al obtener pedidos:', error.response?.data || error.message);
throw error;
}
}
// Paso 2: Procesar pedido y enviar cuentas
async function updateOrder(orderId, accounts, supplierOrderId) {
try {
const response = await axios.post(
`${API_BASE_URL}/orders-update`,
{
order: orderId,
status: 'completed',
accounts: accounts,
supplierOrderId: supplierOrderId
},
{
headers: {
'X-Api-Key': API_KEY,
'Content-Type': 'application/json'
}
}
);
return response.data;
} catch (error) {
console.error('Error al actualizar pedido:', error.response?.data || error.message);
throw error;
}
}
// Flujo de trabajo principal
async function processOrders() {
try {
// Obtener pedidos
const orders = await getOrders();
console.log(`Se encontraron ${orders.length} pedidos para procesar`);
// Procesar cada pedido
for (const order of orders) {
console.log(`Procesando pedido ${order.id}...`);
// Preparar cuentas (aquí es donde obtendrías los datos de tu sistema)
const accounts = [
'user1:pass1',
'user2:pass2',
// ... más cuentas que coincidan con order.quantity
];
// Actualizar pedido con cuentas y marcar como completado
const updatedOrder = await updateOrder(
order.id,
accounts,
`SUP-${order.id}`
);
console.log(`Pedido ${order.id} completado exitosamente`);
}
} catch (error) {
console.error('Error en el flujo de trabajo:', error);
}
}
// Ejecutar el flujo de trabajo
processOrders();
Manejo de errores
Errores comunes
- Clave de API inválida
{ "error": "INVALID_API_KEY", "message": "Clave de API inválida" }Solución: Verifica que tu clave de API sea correcta y esté activa.
- Pedido no encontrado
{ "error": "ORDER_NOT_FOUND", "message": "Pedido no encontrado" }Solución: Verifica que el ID del pedido exista y te pertenezca.
- Acceso denegado
{ "error": "ACCESS_DENIED", "message": "No tienes acceso a este pedido" }Solución: Asegúrate de que el pedido contenga productos/servicios que te pertenezcan.
- Cuentas inválidas
{ "error": "INVALID_ACCOUNTS", "message": "No se proporcionaron cuentas válidas después de la deduplicación" }Solución: Asegúrate de que el array de cuentas no esté vacío y contenga cadenas válidas.
Mejores prácticas
- Frecuencia de consulta: No consultes con demasiada frecuencia. La API evita el procesamiento duplicado con un intervalo de 30 minutos.
- Manejo de errores: Implementa siempre un manejo de errores adecuado y lógica de reintento.
- Validación de cuentas: Valida las cuentas antes de enviarlas para asegurarte de que estén en el formato correcto.
- Seguimiento de pedidos: Usa
supplierOrderIdpara rastrear pedidos en tu sistema. - Actualizaciones de estado: Puedes actualizar el estado de forma incremental:
- Primero, establece como
processingcuando empieces a trabajar en él - Luego, establece como
completedcuando las cuentas estén listas
- Primero, establece como
- Pedidos parciales: Si solo puedes cumplir parte de un pedido, establece el estado como
partialy envía las cuentas disponibles.
Resumen
El flujo de trabajo completo es:
- Obtener pedidos:
GET /api/admin/v2/orders?status=pending,processing&productType=manual - Procesar pedidos: Preparar cuentas para cada pedido
- Enviar cuentas:
POST /api/admin/v2/orders-updatecon cuentas ystatus: "completed"
¡Este sencillo proceso de tres pasos te permite automatizar completamente tu flujo de trabajo de cumplimiento de pedidos!
Ambos son guías de documentación esenciales para proveedores. Vincularlos ayuda a los proveedores a navegar desde la configuración de productos hasta el procesamiento de pedidos, creando un



