WooCommerce: Deaktiver Klarna betalingsgateway efter land eller valuta
Jeg har for en kunde mødt dette senarie. Klarna Bank siger “Vi tilbyder ikke Klarna i Canada eller USA til din betalingsløsning i øjeblikket, det er derfor, at US/CA-kunder ikke kan betale med Klarna” Derudover siger Klarna følgende: “Du har følgende markeder tilgængelige på din konto: AT, BE, DK, FR, DE, IT, NL, ES. Derudover accepterer vi IKKE USD som valuta, lige meget hvor.”
I dette tilfælde vil vi altså gerne deaktivere Klarna Gateway for de kunder som ikke bor i de nævnte lande, altså ikke kun Canada og USA. Nu tager jeg lige Klarna Bank som eksempel men uanset valgte betalingsløsning er dette meget almindeligt set for alle dem, der handler internationalt, at ikke alle lande eller valutaer kan accepteres.
Jeg har lavet dette lille kodestykke som gør at Klarna gateway kun bliver vist til de accepterede lande og hvis kunden ikke har valgt USD som valuta. Kodestykket skal formentilg tilpasses til din løsning, så det matcher dit problemstilling. Du skal bruge slug-navnet for den valgte gateway løsning du ønsker at deaktivere (her vist [‘klarna’]) og sluggen er altså “klarna”. I de to arrays skal du indtaste henholdsvis de valutaer som IKKE accepteres og derudover de lande hvor betalingsløsningen accepteres. PHP-kodestykket skal placeres i WordPress hjemmesidens tema (eller child-tema) functions.php fil.
add_filter('woocommerce_available_payment_gateways', 'Klarna_CCO_woo_filter_gateways', 1);
function Klarna_CCO_woo_filter_gateways($gateway_list) {
if (!isset($gateway_list['klarna']) or is_admin()) return $gateway_list;
$klarnaCountries = ['AT', 'BE', 'DK','FR','DE', 'IT','NL', 'ES']; // insæt tilladte lande
$klarnaValuatas = ['USD']; // indsæt ikke tilladte valutaer
if (in_array(get_woocommerce_currency(), $klarnaValuatas)) {unset($gateway_list['klarna']);} // unset if currency not allowed
if (!in_array(WC()->customer->get_billing_country(), $klarnaCountries)) {unset($gateway_list['klarna']);} //unset gateway if not allowed country
return $gateway_list;
}