• Resuelto carmen soarez

    (@carmen-soarez)


    Buenos días, estoy buscando ayuda para mi pagina web de seminarios online. Estoy usando woocommerce y quiero usar cupones para alumnos y personas que se inscriben antes de alguna fecha x, pero necesito que cuando el alumno ingrese el cupón me deshabilite la opción de MERCADO PAGO Y PAYPAL y que solo quede la opción de transferencia bancaria.
    ya busqué en varios lados y no doy ni con el código ni con un plugins que me ayude con eso.

    tengo un código pero que me quita todos los métodos de pago. lo pego abajo, por ahí alguien me ayuda.
    Gracias

    add_filter( 'woocommerce_available_payment_gateways', 'gfk_payment_gateway_disable_country' );
      
    function gfk_payment_gateway_disable_country( $available_gateways ) {
        global $woocommerce;
        if ( $woocommerce->cart->get_applied_coupons() ) { //hacer la comparación de cupón
            foreach ( $available_gateways as $ap => $val ) {
               if( 'paypal' !== $ap ) {
                    unset( $available_gateways[$ap] ); //quitar todas la disponibles.
               }
            }
        }
    }

    La página con la que necesito ayuda: [accede para ver el enlace]

Viendo 2 respuestas - de la 1 a la 2 (de un total de 2)
  • Moderador jose64

    (@jose64)

    Hola.

    Bienvenida al foro de soporte. usa este código:

    add_filter('woocommerce_available_payment_gateways', 'applied_coupons_hide_payment_gateways', 20, 1 );
    function applied_coupons_hide_payment_gateways( $available_gateways){
        // Not in backend (admin)
        if( is_admin() ) 
            return $available_gateways;
    
        // If at least a coupon is applied
    	global $woocommerce;
    	$applied_coupons = $woocommerce->cart->applied_coupons;
    	if( ! empty ($applied_coupons) ) {
            // Loop through payment gateways
            foreach ( $available_gateways as $gateway_id => $gateway ) {
                // Remove all payment gateways except BACS (Bank Wire)
                if( $gateway_id != 'bacs' )
                    unset($available_gateways[$gateway_id]);
            }
        }
    
        return $available_gateways;
    }

    Te desactiva todas las pasarelas de pago excepto la transferencia directa. Está basado en:

    add_filter('woocommerce_available_payment_gateways', 'applied_coupons_hide_payment_gateways', 20, 1 );
    function applied_coupons_hide_payment_gateways( $available_gateways){
        // Not in backend (admin)
        if( is_admin() ) 
            return $available_gateways;
    
        // If at least a coupon is applied
        if( sizeof( WC()->cart->get_applied_coupons() ) > 0 ){
            // Loop through payment gateways
            foreach ( $available_gateways as $gateway_id => $gateway ) {
                // Remove all payment gateways except BACS (Bank Wire)
                if( $gateway_id != 'bacs' )
                    unset($available_gateways[$gateway_id]);
            }
        }
    
        return $available_gateways;
    }

    Remove some payment gateways if any coupon code is applied in Woocommerce

    La modificación que le hice desactiva las pasarelas aunque los cupones no hagan descuentos (se basa en si hay algún cupón añadido aunque su valor sea 0), en el original si usas un descuento de valor 0 no las desactiva porque se basa en el monto de los descuentos, no en si hay algún cupón aplicado. De acuerdo a lo que te interese usas uno u otro.

    Comenta si tienes alguna duda y, por favor, recuerda marcar el debate como resuelto, así nos ayudas a mantener el foro al día.

    Iniciador del debate carmen soarez

    (@carmen-soarez)

    hola, funcionó súper bien!! gracias gracias

Viendo 2 respuestas - de la 1 a la 2 (de un total de 2)

El debate ‘DESACTIVAR CUPONES SEGUN PASARELA DE PAGO’ está cerrado a nuevas respuestas.