Cómo desactivar pasarelas de pago según el perfil de usuario

Una posible personalización muy interesante que no viene por defecto con la instalación de WooCommerce es la posibilidad de poder mostrar u ocultar pasarelas de pago según el perfil de usuario.

Esto puede ser muy útil en diversas situaciones, como tiendas profesionales privadas, suscripciones, membresías, etc.

Imagina, por ejemplo, que por defecto quieres inactivar el pago mediante Paypal para los nuevos clientes (perfil por defecto customer) pero quieres que esté activa para los clientes habituales ( nuevo perfil personalizado buencliente) ¿A que se te ocurren otras posibles situaciones?

Vamos a ver cómo hacerlo.

Localiza el slug del perfil de usuario

Puedes usar este truco con los perfiles por defecto pero cuando realmente tiene sentido es cuando creas perfiles de cliente personalizados.

Para ello puedes usar un plugin como Members. Te será, de paso, muy útil para identificar fácilmente el slug del perfil de usuario WordPress para el que quieres hacer la modificación.

El plugin es muy fácil de usar. Añade un nuevo enlace bajo el menú Usuarios > Perfiles, e incluye una utilidad para clonar un perfil existente.

En nuestro caso es perfecto simplemente clonar el perfil de cliente que WooCommerce crea por defecto (customer).

Luego, en la lista de perfiles, podrás ver los slugs de los distintos perfiles de usuario de WordPress y que otros plugins hayan ido añadiendo.

Localiza el ID de la pasarela de pago

Lo siguiente es conocer el ID de la pasarela de pago que quieres inactivar, y nada más fácil. Simplemente pásate por WooCommerce > Ajustes > Finalizar compra. Abajo tendrás la lista de pasarelas de pago instaladas, con una columna en la que se muestra el ID de cada una.

Crea la función para desactivar pasarelas de pago según el perfil de usuario

Una vez que ya sabemos dónde encontrar los slugs de los perfiles de usuario y los IDs de las pasarelas de pago ya podemos crear nuestra función, que sería algo así:

/* Desactivar pasarela de pago para ciertos perfiles */
function ayudawp_desactivar_paypal( $available_gateways ) {
global $woocommerce;
//Primero definimos el slug del perfil para el que se desactiva la pasarela
if ( isset( $available_gateways['paypal'] ) && current_user_can('customer') ) {
//Y luego desactivamos la pasarela
unset( $available_gateways['paypal'] ); 
} 
//Finalmente mostramos el resto de pasarelas sin restricción
return $available_gateways;
}
 
add_filter( 'woocommerce_available_payment_gateways', 'ayudawp_desactivar_paypal' );

Como verás en el código, estamos desactivando la pasarela con el ID paypal para el slug de perfil customer, el perfil por defecto de WooCommerce.

Este código deberás añadirlo al archivo functions.php del tema activo (preferentemente un tema hijo) o a tu plugin de personalizaciones.

Nota: Añade este tipo de funciones siempre al final del archivo functions.php

Guarda los cambios y ya lo tienes. Los nuevos clientes (customer) no podrán pagar por Paypal. Una vez hayan hecho su primera compra podrás cambiarles de perfil a buencliente y entonces ya verán todas las pasarelas de pago, Paypal incluido.

¿Se puede hacer con plugins?

Por supuesto. Si no te animas con el código, o quieres acceder a más personalizaciones de todo tipo, hay varios plugins que te permitirán hacer esto mismo, a golpe de clic, porque alguien ya ha programado todo antes por nosotros.

Role-Based Payment / Shipping Methods (49$)

Con este plugin de los creadores de WooCommerce puedes definir qué pasarelas de pago, y también qué métodos de envío, estarán disponibles para los distintos perfiles de usuario existentes.

Booster for WooCommerce (39,99$)

Con la versión de pago de este plugin puedes especificar también qué pasarelas de pago tendrá disponible cada perfil de usuario.

Yith Payment Method Restrictions for WooCommerce (56$)

Restringir pasarela por país

El más completo de estos plugins no solo te permite restringir pasarelas de pago por perfil de usuario, sino que también puedes crear reglas sencillas y complejas (mixtas).

  • Crear reglas de restricción para todas las pasarelas instaladas.
  • Establecer una o más condiciones por cada regla (que el usuario tenga tal perfil, además sea de este país, etc)
  • Desactivar pasarelas de pago si…
    • el usuario tiene un perfil determinado
    • el carrito incluye uno o más productos de los especificados en la regla
    • el carrito incluye uno o más productos de unas categorías o etiquetas específicas
    • si el importe del carrito es menos, igual o más de una cantidad especificada en la regla
    • el usuario es de uno de los países especificados en la regla
  • Puede cambiar también de cuenta bancaria según una regla específica

Como habrás visto la posibilidad está ahí, y puedes crear reglas personalizadas para limitar pasarelas de pago según el perfil de usuario de manera gratuita con tu propio código o pagando un poco por un plugin que te ofrezca esta solución, y alguna más de paso, que estoy seguro que alguna idea ya te he dado.

(6 votos, promedio: 5) Valora este artículo para ayudar a mejorar la calidad del blog

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

Sobre el autor

6 comentarios en “Cómo desactivar pasarelas de pago según el perfil de usuario”

  1. Hola, mi pregunta es la siguiente:

    ¿Se puede emplear el código para desactivar ciertos métodos de pago en función del método de envío que escoja el cliente? ya hemos tenido varios problemas con clientes que se escogen como método de envío «ordinario» y método de pago «PayPal» luego reclaman que no les ha llegado nada y como no hay forma de verificarlo PayPal les da la razón y les devuelve el dinero.

    En caso de ser posible, ¿Podrias indicarme las modificaciones que tendría que hacer?

    Gracias.

  2. Jose Javiee Caro

    Buenas tardes,

    Una consulta, para los usuarios sin registrar guest como se ha de hacer? he probado de poner guest en lugar de customer en el código y no funciona, ¿puedes indicarme como se haría?

    Muchas gracias y felicidades por tu gran trabajo

  3. Tomas Moya Rodriguez

    Buenos días Fernando,

    Y si queremos anular dos métodos de pago?, es decir, incluyendo Stripe?

    Un saludo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información base sobre privacidad:
  • Responsable: Fernando Tellado ([email protected])
  • Fin del tratamiento: Moderación de comentarios para evitar spam
  • Legitimación: Tu consentimiento
  • Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal
  • Derechos: Acceso, rectificación, portabilidad, olvido

 

Ir arriba Ir al contenido