Skip to content

Instantly share code, notes, and snippets.

@woogists
Last active November 27, 2022 00:07
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save woogists/f24ba17b9fdc0023cd72c95520f80723 to your computer and use it in GitHub Desktop.
Save woogists/f24ba17b9fdc0023cd72c95520f80723 to your computer and use it in GitHub Desktop.
[Frontend Snippets][Add a surcharge to cart and checkout] Add a percentage based surcharge to all transactions
/**
* Add a 1% surcharge to your cart / checkout
* change the $percentage to set the surcharge to a value to suit
*/
add_action( 'woocommerce_cart_calculate_fees','woocommerce_custom_surcharge' );
function woocommerce_custom_surcharge() {
global $woocommerce;
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
$percentage = 0.01;
$surcharge = ( $woocommerce->cart->cart_contents_total + $woocommerce->cart->shipping_total ) * $percentage;
$woocommerce->cart->add_fee( 'Surcharge', $surcharge, true, '' );
}
@digitalchild
Copy link

This should be updated to use WC() instance instead of the global $woocommerce

@tremblayly
Copy link

Can this be used, say to offer customers an option to purchase shipping insurance, where if they check to add insurance, the cart/checkout will add a 2.5% surcharge (for insurance) to the order.

@helgatheviking
Copy link

helgatheviking commented Jul 1, 2020

/**
 * Add a 1% surcharge to your cart / checkout
 * change the $percentage to set the surcharge to a value to suit
 */
add_action( 'woocommerce_cart_calculate_fees','woocommerce_custom_surcharge' );
function woocommerce_custom_surcharge() {

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

	$percentage = 0.01;
	$surcharge = ( WC()->cart->get_cart_contents_total() + WC()->cart->get_shipping_total()) * $percentage;	
	WC()->cart->add_fee( __( 'Surcharge', 'text-domain' ), $surcharge, true, '' );

}

@fdeross
Copy link

fdeross commented Oct 28, 2020

@helgatheviking This code is causing a syntax error.

syntax error, unexpected 'get_cart_contents_total' (T_STRING)

@helgatheviking
Copy link

@fdeross looks like a copy/paste fail on my part. check the update.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment