Mostrar avisos de pago por IP en WooCommerce

Autor:Lisa Farrell·2026-06-01

Las tiendas WooCommerce pueden mostrar avisos de pago distintos según la región del visitante. PHP inserta el contenedor y el navegador reemplaza el mensaje según el país.

Objetivo de diseño

En «Mostrar avisos de pago por IP en WooCommerce», la página debe seguir siendo útil antes de que termine la solicitud IP. El resultado geográfico es una mejora: se valida, se aplica a una decisión limitada y se descarta cuando faltan datos.

Flujo de solicitud y decisión

Mostrar avisos de pago por IP en WooCommerce: El flujo siguiente pertenece a esta implementación concreta y no reutiliza una lista genérica de consulta IP.

  1. Paso 1 — Estado predeterminado: woocommerce_review_order_before_payment
  2. Paso 2 — Solicitud: geo hint
  3. Paso 3 — Validación: updated_checkout
  4. Paso 4 — Decisión: billing country is authoritative
  5. Paso 5 — Reserva: sessionStorage + fallback

Ejemplo orientado a producción

Mostrar avisos de pago por IP en WooCommerce: El ejemplo incorpora tiempo de espera, validación de respuesta, un valor de reserva determinista y manejo específico del ciclo de vida del framework.

<?php
function ipin_payment_notice_markup(): void {
    echo '<div id="ipin-payment-note" class="woocommerce-info">'
       . esc_html__('Payment options are confirmed after you enter a billing country.', 'ipin')
       . '</div>';
}
add_action('woocommerce_review_order_before_payment', 'ipin_payment_notice_markup', 5);

function ipin_payment_notice_assets(): void {
    if (!is_checkout()) return;
    wp_enqueue_script('jquery');
    wp_add_inline_script('jquery', <<<'JS'
(($) => {
  const notes = {
    JP: 'Domestic bank transfer details appear after order confirmation.',
    DE: 'SEPA availability depends on the billing details and selected gateway.',
    US: 'ACH availability is confirmed after the billing address is validated.'
  };
  const neutral = 'Payment options are confirmed after you enter a billing country.';
  let geoHint = sessionStorage.getItem('ipin_country') || '';

  function render() {
    const billing = String($('#billing_country').val() || '').toUpperCase();
    const country = /^[A-Z]{2}$/.test(billing) ? billing : geoHint;
    $('#ipin-payment-note').text(notes[country] || neutral);
  }

  $(document.body).on('updated_checkout', render);
  render();

  if (!/^[A-Z]{2}$/.test(geoHint)) {
    const controller = new AbortController();
    const timer = setTimeout(() => controller.abort(), 2200);
    fetch('https://my.ipin.io/info', {signal: controller.signal})
      .then(r => { if (!r.ok) throw new Error(r.status); return r.json(); })
      .then(data => {
        const value = String(data.country || '').toUpperCase();
        if (/^[A-Z]{2}$/.test(value)) {
          geoHint = value;
          sessionStorage.setItem('ipin_country', value);
          render();
        }
      })
      .catch(() => {})
      .finally(() => clearTimeout(timer));
  }
})(jQuery);
JS);
}
add_action('wp_enqueue_scripts', 'ipin_payment_notice_assets');

Matriz de pruebas

Antes de publicar «Mostrar avisos de pago por IP en WooCommerce», ejecute estos casos con respuestas simuladas o una salida VPN controlada.

CondiciónEntrada / configuraciónResultado esperado
T1IP=JP; billing=emptyJP note
T2billing=DEDE note > IP hint
T3updated_checkoutone DOM node
T4CORS / timeoutneutral notice

Prueba automatizada / smoke test

// Manual checkout assertion after changing the billing country:
jQuery('#billing_country').val('DE').trigger('change');
jQuery(document.body).trigger('updated_checkout');
console.assert(jQuery('#ipin-payment-note').text().includes('SEPA'));

Gestión de fallos

Mostrar avisos de pago por IP en WooCommerce: Los fallos deben verse en registros o herramientas de desarrollo, pero nunca dejar un bloque vacío ni romper el proceso de pago.

FalloCausaRespuesta
fragment replacestale DOM refquery on updated_checkout
billing ≠ IPVPN / travelbilling wins
full-page cachevisitor textclient-side only
gateway disabledserver ruleWooCommerce filter

Caso práctico

Un uso realista de «Mostrar avisos de pago por IP en WooCommerce»: el checkout muestra primero un aviso regional sobre transferencia, pero el mensaje final y las reglas de pasarela siguen el país de facturación introducido.

Notas de producción

Mostrar avisos de pago por IP en WooCommerce: Mantenga completo el HTML predeterminado. La ubicación IP no demuestra identidad y el resultado del navegador no debe controlar permisos.

Conclusión

«Mostrar avisos de pago por IP en WooCommerce» ahora tiene una ruta de implementación, pruebas y comportamiento de reserva propios, en lugar de una plantilla compartida.