Adrescheck via de PostNL API

Wat kun je met een adressen-check op je website? Om er zeker van te zijn dat je klant hun adresgegevens goed invullen (en met name de straatnaam!), kun je op basis van postcode en huisnummer de rest van de gegevens er automatisch bij laten zoeken in plaats van dat de klant deze zelf moet aanvullen. Er zijn verschillende spelers op de markt die zich bezig houden met een dergelijke adresvalidatie, zoals Pro6PP en (uiteraard!) PostNL.
De adressencheck van PostNL kent eigenlijk 3 smaken: Nederland, Benelux en Internationaal. Als je PostNL pakketklant bent, dan is het gebruik van de Nederlandse API helemaal gratis en het gebruik van de overige twee leuk geprijsd. Maar wat is dan het verschil tussen de Nederlandse en de Benelux-variant? De Benelux-API geeft net iets meer gegevens terug, zoals gemeente en provincie, maar ook lengte- en breedtegraad. Kan best makkelijk zijn als je rapportages over je klanten aan het maken bent.
Alle API’s zijn REST API’s en vrij snel implementeerbaar; vraag hier een API sleutel aan en met wat simpele cURL commando’s kun je meteen aan de slag:
<?php $postNLAPIKEY = "xxxxxx"; $postcode = preg_replace('/[^a-zA-Z0-9]/', '', $_GET['pc']); $housenumber = (int)$_GET['hn']; if(isset($_GET['tv']) && !empty($_GET['tv'])) { $addition = $_GET['tv']; } else { $addition = ""; } if(strlen($postcode)==6) //Nederlandse postcodes zijn zonder spaties 6 karakters lang { $postData = array(); $postData['CountryIso'] = 'NL'; $postData['PostalCode'] = $postcode; $postData['HouseNumber'] = $housenumber; if(strlen($addition)>0) { $postData['HouseNumberAddition'] = $addition; } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://api.postnl.nl/address/benelux/v1/validate'); //endpoint voor de Nederlandse API = https://api.postnl.nl/address/national/v1/validate //endpoint voor de Internationale API = https://api.postnl.nl/address/international/v1/validate curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'apikey: '.$postNLAPIKEY )); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData)); $response = json_decode(curl_exec($ch),true); $response = array_filter($response); print_r($response); curl_close($ch); } else { echo "postcode onjuist..."; } ?>