Validera en order med Klarna Checkout – så här förhindrar du köp till kunder under 18 år

I vårt plugin till Klarna Checkout för WooCommerce finns en funktion dold i inställningarna som många kanske inte är bekanta med. Inställningen kallas Check items stock and valid shipping method during checkout (ett alldeles för långt namn, jag vet).

Kontrollera lager och fraktsätt

Genom att aktivera denna funktion görs en kontroll efter att kunden har klickat på Köp-knappen i Klarna checkout-kassan, men före redirecten till tacksidan sker. I detta anrop kontrolleras att produkterna i ordern fortfarande finns i lager samt att det finns ett tillgängligt leveranssätt.

Det här borde kanske vara en obligatorisk funktion i pluginet men i och med att den har tillkommit i Klarnas API efter att modulen först lanserades, samt att denna funktion kräver https, har vi lagt till den som en valbar setting.

Hook för egen validering

I den här kontrollen har vi även inkluderat action hooken kco_validate_checkout. Det innebär att du kan utföra egna kontroller och därmed förhindra slutförandet av ett köp samt via en notis i kassan visa kunden orsaken till varför köpet inte kunde genomföras.

Ett exempel när det här skulle kunna vara användbart är om du exempelvis säljer produkter där kunden måste vara över en viss ålder för att få köpa.

Tillåt bara köp till kunder över 18 – så gör du

För att skapa en kontroll där kunden måste vara minst 18 år för att genomföra ett köp så skulle man behöva göra på följande vis.

1. Erbjud inte köp utan att ange personnummer

Klarna har en parameter som kan skickas in i order-objektet vilket gör det obligatoriskt för kunden att ange sitt personnummer i samband med köp. Detta görs genom att modifiera ordern via filtret kco_create_order. Koden för detta ser ut på följande sätt:

2. Validera kundens ålder

När Klarna triggar validerings-callbacken lyssnar Klarna-pluginet på den. I denna lyssnare triggas hooken kco_validate_checkout. Den använder vi sedan för att kontrollera kundens ålder och vidtar åtgärder om så behövs. Koden ser ut på följande vis:

Vad vi gör i ovanstående kod är att hämta ut kundens födelsedatum ($data[customer][date_of_birth]) som returneras i orderdatan ($data) från Klarna. Om kunden är under 18 år så skickar vi kunden vidare till kassasidan igen, men med query-strängen under_age tillagd till URL’en.

3. Visa en notis om kunden är under 18

I det tredje och sista steget visar vi en notis i kassan om kunden är under 18 år. Detta gör vi i action hooken klarna_before_kco_checkout genom att kontrollera om under_age finns som en GET-parameter.

Ovanstående tre kodexempel samlas företrädelsevis ihop till ett eget plugin, men kan även läggas till temats functions.php om man hellre vill det.

Tänk på att du måste ha https på din webbplats plus att settingen Check items stock and valid shipping method during checkout måste vara ikryssad för att det här ska fungera.

Lycka till med kodandet!

Inlägget gjort
Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *