You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让WooCommerce PHP全局附加费包含VAT(不额外计征增值税)

解决方案:让WooCommerce全局附加费包含VAT

我来帮你搞定这个问题!你现在遇到的核心问题是:设置的15元附加费被系统额外计征VAT,导致最终费用超过预期。要实现「输入金额即为含税最终费用」的效果,我们需要调整代码逻辑,先反算出不含税的基础金额,再让系统基于这个基数计税,最终总费用就会等于你想要的含税金额。

修改后的完整代码如下:

// 全局特殊配送服务费(已含VAT)
add_action( 'woocommerce_cart_calculate_fees','wc_add_tax_inclusive_surcharge' );
function wc_add_tax_inclusive_surcharge() {
    // 后台环境且非AJAX请求时不执行
    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;

    // ******** 这里设置你想要的含税最终费用 ********
    $tax_inclusive_fee = 15;

    // 获取站点默认增值税率(自动读取WooCommerce设置的税率,如需固定税率可直接写死,比如0.2代表20%)
    $tax_rates = WC_Tax::get_rates();
    if ( ! empty($tax_rates) ) {
        $tax_rate = reset($tax_rates)['rate'] / 100;
    } else {
        //  fallback:如果没找到税率,默认用20%(可根据你的需求修改)
        $tax_rate = 0.2;
    }

    // 反算不含税的基础金额
    $tax_exclusive_fee = $tax_inclusive_fee / (1 + $tax_rate);

    // 添加附加费:标记为应税,使用默认税类
    WC()->cart->add_fee( __('特殊配送服务费', 'woocommerce'), $tax_exclusive_fee, true, '' );
}

关键逻辑解释:

  • 税率获取:代码会自动读取你在WooCommerce后台设置的默认增值税率,如果有多个税率组,会取第一个生效的税率;如果需要固定某个税率,直接把$tax_rate改成固定值即可(比如$tax_rate = 0.19;代表19%税率)。
  • 不含税金额计算:用含税金额除以(1+税率),得到不含税的基础数。比如15元含税、税率20%的话,不含税金额就是15/(1+0.2)=12.5元,系统会自动计算12.5×20%=2.5元的VAT,最终总费用12.5+2.5=15元,正好符合你的预期。
  • add_fee参数:第三个参数true表示该费用需要计税,第四个参数留空使用默认税类,确保税率计算和商品保持一致。

验证方式:

添加任意商品到购物车,查看购物车页面的费用明细,你会看到「特殊配送服务费」的不含税金额+对应VAT,最终合计正好等于你设置的含税金额。

内容的提问来源于stack exchange,提问作者eMikkelsen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:11:59