Saltar al contenido principal

Pedidos

Rutas​

MétodoRutaPermisoDesde
GET/ordersGestión o tienda1.3.0
POST/ordersSesión iniciada1.10.0
GET/orders/{id}/statusDueño del pedido o gestión1.10.0
PUT, PATCH/orders/{id}Dueño del pedido o gestión1.10.0
DELETE/orders/{id}Gestión o tienda1.11.0
POST/orders/{id}/minutesGestión o tienda1.11.0
GET/orders/reportsGestión o tienda1.11.0
GET/order-statusesSesión iniciada1.11.0

No existe GET /orders/{id} en notiwoo/v1. Para leer un pedido completo, usa la API de WooCommerce (/wp-json/wc/v3/orders/{id}). Para consultar solo su estado, usa /orders/{id}/status.

Listar pedidos​

GET /orders

ParámetroPor defectoNotas
page, per_page1, 20Máximo 100 por página.
search—Un número de menos de 10 cifras busca por ID exacto. Cualquier otro texto busca en nombre, ciudad, dirección, código postal, teléfono y modalidad.
statusprocessing,acceptingUno o varios estados separados por comas.
orderbydatedate, id o delivery_time.
orderdescasc o desc.

Los usuarios multistore_user solo ven los pedidos de su tienda.

Cada pedido tiene la estructura de WooCommerce, con estos añadidos:

CampoContenido
total, subtotal, discount_totalTexto con formato de moneda, por ejemplo "$ 25.000".
line_items[]Artículos con precios formateados y los extras elegidos.
fee_lines[]Cargos y envíos: {name, total, total_without_tax, tax}.
order_type_slug, order_typeModalidad (delivery, pickup) y su nombre.
status_niceEstado en el idioma del sitio.
billing_formatted, shipping_formattedDirecciones en HTML.
date_to_deliver, time_to_deliverDía y hora pedidos por el cliente.
printedSi el pedido ya se imprimió.
service_modedine_in (en mesa), takeaway (para llevar) o vacío.
table{id, label, zone, released_at} si el pedido es en mesa.

meta incluye la paginación y statuses, el mapa completo de estados de la tienda.

Crear un pedido​

POST /orders crea un pedido en nombre del usuario autenticado. El servidor recalcula todo: precios, extras, tarifa de domicilio, horario y mínimo. Los precios, totales, distancias o gastos de envío que envíe el cliente se ignoran.

CampoObligatorioNotas
line_items[]Síproduct_id, variation_id, quantity, extra_selections[{category_id, extra_ids[]}] y additional_comments.
payment_methodSíDebe ser un método sin pago en línea activo en la tienda (cod, bacs o cheque). Los pagos con pasarela se hacen en el checkout de la tienda.
order_typeRecomendadodelivery o pickup.
fulfillment_dateSegún ajustesAAAA-MM-DD.
fulfillment_timeSegún ajustesHH:MM, now o asap.
billing, shippingNoDirecciones con las claves de WooCommerce. Para comprobar la cobertura se usa shipping, luego billing y luego address.
addressNoDirección en texto libre.
doorbellNoApartamento, timbre, indicaciones.
curl -X POST https://tienda.example.test/wp-json/notiwoo/v1/orders \
-H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
-d '{
"order_type": "delivery",
"payment_method": "cod",
"fulfillment_time": "asap",
"shipping": { "address_1": "Calle 10 # 20-30", "city": "Bogotá", "country": "CO" },
"line_items": [
{ "product_id": 120, "quantity": 2,
"extra_selections": [ { "category_id": 18, "extra_ids": [91] } ],
"additional_comments": "Sin cebolla" }
]
}'
{
"success": true,
"data": { "id": 1234, "status": "processing", "message": "Your Order has been accepted", "minutes": "30", "total": "33000.00" }
}

Antes de crear el pedido, valida el carrito con POST /cart/validate para mostrar los errores al cliente.

ErrorHTTPCausa
notiwoo_cutover_pending409Modo coexistencia.
notiwoo_empty_cart422No hay artículos.
notiwoo_payment_method_required422Falta payment_method.
notiwoo_payment_requires_checkout422El método exige pasarela en línea.
notiwoo_payment_method_unavailable422El método no está activo.
notiwoo_transaction_id_required422Falta el ID de la transacción de un pago confirmado.
notiwoo_cart_invalid422La validación falló; el detalle está en details.validation.
notiwoo_product_changed409Un producto cambió durante la creación. Valida de nuevo.
notiwoo_order_create_failed500WooCommerce no pudo crear el pedido.

Consultar el estado​

GET /orders/{id}/status responde { id, status, message, minutes }. minutes es el tiempo estimado. Úsalo para que el cliente consulte periódicamente el estado de su pedido.

Errores: 404 notiwoo_order_not_found, 403 notiwoo_order_forbidden (el pedido es de otro usuario).

Actualizar un pedido​

PUT /orders/{id}

CampoCliente (dueño)Gestión
statusSolo cancelled, y solo si el pedido no está cancelado, completado ni reembolsado.Cualquier estado.
minutes—Tiempo estimado.
printed—Marca de impresión.
deliveryboy—ID del repartidor.
transaction_id—ID de transacción.

Responde { id, status, message, updated }. Si el cliente envía un cambio no permitido, se ignora y updated vale false.

Para seguir el flujo de estados de la app, consulta estados del pedido.

Cambiar el tiempo estimado​

POST /orders/{id}/minutes con minutes (obligatorio) y notify (por defecto true). Con notify, el cliente recibe un correo con el nuevo tiempo. Responde { id, minutes, message }.

Borrar un pedido​

DELETE /orders/{id} elimina el pedido de forma definitiva, sin pasar por la papelera. Para anular una venta, cambia el estado a cancelled.

Reporte de ventas​

GET /orders/reports cuenta los pedidos completados en un rango:

ParámetroObligatorioNotas
date_from, date_toSíFechas; se admite / como separador.
deliveryboyNoID del repartidor o all.
payment_methodNoID del método o all.

Responde { date_from, date_to, delivery_name, count, total, total_html }. Si las fechas no son válidas, responde 422 notiwoo_invalid_dates.

Estados disponibles​

GET /order-statuses responde { all, custom }:

  • all: todos los estados de la tienda.
  • custom: los estados añadidos por Notiwoo y otros plugins (wc-accepted, wc-shipped, wc-finalized…).

Consulta Integración con WooCommerce.