La pasarela de pago no admite la moneda en WooCommerce: soluciones
Cuando una pasarela de pago no admite la moneda que un cliente de WooCommerce ha seleccionado, el síntoma depende de la pasarela: un error Invalid currency code, un pago rechazado, una página de pago que muestra la moneda base, un pedido cobrado en una moneda que nadie eligió o una página de finalizar compra sin ningún método de pago. El selector de monedas rara vez es la causa y por sí solo no puede ser la solución, porque FOX decide qué moneda llega a la página de finalizar compra y la pasarela decide qué puede cobrar. A continuación verás cómo encajan ambos, cómo interpretar cada síntoma y los ajustes que hacen que cada moneda llegue a una pasarela que la acepte.
Por qué una pasarela de pago no admite todas las monedas que muestras
Un pedido de WooCommerce tiene una sola moneda. Con Es múltiple permitido (Is multiple allowed) = Sí (Yes) en la pestaña Avanzado (Advanced) de los ajustes de FOX (el valor por defecto de una instalación nueva), la página de finalizar compra conserva la moneda del visitante: WooCommerce la comunica mediante get_woocommerce_currency(), la guarda en el pedido y la pasarela recibe el total del pedido con ese código de moneda. A partir de ese momento, el plugin de la pasarela y tu cuenta de comerciante tienen el control. FOX no interviene en la transacción.
Por eso no es posible mostrar 30 EUR en la página de finalizar compra y enviar el pago en la moneda base: la pasarela recibiría el número 30, no el valor. Si una pasarela debe cobrar en otra moneda, la propia página de finalizar compra tiene que cambiar a esa moneda antes de que el cliente pague, de modo que el importe en pantalla sea el importe cobrado. Mostrar precios en la moneda local y cobrar en la moneda base explica esta regla y las configuraciones basadas en ella.
Interpreta el síntoma
| Lo que ves | Lo que suele significar |
|---|---|
| Invalid currency code, Bad value: purchase_currency, unsupported currency | La pasarela rechaza el código: la pasarela o tu cuenta no admiten esa moneda, o el código en FOX no es un código ISO válido |
| Pagos rechazados solo en monedas que no son la base | La cuenta de comerciante no está habilitada para esas monedas |
| La página de la pasarela muestra la moneda base, o el mismo número con otro símbolo (3,12 EUR se convierte en 3,12 KWD) | El plugin de la pasarela lee el ajuste de moneda de la tienda en lugar de la moneda del pedido |
| El pedido o el cargo acaban en una moneda que el cliente no eligió | Una pasarela de una sola moneda convierte o reetiqueta el importe por su cuenta |
| Falta una pasarela, o aparece Sorry, it seems that there are no available payment methods | La pasarela se ocultó para esta moneda, o las reglas de pagos de FOX la ocultaron (véase más abajo) |
| Falta el botón de PayPal o hay un error de moneda de PayPal | Consulta moneda no admitida por PayPal, que trata PayPal en detalle |
Comprueba qué admite la pasarela
Consulta la lista de monedas admitidas de la pasarela y comprueba para qué está habilitada tu propia cuenta: ambas cosas suelen diferir. Límites habituales:
- Square cobra en la moneda del país al que pertenece la cuenta del vendedor.
- PayFast procesa pagos en rand sudafricano.
- Los servicios de compra ahora, paga después, como Klarna y Afterpay, funcionan por mercado, cada uno en la moneda de ese mercado.
- Razorpay acepta monedas distintas de INR solo cuando los pagos internacionales están habilitados en la cuenta, e incluso entonces no todas las monedas.
- Muchas pasarelas bancarias locales aceptan únicamente la moneda de su propio país.
Después comprueba el propio código. En la pestaña Divisas (Currencies), toda moneda que una pasarela pueda ver debe usar su código ISO 4217: GBP, no UK; PKR, no Rs. El símbolo va en su propia columna. Un código escrito con un espacio inicial o copiado con un carácter invisible también cuenta como no válido; vuelve a escribirlo. Los códigos que no son ISO sirven para monedas solo de visualización, como explica códigos de moneda personalizados, pero nunca dejes que uno llegue a una pasarela.
Prueba con el entorno de pruebas (sandbox) de la pasarela: un pedido en cada moneda que aceptes. En la pantalla del pedido, el cuadro de FOX muestra la Moneda de la orden (Order currency); debe coincidir con la moneda y el importe del panel de pruebas de la pasarela.
Haz que cada moneda llegue a una pasarela que la acepte
FOX ofrece tres herramientas. Pueden combinarse.
Mostrar cada pasarela solo en sus monedas: reglas de pagos
- En la pestaña Avanzado (Advanced), activa Reglas de pagos (Payments rules) y guarda. Aparece una pestaña Pagos (Payments).
- En esa pestaña, Comportamiento de pagos (Payments behavior) decide cómo funcionan las listas para todas las pasarelas: Está oculto (Is hidden) oculta una pasarela en las monedas que selecciones para ella, Se muestra (Is shown) la muestra solo en las monedas seleccionadas.
- Cada pasarela habilitada tiene su propia lista de monedas. Una pasarela cuya lista está vacía nunca se filtra.
Por ejemplo, con Se muestra (Is shown), selecciona solo UZS para una pasarela exclusiva de UZS y USD y EUR para una pasarela de tarjetas; cada visitante ve las pasarelas que pueden cobrar en su moneda. Las reglas se aplican en la página de finalizar compra y en la página de pago del pedido. Más información en cómo ocultar una pasarela de pago según la moneda.
Cobrar en la moneda base: Es múltiple permitido = No
Cuando la moneda de la pasarela es la moneda base de WooCommerce, por ejemplo una tienda en ZAR con PayFast, establece Es múltiple permitido (Is multiple allowed) en No. Los visitantes siguen navegando en su moneda, pero la página de finalizar compra vuelve a la moneda base y la pasarela siempre la recibe. Es la solución más rápida para una tienda con una pasarela local.
Cambiar a una moneda admitida en la página de finalizar compra
Cuando la pasarela acepta una moneda que no es la base, o solo algunas de tus monedas, mantén Es múltiple permitido (Is multiple allowed) = Sí (Yes) y cambia la página de finalizar compra a una moneda aceptada con un breve fragmento de código. Una versión probada que cambia solo las monedas no admitidas y devuelve a los visitantes su moneda después de pagar está en mostrar la moneda local y cobrar en la moneda base, junto con una variante que cambia la moneda cuando el cliente elige un método de pago. La versión de una línea está en la pregunta frecuente forzar una moneda en la página de finalizar compra.
Sin métodos de pago disponibles tras cambiar de moneda
Cuando la página de finalizar compra muestra Sorry, it seems that there are no available payment methods, o una pasarela que funciona en la moneda base desaparece en otra, el motivo es uno de estos:
- La pasarela se ocultó a sí misma. Muchas pasarelas comprueban
get_woocommerce_currency()antes de ofrecerse, y FOX responde con la moneda del visitante. Una pasarela exclusiva de ZAR desaparece, por tanto, para un visitante en USD, y si era la única pasarela, no queda ninguna. Esto aparece a menudo justo después de activar FOX, porque una instalación nueva permite que los clientes paguen en la moneda que han seleccionado. Usa Es múltiple permitido (Is multiple allowed) = No o una moneda forzada en la página de finalizar compra, como se ha indicado arriba. - Las reglas de pagos ocultan todas las pasarelas para esa moneda. Abre la pestaña Pagos (Payments) y repasa las monedas una por una: cada una debe dejar visible al menos una pasarela. Con Se muestra (Is shown), una pasarela que tiene algunas monedas seleccionadas desaparece en todas las demás. Para comprobarlo, desactiva Reglas de pagos (Payments rules); si las pasarelas vuelven, la causa son las listas.
- Pago por reglas de GeoIP (Checkout by GeoIP rules). Esta opción de la pestaña Avanzado (Advanced) establece la moneda de la página de finalizar compra según el país del visitante, y el visitante no puede cambiarla en esa página. Si la pasarela se muestra solo en otra moneda, ese visitante nunca la ve. Las reglas se leen en orden y gana la primera moneda que incluye el país, de modo que un país añadido a dos monedas siempre recibe la primera. Moneda de la página de finalizar compra según el país del cliente trata esta opción.
- La pasarela genera un error. Algunos plugins de pasarela fallan con un error de PHP o de JavaScript en una moneda no admitida, lo que también puede quitar el botón Finalizar compra (Proceed to checkout) del carrito. Mira la consola del navegador y
wp-content/debug.log; el error indica el plugin al que hay que notificarlo.
La pasarela cobra en la moneda equivocada
Si el pedido muestra la moneda correcta en el cuadro de FOX pero la página de pago o el banco muestran otra, el problema está en cómo el plugin de la pasarela construye la solicitud de pago:
- Lee el ajuste de la tienda, no el pedido. FOX cambia la moneda que WooCommerce comunica y guarda en el pedido; no reescribe la moneda base almacenada en los ajustes de WooCommerce. Una pasarela que lee ese ajuste directamente envía el código de la moneda base con el número convertido. La solución corresponde al plugin de la pasarela, que debería usar la moneda del pedido (
$order->get_currency()). Hasta que sus autores lo cambien, muestra esa pasarela solo en la moneda base con Reglas de pagos (Payments rules). - Admite una sola moneda y convierte por sí misma. Algunas pasarelas de una sola moneda convierten cualquier pedido a su propia moneda con su propio tipo de cambio, o crean el pago en ella sin importar el pedido. Busca en los ajustes de la pasarela una opción de conversión de moneda y prefiere que los clientes vean el importe real forzando esa moneda en la página de finalizar compra.
Lista de verificación
- Cada moneda habilitada usa un código ISO válido, vuelto a escribir sin espacios.
- Sabes qué monedas puede cobrar cada pasarela, y tu cuenta en ella.
- Cada moneda llega al menos a una pasarela que la acepta: mediante Reglas de pagos (Payments rules), Es múltiple permitido (Is multiple allowed) = No, o una moneda forzada en la página de finalizar compra.
- Pago por reglas de GeoIP (Checkout by GeoIP rules) y las listas de países de GeoIP no envían a los visitantes a una moneda sin pasarela.
- Un pedido de prueba en cada moneda muestra la misma moneda y el mismo importe en el cuadro de pedido de FOX y en el panel de la pasarela.
Si una pasarela sigue fallando en una moneda tras estas comprobaciones, abre un tema en el foro de soporte de FOX con el nombre de la pasarela, el texto exacto del error, tu ajuste de Es múltiple permitido (Is multiple allowed) y las monedas implicadas, y lo revisaremos.