วิธีเพิ่มค่าธรรมเนียมหรือส่วนลดสำหรับวิธีการชำระเงินแบบต่างๆ ใน ​​WooCommerce

เผยแพร่แล้ว: 2019-03-26

เราเห็นในเว็บไซต์อีคอมเมิร์ซว่าด้วยวิธีการชำระเงินแต่ละแบบที่คุณเลือกขณะชำระเงิน มักจะมีค่าบริการหรือแม้แต่ส่วนลดที่เกี่ยวข้อง เป็นที่น่าสังเกตว่าค่าบริการสำหรับเงินสดเมื่อส่งมอบนั้นสูงกว่าวิธีการชำระเงินแบบอื่น เพื่อเพิ่มโอกาสในการชำระเงินล่วงหน้า การชำระเงินล่วงหน้าไม่เพียงช่วยลดความเสี่ยงที่จะไม่ได้รับเงินจากลูกค้าเท่านั้น แต่ยังช่วยรับประกันกระแสเงินสดในธุรกิจอีกด้วย ในกรณีที่ไม่มีค่าบริการที่เกี่ยวข้องกับวิธีการชำระเงิน อาจมีส่วนลดให้เมื่อคุณเลือกชำระเงินด้วยวิธีอื่นนอกเหนือจากการเก็บเงินปลายทาง

คุณยังอาจต้องการเพิ่มส่วนลดสำหรับวิธีการชำระเงินบางวิธี ทั้งนี้ขึ้นอยู่กับรูปแบบหรือโปรโมชั่นที่คุณอาจต้องการดำเนินการ ส่วนลดเป็นสิ่งที่ดึงดูดใจลูกค้าโดยทั่วไป และช่วยในการเพิ่มยอดขาย ในโพสต์นี้ เราจะแสดงให้คุณเห็นถึงวิธีต่างๆ ที่คุณสามารถเพิ่มค่าธรรมเนียมหรือส่วนลดสำหรับวิธีการชำระเงินต่างๆ ใน ​​WooCommerce และทำให้ได้รับประโยชน์เช่นเดียวกัน

การเพิ่มส่วนลดเป็นเปอร์เซ็นต์สำหรับวิธีการชำระเงินต่างๆ ผ่านข้อมูลโค้ด

คุณสามารถทำได้โดยการเพิ่มข้อมูลโค้ดในไฟล์ functions.php ของธีมย่อยของคุณ

รหัสด้านล่างจะเพิ่มส่วนลดให้กับยอดรวมเมื่อเลือก PayPal เป็นวิธีการชำระเงินในหน้าชำระเงินของ WooCommerce โดยการกำหนดค่าเป็น $percent คุณสามารถระบุเปอร์เซ็นต์ของส่วนลดที่คุณต้องการใช้กับวิธีการชำระเงินที่ต้องการได้ วิธีการชำระเงินเริ่มต้นใน WooCommerce คือการโอนเงินผ่านธนาคารโดยตรง (bacs) การชำระเงินด้วยเช็ค (เช็ค) เงินสดในการจัดส่ง (cod) และ PayPal (paypal) โดยมีรหัสระบุไว้ในวงเล็บ

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

ฟังก์ชัน ts_add_discount ( $cart_object ) {

    ถ้า ( is_admin() && ! กำหนด ( 'DOING_AJAX' ) ) ส่งคืน;

    // ระบุวิธีการชำระเงิน เช่น cod, bacs, เช็ค หรือ paypal
    $payment_method = 'เพย์พาล';

    // เปอร์เซ็นต์การสมัคร
    เปอร์เซ็นต์ $% = 2; // 2%

    $cart_total = $cart_object->ผลรวมย่อย_ex_tax;
    
    $chosen_payment_method = WC()->session->get('chosen_payment_method'); //รับวิธีการชำระเงินที่เลือก

    ถ้า( $payment_method == $chosen_payment_method ){
        
                   $label_text = __( "ส่วนลดเพย์พาล" );
        
                   // กำลังคำนวณเปอร์เซ็นต์
                   $ส่วนลด = number_format(($cart_total / 100) * $percent, 2);
        
                   // เพิ่มส่วนลด
                   $cart_object->add_fee( $label_text, -$ส่วนลด, เท็จ );
    }
}

add_action( 'woocommerce_review_order_before_payment', 'ts_refresh_payment_method' );

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

