Cara menambahkan biaya atau diskon untuk berbagai metode pembayaran di WooCommerce

Diterbitkan: 2019-03-26

Kami melihat di situs web e-niaga bahwa dengan setiap metode pembayaran yang Anda pilih saat check out, sering kali ada biaya layanan atau bahkan diskon yang terkait. Perlu dicatat juga bahwa biaya layanan untuk Cash-on-Delivery lebih tinggi daripada metode pembayaran alternatif. Ini untuk meningkatkan peluang pembayaran di muka. Pembayaran di muka membantu tidak hanya untuk mengurangi risiko tidak dibayar oleh pelanggan, tetapi juga untuk memastikan arus kas dalam bisnis. Jika tidak ada biaya layanan yang terkait dengan metode pembayaran, mungkin ada diskon yang ditawarkan saat Anda memilih untuk membayar dengan metode selain Cash-on-Delivery.

Anda juga mungkin ingin menambahkan diskon terhadap metode pembayaran tertentu tergantung pada skema atau promosi yang mungkin ingin Anda jalankan. Diskon secara umum menarik bagi pelanggan, dan membantu dalam meningkatkan penjualan. Dalam posting ini, kami akan menunjukkan kepada Anda berbagai cara Anda dapat menambahkan biaya atau diskon untuk metode pembayaran yang berbeda di WooCommerce dan akibatnya menuai manfaat yang sama.

Menambahkan Diskon Persentase untuk berbagai metode Pembayaran melalui Cuplikan Kode

Anda dapat mencapai ini dengan menambahkan potongan kode di file functions.php dari tema anak Anda.

Kode di bawah ini menambahkan diskon ke jumlah total ketika PayPal dipilih sebagai metode pembayaran di halaman checkout WooCommerce. Dengan menetapkan nilai ke $persen, Anda dapat menentukan persentase diskon yang ingin Anda terapkan pada metode pembayaran yang diinginkan. Metode pembayaran default di WooCommerce adalah Transfer Bank Langsung (bacs), pembayaran Cek (cek), Cash on Delivery (cod) dan PayPal (paypal), dengan id mereka disebutkan dalam tanda kurung.

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

fungsi ts_add_discount( $cart_object ) {

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

    // Sebutkan metode pembayaran misal cod, bacs, cek atau paypal
    $metode_pembayaran = 'paypal';

    // Persentase untuk diterapkan
    $persen = 2; // 2%

    $cart_total = $cart_object->subtotal_ex_tax;
    
    $chosen_payment_method = WC()->session->get('chosen_payment_method'); //Dapatkan metode pembayaran yang dipilih

    if( $payment_method == $chosen_payment_method ){
        
                   $label_text = __( "Diskon PayPal" );
        
                   // Menghitung persentase
                   $diskon = number_format(($cart_total / 100) * $persen, 2);
        
                   // Menambahkan diskon
                   $cart_object->add_fee( $label_text, -$discount, false );
    }
}

add_action( 'woocommerce_review_order_before_payment', 'ts_refresh_payment_method' );

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

Anda memerlukan dua fungsi di sini- satu untuk melakukan pekerjaan menambahkan diskon atau biaya yang sesuai, dan satu lagi untuk mengawasi perubahan dalam pemilihan metode pembayaran oleh pengguna, yang kami gunakan javascript. Kait woocommerce_cart_calculate_fees dan woocommerce_review_order_before_payment digunakan untuk menambahkan kedua fungsi ini masing-masing.

Nilai yang dimiliki metode pembayaran untuk Direct Bank Transfer, Cheque, Cash-on-Delivery dan PayPal masing-masing adalah bacs , check , cod dan paypal . Fungsi add_fee() adalah metode built-in dari kelas WC_Cart di WooCommerce.

Ini akan mengakibatkan jumlah diskon dikurangi dari subtotal, dan totalnya akan ditampilkan:

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

Dengan sedikit modifikasi, Anda dapat menyebutkan diskon untuk beberapa metode pembayaran dalam cuplikan kode yang sama:

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

