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

WooCommerce如何基于定金尾款字段_wc_deposits_second_payment计算2% COD手续费

基于尾款金额计算2% COD手续费的实现方案

你可以直接使用以下修改后的代码完成配置:

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;
    $fee = 0;
    
    // 仅当支付方式为COD时计算手续费
    if ( $chosen_gateway == 'cod' ) {
        // 获取第二笔尾款金额,默认值为0避免报错
        $second_payment_amount = WC()->session->get( '_wc_deposits_second_payment', 0 );
        // 计算尾款2%的COD手续费,保留两位小数保证金额精度
        $fee = round( $second_payment_amount * 0.02, 2 );
        // 添加手续费到购物车,第三个参数设为true可开启手续费计税
        WC()->cart->add_fee( '2% COD 手续费', $fee, false, '' );
    }
}

核心调整说明

  • 新增了尾款金额获取逻辑,从session中读取_wc_deposits_second_payment字段作为计算基数
  • 补充了手续费计算规则:按尾款金额的2%计算,保留两位小数避免金额精度问题
  • 保留了原有的非AJAX后台环境拦截逻辑,不影响后台订单操作

可选调整说明

  • 如果需要将手续费计入计税基数,可将WC()->cart->add_fee的第三个参数修改为true
  • 若_wc_deposits_second_payment字段存储在购物车项元数据而非session中,可替换尾款金额获取逻辑为遍历购物车项读取对应自定义字段
  • 调试阶段可临时输出$second_payment_amount的数值,确认尾款金额读取正确后再移除调试代码

内容的提问来源于stack exchange,提问作者Syed Azim Uddaula

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:00:01