GuideAdresser
Hvordan ved vi, at leveringsadressen findes, før ordren gemmes?
Et adressefelt med forslag forhindrer de fleste fejl, men det kører i kundens browser, og browseren kan sende hvad som helst. Det sidste tjek hører hjemme på din server, i det øjeblik ordren oprettes. Her er den rækkefølge, der virker: slå det valgte id op, vask det, der er skrevet i hånden, tjek etage og dør, og gem resultatet sammen med ordren.
På denne side6 trin
Hvorfor tjekke igen på serveren
Adressefeltet i checkout giver kunden forslag fra DAR, og når kunden vælger et, får du adressens id’er med i formularen. Men der er flere veje uden om forslagene: browserens autoudfyld, en indsat adresse, en kunde, der skriver videre efter valget, en ordre fra en app eller et andet system. Og et id, der kommer fra browseren, er bare tekst, indtil din server har set det i registret.
Tjekket bruger ét eller to kald pr. ordre. Det er billigt nok til at køre på hver ordre, men lad være med at kalde ved hvert tastetryk — det er feltets opgave.
Kunden valgte et forslag: slå id’et op
Send kun de to id’er fra feltet med formularen — adgangsadresse_id og adresse_id — og lad serveren hente resten. /v1/adresser med adgangsadresseid giver alle boliger på adressen i ét kald: hver med sin egen UUID, etage, dør, BFE-nummer og kommunekode. Findes id’et ikke, er listen tom.
{
"antal": 12,
"side": 1,
"per_side": 1000,
"srid": 4326,
"adresser": [
{
"betegnelse": "Jagtvej 37, 2200 København N",
"adresse_id": "dff92675-2e1d-4f83-8f43-c7a05508da7d",
"etage": null,
"doer": null,
"…": "…"
},
{
"betegnelse": "Jagtvej 37, 1. th, 2200 København N",
"adresse_id": "0a3f509e-f830-32b8-e044-0003ba298018",
"adgangsadresse_id": "0a3f507a-9cb8-32b8-e044-0003ba298018",
"etage": "1",
"doer": "th",
"postnr": "2200",
"kommunekode": "0101",
"bfe_nummer": 9866621,
"koordinat": { "lon": 12.5456551, "lat": 55.6917347 }
}
]
}
Et tomt svar (
antal: 0) betyder, at id’et ikke findes i adresseindekset. Tjek det live, før du afviser — se nedenfor.Find den bolig, kunden valgte, ved at sammenligne med
adresse_idfra formularen. Har kunden ikke valgt en, og er der flere, så spørg.En opgang kan have en adresse uden etage og dør ved siden af lejlighederne. Om den er god nok til en levering, er jeres regel.
Tag dem fra dette svar, ikke fra browseren.
bfe_nummerer nøglen videre til BBR.
curl -G "https://api.grundfast.dk/v1/adresser" \
--data-urlencode "adgangsadresseid=0a3f507a-9cb8-32b8-e044-0003ba298018" \
--data-urlencode "per_side=1000" \
-H "Authorization: Bearer $GRUNDFAST_API_KEY"Adresseindekset bag listen opdateres dagligt fra DAR. En adresse, der er oprettet i dag, kan derfor mangle et døgn. Før du afviser et tomt svar, så slå id’et op med /v1/adresse/:uuid, som spørger DAR direkte: 404 betyder, at der ikke findes en gældende adresse med det id. Det svar har ikke BFE-nummeret, så hent det ved næste tjek.
curl "https://api.grundfast.dk/v1/adresse/0a3f509e-f830-32b8-e044-0003ba298018" \
-H "Authorization: Bearer $GRUNDFAST_API_KEY"Adressen er skrevet i hånden: vask den
Uden id har du kun teksten. Send den til /v1/datavask/adgangsadresser, som finder de adresser i DAR, der ligner mest, og giver det bedste match en kategori: A er sikkert, B er sandsynligt, C er usikkert, og antal: 0 betyder, at intet ligner. Hvordan formularen reagerer på hver af dem — godkend, spørg “mente du …?” eller afvis — står på Adressevalidering. Her er det, serveren gør bagefter.
Datavasken arbejder på vej, husnummer og postnummer. Har kunden skrevet etage og dør, så tjek dem bagefter mod den adgangsadresse, vasken fandt:
const svar = await gf.datavask('Jagtvej 37, 2200 Kbh N');
if (svar.antal > 0 && svar.kategori === 'A') {
const { adresser } = await gf.adresser({
adgangsadresseid: svar.resultater[0]!.adgangsadresse_id,
etage: '1',
doer: 'th',
});
// Én bolig = etage og dør findes. Tom liste = spørg kunden.
}Etage og dør sammenlignes præcist
/v1/adresser skelner ikke mellem store og små bogstaver, men “2.” er ikke “2”, og “2. sal” er ikke en etage. Ryd op i kundens tekst, før du sender den, og sæt kun doer med, hvis kunden har skrevet en — ellers kan du få både th og tv tilbage.Det, der skal gemmes på ordren
| Felt | Hvorfor |
|---|---|
| adgangsadresse_id | Den stabile nøgle til huset eller opgangen. Den bliver ved med at pege på samme sted, også hvis vejen skifter navn. |
| adresse_id | Den konkrete bolig med etage og dør. |
| betegnelse | Adressen, som DAR skrev den, da ordren blev lagt — den tekst, der skal på pakken. |
| bfe_nummer | Ejendommen bag adressen. Kan være null, hvis intet jordstykke dækker adressepunktet. |
| kommunekode | Til alt det, der følger kommunen — ikke postnummeret. |
| status og tidspunkt | ok, overstyret eller ikke tjekket, og hvornår det blev afgjort. |
| kundens egen tekst | Det, kunden skrev, uændret. Du får brug for den ved en klage. |
Gem felterne fra serverens svar, ikke fra formularen. Så kan du senere slå adressen op igen på id og sammenligne uden stavefejl. Gem både postnr og kommunekode som tekst med foranstillet nul.
Når kunden siger, at adressen er rigtig
Et nybyggeri kan være beboet, før adressen står i DAR, og en kunde kan have ret, selv om registret ikke har adressen endnu. Afvis derfor ikke hårdt. Lad kunden bekræfte sin egen tekst, gem ordren med status overstyret og uden id’er, og send den til manuel kontrol. Erstat aldrig kundens tekst med et B- eller C-forslag, som kunden ikke selv har valgt. Kør datavasken igen nogle dage senere: dukker adressen op som et A, kan du sætte id’erne på bagefter.
Når opslaget fejler
- Stop ikke ordren. Svarer API’et ikke inden for et par sekunder, eller med
5xx, så gem ordren med statusikke tjekketog kør tjekket igen senere. Svar med5xxog504lægges tilbage i kvoten. - Tjek formatet først. Et id, der ikke er en UUID, giver
400— og et400tæller som et kald. En simpel kontrol af formatet koster ingenting. 503fra/v1/adresserbetyder, at boligindekset ikke er indlæst. Fald tilbage til/v1/adresse/:uuidfor den bolig, kunden valgte.- Hold nøglen på serveren. Tjekket kører med en hemmelig nøgle i din backend, aldrig i browseren. Se Godkendelse.
Var denne side nyttig?
Ofte stillede spørgsmål
Nej. Forslagene forhindrer de fleste fejl, men browseren kan sende en hvilken som helst tekst og et hvilket som helst id. Først når serveren har slået id’et op i DAR, ved du, at adressen findes.
Fordi det kommer fra browseren. Hent BFE-nummer og kommunekode fra serverens eget opslag, så kan en manipuleret formular ikke skrive forkerte værdier på ordren.
Et valgt forslag er ét kald. En adresse skrevet i hånden er ét kald til datavask og ét mere, hvis etage og dør skal tjekkes. Svar med serverfejl lægges tilbage i kvoten.
Ja. Listen over boliger på adgangsadressen viser alle etager og døre, og med etage og dør som filtre får du præcis én bolig tilbage, hvis den findes.
Lad kunden bekræfte adressen, gem ordren som overstyret uden id’er og kontrollér den manuelt. Kør vasken igen senere og sæt id’erne på, når adressen er registreret.
Prøv det på rigtige data
Gratis op til 5.000 kald/md · intet kreditkort · data fra Klimadatastyrelsen/Datafordeler, CC BY 4.0
Relateret