คุณจะต้องมีฟังก์ชันสองอย่างในที่นี้ ฟังก์ชันแรกเพื่อเพิ่มส่วนลดหรือค่าธรรมเนียมที่เหมาะสม และอีกฟังก์ชันหนึ่งเพื่อคอยดูการเปลี่ยนแปลงในการเลือกวิธีการชำระเงินโดยผู้ใช้ ซึ่งเราใช้จาวาสคริปต์ woocommerce_cart_calculate_fees และ woocommerce_review_order_before_payment hooks ถูกใช้เพื่อเพิ่มฟังก์ชันทั้งสองนี้ตามลำดับ

มูลค่าที่วิธีการชำระเงินมีสำหรับการโอนเงินผ่านธนาคารโดยตรง เช็ค เงินสดเมื่อจัดส่ง และ PayPal คือ bacs , เช็ค , cod และ paypal ตามลำดับ ฟังก์ชัน add_fee() เป็นวิธีการที่สร้างขึ้นในคลาส WC_Cart ใน WooCommerce

ซึ่งจะส่งผลให้ยอดส่วนลดถูกหักออกจากยอดรวมย่อย และยอดรวมจะแสดงดังนี้:

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

ด้วยการปรับเปลี่ยนเพียงเล็กน้อย คุณสามารถพูดถึงส่วนลดสำหรับวิธีการชำระเงินหลายวิธีในข้อมูลโค้ดเดียวกันได้:

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

ฟังก์ชัน ts_add_discount ( $cart_object ) {

    ถ้า ( is_admin() && ! กำหนด ( 'DOING_AJAX' ) ) ส่งคืน;
  
    $label_text=__("");
    
    $เปอร์เซ็นต์=0;

    // ระบุวิธีการชำระเงิน เช่น cod, bacs, เช็ค หรือ paypal


    $cart_total = $cart_object->ผลรวมย่อย_ex_tax;
    
    $chosen_payment_method = WC()->session->get('chosen_payment_method'); //รับวิธีการชำระเงินที่เลือก

    ถ้า( $chosen_payment_method == "paypal" ){

               $label_text = __( "ส่วนลดเพย์พาล" );

               // เปอร์เซ็นต์การสมัคร
               เปอร์เซ็นต์ $% = 2; // 2%
        
    }

    อื่น if( $chosen_payment_method == "bacs"){
               $label_text = __( "ส่วนลดการโอนเงินผ่านธนาคารโดยตรง" );

               // เปอร์เซ็นต์การสมัคร
               เปอร์เซ็นต์ $% = 3; // 3%
  
    }

    อื่น if( $chosen_payment_method == "cheque"){
               $label_text = __( "ส่วนลดการชำระเงินด้วยเช็ค" );

               // เปอร์เซ็นต์การสมัคร
               เปอร์เซ็นต์ $% = 2; // 2%
    }

    อื่น {
               $label_text = __( "ส่วนลดเงินสดเมื่อจัดส่ง" );

               // เปอร์เซ็นต์การสมัคร
               เปอร์เซ็นต์ $% = 0; // 0%

    }

     // กำลังคำนวณเปอร์เซ็นต์
        $ส่วนลด = number_format(($cart_total / 100) * $percent, 2);
        
    // เพิ่มส่วนลด
        $cart_object->add_fee( $label_text, -$ส่วนลด, เท็จ );
    
}

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

การเพิ่มจำนวนส่วนลดคงที่สำหรับวิธีการชำระเงินต่างๆ ผ่าน Code Snippets

สมมติว่าคุณต้องการพูดถึงจำนวนเงินแทนที่จะเป็นเปอร์เซ็นต์ คุณสามารถทำได้โดยใช้ข้อมูลโค้ดเดียวกันอีกครั้ง โดยกำจัดขั้นตอนที่คุณคำนวณเปอร์เซ็นต์และยอมรับจำนวนเงินส่วนลดเป็นข้อมูลเข้าตามวิธีการชำระเงินแต่ละวิธี:

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

