So fügen Sie Gebühren oder Rabatte für verschiedene Zahlungsmethoden in WooCommerce hinzu

Veröffentlicht: 2019-03-26

Wir sehen auf E-Commerce-Websites, dass mit jeder Zahlungsmethode, die Sie beim Auschecken wählen, oft eine Servicegebühr oder sogar ein Rabatt verbunden ist. Bemerkenswert ist auch, dass die Servicegebühr bei Nachnahme höher ist als bei alternativen Zahlungsmethoden. Dies soll die Chancen auf Vorauszahlungen erhöhen. Vorauszahlungen helfen nicht nur, das Risiko, vom Kunden nicht bezahlt zu werden, zu reduzieren, sondern auch den Cashflow im Geschäft zu sichern. Falls mit den Zahlungsmethoden keine Servicegebühr verbunden ist, können Rabatte angeboten werden, wenn Sie mit anderen Methoden als der Zahlung per Nachnahme bezahlen.

Möglicherweise möchten Sie auch Rabatte für bestimmte Zahlungsmethoden hinzufügen, je nach Programmen oder Werbeaktionen, die Sie möglicherweise durchführen möchten. Rabatte sind im Allgemeinen attraktiv für Kunden und helfen, den Umsatz zu steigern. In diesem Beitrag zeigen wir Ihnen die verschiedenen Möglichkeiten, wie Sie Gebühren oder Rabatte für verschiedene Zahlungsmethoden in WooCommerce hinzufügen und folglich davon profitieren können.

Hinzufügen von prozentualen Rabatten für verschiedene Zahlungsmethoden über Code-Snippets

Sie können dies erreichen, indem Sie Code-Snippets in die Datei functions.php Ihres Child-Themes einfügen.

Der folgende Code fügt dem Gesamtbetrag einen Rabatt hinzu, wenn PayPal als Zahlungsmethode auf der Checkout-Seite von WooCommerce ausgewählt wird. Indem Sie $percent einen Wert zuweisen, können Sie den Prozentsatz des Rabatts angeben, den Sie auf die gewünschte Zahlungsmethode anwenden möchten. Die Standardzahlungsmethoden in WooCommerce sind Direktüberweisung (bacs), Scheckzahlung (Scheck), Nachnahme (cod) und PayPal (paypal), wobei ihre IDs in Klammern angegeben sind.

 add_action( 'woocommerce_cart_calculate_fees','ts_add_discount', 20, 1 );

Funktion ts_add_discount( $cart_object ) {

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

    // Erwähnen Sie die Zahlungsmethode, z. B. Nachnahme, Bac, Scheck oder Paypal
    $payment_method = 'paypal';

    // Der anzuwendende Prozentsatz
    $Prozent = 2; // 2 %

    $cart_total = $cart_object->subtotal_ex_tax;
    
    $chosen_payment_method = WC()->session->get('chosen_payment_method'); //Erhalten Sie die ausgewählte Zahlungsmethode

    if( $Zahlungsmethode == $ausgewählte_Zahlungsmethode ){
        
                   $label_text = __( "PayPal-Rabatt" );
        
                   // Berechnung des Prozentsatzes
                   $discount = number_format(($cart_total / 100) * $percent, 2);
        
                   // Hinzufügen des Rabatts
                   $cart_object->add_fee( $label_text, -$discount, false );
    }
}

add_action( 'woocommerce_review_order_before_payment', 'ts_refresh_payment_method' );

Funktion ts_refresh_payment_method(){
    // jQuery
    ?>
    <script type="text/javascript">
        (Funktion($){
            $( 'form.checkout' ).on( 'change', 'input[name^="payment_method"]', function() {
                $('body').trigger('update_checkout');
            });
        })(jQuery);
    </script>
    <?php
}

Sie benötigen hier zwei Funktionen – eine, um die entsprechenden Rabatte oder Gebühren hinzuzufügen, und eine, um Änderungen bei der Auswahl der Zahlungsmethode durch den Benutzer im Auge zu behalten, wofür wir Javascript verwenden. Die Hooks woocommerce_cart_calculate_fees und woocommerce_review_order_before_payment werden verwendet, um diese beiden Funktionen jeweils hinzuzufügen.

