Guides

Ajouter la saisie semi-automatique d'adresses à un formulaire de commande

Les formulaires de commande échouent plus souvent sur les champs d'adresse que sur n'importe quel autre champ, généralement parce qu'un client fait une faute de frappe dans un nom de rue ou oublie un numéro d'appartement. Proposer de vraies adresses pendant la saisie règle l'essentiel de ces problèmes avant qu'ils ne se transforment en livraison échouée.

La requête de saisie semi-automatique

L'endpoint /v1/autocomplete accepte un texte partiel et une limite sur le nombre de suggestions à renvoyer. Appelez-le pendant que le client tape, dès qu'il a saisi quelques caractères.

GET /v1/autocomplete?q=221B Baker&limit=5
{
  "status": "ok",
  "query": "221B Baker",
  "suggestions": [
    {"text": "221B Baker Street, London, UK", "place_id": "abc123"},
    {"text": "221B Baker Avenue, Springfield", "place_id": "abc124"}
  ]
}

De la suggestion à l'adresse complète

Une suggestion est un libellé court accompagné d'un place_id, pas une adresse complète. Une fois que le client en a choisi une, résolvez-la en adresse complète avec ses composants et ses coordonnées en transmettant le texte de la suggestion à /v1/forward. C'est ce second appel qui remplit les champs rue, ville, région et code postal de votre formulaire.

GET /v1/forward?q=221B Baker Street, London, UK&limit=1

C'est dans cette seconde requête qu'apparaît réellement l'objet components, puisque /v1/autocomplete ne renvoie jamais qu'un libellé texte et un place_id, jamais le détail de la rue, de la ville et du code postal. Sauter cette étape et essayer d'analyser vous-même le texte de la suggestion est plus fragile qu'il n'y paraît, car le format varie selon les pays.

Garder un nombre de requêtes raisonnable

Envoyer une requête à chaque frappe fait vite grimper le total sur une page de commande très fréquentée. Appliquez un délai (debounce) au champ pour qu'une requête ne parte qu'après une courte pause dans la saisie du client, et ignorez les saisies de moins de trois ou quatre caractères, pour lesquelles les suggestions ne sont de toute façon pas utiles. Chaque appel de saisie semi-automatique et chaque appel de géocodage direct qui suit compte comme une requête dans votre quota quotidien : un champ avec debounce sur une boutique très fréquentée peut donc rester largement dans les 2 500 requêtes gratuites par jour incluses avec chaque clé.

Gérer l'absence de correspondance

Un tableau de suggestions vide est une réponse normale, pas une erreur. Laissez le client continuer à taper et basculez sur un simple champ d'adresse en texte libre si rien d'utile ne revient après quelques caractères, plutôt que de bloquer l'envoi du formulaire tant qu'aucune suggestion n'a été choisie.

Une erreur à éviter

Considérer une suggestion cliquée comme une adresse finale et validée est un raccourci courant qui pose problème plus tard. Un client peut sélectionner une suggestion puis continuer à modifier le champ, en changeant un numéro de rue ou en ajoutant un numéro d'appartement que la suggestion d'origine ne comportait pas. Résolvez toujours le texte final du champ via /v1/forward au moment de l'envoi, et pas seulement au moment où une suggestion a été cliquée, afin que l'adresse enregistrée corresponde à ce qui figure réellement dans le champ.

Si votre formulaire de commande recueille aussi un code postal séparément, un appel rapide à /v1/postcode une fois l'adresse résolue est un moyen peu coûteux de repérer un code postal qui ne correspond pas au reste de l'adresse, avant que les deux ne soient envoyés ensemble et ne provoquent une erreur d'expédition par la suite.

La saisie semi-automatique ne remplace pas la validation, elle réduit simplement les risques qu'une adresse erronée atteigne votre système de commandes. Consultez la documentation de la saisie semi-automatique d'adresses pour la liste complète des paramètres avant de l'intégrer à votre parcours de commande.