Slå en virksomhed op på CVR-nummer
Med cURL kan du se HTTP-statuskoden og skelne mellem en ukendt virksomhed og en egentlig fejl.
php
<?php
function get_company(int $cvr): ?array
{
$ch = curl_init("https://apicvr.dk/api/v1/$cvr");
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 15]);
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status === 404) {
return null;
}
if ($status !== 200) {
throw new RuntimeException("CVR-API svarede $status");
}
return json_decode($body, true);
}
$company = get_company(24256790);
echo $company["name"] . ", " . $company["zipcode"] . " " . $company["city"] . PHP_EOL;Søg på virksomhedsnavn
Til hurtige scripts er file_get_contents nok. Brug rawurlencode, så mellemrum og æøå bliver kodet korrekt.
php
<?php
$name = rawurlencode("novo nordisk");
$hits = json_decode(file_get_contents("https://apicvr.dk/api/v1/search/fuzzy/$name"), true);
foreach (array_slice($hits, 0, 5) as $hit) {
echo $hit["cvr_number"] . " " . $hit["name"] . PHP_EOL;
}Håndter fejl
| Status | Betydning |
|---|---|
200 | Virksomheden blev fundet. Svaret er JSON. |
404 | Der findes ingen virksomhed med det CVR-nummer. Body: {"detail": {"error": "NOT_FOUND"}} |
422 | CVR-nummeret er ikke et tal. |
502 | CVR-registret svarede ikke. Prøv igen om lidt. |
Ejere, direktion og reklamebeskyttelse
php
<?php
$company = get_company(24256790);
foreach ($company["ejere"] as $owner) {
echo $owner["name"] . " " . $owner["ownership_range"] . PHP_EOL;
}
foreach ($company["direktion"] as $person) {
echo $person["role"] . ": " . $person["name"] . PHP_EOL;
}
if ($company["protected"]) {
echo "Reklamebeskyttet" . PHP_EOL;
}Tjek altid
protected, før du bruger data til markedsføring. Er feltet true, har virksomheden frabedt sig reklamehenvendelser.Ofte stillede spørgsmål
Virker det med Laravel og Symfony?
Ja. Brug Laravels Http::get() eller Symfonys HttpClient på samme URL. Svaret er almindelig JSON.
Bør jeg cache svarene?
Ja, hvis du slår de samme virksomheder op tit. Virksomhedsdata ændrer sig sjældent, så en cache på et par timer er fin.