Saltar al contenido principal

Integración con WooCommerce

Además de notiwoo/v1, el plugin amplía las APIs de WooCommerce. Esta página resume lo que necesitas para integrarte.

Estados de pedido propios​

EstadoESENUso
wc-acceptedAceptadoAcceptedPedido aceptado por la tienda. Todavía no es una venta.
wc-shippedEnviadoShippedPedido en camino. Solo en este estado se muestra el enlace de seguimiento.
wc-finalizedFinalizadoFinalizedEntrega o recogida confirmada y cobro verificado. WooCommerce lo cuenta como pagado y lo incluye en sus reportes.
wc-acceptingAceptandoAcceptingFlujo heredado de WooFood.

Flujos:

  • Domicilio: on-hold → accepted → processing → shipped → completed → finalized
  • Recogida y mesa: igual, sin shipped.

El plugin no mueve los pedidos por estos estados: lo hace la app NOTIWOO, con PUT /wc/v3/orders/{id} o PUT /notiwoo/v1/orders/{id}. Consulta Estados y pagos.

Al entrar en accepted, shipped y finalized, el cliente recibe los correos correspondientes, que se configuran en WooCommerce → Ajustes → Correos. Ver Correos.

Webhooks​

Notiwoo no crea webhooks propios. Usa los webhooks estándar de WooCommerce (WooCommerce → Ajustes → Avanzado → Webhooks) y añade estos datos al contenido de los webhooks de pedidos:

CampoContenido
service_modedine_in (en mesa), takeaway (para llevar) o vacío.
table{ id, label, zone, released_at } en pedidos en mesa.
loyalty{ points_earned, points_redeemed, coupon }.
meta_data[] → _notiwoo_whatsapp_opt_inConsentimiento de WhatsApp, como booleano.

Verifica la firma de cada webhook con el secreto configurado en WooCommerce (cabecera X-WC-Webhook-Signature).

Metadatos del pedido​

Se leen en meta_data de wc/v3/orders:

ClaveContenido
_notiwoo_fulfillment_typeModalidad: delivery o pickup.
_notiwoo_fulfillment_date, _notiwoo_fulfillment_timeDía (AAAA-MM-DD) y hora (HH:MM, now o asap).
_notiwoo_delivery_coordinates{ latitude, longitude } confirmados por el cliente en el mapa. No se usan para calcular la tarifa.
_notiwoo_service_mode, _notiwoo_table_id, _notiwoo_table_label, _notiwoo_table_zone, _notiwoo_table_released_atServicio en mesa.
_notiwoo_whatsapp_opt_in, _notiwoo_whatsapp_consent_atConsentimiento de WhatsApp.
_notiwoo_loyalty_points_earned, _notiwoo_loyalty_points_redeemed, _notiwoo_loyalty_couponFidelización.
_notiwoo_tracking_urlEnlace de seguimiento. Lo escribe la app.

En los artículos del pedido, _notiwoo_extras_snapshot guarda los extras elegidos con su precio en el momento de la compra. El cargo de domicilio se identifica con _notiwoo_delivery_fee = yes, no por su nombre, así que funciona en cualquier idioma.

Por compatibilidad, el plugin también escribe las claves heredadas woofood_order_type, date_to_deliver, time_to_deliver, minutes_to_arrive y printed.

Checkout de bloques (Store API)​

Punto de extensiónDatos
Checkout → extensions.notiwooorder_type, fulfillment_date, fulfillment_time, service_mode, table_id
Checkout → extensions.notiwoo-deliverylatitude, longitude, confirmed
Carrito → extensions.notiwoo-loyaltyenabled, preview, balance (solo lectura)
POST /wc/store/v1/cart/add-itemextra_selections, extra_ids, additional_comments en los datos del artículo
Campos adicionales del checkoutnotiwoo/whatsapp-opt-in, notiwoo/referral, notiwoo/latitude, notiwoo/longitude, notiwoo/location-confirmed

URLs de la tienda​

URLUso
https://tienda.example.test/?notiwoo_table=<token>Entrada desde el QR de una mesa.
https://tienda.example.test/?nw_ref=<código>Enlace de referido.
<página Mi cuenta>/mis-puntos/«Mis puntos» en Mi cuenta.
Shortcode [notiwoo_catalog style="tabs" category="hamburguesas"]Catálogo con menú de categorías. Ver Menú de catálogo.

Servicios externos​

ServicioUsoClave
Google Routes APIDistancia de domicilio, calculada en el servidor.Clave de servidor, restringida por IP.
Google Maps JavaScript APIMapa del checkout.Clave de navegador, restringida por dominio.
WhatsApp de NotiwooAvisos al cliente.La configura Notiwoo; ver WhatsApp.

Las notificaciones por SMS (BulkGate) y push (FCM) del sistema anterior siguen en el código, pero no se documentan. Las push usan una API de Google retirada en 2024 y no funcionan.