Aplicar un descuento en métodos de pago en WooCommerce

LucusHost, el mejor hosting

Cada vez es más habitual en las tiendas online, ofrecer un descuento o comisión en el método de pago. En este blog ya hemos visto como añadir una comisión a cualquier método pero no un descuento.

En este tutorial veremos un plugin gratuito para poder hacerlo o bien mediante código en formas de pago comunes como PayPal, Bizum, Stripe, transferencia bancaria

ELEX WooCommerce Discount Per Payment Method

Con este plugin gratuito disponible en el repositorio oficial de WordPress o haciendo clic aquí. Podremos hacer un descuento personalizado. Para ello nos vamos a WooCommerce > Ajustes > ELEX WooCommerce Discount Per Payment Method y elegimos el método de pago y el descuento en porcentaje:

Tan sencillo como se puede apreciar en la foto. Luego iremos al checkout para comprobar que de verdad funciona:

rebajar metodo de pago woocommerce

Si se te queda un poco escaso este plugin, tienes uno más potente gratuito: Payment Gateway Based Fees and Discounts for WooCommerce. Sirve para descuentos fijos y puede añadir comisiones también.

Por otro lado, si lo quieres hacer por código para no tener tantos plugins:

Mediante código

El código que te voy a presentar a continuación, tienes que modificarlo para el método de pago que quieras, el % o tasa de comisión y forma de descuento. Para añadir este código, como siempre nos vamos al fichero functions.php de nuestro Child Theme o bien a nuestro plugin de funcionalidades como explico aquí.

Descuento por porcentaje:

add_action( 'woocommerce_cart_calculate_fees','dl_anadir_descuento_pagos', 20, 1 );

function dl_anadir_descuento_pagos( $cart_object ) {

if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;

$label_text=__("");

$percent=0;

// Para varios metodos PayPal, transferencia...


$cart_total = $cart_object->subtotal_ex_tax;

$chosen_payment_method = WC()->session->get('chosen_payment_method'); //Get the selected payment method

if( $chosen_payment_method == "paypal" ){

$label_text = __( "Descuento de PayPal" );

// The percentage to apply
$percent = 1; // 1%

}

else if( $chosen_payment_method == "bacs"){
$label_text = __( "Descuento transferencia bancaria" );

// The percentage to apply
$percent = 2; // 2%

}

else {
$label_text = __( "Contra Reembolso" );

// The percentage to apply
$percent = 0; // 0%

}

// Calculating percentage
$discount = number_format(($cart_total / 100) * $percent, 2);

// Adding the discount
$cart_object->add_fee( $label_text, -$discount, false );

}

add_action( 'woocommerce_review_order_before_payment', 'dl_actualizar_metodo_pago_1' );
function dl_actualizar_metodo_pago_1(){
// jQuery
?>
<script type="text/javascript">
(function($){
$( 'form.checkout' ).on( 'change', 'input[name^="payment_method"]', function() {
$('body').trigger('update_checkout');
});
})(jQuery);
</script>
<?php
}

Por otro lado si lo queremos es valor fijo:

add_action( 'woocommerce_cart_calculate_fees','dl_anadir_descuento_pagos_fijos', 20, 1 );
function dl_anadir_descuento_pagos_fijos( $cart_object ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
  
    $label_text=__("");
    $discount_amount=0;
    // Metodo de pago como PayPal, transferencia bancaria
    $cart_total = $cart_object->subtotal_ex_tax;
    $chosen_payment_method = WC()->session->get('chosen_payment_method');  //Seleccion de pago
    if( $chosen_payment_method == "paypal" ){
              $label_text = __( "Descuento PayPal" );
              // El importe fijo de descuento
              $discount_amount = 2; 
        
    }
    else if( $chosen_payment_method == "bacs"){
              
              $label_text = __( "Descuento transferencia bancaria" );
              // El importe fijo de descuento
              $discount_amount = 15; 
  
    }
    
    else {
      
             $label_text = __( "Descuento Contra Reembolso" );
    
             // El importe fijo de descuento
             $discount_amount = 0; 
    }
        
    // Anadir descuento
       $cart_object->add_fee( $label_text, -$discount_amount, false );
    
}
add_action( 'woocommerce_review_order_before_payment', 'dl_actualizar_metodo_pago_2' );
function dl_actualizar_metodo_pago_2(){
    // jQuery
    ?>
    <script type="text/javascript">
        (function($){
            $( 'form.checkout' ).on( 'change', 'input[name^="payment_method"]', function() {
                $('body').trigger('update_checkout');
            });
        })(jQuery);
    </script>
    <?php
}

Esto sería todo por el tutorial de hoy, cualquier duda como siempre en comentarios.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)
mailerlite diegol

Especialista en Comercio electrónico con Woocommerce. Te ayudo a crear, gestionar y publicitar tu Ecommerce en función de tu sector y público objetivo. Puedes encontrarme en Diegol.top

¿Necesitas ayuda con este tutorial? Mándame un correo y te resuelvo todas las dudas!


Ver servicios Curso de WooCommerce

También puedes realizar una donacion para seguir apoyando la salida de nuevos tutoriales y actualizaciones

mailerlite diegol

Reader Interactions

Deja una respuesta

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