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

WooCommerce为订单总计加10%GST:支付页金额不生效问题求助

在WooCommerce中为订单总计添加10% GST(含购物车及配送费)

你遇到的问题很典型——直接修改$woocommerce->cart->total只是临时改变了前端显示值,但WooCommerce在结账流程(尤其是支付页的AJAX重新计算环节)会重置购物车总额,所以你的修改会被覆盖。要让GST被系统全程认可并正确计算,得用WooCommerce官方提供的钩子来实现。

正确的实现方法:使用woocommerce_cart_calculate_fees钩子

这个钩子是WooCommerce专门用来添加自定义费用(包括税费)的,添加的费用会被纳入整个购物车和结账流程的计算中,不会在支付页被重置。

将以下代码添加到你的主题functions.php文件,或者自定义插件中:

add_action('woocommerce_cart_calculate_fees', 'add_gst_including_shipping', 10, 1);
function add_gst_including_shipping($cart) {
    // 后台环境且非AJAX请求时跳过,避免影响后台操作
    if (is_admin() && !defined('DOING_AJAX')) return;

    // 计算不含税的购物车小计 + 不含税的配送费
    $base_total = $cart->subtotal + $cart->shipping_total;
    // 计算10%的GST金额,保留两位小数
    $gst_amount = round($base_total * 0.10, 2);

    // 添加GST费用项,参数分别为:费用名称、金额、是否含税(这里设为false,因为我们直接计算了税额)
    $cart->add_fee('GST (10%)', $gst_amount, false);
}

为什么这个方法有效?

  • 这个钩子会在WooCommerce每次计算购物车费用时触发,包括前端购物车页、结账页和支付页的AJAX更新。
  • 添加的GST会作为一个独立的费用项显示在订单总计中,同时被纳入最终的订单总额计算,完全符合你的需求:购物车$200 + 配送费$20 = $220,加上10% GST($22),最终订单总计$242。
  • 无需担心支付页重置总额,因为WooCommerce会把这个GST费用视为合法的订单组成部分。

注意事项

  • 不要直接修改WooCommerce核心文件,否则插件/主题更新时你的代码会丢失。
  • 如果你使用的One Page Checkout插件依赖WooCommerce核心购物车逻辑,这个方法同样适用,无需额外适配。
  • 测试时可以清空购物车缓存,确保新的费用规则生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:40:01