Saltar al contenido principal

Introducción

🎯 ¿Qué hace este módulo?

El módulo de Orders te permite crear, gestionar y rastrear pedidos de clientes - desde el proceso de pago del carrito de compras hasta el procesamiento de pagos y la entrega de pedidos - manejando el ciclo de vida completo de los pedidos de comercio electrónico.

Piénsalo como tu sistema de gestión de pedidos - los clientes añaden artículos al carrito, realizan pedidos, hacen pagos y tú rastreas todo desde la creación del pedido hasta la entrega, todo dentro de OneEntry.


📖 Explicación Simple

Cada aplicación de comercio electrónico necesita gestión de pedidos:

  • 🛒 Carrito de Compras - Los usuarios añaden productos, proceden al pago
  • 📋 Creación de Pedidos - Convierte el carrito en un pedido con los detalles del cliente
  • 💳 Procesamiento de Pagos - Aceptar pagos (tarjeta de crédito, PayPal, etc.)
  • 📦 Rastreo de Pedidos - Rastrear el estado (pendiente, en proceso, enviado, entregado)
  • 📊 Gestión de Pedidos - Ver todos los pedidos, filtrar por estado, buscar
  • 🧾 Detalles del Pedido - Ver artículos, totales, información del cliente

Problemas:

  • 🔒 Sin integración de pagos - Seguimiento manual de pagos
  • 📊 Pobre rastreo - Difícil encontrar pedidos, filtrar por estado
  • 🔄 Sin automatización - Actualizaciones de estado manuales, sin notificaciones
  • 💸 Sin cálculo de impuestos/envío - Calcular manualmente

La solución de Orders:

Beneficios:

  • 🔒 Pagos integrados - Stripe, PayPal, otros gateways
  • 📊 Rastreo avanzado - Filtrar, buscar, exportar pedidos
  • 🔄 Flujos de trabajo automatizados - Actualizaciones de estado, notificaciones
  • 💸 Cálculos automáticos - Impuestos, envío, descuentos

✨ Conceptos Clave

¿Qué es un Pedido?

Un Pedido es una transacción de compra del cliente que contiene:

  • Artículos del Pedido - Productos/servicios que se están comprando (cantidad, precio)
  • Información del Cliente - Nombre, correo electrónico, teléfono
  • Dirección de Envío - Ubicación de entrega
  • Dirección de Facturación - Información de facturación del pago
  • Detalles del Pago - Método de pago, ID de transacción
  • Totales del Pedido - Subtotal, impuestos, envío, total
  • Estado del Pedido - Estado actual (pendiente, en proceso, completado)
  • Tiempos - Fechas de creación, actualización, finalización

Estructura del Pedido

Cada pedido tiene esta estructura:

{
id: 179,
storageId: 1,
createdDate: '2025-07-03T00:43:02.908Z',
statusIdentifier: 'inProgress',
formIdentifier: 'orderForm',
formData: [
{
marker: 'order_name',
type: 'string',
value: 'Ivan'
}
],
attributeSetIdentifier: 'order_form',
totalSum: '300.00',
currency: 'USD',
paymentAccountIdentifier: 'cash',
paymentAccountLocalizeInfos: { title: 'Cash' },
products: [
{
id: 2957,
title: 'Cosmo',
sku: null,
previewImage: null,
price: 150,
quantity: 2,
},
],
isCompleted: true,
}

Ciclo de Vida del Pedido

1. El cliente añade artículos al carrito

2. Procede al pago

3. Ingresa información de envío/facturación

4. Selecciona método de pago

5. Pedido creado (estado: pendiente)

6. Pago procesado (estado: en proceso)

7. Pedido confirmado (estado: confirmado)

8. Artículos preparados (estado: en proceso)

9. Pedido enviado (estado: enviado)

10. Pedido entregado (estado: completado)

Ejemplos de Estados del Pedido

EstadoSignificadoCuándo Usar
pendientePedido creado, esperando pagoAcabado de realizar, pago no procesado
en procesoPago recibido, preparando artículosPago confirmado, empaquetando artículos
confirmadoPedido confirmado, listo para enviarPago procesado, pedido verificado
enviadoPedido despachado al clientePaquete enviado por el transportista
entregadoPedido recibido por el clienteEntrega confirmada
completadoPedido finalizado, no se necesita acciónTransacción completa
canceladoPedido canceladoCancelado por el cliente/admin
reembolsadoPago devuelto al clienteReembolso procesado
fallidoPago o procesamiento fallidoPago rechazado

Operaciones Comunes de Pedidos

OperaciónDescripciónEjemplo de Caso de Uso
Crear PedidoConvertir carrito en pedidoBotón de pago clicado
Obtener PedidosListar todos los pedidos (paginados)Panel de administración
Obtener Pedido por IDObtener un pedido específicoVer detalles del pedido
Actualizar EstadoCambiar estado del pedidoMarcar como enviado
Calcular TotalesCalcular impuestos, envío, totalResumen de pago
Cancelar PedidoCancelar pedido pendienteEl cliente solicita cancelación
Reembolsar PedidoDevolver pago al clienteDevolución de producto

¿Por qué usar el módulo de Orders?

BeneficioDescripción
Gestión de Pedidos AutomatizadaSin seguimiento manual, todo automatizado
Integración de PagosStripe, PayPal, otros gateways integrados
Rastreo de EstadoActualizaciones de estado de pedidos en tiempo real
Notificaciones al ClienteEnvío automático de confirmaciones de pedidos, actualizaciones de envío
Gestión de InventarioDeducción automática de stock al realizar un pedido
Analíticas e InformesInformes de ventas, seguimiento de ingresos
SeguridadProcesamiento de pagos conforme a PCI

