Error message if user is buying less than 200 euros of a given product [closed]

Many errors on my previous code due to:

  • the use of a custom plugin to alter the price.
  • trying to compare float with integers.
  • not using the proper methods.

Here’s the working version in case someone finds it useful:

Note that the var_dump is used for debugging and to obtain some values, in case you don’t know them.

/* Pedir 200 si el usuario es de fuera de España en los wallpapers */
add_action( 'woocommerce_check_cart_items', 'precio_minimo_en_wallpapers', 10, 0 );
function precio_minimo_en_wallpapers() {

    // Funionar solo en la página de carrito o de finalizar compra
    if( is_cart() || is_checkout() ) {
        global $woocommerce;

        // Precio Minimo para realizar envios a Europa y USA
        $minimo_pedido_wallpaper = 200;

        // Obtener los productos
        $productos = $woocommerce->cart->get_cart();

        // Obtener metodos de envio seleccionados en la sesión
        $method = WC()->session->get( 'chosen_shipping_methods' ); 

        // Filtrar productos con clase de envio wallpaper y comenzar a sumar el precio
        $precio = 0.00;
        foreach ( $productos as $producto ) {

            $shipping_class = $producto['data']->get_shipping_class();

            if ( $shipping_class == 'wallpapers' ) {
                $precio += $producto['line_total'];
            }
        }

        $precio_final = intval($precio);

        if ( $precio_final < $minimo_pedido_wallpaper && 'flat_rate:8' == $method[0] && $shipping_class == 'wallpapers' || $precio_final < $minimo_pedido_wallpaper && 'flat_rate:9' == $method[0] && $shipping_class == 'wallpapers' ) {
            wc_add_notice( '<strong>Se requiere un pedido de mínimo 200 euros en Wallpapers para envíos Europeos o Internacionales.</strong>'/* . + var_dump($shipping_class) */, 'error' );
        }
    }
}