Come aggiungere addebiti o sconti per diversi metodi di pagamento in WooCommerce

Pubblicato: 2019-03-26

Vediamo sui siti di e-commerce che con ogni metodo di pagamento scelto durante il check-out, spesso è associato un costo del servizio o addirittura uno sconto. È inoltre interessante notare che il costo del servizio per il contrassegno è superiore a quello per i metodi di pagamento alternativi. Questo per aumentare le possibilità di pagamenti anticipati. I pagamenti anticipati aiutano non solo a ridurre il rischio di non essere pagati dal cliente, ma anche a garantire il flusso di cassa nell'azienda. In caso di assenza di costi di servizio associati ai metodi di pagamento, potrebbero essere offerti sconti quando si sceglie di pagare con metodi diversi dal contrassegno.

Potresti anche voler aggiungere sconti su determinati metodi di pagamento a seconda degli schemi o delle promozioni che potresti voler eseguire. Gli sconti sono generalmente attraenti per i clienti e aiutano ad aumentare le vendite. In questo post, ti mostreremo i vari modi in cui puoi aggiungere addebiti o sconti per diversi metodi di pagamento in WooCommerce e di conseguenza trarne vantaggio.

Aggiunta di sconti percentuali per diversi metodi di pagamento tramite frammenti di codice

Puoi ottenere ciò aggiungendo frammenti di codice nel file functions.php del tuo tema figlio.

Il codice sottostante aggiunge uno sconto all'importo totale quando PayPal viene scelto come metodo di pagamento nella pagina di pagamento di WooCommerce. Assegnando un valore a $percentuale, puoi specificare la percentuale di sconto che desideri applicare sul metodo di pagamento desiderato. I metodi di pagamento predefiniti in WooCommerce sono Bonifico Bancario Diretto (bacs), Assegni (assegno), Contrassegno (cod) e PayPal (paypal), con i relativi ID indicati tra parentesi.

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

funzione ts_add_discount($cart_object) {

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

    // Indica il metodo di pagamento, ad esempio cod, bacs, assegno o paypal
    $ metodo_pagamento = 'paypal';

    // La percentuale da applicare
    $percentuale = 2; // 2%

    $cart_total = $cart_object->subtotale_ex_tax;
    
    $metod_pagamento_scelto = WC()->sessione->get('metodo_pagamento_scelto'); //Ottieni il metodo di pagamento selezionato

    if( $ metodo_pagamento == $ metodo_pagamento_scelto ){
        
                   $testo_etichetta = __("Sconto PayPal");
        
                   // Calcolo percentuale
                   $sconto = numero_formato(($carrello_totale / 100) * $percentuale, 2);
        
                   // Aggiunta dello sconto
                   $cart_object->add_fee($testo_etichetta, -$sconto, false);
    }
}

add_action( 'woocommerce_review_order_before_payment', 'ts_refresh_payment_method' );

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

Avrai bisogno di due funzioni qui: una per eseguire il lavoro di aggiunta di sconti o commissioni appropriati e una per tenere sotto controllo le modifiche nella selezione del metodo di pagamento da parte dell'utente, per le quali utilizziamo javascript. Gli hook woocommerce_cart_calculate_fees e woocommerce_review_order_before_payment vengono utilizzati rispettivamente per aggiungere queste due funzioni.

I valori che hanno i metodi di pagamento per Bonifico Bancario Diretto, Assegno, Contrassegno e PayPal sono rispettivamente bacs , assegno , cod e paypal . La funzione add_fee() è un metodo integrato della classe WC_Cart in WooCommerce.

Ciò comporterà la detrazione dell'importo dello sconto dal totale parziale e il totale verrà quindi visualizzato:

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

Con poche modifiche, puoi menzionare sconti per più metodi di pagamento nello stesso snippet di codice:

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