ฟังก์ชัน ts_add_discount ( $cart_object ) {

    ถ้า ( is_admin() && ! กำหนด ( 'DOING_AJAX' ) ) ส่งคืน;
  
    $label_text=__("");
    $discount_amount=0;

    // ระบุวิธีการชำระเงิน เช่น cod, bacs, เช็ค หรือ paypal


    $cart_total = $cart_object->ผลรวมย่อย_ex_tax;
    $chosen_payment_method = WC()->session->get('chosen_payment_method'); //รับวิธีการชำระเงินที่เลือก

    ถ้า( $chosen_payment_method == "paypal" ){

              $label_text = __( "ส่วนลดเพย์พาล" );

              // จำนวนส่วนลดที่จะใช้
              $discount_amount = 200; 
        
    }

    อื่น if( $chosen_payment_method == "bacs"){
              
              $label_text = __( "ส่วนลดการโอนเงินผ่านธนาคารโดยตรง" );

              // จำนวนส่วนลดที่จะใช้
              $discount_amount = 150; 
  
    }

    อื่น if( $chosen_payment_method == "cheque"){
       
             $label_text = __( "ส่วนลดการชำระเงินด้วยเช็ค" );
    
             // จำนวนส่วนลดที่จะใช้
             $discount_amount = 100; 

    }

    อื่น {
      
             $label_text = __( "ส่วนลดเงินสดเมื่อจัดส่ง" );
    
             // จำนวนส่วนลดที่จะใช้
             $discount_amount = 0; 
    }

        
    // เพิ่มส่วนลด
       $cart_object->add_fee( $label_text, -$discount_amount, false );
    
}

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

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

ในการเพิ่มค่าบริการ คุณเพียงแค่เปลี่ยนเครื่องหมายของหนึ่งในอาร์กิวเมนต์ในฟังก์ชัน add_fee จาก "-" เป็น "+" หรือไม่มีเครื่องหมายใด ๆ ที่แสดงถึงค่าบวก

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

ฟังก์ชัน ts_add_discount ( $cart_object ) {

    ถ้า ( is_admin() && ! กำหนด ( 'DOING_AJAX' ) ) ส่งคืน;
  
$label_text=__("");

$service_charge=0;

    // ระบุวิธีการชำระเงิน เช่น cod, bacs, เช็ค หรือ paypal


    $cart_total = $cart_object->ผลรวมย่อย_ex_tax;

    $chosen_payment_method = WC()->session->get('chosen_payment_method'); //รับวิธีการชำระเงินที่เลือก

    ถ้า( $chosen_payment_method == "paypal" ){

                  $label_text = __( "ค่าบริการเพย์พาล" );

                  // ค่าบริการในการสมัคร
                  $service_charge=200;
        
     }

    อื่น if( $chosen_payment_method == "bacs"){
                  $label_text = __( "ค่าบริการโอนเงินผ่านธนาคารโดยตรง" );

                  // ค่าบริการในการสมัคร
                  $service_charge=100;
  
    }

    อื่น if( $chosen_payment_method == "cheque"){
                  $label_text = __( "ค่าบริการชำระเงินด้วยเช็ค" );
    
                  // ค่าบริการในการสมัคร
                  $service_charge=150;
    }

    อื่น {
                  $label_text = __( "ค่าบริการเก็บเงินปลายทาง" );
    
                  // ค่าบริการในการสมัคร
                  $service_charge=250;
    }

        
     // เพิ่มค่าบริการ
        $cart_object->add_fee( $label_text, $service_charge, เท็จ );
    
}

add_action( 'woocommerce_review_order_before_payment', 'ts_refresh_payment_method' );

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

ด้วยวิธีนี้ จะคิดค่าบริการตามวิธีการชำระเงินที่เลือก:

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

การเพิ่มส่วนลดสำหรับวิธีการชำระเงินต่างๆ สำหรับผู้ใช้ที่เข้าสู่ระบบเท่านั้น (ผ่าน Code Snippets)

หากคุณต้องการเสนอส่วนลดเหล่านี้สำหรับผู้ใช้ที่เข้าสู่ระบบเท่านั้น (ตามที่ร้องขอผ่านความคิดเห็นในโพสต์นี้) คุณต้องเพิ่มเงื่อนไขที่ตรวจสอบว่าผู้ใช้เข้าสู่ระบบหรือไม่ ซึ่งสามารถทำได้โดยฟังก์ชัน is_user_logged_in() ข้อมูลโค้ดด้านล่างแสดงวิธีที่คุณสามารถเพิ่มส่วนลดเป็นเปอร์เซ็นต์สำหรับวิธีการชำระเงินเฉพาะสำหรับผู้ใช้ที่เข้าสู่ระบบเท่านั้น

 add_action( 'woocommerce_cart_calculate_fees','ts_add_discount', 20, 1 );
