Guides

Vérifier une adresse par rapport à son code postal

Un client peut saisir une adresse réelle et un code postal réel qui ne vont pas ensemble, le plus souvent en inversant des chiffres ou en recopiant un ancien code postal avec une nouvelle adresse. Aucun des deux champs pris isolément ne révèle le problème, puisque chacun est valide en lui-même.

Résoudre chaque champ séparément

Géocodez l'adresse complète avec /v1/forward pour voir à quel code postal elle correspond réellement, et recherchez séparément le code postal saisi par le client avec /v1/postcode pour voir quelle zone il couvre.

GET /v1/forward?q=10 Downing Street, London&limit=1
{
  "status": "ok",
  "results": [
    {"formatted": "10 Downing Street, London, UK", "lat": 51.5033, "lon": -0.1276, "type": "address", "precision": "house", "confidence": 0.96, "place_id": "op678", "components": {"postcode": "SW1A 2AA", "city": "London"}}
  ]
}
GET /v1/postcode?code=SW1A 1AA&country=GB
{
  "status": "ok",
  "postcode": "SW1A 1AA",
  "country_code": "GB",
  "results": [{"lat": 51.5014, "lon": -0.1419, "components": {"city": "London", "region": "Greater London"}}]
}

Comparer les deux résultats

Si le composant code postal issu de la recherche d'adresse ne correspond pas au code postal saisi par le client, comme dans cet exemple, c'est une incohérence qui mérite d'être signalée, même si l'adresse et le code postal se sont révélés réels chacun de leur côté. Comparer directement les deux composants est plus fiable que de comparer la distance entre les deux jeux de coordonnées, car la zone d'un code postal peut être assez petite pour que même une véritable correspondance ne tombe pas exactement sur les coordonnées de l'adresse.

Deuxième exemple : une incohérence plus importante à repérer plus tôt

La même vérification détecte aussi une erreur bien plus évidente : un code postal saisi pour un pays ou une région totalement différents de ceux de l'adresse elle-même, par exemple un code au format britannique associé à une adresse qui se situe en réalité dans un autre pays. Comparer le composant pays du résultat d'adresse avec le paramètre country utilisé pour la recherche par code postal, avant même d'en arriver à la comparaison plus détaillée des codes postaux, est une première vérification peu coûteuse qui écarte tôt ce type d'erreur plus grossière.

Que faire en cas d'incohérence

Montrez les deux valeurs côte à côte au client et demandez-lui de confirmer laquelle est correcte, plutôt que d'en choisir une en silence ou de refuser purement et simplement la commande. Un chiffre inversé se corrige facilement une fois signalé, et le véritable cas limite où un code postal couvre légitimement une frontière entre deux valeurs couramment utilisées est assez rare pour être traité par une rapide confirmation manuelle.

Une erreur courante à éviter

Ne comparez pas directement les deux jeux de coordonnées avec un seuil de distance à la place d'une comparaison des composants code postal eux-mêmes. La zone d'un code postal peut être assez petite géographiquement pour que même une correspondance parfaitement correcte présente une certaine distance entre le point représentatif du code postal et les coordonnées précises du bâtiment, et un code de petite zone peut aussi être assez étendu géographiquement pour qu'une paire réellement incohérente reste dans un seuil de distance tolérant. Comparer le texte du code postal lui-même est une vérification plus directe et plus fiable que de tenter de déduire une correspondance à partir d'une distance.

Un cas limite à prévoir

La zone d'un code postal située juste à la frontière entre deux régions administratives peut légitimement renvoyer un ensemble de composants légèrement différent selon l'endpoint qui l'a résolue, même lorsque les deux sont corrects. Traitez une correspondance textuelle proche mais pas exacte, par exemple une différence portant uniquement sur l'écriture d'un nom de région, avec plus de souplesse qu'un code postal entièrement différent.

Vérifier de nombreuses commandes à la fois

Pour un lot de commandes existantes plutôt qu'une seule nouvelle soumission, les deux endpoints acceptent un tableau en POST groupé : un arriéré de commandes peut donc être vérifié en envoyant les adresses dans une requête groupée à /v1/forward et les codes postaux dans une autre requête groupée à /v1/postcode, puis en comparant les deux tableaux de résultats position par position.

Le coût en requêtes

Cette vérification utilise deux requêtes par commande, une pour l'adresse et une pour le code postal, toutes deux décomptées de votre quota quotidien comme n'importe quelle autre recherche. C'est un coût raisonnable pour repérer une erreur qui se traduirait sinon par un échec de livraison.

Repérer un code postal incohérent avant l'expédition d'une commande vaut bien la seconde requête nécessaire à la vérification. Le détail des deux endpoints figure dans la documentation du géocodage direct et dans la documentation de la recherche par code postal.