WooCommerce'de farklı ödeme yöntemleri için ücretler veya indirimler nasıl eklenir?

Yayınlanan: 2019-03-26

E-ticaret web sitelerinde, çıkış yaparken seçtiğiniz her ödeme yöntemiyle, genellikle bir hizmet ücreti veya hatta bir indirim olduğunu görüyoruz. Ayrıca Kapıda Ödeme hizmet ücretinin alternatif ödeme yöntemlerine göre daha yüksek olması da dikkat çekicidir. Bu, ön ödeme şansını artırmak içindir. Ön ödemeler, yalnızca müşterinin ödeme alamama riskini azaltmaya değil, aynı zamanda işletmede nakit akışını sağlamaya da yardımcı olur. Ödeme yöntemleriyle ilgili herhangi bir hizmet bedeli olmaması durumunda, Kapıda Ödeme dışındaki yöntemlerle ödeme yapmayı tercih ettiğinizde indirimler sunulabilir.

Ayrıca, çalıştırmak isteyebileceğiniz planlara veya promosyonlara bağlı olarak belirli ödeme yöntemlerine indirim eklemek isteyebilirsiniz. İndirimler genel olarak müşteriler için çekicidir ve satışların artmasına yardımcı olur. Bu gönderide, WooCommerce'de farklı ödeme yöntemleri için ücretler veya indirimler eklemenin çeşitli yollarını göstereceğiz ve sonuç olarak aynı avantajlardan yararlanacağız.

Kod Parçacıkları aracılığıyla farklı Ödeme yöntemleri için Yüzde İndirimleri Ekleme

Bunu, alt temanızın function.php dosyasına kod parçacıkları ekleyerek başarabilirsiniz.

Aşağıdaki kod, WooCommerce ödeme sayfasında ödeme yöntemi olarak PayPal seçildiğinde toplam tutara indirim ekler. $percent'e bir değer atayarak, istediğiniz ödeme yönteminde uygulamak istediğiniz indirim yüzdesini belirleyebilirsiniz. WooCommerce'deki varsayılan ödeme yöntemleri, kimlikleri parantez içinde belirtilen Doğrudan Banka Havalesi (bacs), Çek ödemeleri (çek), Teslimatta Nakit (kod) ve PayPal'dır (paypal).

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

function ts_add_discount( $cart_object ) {

    if ( is_admin() && ! tanımlı( 'DOING_AJAX' ) ) dönüş;

    // Ödeme yönteminden bahsedin, örneğin morina, bacs, çek veya paypal
    $payment_method = 'paypal';

    // Uygulanacak yüzde
    $yüzde = 2; // %2

    $cart_total = $cart_object->subtotal_ex_tax;
    
    $chosen_payment_method = WC()->session->get('chosen_payment_method'); //Seçilen ödeme yöntemini al

    if( $payment_method == $chosen_payment_method ){
        
                   $label_text = __("PayPal İndirimi");
        
                   // Yüzde hesaplama
                   $indirim = sayı_format(($cart_total / 100) * $yüzde, 2);
        
                   // İndirim ekleme
                   $cart_object->add_fee( $label_text, -$indirim, false );
    }
}

add_action('woocommerce_review_order_before_payment', 'ts_refresh_payment_method');

function ts_refresh_payment_method(){
    // jQuery
    ?>
    <script type="metin/javascript">
        (işlev($){
            $( 'form.checkout' ).on( 'değiştir', 'input[name^="ödeme_yöntemi"]', function() {
                $('body').trigger('update_checkout');
            });
        })(jQuery);
    </script>
    <?php
}

Burada iki işleve ihtiyacınız olacak - biri uygun indirimler veya ücretler ekleme işini yapmak için, diğeri ise javascript kullandığımız, kullanıcı tarafından ödeme yöntemi seçimindeki değişiklikleri takip etmek için. woocommerce_cart_calculate_fees ve woocommerce_review_order_before_payment kancaları, sırasıyla bu iki işlevi eklemek için kullanılır.

Doğrudan Banka Havalesi, Çek, Kapıda Ödeme ve PayPal için ödeme yöntemlerinin sahip olduğu değerler sırasıyla bacs , çek , cod ve paypal'dır . add_fee() işlevi, WooCommerce'deki WC_Cart sınıfının yerleşik bir yöntemidir.

Bu, indirim tutarının ara toplamdan düşülmesiyle sonuçlanacak ve böylece toplam görüntülenecektir:

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

Küçük bir değişiklikle, aynı kod parçacığında birden fazla ödeme yöntemi için indirimlerden bahsedebilirsiniz:

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