ฟังก์ชัน ts_add_discount ( $cart_object ) {
    ถ้า ( is_admin() && ! กำหนด ( 'DOING_AJAX' ) ) ส่งคืน;
  
    ถ้า (is_user_logged_in()){
            
            // ระบุวิธีการชำระเงิน เช่น cod, bacs, เช็ค หรือ paypal
            $payment_method = 'เพย์พาล';
            // เปอร์เซ็นต์การสมัคร
            เปอร์เซ็นต์ $% = 2; // 2%
            $cart_total = $cart_object->ผลรวมย่อย_ex_tax;
    
            $chosen_payment_method = WC()->session->get('chosen_payment_method'); //รับวิธีการชำระเงินที่เลือก
            ถ้า( $payment_method == $chosen_payment_method ){
        
                   $label_text = __( "ส่วนลดเพย์พาล" );
        
                   // กำลังคำนวณเปอร์เซ็นต์
                   $ส่วนลด = number_format(($cart_total / 100) * $percent, 2);
        
                   // เพิ่มส่วนลด
                   $cart_object->add_fee( $label_text, -$ส่วนลด, เท็จ );
             }
     }
}

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

คุณสามารถใช้ข้อมูลโค้ดใดก็ได้ในโพสต์นี้โดยขึ้นอยู่กับความต้องการของคุณ คุณต้องเพียงแค่เพิ่มเงื่อนไข - if (is_user_logged_in()) ภายในข้อมูลโค้ดนั้นหากคุณต้องการจำกัดสิ่งนี้ไว้สำหรับผู้ใช้ที่เข้าสู่ระบบเพียงอย่างเดียว

การเพิ่มค่าธรรมเนียมหรือส่วนลดสำหรับวิธีการชำระเงินต่างๆ ผ่านปลั๊กอิน

หากคุณไม่ต้องการเพิ่มข้อมูลโค้ด มีวิธีที่ง่ายในการบรรลุสิ่งเดียวกัน – ปลั๊กอิน! มีทั้งปลั๊กอินฟรีและจ่ายเงินที่มีคุณสมบัติต่างกัน

  • ค่าธรรมเนียมตามเกตเวย์การชำระเงินและส่วนลดสำหรับ WooCommerce
    นี่เป็นปลั๊กอินฟรีของเราที่ให้คุณเพิ่มค่าธรรมเนียม ส่วนลด ภาษี ฯลฯ และแม้กระทั่งกำหนดจำนวนรถเข็นขั้นต่ำและสูงสุดเป็นเกณฑ์สำหรับสิ่งเดียวกัน คุณสามารถปัดเศษค่าธรรมเนียมได้หลังจากใช้ส่วนลด และคุณสามารถทำสิ่งนี้ได้ด้วยอินเทอร์เฟซที่ใช้งานง่ายซึ่งสามารถเข้าถึงได้ผ่านแดชบอร์ด:

    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 (ฟรี)
    นี่เป็นปลั๊กอินฟรีโดย WPColibrary ที่มีอินเทอร์เฟซที่เรียบง่ายภายในแดชบอร์ด WordPress ของคุณเพื่อกำหนดส่วนลดสำหรับวิธีการชำระเงินเริ่มต้นที่ WooCommerce ให้ไว้ อย่างไรก็ตามไม่มีคุณสมบัติในการเพิ่มค่าบริการหรือค่าธรรมเนียม Screenshot of plugin Discount Per Payment Method - add charges or discounts for different payment methods in WooCommerce

  • ค่าธรรมเนียมตามเกตเวย์การชำระเงินและส่วนลดสำหรับ WooCommerce ($39)
    ปลั๊กอินพรีเมียมนี้ของเรามาพร้อมกับคุณสมบัติครบชุด ซึ่งคุณสามารถเพิ่มค่าธรรมเนียมรวมถึงส่วนลดสำหรับวิธีการชำระเงินที่แตกต่างกันตามประเทศ รัฐ หมวดหมู่ผลิตภัณฑ์ ฯลฯ นอกจากนี้ คุณยังสามารถคิดภาษีกับค่าธรรมเนียม (ไม่รวมค่าจัดส่ง) ) โดยใช้ปลั๊กอิน อินเทอร์เฟซเรียบง่ายและเป็นมิตรกับผู้ใช้ นอกจากนี้ คุณยังสามารถใช้ส่วนลดและค่าธรรมเนียมต่างๆ สำหรับแต่ละผลิตภัณฑ์ได้