📋 Lo Que Necesitas Saber

Los Pedidos se Crean a Partir de Datos del Carrito

Necesitas proporcionar:

  1. Información del cliente - Nombre, correo electrónico, teléfono
  2. Artículos del pedido - Productos, cantidades, precios
  3. Dirección de envío - Ubicación de entrega
  4. Método de pago - Cómo pagará el cliente

Gestión del Estado del Pedido

Rastrea el progreso del pedido a través de los estados:

Flujos de estado comunes:

  • Productos digitales: pendiente → en proceso → completado
  • Productos físicos: pendiente → en proceso → enviado → entregado → completado
  • Cancelado: cualquier estado → cancelado
  • Reembolsado: completado → reembolsado

Procesamiento de Pagos

Los pedidos se integran con gateways de pago


💡 Notas Importantes

Los Pedidos se Crean en OneEntry

El módulo de Orders maneja el ciclo de vida completo del pedido:

  • ✅ Crear pedidos a partir de datos del carrito
  • ✅ Procesar pagos
  • ✅ Actualizar estado del pedido
  • ✅ Rastrear envíos
  • ❌ NO maneja la interfaz del carrito de compras (tú lo construyes)

Tu responsabilidad:

  • Construir la interfaz del carrito de compras
  • Recoger información del cliente
  • Mostrar la confirmación del pedido

Procesamiento de Pagos

Los pedidos se integran con gateways de pago:

  • Stripe (recomendado)
  • PayPal
  • Gateways personalizados

Importante:

  • Nunca almacenes detalles de tarjetas de crédito directamente
  • Usa tokenización (Stripe.js, PayPal SDK)
  • OneEntry maneja el procesamiento seguro de pagos

Gestión de Inventario

Los pedidos automáticamente:

  • ✅ Deducen inventario al crear el pedido
  • ✅ Restauran inventario al cancelar
  • ✅ Rastrean niveles de stock

Mejor práctica: Verifica el stock antes de crear el pedido

Seguridad

Los pedidos contienen datos sensibles:

  • Información personal del cliente
  • Detalles de pago
  • Direcciones de envío

Siempre:

  • Usa HTTPS para las páginas de pago
  • Valida los datos antes de crear pedidos
  • Implementa autenticación adecuada
  • Sigue el cumplimiento de PCI DSS para pagos

📊 Tabla de Referencia Rápida

MétodoDescripción
createOrder()Crear un nuevo pedido
getAllOrdersByMarker()Obtener todos los pedidos (paginados)
getOrderByMarker()Obtener un objeto de almacenamiento de pedido específico por marcador.
getAllOrdersStorage()Obtener todos los objetos de almacenamiento de pedidos.
getOrderByMarkerAndId()Obtener un pedido por marcador e id del objeto de almacenamiento de pedidos creado por el usuario.
updateOrderByMarkerAndId()Actualizar un pedido por marcador e id del objeto de almacenamiento de pedidos creado por el usuario.

❓ Preguntas Comunes (FAQ)

¿Cómo creo un pedido con múltiples productos?

Pasa un array de objetos de productos en los datos del pedido. Cada producto debe incluir id, cantidad y precio. La suma total se calcula automáticamente en función de las cantidades y precios de los productos.


¿Puedo actualizar un pedido después de haber sido creado?

Sí, usa updateOrderByMarkerAndId() para modificar detalles del pedido como estado, dirección de envío o datos del pedido. Sin embargo, una vez que el pago ha sido procesado, ten cuidado al modificar los artículos o totales del pedido.


¿Cómo rastreo los cambios en el estado del pedido?

Usa el campo statusIdentifier para rastrear el estado actual del pedido. También puedes configurar webhooks o usar el módulo de Events para recibir notificaciones cuando cambie el estado del pedido.


¿Cuál es la diferencia entre el almacenamiento de pedidos y los pedidos individuales?

El almacenamiento de pedidos es un contenedor que agrupa pedidos relacionados (como pedidos de un formulario específico o canal de ventas). Los pedidos individuales son las transacciones de compra reales dentro de ese almacenamiento. Usa marcadores para identificar y organizar diferentes almacenamientos de pedidos.


¿Cómo manejo las cancelaciones y reembolsos de pedidos?

Actualiza el estado del pedido a 'cancelado' usando updateOrderByMarkerAndId(). Para reembolsos, usa el módulo de Payments para procesar la transacción de reembolso, luego actualiza el estado del pedido a 'reembolsado'.


¿Puedo recuperar el historial de pedidos de un cliente?

Sí, usa getAllOrdersByMarker() con filtros apropiados para obtener todos los pedidos de un cliente específico. Puedes filtrar por ID de usuario, rango de fechas u otros criterios.


🎓 Mejores Prácticas

  • Valida el carrito antes de crear el pedido - Verifica la disponibilidad de stock
  • Calcula los totales en el servidor - Nunca confíes en cálculos del lado del cliente
  • Envía confirmaciones de pedidos - Envía correos electrónicos a los clientes después de realizar un pedido
  • Rastrea el estado del pedido - Actualiza el estado a medida que avanza el pedido
  • Maneja fallos de pago - Lógica de reintento, mensajes de error claros
  • Implementa búsqueda de pedidos - Permite a los clientes encontrar sus pedidos fácilmente
  • Almacena el historial de pedidos - Mantén registros para el servicio al cliente
  • Usa paginación - No cargues todos los pedidos a la vez

Más información sobre la interfaz de usuario del módulo https://doc.oneentry.cloud/docs/category/orders


Definición del módulo de Orders


const { Orders } = defineOneEntry(
"your-project-url", {
"token": "your-app-token"
}
);


🔗 Documentación Relacionada