Cómo ofrecer descuentos según la pasarela de pago en WooCommerce
En WooCommerce, puedes incentivar el uso de ciertas pasarelas de pago ofreciendo descuentos automáticos según el método seleccionado por el cliente. Este artículo te mostrará cómo implementarlo de forma sencilla utilizando los hooks disponibles en WooCommerce.
WooCommerce guarda en la sesión del cliente el método de pago que ha seleccionado durante el proceso de compra. Esta información está disponible a través de WC()->session->get( 'chosen_payment_method' )
. El valor retornado corresponde al identificador del método de pago (por ejemplo, paypal, cod, etc ), y es lo que utilizaremos para determinar si debemos aplicar un descuento y cuánto.
Esta funcionalidad facilita el acceso a los datos del método de pago, eliminando la necesidad de implementar lógica adicional para capturarlos.
Configurar descuentos y aplicarlos al carrito
Ahora que sabemos cómo obtener el método de pago seleccionado, usaremos el hook woocommerce_cart_calculate_fees
para definir y aplicar descuentos según cada pasarela.
<?php add_action( 'woocommerce_cart_calculate_fees', 'applyDiscountBasedOnPaymentMethod' ); function applyDiscountBasedOnPaymentMethod( $cart ) { // Evitar ejecutar en el área de administración. if ( is_admin() && !defined( 'DOING_AJAX' ) ) { return; } // Obtener el método de pago seleccionado de la sesión de WooCommerce. $chosenGateway = WC()->session->get( 'chosen_payment_method' ); // Verificar si hay un método de pago seleccionado. if ( empty( $chosenGateway ) ) { return; } // Configurar los descuentos según el método de pago. $discounts = array( 'cod' => 10, // 10% de descuento para Pago Contra Entrega. 'paypal' => 5, // 5% de descuento para PayPal. 'stripe' => 7, // 7% de descuento para Stripe. 'bank_transfer' => 3, // 3% de descuento para Transferencia Bancaria. ); // Aplicar el descuento si el método de pago tiene un descuento definido. if ( array_key_exists( $chosenGateway, $discounts ) ) { $discountPercentage = $discounts[ $chosenGateway ]; $cartTotal = $cart->get_subtotal(); $discountAmount = $cartTotal * ( $discountPercentage / 100 ); // Añadir el descuento al carrito como una tarifa negativa. $cart->add_fee( sprintf( __( 'Discount %s (%s%%)', 'text-domain' ), ucfirst( $chosenGateway ), $discountPercentage ), -$discountAmount ); } }
Verificar el funcionamiento
- Añade el código al archivo
functions.php
de tu tema activo o utiliza un plugin específico para personalizar funciones. - Configura las pasarelas de pago en WooCommerce.
- Realiza pruebas para confirmar que el descuento se aplica según el método de pago seleccionado.
WooCommerce facilita la implementación de descuentos basados en la pasarela de pago seleccionada gracias a su funcionalidad de sesiones. Aprovechar esta herramienta no solo mejora la experiencia del cliente, sino que también optimiza los costos asociados a los métodos de pago utilizados en tu tienda.