Disable payment gateways based on country from woocommerce

Disable payment gateways based on country is a task that must do any commerce to sell in many countries. How we know, Woocommerce has fields like country or state in his checkout form and those will help us to do this task.

Before, we have to know the short name of each gateway to we can play with them. Here a table with the gateways more know.

 

Short Code Name Long
cod Cash on Delivery
bacs Direct bank transfer
cheque Check payments
paypal Paypal
stripe Stripe
fullculqi Culqi
payme Payme

 

Now we know about those short names, we can remove or add it how we want. So, we will use the woocommerce_available_payment_gateways  hook to do it.

 

Here are 2 examples of: Disable payment gateways based on country from woocommerce

Example 1: If the country is AR, the we will remove the Paypal Gateway and if the country is the US, we will remove Culqi and Payme Gateway.

<?php
function letsgo_remove_gateways($gateways = []) {

	$country = WC()->customer->get_billing_country();

	switch($country) {
		case 'AR' : unset( $gateways['paypal'] ); break;
		case 'US' : 
			unset($gateways['fullculqi']);
			unset($gateways['payme']);
			break;
	}
	
	return $gateways;
}

add_filter( 'woocommerce_available_payment_gateways', 'letsgo_remove_gateways', 10, 1);

 

Example 2: If the country is the US and the state is Florida ( FL ), use Paypal as the only payment gateway

<?php
function letsgo_add_gateways($gateways = []) {

	$country = WC()->customer->get_billing_country();
	$state = WC()->customer->get_billing_state();
	$aux_gateways = $gateways;

	if( $country == 'US' && $state == 'FL' ) {
		foreach( $aux_gateways as $key => $data ) {
			if( $key == 'paypal' )
				continue;

			unset($gateways[$key]);
		}
	}
	
	return $gateways;
}

add_filter( 'woocommerce_available_payment_gateways', 'letsgo_add_gateways', 10, 1);

 

Remember that you must put this code in your functions.php on your active theme.

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to Top