funzione ts_add_discount($cart_object) {

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

    // Indica il metodo di pagamento, ad esempio cod, bacs, assegno o paypal


    $cart_total = $cart_object->subtotale_ex_tax;
    
    $metod_pagamento_scelto = WC()->sessione->get('metodo_pagamento_scelto'); //Ottieni il metodo di pagamento selezionato

    if( $ metodo_scelto_pagamento == "paypal" ){

               $testo_etichetta = __("Sconto PayPal");

               // La percentuale da applicare
               $percentuale = 2; // 2%
        
    }

    else if( $metod_pagamento_scelto == "bacs"){
               $label_text = __("Sconto bonifico bancario diretto");

               // La percentuale da applicare
               $percentuale = 3; // 3%
  
    }

    else if( $metod_pagamento_scelto == "assegno"){
               $label_text = __("Sconto pagamento assegno");

               // La percentuale da applicare
               $percentuale = 2; // 2%
    }

    altro {
               $label_text = __("Sconto in contrassegno");

               // La percentuale da applicare
               $percentuale = 0; // 0%

    }

     // Calcolo percentuale
        $sconto = numero_formato(($carrello_totale / 100) * $percentuale, 2);
        
    // Aggiunta dello sconto
        $cart_object->add_fee($testo_etichetta, -$sconto, false);
    
}

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

Aggiunta di importi di sconto forfettari per diversi metodi di pagamento tramite frammenti di codice

Supponiamo di voler menzionare un importo anziché una percentuale. Puoi farlo utilizzando di nuovo lo stesso snippet, eliminando il passaggio in cui calcoli la percentuale e accettando l'importo dello sconto come input in base a ciascun metodo di pagamento:

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

funzione ts_add_discount($cart_object) {

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

    // Indica il metodo di pagamento, ad esempio cod, bacs, assegno o paypal


    $cart_total = $cart_object->subtotale_ex_tax;
    $metod_pagamento_scelto = WC()->sessione->get('metodo_pagamento_scelto'); //Ottieni il metodo di pagamento selezionato

    if( $ metodo_scelto_pagamento == "paypal" ){

              $testo_etichetta = __("Sconto PayPal");

              // L'importo dello sconto da applicare
              $importo_sconto = 200; 
        
    }

    else if( $metod_pagamento_scelto == "bacs"){
              
              $label_text = __("Sconto bonifico bancario diretto");

              // L'importo dello sconto da applicare
              $importo_sconto = 150; 
  
    }

    else if( $metod_pagamento_scelto == "assegno"){
       
             $label_text = __("Sconto pagamento assegno");
    
             // L'importo dello sconto da applicare
             $importo_sconto = 100; 

    }

    altro {
      
             $label_text = __("Sconto in contrassegno");
    
             // L'importo dello sconto da applicare
             $importo_sconto = 0; 
    }

        
    // Aggiunta dello sconto
       $cart_object->add_fee($testo_etichetta, -$importo_sconto, false);
    
}

