Establecer mínima compra por pasarela de pago en WooCommerce
WooCommerce permite establecer reglas personalizadas para optimizar la operación de tu tienda. En este caso, aprenderemos a implementar un monto mínimo de compra según el método de pago. Lo haremos en dos pasos:
Mostrar una notificación de mínima compra en el checkout
Este paso muestra una notificación en la página de revisión del pedido, indicando los montos mínimos requeridos para cada método de pago.
<?php function displayMinimumOrderNotification() { $paymentGatewayMinimums = [ 'paypal' => 20, 'cod' => 30, 'bacs' => 25, ]; $cartTotal = WC()->cart->total; echo '<div class="woocommerce-info">'; foreach ( $paymentGatewayMinimums as $gatewayId => $minimumAmount ) { if ( $cartTotal < $minimumAmount ) { printf( esc_html__( 'If you choose %s, your order total must be at least %s.', 'letsgo' ), ucfirst( $gatewayId ), wc_price( $minimumAmount ) ); echo '<br>'; } } echo '</div>'; } add_action( 'woocommerce_review_order_before_payment', 'displayMinimumOrderNotification' );
Explicación:
- El array
$paymentGatewayMinimums
define los mínimos para cada método de pago disponible. - Si el total del carrito es menor que el mínimo requerido, se muestra un mensaje informativo.
Evitar la compra con un error si no se cumple el mínimo
En este paso, evitamos que el cliente complete la compra si el total del carrito no cumple con el monto mínimo requerido para el método de pago seleccionado. En caso de que no se haya seleccionado un método, se asume uno por defecto ( bacs
en este caso).
<?php function enforceMinimumOrderAmount() { $paymentGatewayMinimums = [ 'paypal' => 20, 'cod' => 30, 'bacs' => 25, ]; $chosenGateway = WC()->session->get( 'chosen_payment_method' ) ?: 'bacs'; $cartTotal = WC()->cart->total; if ( isset( $paymentGatewayMinimums[$chosenGateway] ) ) { $minimumAmount = $paymentGatewayMinimums[$chosenGateway]; if ( $cartTotal < $minimumAmount ) { wc_add_notice( sprintf( esc_html__( 'The minimum order amount for %s is %s. Please add more items to your cart.', 'letsgo' ), ucfirst( $chosenGateway ), wc_price( $minimumAmount ) ), 'error' ); } } } add_action( 'woocommerce_checkout_process', 'enforceMinimumOrderAmount' );
Explicación:
- Se obtiene el método de pago seleccionado con
WC()->session->get( 'chosen_payment_method' )
. Si no hay uno, se asumebacs
como predeterminado. - Si el total del carrito es menor que el monto mínimo correspondiente, se agrega un mensaje de error para evitar la compra.
Con este enfoque, puedes informar a tus clientes sobre los montos mínimos requeridos y garantizar que no completen pedidos que no los cumplan. Al usar un método de pago predeterminado, evitas errores si no se selecciona un gateway en el proceso de compra.
¿Hay algo más que te gustaría ajustar? 😊