Compra con precios por zona de país

Los precios por zona de país siguen siendo autoritativos en el servidor después de que un cliente abandona una página de catálogo cacheable. Las páginas clásicas de WooCommerce, los bloques de carrito y de pago, el mini-carrito y las operaciones de carrito de la Store API resuelven el país actual del cliente de WooCommerce antes de calcular los totales comerciales.

Esta guía está dirigida a propietarios de tiendas, equipos de soporte y desarrolladores que necesitan verificar que el precio regional de un producto se mantiene coherente desde el momento de añadir al carrito hasta completar el pedido.

Antes de empezar

  • Configura al menos una zona activada y una zona alternativa activada.
  • Guarda e indexa las filas de precios por país del producto correspondiente.
  • Mantén inactivos WooCommerce Price Based on Country y su complemento Pro.
  • Utiliza un producto compatible de tipo simple, variación, suscripción o variación de suscripción para este flujo de trabajo.
  • Mantén fuera de la caché de páginas compartida las solicitudes de carrito, pago, mi cuenta, Store API, wc-ajax y los fragmentos del mini-carrito.

Añadir desde una página de producto o de catálogo clásica

  1. Visita el producto desde un país asignado a la zona de prueba.
  2. Espera a que termine de cargarse el estado regional del producto.
  3. Añade el producto al carrito.
  4. Abre el carrito y el mini-carrito.
  5. Confirma que el precio unitario, el subtotal de la línea y el total del carrito utilizan el mismo importe regional del producto que se muestra en la página del producto.

El navegador no envía un precio de producto aceptado. WooCommerce vuelve a cargar el producto, resuelve el país actual del cliente y registra la evidencia del precio por país actual en la línea del carrito después de que WooCommerce crea la identidad de la línea.

Si el precio actual no puede resolverse o la evidencia de línea almacenada previamente falla en sus comprobaciones de identidad, importe o revisión, la línea queda no disponible en lugar de conservar un importe obsoleto o parcialmente fiable. El pago permanece bloqueado hasta que se corrigen los datos del producto o se elimina la línea afectada.

El país resuelto del cliente también debe pertenecer a la lista de países de venta efectivos de WooCommerce. Un país que no esté en esa lista no puede comprar ningún producto con precio por país, incluso cuando la zona alternativa puede suministrar un precio. El ajuste de visualización de países no coincidentes decide de forma independiente si ese visitante ve el precio alternativo o ningún precio.

Añadir desde los bloques de carrito o de pago

  1. Añade el mismo producto mediante un bloque de WooCommerce compatible.
  2. Abre el bloque de carrito o el bloque de pago.
  3. Confirma que el precio de la línea y los totales coinciden con el carrito clásico para el mismo país del cliente y los mismos ajustes de impuestos.
  4. Actualiza la página y confirma que el carrito conserva el mismo resultado resuelto.

Las respuestas de la Store API incluyen una extensión de solo lectura pom-country-zone-pricing. Las respuestas de producto, carrito, artículo del carrito y pago identifican la zona resuelta y la revisión del contexto. Las respuestas de producto y artículo del carrito también proporcionan una revisión de precios y el modo regional resuelto. La extensión no tiene devolución de llamada de actualización y no acepta ningún precio calculado por el navegador.

Cambiar de país antes del pago

  1. Añade un producto mientras el cliente utiliza el primer país de prueba.
  2. En el carrito o en el pago, cambia el país de envío a un país de otra zona. Cuando el envío no sea aplicable, cambia el país de facturación.
  3. Espera a que WooCommerce termine de actualizar la revisión del pedido.
  4. Confirma que el aviso Prices and totals were updated for the selected country. aparece cuando cambia la zona resuelta.
  5. Confirma que el precio de la línea, el resultado del cupón, los impuestos normales de WooCommerce, el subtotal y el total utilizan ahora la nueva zona.
  6. Vuelve a cambiar al país original y confirma que el cálculo vuelve al importe regional original.

La dirección de cliente confirmada de WooCommerce tiene prioridad sobre la geolocalización anterior. El recálculo es idempotente: los cálculos repetidos de totales sustituyen la base regional del producto en lugar de volver a añadirla.

Las selecciones actuales de POM Product Add-Ons se reconstruyen en esa zona exacta de la línea del carrito como parte de la misma actualización de país. Los importes fijos y los niveles se trasladan a la nueva zona, los importes porcentuales utilizan la nueva base regional del producto o componente, y un precio personalizado introducido por el cliente se vuelve a comprobar con respecto al mínimo y al máximo de la nueva zona. Las filas transitorias oficiales de WooCommerce Product Add-Ons también se resuelven desde la zona exacta, pero solo mientras su identidad de campo estable y la coincidencia de opciones sigan siendo inequívocas. Una selección que ya no satisface esas reglas regionales actuales bloquea el pago y pide al cliente que revise el carrito; las renovaciones históricas de suscripción conservan en su lugar su instantánea almacenada.

Si el producto o la variación seleccionada está Unavailable in this zone, el carrito y la Store API exponen un error de producto no disponible y el pago no puede completarse hasta que se elimine la línea o cambie el país.

El mismo comportamiento de bloqueo ante fallos se aplica cuando el país seleccionado no es uno de los países de venta permitidos por WooCommerce. Una línea de carrito obsoleta no puede eludir esta regla: el pago clásico y la Store API vuelven a comprobar el país resuelto por el servidor y el estado de compra.

Verificar el mini-carrito

  1. Añade el producto y abre el mini-carrito.
  2. Cambia el país del cliente en el carrito o en el pago.
  3. Permite que los fragmentos de carrito de WooCommerce o el almacén de datos del carrito de Blocks se actualicen.
  4. Vuelve a abrir el mini-carrito y confirma que su precio refleja el carrito recalculado.

