Une fois le paiement effectué et la commande passée, vous devez envoyer des mises à jour d'état à Google à l'aide du webhook de commande. La transmission de ces événements permet de s'assurer que le suivi, la livraison et les retours de commande sont fidèlement reportés sur la page Mes commandes du consommateur.
Point de terminaison du webhook
Pour envoyer les mises à jour de commande, envoyez une requête POST contenant la charge utile complète de l'entité de commande au point de terminaison suivant :
POST https://shoppingdataintegration.googleapis.com/v1/webhooks/partners/PARTNER_ID/events/order?key=API_KEY
Google vous transmettra un PARTNER_ID et un API_KEY spécifiques lors de l'intégration.
Fournissez la clé API de l'une des deux manières suivantes :
- En tant que paramètre de requête d'URL :
?key=API_KEY - À l'aide de l'en-tête HTTP :
X-Goog-Api-Key: API_KEY
Événements de mise à jour de commande obligatoires
Vous devez signaler les changements d'état suivants pour les commandes :
- Commande créée : événement déclenché immédiatement après la confirmation de la commande (
status: processing). - Commande expédiée : événement déclenché lorsque les articles de la commande quittent l'entrepôt.
Nécessite
tracking_numberettracking_url. - Commande livrée : événement déclenché lorsque les articles sont livrés au destinataire.
Événements de mise à jour de commande recommandés
Pour offrir une expérience utilisateur optimale, nous vous recommandons également d'envoyer des mises à jour pour les événements suivants :
Événements d'ajustement :
dispute: lorsqu'un client conteste un débit.
Événements de traitement :
canceled: lorsqu'un traitement est annulé (envoyé dans le tableaufulfillment.events).
Logique de commande et mise en correspondance des états
Pour afficher correctement la page "Mes commandes", Google s'appuie sur une logique de mise en correspondance spécifique dans votre charge utile.
Exigences concernant les éléments
- Les éléments ne doivent pas être vides et doivent inclure des informations produit
item. L'état d'un élément doit refléter précisément les quantités
totaletfulfilled(oùfulfilledreprésente les articles livrés), conformément à la spécification UCP :processing: lorsquefulfilledest égal à 0 ettotal> 0 (par exemple,total: 2,fulfilled: 0).partial: lorsquefulfilledest supérieur à 0, mais inférieur àtotal(par exemple,total: 2,fulfilled: 1).fulfilled: lorsquefulfilledest égal àtotalet quetotal> 0 (par exemple,total: 2,fulfilled: 2).removed: lorsquetotalest égal à 0 (par exemple,total: 0,fulfilled: 0).
Événements d'ajustement
Tous les événements impliquant un mouvement d'argent doivent être envoyés dans le tableau adjustments.
cancellation: lorsqu'une commande entière ou des articles spécifiques d'une commande sont annulés avant d'être traités.return: lorsque des articles de la commande sont retournés par le client après leur traitement.refund: lorsqu'un remboursement est émis pour une commande ou des articles spécifiques.
Commandes de plusieurs articles
Les sections suivantes expliquent comment les commandes et les colis comportant plusieurs articles sont regroupés et suivis.
Regroupement de colis de plusieurs articles
Les articles de la page "Mes commandes" sont regroupés par colis (qui ont le même tracking_url). Si un colis fait l'objet d'un retour partiel, les articles retournés sont placés dans une section distincte de la page "Mes commandes".
État du colis
L'état affiché pour le colis est l'un des suivants : "Commandé", "Expédié", "Livré", "Retourné", "Remboursé" ou "Annulé". Les états des colis sont déterminés par l'attribut type des événements fulfillment et des objets adjustments.
Comment l'état du colis est-il déterminé ?
Si un événement d'ajustement comporte status: completed, le colis affichera alors l'état correspondant ("Retourné", "Remboursé" ou "Annulé"), selon le type d'événement d'ajustement.
| Propriétés de l'événement d'ajustement | État du colis |
|---|---|
type: return et status: completed |
Retourné |
type: refund et status: completed |
Remboursé |
type: cancellation et status: completed |
Annulé |
S'il n'y a aucun événement d'ajustement, l'état dépendra alors du type d'événement de traitement :
| Propriétés de l'événement de traitement | État du colis |
|---|---|
type: shipped |
Expédié (livraison prévue d'ici le <date>) |
type: delivered |
Livré |
| Aucun événement de traitement | Commandé |
Règles de validation technique
Pour garantir le bon traitement des mises à jour de commandes, les charges utiles de vos webhooks doivent respecter des règles spécifiques de validation des données et de formatage des prix.
Causes de rejet de la commande
Google valide les charges utiles des webhooks entrants et rejette les mises à jour si elles remplissent l'une des conditions suivantes :
- Le corps de la requête ne contient pas d'entité de commande.
- Il manque un
checkout_idou unid(l'ID de confirmation de commande) dans la charge utile. - La charge utile contient un code temporel antérieur à la dernière mise à jour enregistrée.
- Un événement d'ajustement est envoyé avec un type autre que
refund,return,credit,price_adjustment,disputeoucancellation. - La description de la livraison dépasse 200 caractères.
Tarification toutes taxes comprises
Si vous exercez vos activités sur des marchés où les taxes sont incluses dans le sous-total, l'entité de commande doit inclure les informations suivantes dans le tableau totals pour tous les événements de webhook :
- Sous-total : incluez toutes les taxes applicables dans le montant
subtotalet définissezdisplay_textsur"Subtotal (including taxes)". - Traitement : incluez une entrée
display_textpour les frais de livraison ou de traitement (par exemple,"Shipping"). - Taxes : omettez les entrées
"tax"distinctes du tableautotals.
Étapes suivantes
Pour consulter des exemples de charges utiles JSON, les en-têtes de webhook et les instructions de signature de requête spécifiques à une version, reportez-vous au guide d'implémentation de la version d'UCP concernée :