Die Werte, die die Zahlungsmethoden für Direktüberweisung, Scheck, Nachnahme und PayPal haben, sind bacs , check , cod bzw. paypal . Die Funktion add_fee() ist eine eingebaute Methode der Klasse WC_Cart in WooCommerce.

Dadurch wird der Rabattbetrag von der Zwischensumme abgezogen und somit die Summe angezeigt:

Discount percentage applied - add charges or discounts for different payment methods in WooCommerce

Mit wenigen Änderungen können Sie Rabatte für mehrere Zahlungsmethoden im selben Code-Snippet erwähnen:

 add_action( 'woocommerce_cart_calculate_fees','ts_add_discount', 20, 1 );

Funktion ts_add_discount( $cart_object ) {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
  
    $label_text=__("");
    
    $Prozent=0;

    // Erwähnen Sie die Zahlungsmethode, z. B. Nachnahme, Bac, Scheck oder Paypal


    $cart_total = $cart_object->subtotal_ex_tax;
    
    $chosen_payment_method = WC()->session->get('chosen_payment_method'); //Erhalten Sie die ausgewählte Zahlungsmethode

    if( $chosen_payment_method == "paypal" ){

               $label_text = __( "PayPal-Rabatt" );

               // Der anzuwendende Prozentsatz
               $Prozent = 2; // 2 %
        
    }

    sonst if( $chosen_payment_method == "bacs"){
               $label_text = __( "Direktüberweisungsrabatt" );

               // Der anzuwendende Prozentsatz
               $Prozent = 3; // 3%
  
    }

    else if( $chosen_payment_method == "Scheck"){
               $label_text = __( "Rabatt bei Scheckzahlung" );

               // Der anzuwendende Prozentsatz
               $Prozent = 2; // 2 %
    }

    anders {
               $label_text = __( "Nachnahmerabatt" );

               // Der anzuwendende Prozentsatz
               $Prozent = 0; // 0 %

    }

     // Berechnung des Prozentsatzes
        $discount = number_format(($cart_total / 100) * $percent, 2);
        
    // Hinzufügen des Rabatts
        $cart_object->add_fee( $label_text, -$discount, false );
    
}

add_action( 'woocommerce_review_order_before_payment', 'ts_refresh_payment_method' );
Funktion ts_refresh_payment_method(){
    // jQuery
    ?>
    <script type="text/javascript">
        (Funktion($){
            $( 'form.checkout' ).on( 'change', 'input[name^="payment_method"]', function() {
                $('body').trigger('update_checkout');
            });
        })(jQuery);
    </script>
    <?php
}

Hinzufügen von pauschalen Rabattbeträgen für verschiedene Zahlungsmethoden über Code-Snippets

Angenommen, Sie möchten einen Betrag anstelle eines Prozentsatzes angeben. Sie können dies erneut mit demselben Snippet tun, indem Sie den Schritt zur Berechnung des Prozentsatzes eliminieren und den Rabattbetrag als Eingabe basierend auf jeder Zahlungsmethode akzeptieren:

 add_action( 'woocommerce_cart_calculate_fees','ts_add_discount', 20, 1 );

Funktion ts_add_discount( $cart_object ) {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
  
    $label_text=__("");
    $rabattbetrag=0;

    // Erwähnen Sie die Zahlungsmethode, z. B. Nachnahme, Bac, Scheck oder Paypal


    $cart_total = $cart_object->subtotal_ex_tax;
    $chosen_payment_method = WC()->session->get('chosen_payment_method'); //Erhalten Sie die ausgewählte Zahlungsmethode

    if( $chosen_payment_method == "paypal" ){

              $label_text = __( "PayPal-Rabatt" );

              // Der anzuwendende Rabattbetrag
              $rabattbetrag = 200; 
        
    }

    sonst if( $chosen_payment_method == "bacs"){
              
              $label_text = __( "Direktüberweisungsrabatt" );

              // Der anzuwendende Rabattbetrag
              $rabattbetrag = 150; 
  
    }

    else if( $chosen_payment_method == "Scheck"){
       
             $label_text = __( "Rabatt bei Scheckzahlung" );
    
             // Der anzuwendende Rabattbetrag
             $rabattbetrag = 100; 

    }

    anders {
      
             $label_text = __( "Nachnahmerabatt" );
    
             // Der anzuwendende Rabattbetrag
             $rabattbetrag = 0; 
    }

        
    // Hinzufügen des Rabatts
       $cart_object->add_fee( $label_text, -$discount_amount, false );
    
}