function ts_add_discount( $cart_object ) {

    if ( is_admin() && ! tanımlı( 'DOING_AJAX' ) ) dönüş;
  
    $etiket_metin=__("");
    
    $yüzde=0;

    // Ödeme yönteminden bahsedin, örneğin morina, bacs, çek veya paypal


    $cart_total = $cart_object->subtotal_ex_tax;
    
    $chosen_payment_method = WC()->session->get('chosen_payment_method'); //Seçilen ödeme yöntemini al

    if( $chosen_payment_method == "paypal" ){

               $label_text = __("PayPal İndirimi");

               // Uygulanacak yüzde
               $yüzde = 2; // %2
        
    }

    else if( $chosen_payment_method == "bacs"){
               $label_text = __("Doğrudan Banka Havalesi İndirimi");

               // Uygulanacak yüzde
               $yüzde = 3; // %3
  
    }

    else if( $chosen_payment_method == "çek"){
               $label_text = __("Çek Ödeme İndirimi");

               // Uygulanacak yüzde
               $yüzde = 2; // %2
    }

    başka {
               $label_text = __("Kapıda Nakit İndirimi");

               // Uygulanacak yüzde
               $yüzde = 0; // %0

    }

     // Yüzde hesaplama
        $indirim = sayı_format(($cart_total / 100) * $yüzde, 2);
        
    // İndirim ekleme
        $cart_object->add_fee( $label_text, -$indirim, false );
    
}

add_action('woocommerce_review_order_before_payment', 'ts_refresh_payment_method');
function ts_refresh_payment_method(){
    // jQuery
    ?>
    <script type="metin/javascript">
        (işlev($){
            $( 'form.checkout' ).on( 'değiştir', 'input[name^="ödeme_yöntemi"]', function() {
                $('body').trigger('update_checkout');
            });
        })(jQuery);
    </script>
    <?php
}

Kod Parçacıkları ile farklı Ödeme yöntemleri için Sabit İndirim Tutarları Ekleme

Yüzde yerine bir miktardan bahsetmek istediğinizi varsayalım. Yüzdeyi hesapladığınız adımı ortadan kaldırarak ve her bir ödeme yöntemine göre indirim tutarını girdi olarak kabul ederek aynı snippet'i kullanarak tekrar yapabilirsiniz:

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

function ts_add_discount( $cart_object ) {

    if ( is_admin() && ! tanımlı( 'DOING_AJAX' ) ) dönüş;
  
    $etiket_metin=__("");
    $indirim_tutar=0;

    // Ödeme yönteminden bahsedin, örneğin morina, bacs, çek veya paypal


    $cart_total = $cart_object->subtotal_ex_tax;
    $chosen_payment_method = WC()->session->get('chosen_payment_method'); //Seçilen ödeme yöntemini al

    if( $chosen_payment_method == "paypal" ){

              $label_text = __("PayPal İndirimi");

              // Uygulanacak indirim tutarı
              $indirim_tutarı = 200; 
        
    }

    else if( $chosen_payment_method == "bacs"){
              
              $label_text = __("Doğrudan Banka Havalesi İndirimi");

              // Uygulanacak indirim tutarı
              $indirim_tutarı = 150; 
  
    }

    else if( $chosen_payment_method == "çek"){
       
             $label_text = __("Çek Ödeme İndirimi");
    
             // Uygulanacak indirim tutarı
             $indirim_tutarı = 100; 

    }

    başka {
      
             $label_text = __("Kapıda Nakit İndirimi");
    
             // Uygulanacak indirim tutarı
             $indirim_tutarı = 0; 
    }

        
    // İndirim ekleme
       $cart_object->add_fee( $label_text, -$discount_amount, false );
    
}

add_action('woocommerce_review_order_before_payment', 'ts_refresh_payment_method');
function ts_refresh_payment_method(){
    // jQuery
    ?>
    <script type="metin/javascript">
        (işlev($){
            $( 'form.checkout' ).on( 'değiştir', 'input[name^="ödeme_yöntemi"]', function() {
                $('body').trigger('update_checkout');
            });
        })(jQuery);
    </script>
    <?php
}

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

Bir servis ücreti eklemek için, add_fee işlevindeki argümanlardan birinin işaretini “-”den “+”ya değiştirmeniz veya pozitif anlamına gelen hiçbir işaret olmaması yeterlidir.

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

function ts_add_discount( $cart_object ) {

    if ( is_admin() && ! tanımlı( 'DOING_AJAX' ) ) dönüş;
  
$etiket_metin=__("");

$service_charge=0;

    // Ödeme yönteminden bahsedin, örneğin morina, bacs, çek veya paypal


    $cart_total = $cart_object->subtotal_ex_tax;

    $chosen_payment_method = WC()->session->get('chosen_payment_method'); //Seçilen ödeme yöntemini al

    if( $chosen_payment_method == "paypal" ){

                  $label_text = __("PayPal Servis Ücreti");

                  // Uygulanacak servis ücreti
                  $service_charge=200;
        
     }

    else if( $chosen_payment_method == "bacs"){
                  $label_text = __( "Doğrudan Banka Havalesi Hizmet Ücreti" );

                  // Uygulanacak servis ücreti
                  $service_charge=100;
  
    }

    else if( $chosen_payment_method == "çek"){
                  $label_text = __("Çek Ödeme Hizmet Bedeli");
    
                  // Uygulanacak servis ücreti
                  $service_charge=150;
    }

    başka {
                  $label_text = __( "Kapıda Nakit Hizmet Bedeli");
    
                  // Uygulanacak servis ücreti
                  $service_charge=250;
    }

        
     // Servis ücretinin eklenmesi
        $cart_object->add_fee( $label_text, $service_charge, false );
    
}