add_action( 'woocommerce_review_order_before_payment', 'ts_refresh_payment_method' );
funzione ts_refresh_payment_method(){
    // jQuery
    ?>
    <tipo di script="testo/javascript">
        (funzione($){
            $( '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

Per aggiungere un costo del servizio, devi semplicemente cambiare il segno di uno degli argomenti nella funzione add_fee da "-" a "+" o nessun segno che implica positivo.

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

funzione ts_add_discount($cart_object) {

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

$addebito_servizio=0;

    // Indica il metodo di pagamento, ad esempio cod, bacs, assegno o paypal


    $cart_total = $cart_object->subtotale_ex_tax;

    $metod_pagamento_scelto = WC()->sessione->get('metodo_pagamento_scelto'); //Ottieni il metodo di pagamento selezionato

    if( $ metodo_scelto_pagamento == "paypal" ){

                  $label_text = __("Addebito servizio PayPal");

                  // Il costo del servizio da applicare
                  $addebito_servizio=200;
        
     }

    else if( $metod_pagamento_scelto == "bacs"){
                  $label_text = __("Addebito per il servizio di trasferimento bancario diretto");

                  // Il costo del servizio da applicare
                  $addebito_servizio=100;
  
    }

    else if( $metod_pagamento_scelto == "assegno"){
                  $label_text = __( "Addebito servizio pagamento assegno" );
    
                  // Il costo del servizio da applicare
                  $addebito_servizio=150;
    }

    altro {
                  $label_text = __( "Costo del servizio in contrassegno");
    
                  // Il costo del servizio da applicare
                  $addebito_servizio=250;
    }

        
     // Aggiunta del costo del servizio
        $cart_object->add_fee($label_text, $service_charge, false);
    
}

add_action( 'woocommerce_review_order_before_payment', 'ts_refresh_payment_method' );

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

In questo modo verrà applicato un costo del servizio in base al metodo di pagamento selezionato:

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

Aggiunta di sconti per diversi metodi di pagamento solo per utenti che hanno effettuato l'accesso (tramite frammenti di codice)

Se desideri offrire questi sconti solo agli utenti loggati (come richiesto tramite un commento a questo post), devi semplicemente aggiungere una condizione che controlli se l'utente è loggato o meno. Questo può essere fatto dalla funzione is_user_logged_in() . Lo snippet di codice riportato di seguito mostra come aggiungere sconti percentuali per un particolare metodo di pagamento solo per gli utenti che hanno effettuato l'accesso.

 add_action('woocommerce_cart_calculate_fees','ts_add_discount', 20, 1 );
funzione ts_add_discount($cart_object) {
    if ( is_admin() && !defined( 'DOING_AJAX' ) ) return;
  
    se (is_user_logged_in()){
            
            // Indica il metodo di pagamento, ad esempio cod, bacs, assegno o paypal
            $ metodo_pagamento = 'paypal';
            // La percentuale da applicare
            $percentuale = 2; // 2%
            $cart_total = $cart_object->subtotale_ex_tax;
    
            $metod_pagamento_scelto = WC()->sessione->get('metodo_pagamento_scelto'); //Ottieni il metodo di pagamento selezionato
            if( $ metodo_pagamento == $ metodo_pagamento_scelto ){
        
                   $testo_etichetta = __("Sconto PayPal");
        
                   // Calcolo percentuale
                   $sconto = numero_formato(($carrello_totale / 100) * $percentuale, 2);
        
                   // Aggiunta dello sconto
                   $cart_object->add_fee($testo_etichetta, -$sconto, false);
             }
     }
}

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

Puoi utilizzare uno qualsiasi degli snippet di codice in questo post a seconda delle tue esigenze. Devi semplicemente aggiungere una condizione -if (is_user_logged_in()) all'interno di quel frammento di codice se vuoi limitarlo ai soli utenti che hanno effettuato l'accesso.

Aggiunta di spese o sconti per diversi metodi di pagamento tramite plug-in

Se non vuoi aggiungere frammenti di codice, c'è un modo semplice per ottenere lo stesso risultato: i plugin! Ci sono sia plugin gratuiti che a pagamento che offrono funzionalità diverse.

  • Commissioni e sconti basati sul gateway di pagamento per WooCommerce
    Questo è un plug-in gratuito da parte nostra che ti consente di aggiungere commissioni, sconti, tasse ecc. e persino impostare gli importi minimi e massimi del carrello come criteri per lo stesso. Puoi anche arrotondare la quota dopo aver applicato lo sconto. E puoi fare tutto questo con un'interfaccia facile da usare accessibile tramite la dashboard:

    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

  • Sconti per metodo di pagamento per WooCommerce (gratuito)
    Questo è un plugin gratuito di WPCodelibrary che fornisce una semplice interfaccia all'interno della dashboard di WordPress per impostare sconti per i metodi di pagamento predefiniti forniti da WooCommerce. Tuttavia non ha una funzione per aggiungere costi o commissioni di servizio. Screenshot of plugin Discount Per Payment Method - add charges or discounts for different payment methods in WooCommerce

  • Commissioni e sconti basati sul gateway di pagamento per WooCommerce ($ 39)
    Questo plug-in premium da noi viene fornito con un'intera serie di funzionalità in cui puoi aggiungere commissioni e sconti per diversi metodi di pagamento in base a paese, stato, categoria di prodotto ecc. Oltre a questo, puoi anche applicare tasse sulle commissioni (escluse le spese di spedizione ) utilizzando il plug-in. L'interfaccia è semplice e intuitiva e puoi anche applicare sconti e commissioni diversi per i singoli prodotti.