Cycle de vie d'une commande (après l'achat)

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_number et tracking_url.
  • Commande livrée : événement déclenché lorsque les articles sont livrés au destinataire.

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 tableau fulfillment.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 total et fulfilled (où fulfilled représente les articles livrés), conformément à la spécification UCP :

    • processing : lorsque fulfilled est égal à 0 et total > 0 (par exemple, total: 2, fulfilled: 0).
    • partial : lorsque fulfilled est supérieur à 0, mais inférieur à total (par exemple, total: 2, fulfilled: 1).
    • fulfilled : lorsque fulfilled est égal à total et que total > 0 (par exemple, total: 2, fulfilled: 2).
    • removed : lorsque total est é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_id ou un id (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, dispute ou cancellation.
  • 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 subtotal et définissez display_text sur "Subtotal (including taxes)".
  • Traitement : incluez une entrée display_text pour les frais de livraison ou de traitement (par exemple, "Shipping").
  • Taxes : omettez les entrées "tax" distinctes du tableau totals.

É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 :