Black Friday & Cyber Monday SUPER SALE ALL WEEK:
Grab 40% OFF on plugins
Days
Hours
Minutes
Seconds

How to Add a Product to the Cart and Offer a Discount Based on the Chosen Payment Method in WooCommerce?

Whether you’re running promotions or BOGO offers, every touchpoint is crucial for delighting customers with enticing deals. In this post, we’ll explore how to encourage customers to use a preferred payment method by dynamically adjusting the cart contents and also offering a discount based on the chosen payment method.

Solution: Add a Product to the Cart and Offer a Discount Based on the Chosen Payment Method

The code helps to automatically include a product in the cart with a 50% discount applied to the original product price when a specific payment method is chosen.

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

function ts_add_free_product_fee($cart_object) {
    if (is_admin() && !defined('DOING_AJAX')) return;

    // Define your targeted payment method
    $targeted_payment_method = 'cheque';

    // Define the free product ID
    $free_product_id = 911; // Replace with your actual free product ID
    $discount_percentage = 50; // Replace with the desired discount percentage

    $chosen_payment_method = WC()->session->get('chosen_payment_method');

    // Check if the chosen payment method is the targeted one
    if ($targeted_payment_method === $chosen_payment_method) {
        // Check if the free product is not already in the cart
        if (!wc_find_product_in_cart($free_product_id)) {
            // Add the free product to the cart
            WC()->cart->add_to_cart($free_product_id, 1);
            // Apply the discount to the added free product
            foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {
                if ($free_product_id == $cart_item['product_id']) {
                    $discount_amount = $cart_item['data']->get_price() * $discount_percentage / 100;
                    $cart_item['data']->set_price($cart_item['data']->get_price() - $discount_amount);
                    break;
                }
            }
        }
    } else {
        // Check if the free product is in the cart
        $cart_item_key = wc_find_product_in_cart($free_product_id);
        if ($cart_item_key) {
            // Remove the free product from the cart
            WC()->cart->remove_cart_item($cart_item_key);
        }
    }
}

// Helper function to find a product in the cart
function wc_find_product_in_cart($product_id) {
    foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {
        if ($product_id == $cart_item['product_id']) {
            return $cart_item_key;
        }
    }
    return false;
}

// Add jQuery to refresh payment methods on the checkout page
add_action('woocommerce_review_order_before_payment', 'ts_refresh_payment_methods');
function ts_refresh_payment_methods() {
?>
    <script type="text/javascript">
        (function ($) {
            $(document.body).on('change', 'input[name^="payment_method"]', function () {
                $('body').trigger('update_checkout');
            });
        })(jQuery);
    </script>
<?php
}

Output

When the customer proceeds to the checkout page and selects the pre-defined payment method ‘Cheque’, the specified product in the code will be added to the cart with a 50% discount applied to its original price.

How to Add a Product to the Cart and Offer a Discount Based on the Chosen Payment Method in WooCommerce? - Tyche Softwares

To unlock new dimensions of customer satistisfaction you need to go beyond the standard BOGO offers. Discover how BOGO offers can also be implemented based on ‘N’ number of conditions that will help you to automatically add a product to WooCommerce cart.

Browse more in: Code Snippets, WooCommerce How Tos, WooCommerce Tutorials

Share It:

Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x