Cómo desactivar pasarelas de pago según el método de envío

Hay muchos y diversos motivos por los que un gestor de un Ecommmerce puede querer desactivar pasarelas de pago específicas según el método de envío.

En este artículo vamos a ver cómo, mediante unas pocas líneas de código, puedes desactivar pasarelas de pago basándote en el método de envío elegido por el cliente en el momento del pago.

En este ejemplo desactivaremos la pasarela de pago ‘bacs‘ (transferencia bancaria) para el método de envío ‘local_pickup‘ (recogida local).

Para empezar necesitamos tener el ID tanto de la pasarela de pago como del método de envío.

Para saber los IDs de las pasarelas de pago puedes verlos en la sección de ajustes correspondientes a las pasarelas de pago disponibles y el método de envío. Solo tienes que ir a WooCommerce > Ajustes > Finalizar compra, abajo del todo, junto a las pasarelas verás sus IDs

Obtener los IDs de los métodos de envío es algo más complicado. Para ello debes abrir el Inspector del navegador e identificar el atributo value de cada botón radio disponible.

Así, por ejemplo, verás que el value del botón de Recogida local es local_pickup ,que viene a ser el ID de ese método de envío.

Ahora solo nos queda añadir el siguiente código a nuestro plugin de utilidades o al archivo functions.php del tema activo.

/**
 * Filtrar pasarelas de pago por metodo de envio
 */
add_filter( 'woocommerce_available_payment_gateways', 'mis_pasarelas_disponibles' );
function mis_pasarelas_disponibles( $available_gateways ) {
	global $woocommerce;
     
    if ( !is_admin() ) {
         
        $chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
         
        $chosen_shipping = $chosen_methods[0];
         
        if ( isset( $available_gateways['bacs'] ) && 0 === strpos( $chosen_shipping, 'local_pickup' ) ) {
            unset( $available_gateways['bacs'] );
        }
         
    }
     
return $available_gateways;
     
}

En este código verás que comprobamos si está seleccionado el método de envío local_pickup, y en caso de ser así entonces luego desactivamos la pasarela de pago bacs. Por supuesto, cambia estos IDs a los que quieras aplicar en tu caso particular.

Si quieres desactivar varias pasarelas de pago para un método de envío específico entonces copia la línea que empieza por unset y añade ahí las otras pasarelas de pago a desactivar para ese método de envío.

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(3 votos, promedio: 5)

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

Deja un comentario

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

 

Ir arriba Ir al contenido