Deshabilite el método de envío específico si se elige el pago contra reembolso en Woocommerce

Necesito desactivar el método de envío específico si el usuario seleccionó el pago "Contra reembolso". El problema es que el siguiente código funciona solo si restablezco los transitorios de WooCommerce cada vez y actualizo. No funciona en la selección de usuarios de un lado a otro.

add_filter( 'woocommerce_package_rates', 'alter_shipping_methods', 100 );
function alter_shipping_methods( $rates ) {

    $chosen_gateway = WC()->session->chosen_payment_method;

    // If payment is Cash on delivery remove specific shipping 
    if($chosen_gateway == 'cod') {

        foreach ( $rates as $rate_id => $rate ) {
           if ( $rate->label === 'Hrvatska pošta' ) {
              unset( $rates[ $rate_id ] );
            }
       }

    }

    return $rates;

}

Tengo este código que debería activarse y veo el resultado en la consola cuando hago clic en las opciones.

jQuery(document.body).on('change', 'input[name="payment_method"]', function() {
    console.log('Payment method changed');
    jQuery('body').trigger('update_checkout');
});

He intentado con esto, no funciona

function action_woocommerce_checkout_update_order_review($array, $int) {
    WC()->cart->calculate_shipping();
    return;
}
add_action('woocommerce_checkout_update_order_review', 'action_woocommerce_checkout_update_order_review', 10, 2);

Y también probé una llamada AJAX personalizada que llama a una función PHP y dentro de este filtro, no hay resultado

add_filter( 'woocommerce_package_rates', 'alter_shipping_methods', 100 );

¿Qué debería probar a continuación?

Respuestas a la pregunta(1)

Su respuesta a la pregunta