El mini-carrito utiliza la línea de carrito calculada por WooCommerce. No utiliza la respuesta de hidratación del catálogo porque su importe también puede depender de la cantidad, los impuestos, los cupones y el estado de la sesión.

Completar y revisar un pedido

  1. Completa el pago después de que el país y los totales finales sean visibles.
  2. Ve a WooCommerce → Orders y abre el pedido.
  3. Confirma que el subtotal, el descuento, el impuesto y el total de cada línea coinciden con el importe aceptado en el pago.
  4. Confirma que el correo electrónico del cliente muestra los mismos importes de pedido almacenados.
  5. Recupera el pedido mediante la REST API de WooCommerce compatible o un webhook de prueba y confirma que ambos utilizan los totales de línea y de pedido almacenados.
  6. Cambia el precio por zona de país del producto después de completar el pedido.
  7. Vuelve a cargar el pedido, la vista previa del correo, la respuesta REST y la carga útil del webhook. Confirma que los importes históricos no cambian.

El pedido almacena evidencia técnica privada de zona de país mediante el CRUD de WooCommerce, incluida la zona final y las revisiones de precios. Los totales de pedido y de línea de WooCommerce siguen siendo la autoridad histórica para la administración, el correo electrónico, REST y la salida del webhook. Los precios de catálogo actuales nunca se utilizan para reescribir un pedido existente.

Verificar integraciones comerciales

Para POM Product Add-Ons, prueba una opción fija, una tarifa plana, un importe por cantidad, un porcentaje, límites de precio personalizado y una opción reutilizable en dos zonas. Los importes fijos y los límites utilizan su anulación de zona cuando está presente; una anulación vacía hereda el importe global. Los valores porcentuales siguen siendo globales, pero se calculan a partir de la base regional del producto. La extensión de carrito de la Store API y la instantánea del pedido completado identifican la zona aplicada sin exponer el mapa de zonas completo.

Para un producto POM Composite, compara un componente, el total o la base fija, la tarifa de gestión fija, el ajuste fijo de componente y el ajuste porcentual en dos zonas. Los productos de componente utilizan sus propios valores regionales de producto. Los importes fijos configurados utilizan su anulación de zona, los ajustes porcentuales utilizan la base regional del componente, y el cambio de país crea una nueva identidad de presupuesto específica de la zona antes de que se acepte el carrito.

Para WooCommerce Subscriptions, verifica estos flujos deliberadamente diferentes:

  • Una compra inicial almacena su país, zona, importe recurrente, tarifa de alta, evidencia del complemento y evidencia Composite actuales cuando corresponda.
  • Una renovación utiliza la zona de suscripción almacenada y la instantánea recurrente histórica. No geolocaliza ni vuelve a leer un precio de catálogo posterior.
  • Un cambio utiliza la zona almacenada de la suscripción y los valores de catálogo regionales actuales del producto de destino en esa zona. WooCommerce Subscriptions prorratea entre el origen histórico y el destino actual.
  • Volver a suscribirse es una compra nueva y, por lo tanto, utiliza el país confirmado actual del cliente y la configuración de catálogo actual.

Si una zona de cambio almacenada se ha eliminado o desactivado, el cambio falla con bloqueo y pide una corrección en lugar de fijar silenciosamente el precio del destino en otra zona.

Opciones y límites importantes

  • La moneda de la tienda, las reglas de cupones, las reglas de impuestos, los métodos de envío y los métodos de pago siguen siendo ajustes normales de WooCommerce.
  • La base regional del producto se recalcula hasta que se crea el pedido. El carrito no bloquea permanentemente el país utilizado cuando se añadió la línea por primera vez.
  • Un cambio de país dentro de la misma zona puede dejar los totales sin cambios y no necesita un aviso de cambio de zona.
  • Las líneas de carrito de Product Add-On y Composite conservan sus propios registros de ajuste y configuración autoritativos en el servidor además del contexto de producto por zona de país.
  • La instantánea comercial contiene solo el contexto aplicado y los valores resueltos; los mapas de zonas privados siguen siendo configuración del lado del servidor.
  • Desactivar el ajuste elimina sus hooks. No reescribe los totales de pedidos existentes ni elimina la evidencia histórica de zona de país.

Solución de problemas

El carrito sigue mostrando la zona anterior

Confirma que la actualización de la dirección de envío o facturación se completó y que la solicitud del carrito evita toda caché compartida. A continuación, confirma que el índice del producto está listo y que no hay ningún plugin de precios por país en conflicto activo.

Un producto no puede comprarse después de cambiar de país

Primero revisa WooCommerce → Settings → General → Selling location(s) y confirma que el país seleccionado está permitido. Después, edita el producto y revisa el modo de la zona seleccionada. Un país de venta no permitido o un producto o variación guardado como Unavailable in this zone bloquea deliberadamente la opción de añadir al carrito y el pago.

Un país alternativo no muestra precio pero debería seguir siendo visible

Ve a Settings → POM Tweaks → E-Commerce → Products y establece Price in unmatched countries en Show the effective fallback/default price. Esto cambia solo la presentación; la lista de países de venta de WooCommerce sigue decidiendo si se permite la compra.

El mini-carrito no se actualiza

Confirma que los fragmentos de carrito de WooCommerce o el almacén de datos del carrito de Blocks están activos y no en caché. Vuelve a cargar la página del carrito para verificar primero el total del servidor; la hidratación del precio del catálogo no actualiza los fragmentos del carrito.

La salida de la Store API no tiene la extensión POM

Confirma que la herramienta de zona de país está activada, que su configuración de zona es válida y que su índice de producto está listo. El tiempo de ejecución comercial y las extensiones de la Store API permanecen sin registrar cuando esos requisitos previos fallan.