fungsi ts_add_discount( $cart_object ) {

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

    // Sebutkan metode pembayaran misal cod, bacs, cek atau paypal


    $cart_total = $cart_object->subtotal_ex_tax;
    
    $chosen_payment_method = WC()->session->get('chosen_payment_method'); //Dapatkan metode pembayaran yang dipilih

    if( $chosen_payment_method == "paypal" ){

               $label_text = __( "Diskon PayPal" );

               // Persentase untuk diterapkan
               $persen = 2; // 2%
        
    }

    else if( $chosen_payment_method == "bacs"){
               $label_text = __( "Diskon Transfer Bank Langsung" );

               // Persentase untuk diterapkan
               $persen = 3; // 3%
  
    }

    else if( $chosen_payment_method == "cheque"){
               $label_text = __( "Cek Diskon Pembayaran" );

               // Persentase untuk diterapkan
               $persen = 2; // 2%
    }

    kalau tidak {
               $label_text = __( "Diskon Tunai Saat Pengiriman" );

               // Persentase untuk diterapkan
               $persen = 0; // 0%

    }

     // Menghitung persentase
        $diskon = number_format(($cart_total / 100) * $persen, 2);
        
    // Menambahkan diskon
        $cart_object->add_fee( $label_text, -$discount, false );
    
}

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

Menambahkan Jumlah Diskon Tetap untuk berbagai metode Pembayaran melalui Cuplikan Kode

Misalkan Anda ingin menyebutkan jumlah, bukan persentase. Anda dapat melakukannya menggunakan potongan yang sama lagi, dengan menghilangkan langkah di mana Anda menghitung persentase dan menerima jumlah diskon sebagai input berdasarkan setiap metode pembayaran:

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

fungsi ts_add_discount( $cart_object ) {

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

    // Sebutkan metode pembayaran misal cod, bacs, cek atau paypal


    $cart_total = $cart_object->subtotal_ex_tax;
    $chosen_payment_method = WC()->session->get('chosen_payment_method'); //Dapatkan metode pembayaran yang dipilih

    if( $chosen_payment_method == "paypal" ){

              $label_text = __( "Diskon PayPal" );

              // Jumlah diskon yang berlaku
              $jumlah_diskon = 200; 
        
    }

    else if( $chosen_payment_method == "bacs"){
              
              $label_text = __( "Diskon Transfer Bank Langsung" );

              // Jumlah diskon yang berlaku
              $jumlah_diskon = 150; 
  
    }

    else if( $chosen_payment_method == "cheque"){
       
             $label_text = __( "Cek Diskon Pembayaran" );
    
             // Jumlah diskon yang berlaku
             $jumlah_diskon = 100; 

    }

    kalau tidak {
      
             $label_text = __( "Diskon Tunai Saat Pengiriman" );
    
             // Jumlah diskon yang berlaku
             $jumlah_diskon = 0; 
    }

        
    // Menambahkan diskon
       $cart_object->add_fee( $label_text, -$discount_amount, false );
    
}

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

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

Untuk menambahkan service charge, Anda cukup mengubah tanda salah satu argumen di fungsi add_fee dari “-” menjadi “+” atau tidak ada tanda sama sekali yang berimplikasi positif.

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

fungsi ts_add_discount( $cart_object ) {

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

$layanan_biaya=0;

    // Sebutkan metode pembayaran misal cod, bacs, cek atau paypal


    $cart_total = $cart_object->subtotal_ex_tax;

    $chosen_payment_method = WC()->session->get('chosen_payment_method'); //Dapatkan metode pembayaran yang dipilih

    if( $chosen_payment_method == "paypal" ){

                  $label_text = __( "Biaya Layanan PayPal" );

                  // Biaya layanan yang berlaku
                  $biaya_layanan=200;
        
     }

    else if( $chosen_payment_method == "bacs"){
                  $label_text = __( "Biaya Layanan Transfer Bank Langsung" );

                  // Biaya layanan yang berlaku
                  $layanan_biaya=100;
  
    }

    else if( $chosen_payment_method == "cheque"){
                  $label_text = __( "Cek Biaya Layanan Pembayaran" );
    
                  // Biaya layanan yang berlaku
                  $layanan_biaya=150;
    }

    kalau tidak {
                  $label_text = __( "Biaya Layanan Pengiriman Tunai" );
    
                  // Biaya layanan yang berlaku
                  $layanan_biaya=250;
    }

        
     // Menambahkan biaya layanan
        $cart_object->add_fee( $label_text, $service_charge, false );
    
}

