Adicionar uma taxa com base no método de envio e no método de pagamento no Woocommerce

Preciso aplicar uma taxa adicional quando um cliente pode fazer um pedido com frete grátis, mas deseja selecionar o pagamento COD. Então, frete grátis + pagamento COD => taxa.

Tentei sem êxito o seguinte trecho de código. Onde eu estou errado?

add_action( 'woocommerce_cart_calculate_fees','cod_fee' );
function cod_fee() {
    global $woocommerce;

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

        $chosen_gateway = WC()->session->chosen_payment_method;
        $chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
        $chosen_shipping = $chosen_methods[0]; 
        $fee = 19;
        if ( $chosen_shipping == 'free_shipping' && $chosen_gateway == 'cod' ) { 
        WC()->cart->add_fee( 'Spese per pagamento alla consegna', $fee, false, '' );
    }
}

questionAnswers(1)

yourAnswerToTheQuestion