add_action( 'woocommerce_review_order_before_payment', 'ts_refresh_payment_method' );
Funktion ts_refresh_payment_method(){
    // jQuery
    ?>
    <script type="text/javascript">
        (Funktion($){
            $( 'form.checkout' ).on( 'change', 'input[name^="payment_method"]', function() {
                $('body').trigger('update_checkout');
            });
        })(jQuery);
    </script>
    <?php
}

Discount amount applied - add charges or discounts for different payment methods in WooCommerce

Um eine Servicegebühr hinzuzufügen, müssen Sie einfach das Vorzeichen eines der Argumente in der add_fee- Funktion von „-“ in „+“ oder überhaupt kein Vorzeichen ändern, was positiv impliziert.

 add_action( 'woocommerce_cart_calculate_fees','ts_add_discount', 20, 1 );

Funktion ts_add_discount( $cart_object ) {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
  
$label_text=__("");

$service_charge=0;

    // Erwähnen Sie die Zahlungsmethode, z. B. Nachnahme, Bac, Scheck oder Paypal


    $cart_total = $cart_object->subtotal_ex_tax;

    $chosen_payment_method = WC()->session->get('chosen_payment_method'); //Erhalten Sie die ausgewählte Zahlungsmethode

    if( $chosen_payment_method == "paypal" ){

                  $label_text = __( "PayPal-Servicegebühr" );

                  // Die anzuwendende Servicegebühr
                  $service_charge=200;
        
     }

    sonst if( $chosen_payment_method == "bacs"){
                  $label_text = __( "Direkte Banküberweisungsgebühr" );

                  // Die anzuwendende Servicegebühr
                  $service_charge=100;
  
    }

    else if( $chosen_payment_method == "Scheck"){
                  $label_text = __( "Servicegebühr für Scheckzahlung" );
    
                  // Die anzuwendende Servicegebühr
                  $service_charge=150;
    }

    anders {
                  $label_text = __( "Servicegebühr für Nachnahme" );
    
                  // Die anzuwendende Servicegebühr
                  $service_charge=250;
    }

        
     // Hinzufügen der Servicegebühr
        $cart_object->add_fee( $label_text, $service_charge, false );
    
}

add_action( 'woocommerce_review_order_before_payment', 'ts_refresh_payment_method' );

Funktion ts_refresh_payment_method(){
    // jQuery
    ?>
    <script type="text/javascript">
        (Funktion($){
            $( 'form.checkout' ).on( 'change', 'input[name^="payment_method"]', function() {
                $('body').trigger('update_checkout');
            });
        })(jQuery);
    </script>
    <?php
}

Auf diese Weise wird eine Servicegebühr gemäß der ausgewählten Zahlungsmethode erhoben:

How to add charges or discounts for different payment methods in WooCommerce - Tyche Softwares

Hinzufügen von Rabatten für verschiedene Zahlungsmethoden nur für angemeldete Benutzer (über Code-Snippets)

Wenn Sie diese Rabatte nur für eingeloggte Benutzer anbieten möchten (wie in einem Kommentar zu diesem Beitrag gefordert), müssen Sie einfach eine Bedingung hinzufügen, die prüft, ob der Benutzer eingeloggt ist oder nicht. Dies kann durch die Funktion is_user_logged_in() erfolgen . Das folgende Code-Snippet zeigt, wie Sie prozentuale Rabatte für eine bestimmte Zahlungsmethode nur für angemeldete Benutzer hinzufügen können.

 add_action( 'woocommerce_cart_calculate_fees','ts_add_discount', 20, 1 );
