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:

  1. El array $paymentGatewayMinimums define los mínimos para cada método de pago disponible.
  2. 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 ( bacsen 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:

  1. Se obtiene el método de pago seleccionado con WC()->session->get( 'chosen_payment_method' ). Si no hay uno, se asume bacs como predeterminado.
  2. 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? 😊

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Back to Top
0
Would love your thoughts, please comment.x
()
x