2016-07-14 207 views
2

我正在構建WooCommerce網站,我需要爲特定支付網關應用自定義手續費。
我從這裏有這段代碼:How to Add Handling Fee to WooCommerce CheckoutWooCommerce:爲現金付款方式(cod)添加費用

這是我的代碼:

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

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

     $fee = 5.00; 
    $woocommerce->cart->add_fee('Handling', $fee, true, 'standard'); 
} 

此功能的費用添加到所有交易

是否有可能tweek此功能,使其適用於現金只交貨付款?

我會歡迎任何替代方法。我知道類似的「支付網關費用」woo插件,但我買不起。

謝謝。

+0

謝謝大家的反饋,我相應的更新 –

+0

壞消息......看到我的答案。對不起,你必須找到不同的東西。 – LoicTheAztec

回答

2

這是不可能的,對不起...

說明:

  • 的問題是,貨到付款(COD)付款方式只在後車下一步可供選擇:在結帳頁面上。

  • 無法在購物車頁面上設置或獲取任何付款方式,因爲您無法在結帳前知道客戶將選擇哪種付款方式。

此功能(您的代碼)不能根據需要進行調整。

爲此目的將是必要的負荷消費選擇購物車頁面上的付款方式是什麼絕對不是WooCommerce behavio

0

對於其他人要做到這一點,我想補充的銀行轉賬手續費(BACS),這裏是我使用的方法:

//Hook the order creation since it is called during the checkout process: 
add_filter('woocommerce_create_order', 'my_handle_bacs', 10, 2); 

function my_handle_bacs($order_id, $checkout){ 
//Get the payment method from the $_POST 
    $payment_method = isset($_POST['payment_method']) ? wc_clean($_POST['payment_method']) : ''; 

//Make sure it's the right payment method 
    if($payment_method == "bacs"){ 

     //Use the cart API to add recalculate fees and totals, and hook the action to add our fee 
     add_action('woocommerce_cart_calculate_fees', 'my_add_bacs_fee'); 
     WC()->cart->calculate_fees(); 
     WC()->cart->calculate_totals(); 
    } 

    //This filter is for creating your own orders, we don't want to do that so return the $order_id untouched 
    return $order_id; 
} 
function my_add_bacs_fee($cart){ 
    //Add the appropriate fee to the cart 
    $cart->add_fee("Bank Transfer Fee", 40); 
} 
相關問題