add_action('woocommerce_review_order_before_payment', 'ts_refresh_payment_method');

function ts_refresh_payment_method(){
    // jQuery
    ?>
    <script type="metin/javascript">
        (işlev($){
            $( 'form.checkout' ).on( 'değiştir', 'input[name^="ödeme_yöntemi"]', function() {
                $('body').trigger('update_checkout');
            });
        })(jQuery);
    </script>
    <?php
}

Bu şekilde, seçilen ödeme yöntemine göre bir hizmet bedeli uygulanacaktır:

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

Yalnızca oturum açmış kullanıcılar için farklı Ödeme yöntemleri için İndirimler ekleme (Kod Parçacıkları aracılığıyla)

Bu indirimleri yalnızca oturum açmış kullanıcılar için sunmak istiyorsanız (bu gönderiye yapılan bir yorum aracılığıyla istendiği gibi), kullanıcının oturum açıp açmadığını kontrol eden bir koşul eklemeniz yeterlidir. Bu, is_user_logged_in() işleviyle yapılabilir. Aşağıdaki kod parçası, yalnızca oturum açmış kullanıcılar için belirli bir ödeme yöntemi için yüzde indirimlerini nasıl ekleyebileceğinizi gösterir.

 add_action( 'woocommerce_cart_calculate_fees','ts_add_discount', 20, 1 );
function ts_add_discount( $cart_object ) {
    if ( is_admin() && ! tanımlı( 'DOING_AJAX' ) ) dönüş;
  
    if (is_user_logged_in()){
            
            // Ödeme yönteminden bahsedin, örneğin morina, bacs, çek veya paypal
            $payment_method = 'paypal';
            // Uygulanacak yüzde
            $yüzde = 2; // %2
            $cart_total = $cart_object->subtotal_ex_tax;
    
            $chosen_payment_method = WC()->session->get('chosen_payment_method'); //Seçilen ödeme yöntemini al
            if( $payment_method == $chosen_payment_method ){
        
                   $label_text = __("PayPal İndirimi");
        
                   // Yüzde hesaplama
                   $indirim = sayı_format(($cart_total / 100) * $yüzde, 2);
        
                   // İndirim ekleme
                   $cart_object->add_fee( $label_text, -$indirim, false );
             }
     }
}

add_action('woocommerce_review_order_before_payment', 'ts_refresh_payment_method');
function ts_refresh_payment_method(){
    // jQuery
    ?>
    <script type="metin/javascript">
        (işlev($){
            $( 'form.checkout' ).on( 'değiştir', 'input[name^="ödeme_yöntemi"]', function() {
                $('body').trigger('update_checkout');
            });
        })(jQuery);
    </script>
    <?php
}

Gereksiniminize bağlı olarak bu gönderideki kod parçacıklarından herhangi birini kullanabilirsiniz. Bunu yalnızca oturum açmış kullanıcılarla sınırlamak istiyorsanız, bu kod parçacığının içine if (is_user_logged_in()) koşulunu eklemeniz yeterlidir.

Eklentiler aracılığıyla farklı Ödeme yöntemleri için Ücretler veya İndirimler Ekleme

Kod parçacıkları eklemek istemiyorsanız, aynısını elde etmenin kolay bir yolu var – eklentiler! Farklı özellikler sunan hem ücretsiz hem de ücretli eklentiler vardır.

  • WooCommerce için Ödeme Ağ Geçidi Tabanlı Ücretler ve İndirimler
    Bu, ücretler, indirimler, vergiler vb. eklemenize ve hatta aynı kriterler için minimum ve maksimum sepet tutarlarını belirlemenize izin veren ücretsiz bir eklentidir. Hatta indirimi uyguladıktan sonra ücreti yuvarlayabilirsiniz. Ve tüm bunları, kontrol panelinden erişilebilen, kullanımı kolay bir arayüz ile yapabilirsiniz:

    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

  • WooCommerce için Ödeme Yöntemi Başına İndirimler (Ücretsiz)
    Bu, WooCommerce tarafından sağlanan varsayılan ödeme yöntemleri için indirimler ayarlamak için WordPress Kontrol Panelinizde basit bir arayüz sağlayan WPCodelibrary tarafından sunulan ücretsiz bir eklentidir. Ancak servis ücreti veya ücreti ekleme özelliği yoktur. Screenshot of plugin Discount Per Payment Method - add charges or discounts for different payment methods in WooCommerce

  • WooCommerce için Ödeme Ağ Geçidi Tabanlı Ücretler ve İndirimler (39 $)
    Bu premium eklenti, ülke, eyalet, ürün kategorisi vb. bazında farklı ödeme yöntemleri için ücretlerin yanı sıra indirimler ekleyebileceğiniz bir dizi özellik ile birlikte gelir. Bunun yanı sıra, ücretlere vergi de uygulayabilirsiniz (nakliye ücretleri hariç). ) eklentiyi kullanarak. Arayüz basit ve kullanıcı dostudur ve ayrıca bireysel ürünler için farklı indirimler ve ücretler uygulayabilirsiniz.