Funktion ts_add_discount( $cart_object ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
  
    if (is_user_logged_in()){
            
            // Erwähnen Sie die Zahlungsmethode, z. B. Nachnahme, Bac, Scheck oder Paypal
            $payment_method = 'paypal';
            // Der anzuwendende Prozentsatz
            $Prozent = 2; // 2 %
            $cart_total = $cart_object->subtotal_ex_tax;
    
            $chosen_payment_method = WC()->session->get('chosen_payment_method'); //Erhalten Sie die ausgewählte Zahlungsmethode
            if( $Zahlungsmethode == $ausgewählte_Zahlungsmethode ){
        
                   $label_text = __( "PayPal-Rabatt" );
        
                   // Berechnung des Prozentsatzes
                   $discount = number_format(($cart_total / 100) * $percent, 2);
        
                   // Hinzufügen des Rabatts
                   $cart_object->add_fee( $label_text, -$discount, false );
             }
     }
}

add_action( 'woocommerce_review_order_before_payment', 'ts_refresh_payment_method' );
Funktion ts_refresh_payment_method(){
    // jQuery
    ?>
    <script type="text/javascript">
        (Funktion($){
            $( 'form.checkout' ).on( 'change', 'input[name^="payment_method"]', function() {
                $('body').trigger('update_checkout');
            });
        })(jQuery);
    </script>
    <?php
}

Sie können je nach Bedarf jedes der Code-Snippets in diesem Beitrag verwenden. Sie müssen einfach eine Bedingung hinzufügen – if (is_user_logged_in()) in diesem Code-Snippet, wenn Sie dies nur auf angemeldete Benutzer beschränken möchten.

Hinzufügen von Gebühren oder Rabatten für verschiedene Zahlungsmethoden über Plugins

Wenn Sie keine Code-Snippets hinzufügen möchten, gibt es einen einfachen Weg, dasselbe zu erreichen – Plugins! Es gibt sowohl kostenlose als auch kostenpflichtige Plugins, die unterschiedliche Funktionen bieten.

  • Payment Gateway-basierte Gebühren und Rabatte für WooCommerce
    Dies ist ein kostenloses Plugin von uns, mit dem Sie Gebühren, Rabatte, Steuern usw. hinzufügen und sogar die minimalen und maximalen Warenkorbbeträge als Kriterien dafür festlegen können. Sie können die Gebühr sogar runden, nachdem Sie den Rabatt angewendet haben. Und Sie können all dies mit einer benutzerfreundlichen Oberfläche tun, auf die Sie über das Dashboard zugreifen können:

    Screenshot1 of plugin Payment Gateway based fees and discounts - add charges or discounts for different payment methods in WooCommerceScreenshot2 of plugin Payment Gateway based fees and discounts - add charges or discounts for different payment methods in WooCommerce

  • Rabatte pro Zahlungsmethode für WooCommerce (kostenlos)
    Dies ist ein kostenloses Plugin von WPCodelibrary, das eine einfache Schnittstelle in Ihrem WordPress-Dashboard bietet, um Rabatte für die von WooCommerce bereitgestellten Standardzahlungsmethoden festzulegen. Es verfügt jedoch nicht über eine Funktion zum Hinzufügen von Servicegebühren oder Gebühren. Screenshot of plugin Discount Per Payment Method - add charges or discounts for different payment methods in WooCommerce

  • Zahlungs-Gateway-basierte Gebühren und Rabatte für WooCommerce ($39)
    Dieses Premium-Plugin von uns verfügt über eine ganze Reihe von Funktionen, mit denen Sie Gebühren sowie Rabatte für verschiedene Zahlungsmethoden basierend auf Land, Staat, Produktkategorie usw. hinzufügen können. Außerdem können Sie auch Steuern auf die Gebühren erheben (ohne Versandkosten). ) mit dem Plugin. Die Benutzeroberfläche ist einfach und benutzerfreundlich, und Sie können auch unterschiedliche Rabatte und Gebühren für einzelne Produkte anwenden.