El cajón del carrito muestra el regalo o el paquete al precio completo
Si el cajón del carrito muestra un regalo o un artículo incluido en un paquete al precio completo, mientras el total del carrito y el checkout son correctos, comprueba cómo el cajón lee y actualiza sus precios. Los campos de precio Liquid antiguos pueden omitir los descuentos automáticos y el cajón también puede conservar una instantánea obsoleta del carrito. Este artículo explica cómo distinguir esos casos.
Comprobación rápida: ¿el total es correcto?
Antes de cambiar nada, confirma dónde aparece realmente el precio incorrecto:
- Si el precio por línea del cajón parece incorrecto, es decir, muestra el precio completo de un regalo o artículo con descuento, pero el subtotal del carrito en la parte inferior del cajón y el total del checkout son correctos, se trata de un problema únicamente de visualización. Sigue leyendo.
- Si el total del checkout es incorrecto, se trata de otro problema, por ejemplo, otra aplicación de descuentos que se acumula o un descuento que no coincide. Este artículo no cubre ese caso.
Bundlex no renderiza el cajón de tu carrito. El descuento lo aplica una función de descuento del carrito de Shopify que se ejecuta durante el checkout, y Bundlex no puede reescribir la visualización del precio por línea del tema.
Por qué el cajón muestra el precio completo
Bundlex aplica su descuento mediante una función de descuento del carrito de Shopify. Esa función asigna el descuento a las líneas del carrito, que Shopify considera una forma de descuento automático.
El problema está en cómo algunos temas muestran cada línea del carrito. Los cajones de carrito antiguos o personalizados muestran el precio de la línea mediante los campos Liquid line_item.price y line_item.line_price. La propia documentación de Shopify marca estos campos como obsoletos porque no reflejan los descuentos automáticos. Por eso, el cajón muestra el precio original sin descuento, aunque Shopify haya registrado correctamente el descuento en esa línea.
El resultado que ven los clientes: cada línea del paquete muestra el mismo precio unitario completo y una línea gratuita, es decir, un regalo, puede parecer cobrada. Mientras tanto, el subtotal y el checkout son correctos porque se calculan a partir de los valores con descuento.
Confírmalo con /cart.js
Puedes demostrar que el descuento se aplica correctamente, independientemente de lo que muestre el cajón:
- En la tienda online, añade el paquete, o la oferta con el regalo gratuito, al carrito.
- En el navegador, abre
/cart.jsen esa misma tienda, por ejemplo, visitahttps://yourstore.com/cart.js. - Busca la línea afectada y revisa
final_priceyfinal_line_price.
En una línea de regalo gratuito que funcione, verás algo parecido a final_price: 0 y final_line_price: 0, con el descuento indicado en discounts de esa línea, es decir, el título de la oferta y el importe descontado. Comprueba qué campos muestra realmente tu cajón. La obsolescencia descrita anteriormente se aplica a line_item.price y line_item.line_price de Liquid; una respuesta de /cart.js por sí sola no identifica el origen de los datos del cajón.
Interpretación del resultado:
final_price/final_line_pricereflejan el descuento, pero el cajón muestra el precio completo. Comprueba tanto los campos que muestra el cajón como si se actualiza después de cambiar el carrito.final_priceno refleja el descuento. En ese caso, el problema no está en la visualización del cajón. Revisa el funcionamiento de la función del carrito, por ejemplo, si el paquete se etiquetó correctamente, si el metacampo del descuento está actualizado o si se aplican requisitos de elegibilidad del cliente, como B2B o las etiquetas de cliente.
La solución: usar final_price y final_line_price
Si el fragmento Liquid del cajón del carrito usa estos campos obsoletos para el precio actual, sustitúyelos por sus equivalentes final_:
line_item.pricese convierte enline_item.final_priceline_item.line_pricese convierte enline_item.final_line_price
Los campos final_ incluyen descuentos por línea. Si tu cajón usa JavaScript, comprueba también que muestre una respuesta nueva del carrito o secciones del tema actualizadas después de los cambios. Reemplazar un campo de precio no corrige una instantánea obsoleta.
Como el valor de
pricepor línea es un atributo Liquid estático, Bundlex no puede reescribirlo por ti. Los datos del descuento ya están presentes enfinal_price; el tema solo tiene que leerlos.
Si usas un precio de comparación nativo
Si tus variantes también tienen un compare_at_price de Shopify, como "50% de descuento" tachado, el tema muestra esa insignia a partir de los datos de la variante y no está relacionada con el descuento de Bundlex. Después de cambiar a los campos final_, el precio de la línea reflejará el descuento de Bundlex, mientras que el precio de comparación tachado seguirá mostrándose según la configuración del tema.
El otro caso: una línea de regalo sobrante a $0
Un síntoma relacionado, pero independiente: un cliente elige una oferta que incluye un regalo gratuito y luego reduce la cantidad del artículo principal por debajo del umbral de la oferta. La línea principal baja correctamente a un nivel inferior, pero una línea de regalo gratuito permanece en el carrito mostrando $0.
Esta es la razón. Cuando la cantidad cae por debajo del umbral, la función del carrito deja de aplicar correctamente el descuento y elimina la asignación. Sin embargo, una función del carrito de Shopify no puede eliminar una línea del carrito porque no tiene disponible ninguna operación de eliminación. Si el regalo gratuito está configurado como una variante del catálogo de $0, no hay ningún precio al que "volver", por lo que la línea de regalo que ya no cumple los requisitos simplemente permanece a $0.
Para gestionar esto, Bundlex incluye una limpieza del lado del widget que se ejecuta después de un cambio en el carrito y elimina la línea de regalo huérfana. Hay condiciones sobre cuándo puede ejecutarse:
- Solo regalos gratuitos. Los extras de pago se gestionan mediante la integridad del paquete, no mediante esta limpieza.
- Rutas de cambio del carrito compatibles. Mientras haya un widget completo de Bundlex activo, la limpieza gestiona los cambios del carrito mediante fetch y XHR. En las páginas que ejecutan únicamente el script de limpieza de regalos sin un widget, la interceptación cubre solo los cambios mediante fetch. El comportamiento de actualización del tema aún puede afectar lo que muestra el cajón.
- Se intenta realizar la limpieza, pero no se garantiza que se complete. Si un paso falla, la línea de regalo puede seguir visible hasta la siguiente interacción con el carrito.
Después de eliminar una línea, Bundlex envía eventos de actualización del carrito para solicitar que el tema vuelva a renderizarse. En Dawn y en los temas gratuitos de Shopify basados en él, Bundlex también vuelve a renderizar el cajón del carrito, la página del carrito y el contador del icono del carrito. No existe un único evento de actualización del carrito que implementen todos los temas de Shopify, por lo que, en otros temas que no escuchen estos eventos, el cajón puede permanecer desactualizado hasta la siguiente interacción. El punto más importante: los cálculos del carrito siempre son correctos. Al cliente no se le cobra por la línea de $0 que permanece visible y el total del pago es exacto, independientemente de lo que el cajón muestre momentáneamente.
Resumen
- El cajón muestra el precio completo, pero el total y el pago son correctos: comprueba si hay campos de precio Liquid obsoletos o datos del carrito desactualizados.
- Verifica con
/cart.js:final_price/final_line_pricereflejan el descuento. - Corrígelo en el tema: cambia esos campos a
final_priceyfinal_line_price. - Es normal que quede una línea de regalo de $0 después de reducir la cantidad, ya que Shopify no puede eliminar líneas. Bundlex la limpia en los temas compatibles y el precio siempre es correcto al pagar.
¿Te resultó útil este artículo?
Tus comentarios nos ayudan a mejorar nuestra documentación.