add_action( 'woocommerce_review_order_before_payment', 'ts_refresh_payment_method' );

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

Dengan cara ini, biaya layanan akan diterapkan sesuai dengan metode pembayaran yang dipilih:

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

Menambahkan Diskon untuk metode Pembayaran yang berbeda hanya untuk pengguna yang masuk (melalui Cuplikan Kode)

Jika Anda ingin menawarkan diskon ini hanya untuk pengguna yang masuk (seperti yang diminta melalui komentar di posting ini), Anda hanya perlu menambahkan kondisi yang memeriksa apakah pengguna masuk atau tidak. Ini dapat dilakukan oleh fungsi is_user_logged_in() . Cuplikan kode di bawah ini menunjukkan bagaimana Anda dapat menambahkan persentase diskon untuk metode pembayaran tertentu hanya untuk pengguna yang masuk.

 add_action( 'woocommerce_cart_calculate_fees','ts_add_discount', 20, 1 );
fungsi ts_add_discount( $cart_object ) {
    if ( is_admin() && !defined( 'DOING_AJAX' ) ) return;
  
    if (is_user_logged_in()){
            
            // Sebutkan metode pembayaran misal cod, bacs, cek atau paypal
            $metode_pembayaran = 'paypal';
            // Persentase untuk diterapkan
            $persen = 2; // 2%
            $cart_total = $cart_object->subtotal_ex_tax;
    
            $chosen_payment_method = WC()->session->get('chosen_payment_method'); //Dapatkan metode pembayaran yang dipilih
            if( $payment_method == $chosen_payment_method ){
        
                   $label_text = __( "Diskon PayPal" );
        
                   // Menghitung persentase
                   $diskon = number_format(($cart_total / 100) * $persen, 2);
        
                   // Menambahkan diskon
                   $cart_object->add_fee( $label_text, -$discount, false );
             }
     }
}

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

Anda dapat menggunakan salah satu cuplikan kode di posting ini tergantung pada kebutuhan Anda. Anda hanya perlu menambahkan condition- if (is_user_logged_in()) di dalam cuplikan kode itu jika Anda ingin membatasi ini hanya untuk pengguna yang masuk saja.

Menambahkan Biaya atau Diskon untuk berbagai metode Pembayaran melalui Plugin

Jika Anda tidak ingin menambahkan potongan kode, ada jalan keluar yang mudah untuk mencapai hal yang sama – plugin! Ada plugin gratis dan berbayar yang menawarkan fitur berbeda.

  • Biaya dan Diskon Berbasis Gateway Pembayaran untuk WooCommerce
    Ini adalah plugin gratis dari kami yang memungkinkan Anda menambahkan biaya, diskon, pajak, dll. Dan bahkan menetapkan jumlah keranjang minimum dan maksimum sebagai kriteria untuk hal yang sama. Anda bahkan dapat membulatkan biaya setelah menerapkan diskon. Dan Anda dapat melakukan semua ini dengan antarmuka yang mudah digunakan yang dapat diakses melalui dasbor:

    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

  • Diskon Per Metode Pembayaran untuk WooCommerce (Gratis)
    Ini adalah plugin gratis oleh WPCodelibrary yang menyediakan antarmuka sederhana di dalam Dashboard WordPress Anda untuk menetapkan diskon untuk metode pembayaran default yang disediakan oleh WooCommerce. Namun tidak memiliki fitur untuk menambahkan biaya layanan atau biaya. Screenshot of plugin Discount Per Payment Method - add charges or discounts for different payment methods in WooCommerce

  • Biaya dan Diskon Berbasis Gateway Pembayaran untuk WooCommerce ($39)
    Plugin premium dari kami ini hadir dengan serangkaian fitur di mana Anda dapat menambahkan biaya serta diskon untuk metode pembayaran yang berbeda berdasarkan negara, negara bagian, kategori produk, dll. Selain itu, Anda juga dapat menerapkan pajak atas biaya (tidak termasuk biaya pengiriman ) menggunakan plugin. Antarmukanya sederhana dan mudah digunakan, dan Anda juga dapat menerapkan diskon dan biaya yang berbeda untuk masing-masing produk.