2016-07-14 12 views
2

Ich baue eine WooCommerce-Website und ich muss eine benutzerdefinierte Bearbeitungsgebühr für ein bestimmtes Zahlungs-Gateway anwenden. Ich habe dieses Stück Code von hier: How to Add Handling Fee to WooCommerce Checkout.WooCommerce: Gebühr für Nachnahme-Zahlungsmethode (cod)

Dies ist mein Code:

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'); 
} 

Diese Funktion eine Gebühr für alle Transaktionen hinzufügen

Ist es möglich, diese Funktion tweek und es für Bargeld nur auf Lieferung Zahlungen gelten?

Ich werde jede alternative Methode auch begrüßen. Ich weiß über die ähnliche "Payment Gateway Based Fees" -Woo-Plugin, aber ich kann es mir nicht leisten.

Danke.

+0

Danke für das Feedback, aktualisiere ich entsprechend –

+0

Schlechte Neuigkeiten ... sehe meine Antwort. Entschuldigung, Sie müssen etwas anderes finden. – LoicTheAztec

Antwort

2

Dies ist nicht möglich, sorry ...

Erläuterungen:

  • Das Problem ist, dass Nachnahme (cod) Zahlungsmethode im nächsten Schritt nach dem Warenkorb nur verfügbar ist: Auf der Kaufseite.

  • Es ist nicht möglich, eine Zahlungsmethode auf der Warenkorbseite einzustellen oder zu erhalten, da Sie vor dem Kauf nicht wissen können, welche Zahlungsmethode vom Kunden gewählt wird.

Diese Funktion (Ihr Code) kann nicht so geändert werden, wie Sie möchten.

Zu diesem Zweck wird es notwendig sein, dass der Kunde die Zahlungsmethode auf Korbseite gewählt hat, was ist absolut nicht die WooCommerce behavio r.

0

Für jemand anderes suchen, dies zu tun, ich eine Gebühr für Überweisungen (BACS), hier ist die Methode, die ich verwenden hinzufügen wollte:

//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); 
} 
Verwandte Themen