Schéma des actions de traitement

Cette page décrit la charge utile du service Web de traitement (Order with Google) lorsque vous utilisez l'API Order with Google intégrée. Pour obtenir une version de ces informations lisible par un ordinateur, vous pouvez télécharger le schéma JSON.

Types de base

Collection

Contient des détails sur la commande, ainsi que si la demande concerne le retrait en magasin ou la livraison. Un panier contient également des informations sur la livraison, un pourboire et l'adresse de livraison. L'objet Cart est défini dans Checkout AppRequest.f Vous incluez une copie du panier dans votre Checkout AppResponse.

Le tableau suivant répertorie les propriétés du type Cart:

Propriété Type Description
@type Const

Type de cet objet. Omettez ce champ si l'objet Cart parent fait partie de ProposedOrder.

Valeur : type.googleapis.com/google.actions.v2.orders.Cart

id String

ID facultatif du panier.

merchant Merchant

Marchand affilié à ce panier.

lineItems List<LineItem>

Obligatoire.

Liste des produits ou services commandés par l'utilisateur.

Doit contenir au moins 1 élément.

promotions List<Promotion>

Promotion appliquée dans ce panier. Une seule promotion est actuellement acceptée.

notes String

Remarques sur la commande ou les instructions de livraison

extension FoodCartExtension

Définit les détails concernant l'utilisateur, tels que les préférences de traitement.

L'exemple suivant illustre un élément Cart:

Exemple 1

{
  "@type": "type.googleapis.com/google.actions.v2.orders.Cart",
  "merchant": {
    "id": "https://www.exampleprovider.com/merchant/id1",
    "name": "Cucina Venti"
  },
  "lineItems": [
    {
      "name": "Sizzling Prawns Dinner",
      "type": "REGULAR",
      "id": "sample_item_offer_id_1",
      "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
      "quantity": 1,
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "16",
          "nanos": 750000000
        }
      },
      "subLines": [
        {
          "note": "Notes for this item."
        }
      ],
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
        "options": [
          {
            "id": "sample_addon_offer_id_1",
            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
            "name": "Honey Mustard",
            "price": {
              "currencyCode": "USD"
            },
            "quantity": 1
          },
          {
            "id": "sample_addon_offer_id_2",
            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
            "name": "BBQ Sauce",
            "price": {
              "currencyCode": "USD",
              "nanos": 500000000
            },
            "quantity": 1
          }
        ]
      }
    }
  ],
  "extension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
    "fulfillmentPreference": {
      "fulfillmentInfo": {
        "delivery": {
          "deliveryTimeIso8601": "P0M"
        }
      }
    },
    "location": {
      "coordinates": {
        "latitude": 37.788783,
        "longitude": -122.41384
      },
      "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
      "zipCode": "94043",
      "city": "Mountain View",
      "postalAddress": {
        "regionCode": "US",
        "postalCode": "94043",
        "administrativeArea": "CA",
        "locality": "Mountain View",
        "addressLines": [
          "1350 Charleston Road"
        ]
      },
      "notes": "Gate code is #111"
    }
  }
}

Exemple 2

{
  "merchant": {
    "id": "https://www.exampleprovider.com/merchant/id1",
    "name": "Falafel Bite"
  },
  "lineItems": [
    {
      "name": "Pita Chips",
      "type": "REGULAR",
      "id": "sample_item_offer_id_1",
      "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
      "quantity": 1,
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "2",
          "nanos": 750000000
        }
      },
      "subLines": [
        {
          "note": "Notes for this item."
        }
      ],
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
        "options": [
          {
            "id": "sample_addon_offer_id_1",
            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
            "name": "Honey Mustard",
            "price": {
              "currencyCode": "USD"
            },
            "quantity": 1
          },
          {
            "id": "sample_addon_offer_id_2",
            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
            "name": "BBQ Sauce",
            "price": {
              "currencyCode": "USD",
              "nanos": 500000000
            },
            "quantity": 1
          }
        ]
      }
    },
    {
      "name": "Chicken Shwarma Wrap",
      "type": "REGULAR",
      "id": "sample_item_offer_id_2",
      "offerId": "https://www.exampleprovider.com/menu/item/offer/id2",
      "quantity": 1,
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "8"
        }
      },
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
      }
    },
    {
      "name": "Greek Salad",
      "type": "REGULAR",
      "id": "sample_item_offer_id_3",
      "offerId": "https://www.exampleprovider.com/menu/item/offer/id3",
      "quantity": 1,
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "9",
          "nanos": 990000000
        }
      },
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
      }
    },
    {
      "name": "Prawns Biryani",
      "type": "REGULAR",
      "id": "sample_item_offer_id_4",
      "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
      "quantity": 1,
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "15",
          "nanos": 990000000
        }
      },
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
      }
    }
  ],
  "extension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
    "fulfillmentPreference": {
      "fulfillmentInfo": {
        "delivery": {
          "deliveryTimeIso8601": "P90M"
        }
      }
    },
    "location": {
      "coordinates": {
        "latitude": 37.788783,
        "longitude": -122.41384
      },
      "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
      "zipCode": "94043",
      "city": "Mountain View",
      "postalAddress": {
        "regionCode": "US",
        "postalCode": "94043",
        "administrativeArea": "CA",
        "locality": "Mountain View",
        "addressLines": [
          "1350 Charleston Road"
        ]
      },
      "notes": "Gate code is #111"
    }
  }
}

Contact

Spécifie les informations concernant la personne qui reçoit la commande. Elle n'est disponible que dans AppResponse.

Le tableau suivant répertorie les propriétés du type Contact:

Propriété Type Description
displayName String

Nom de la personne qui reçoit la commande, comme vous souhaitez qu'elle soit affichée. Utilisez ce champ si firstName et lastName ne sont pas spécifiés.

Exemple : Lovefood Ordering

email String

Adresse e-mail de la personne qui reçoit la commande.

Exemple : ilovefood@example.com

firstName String

Prénom de la personne qui reçoit la commande.

Exemple : Lovefood

lastName String

Nom de la personne qui reçoit la commande.

Exemple : Ordering

phoneNumber String

Numéro de téléphone de la personne qui reçoit la commande, y compris l'indicatif du pays.

Exemple : +16501234567

emailVerified Booléen

Indique si la personne qui reçoit la commande est connectée à son compte Google.

L'exemple suivant illustre un élément Contact:

Exemple

{
  "displayName": "Lovefood Ordering",
  "email": "ilovefood@example.com",
  "phoneNumber": "+16501234567"
}

Message push personnalisé

Contient le OrderUpdate de la requête.

Le tableau suivant répertorie les propriétés du type CustomPushMessage:

Propriété Type Description
orderUpdate OrderUpdate

Obligatoire.

Les informations concernant la commande ont été mises à jour.

L'exemple suivant illustre un élément CustomPushMessage:

Exemple

{
  "orderUpdate": {
    "actionOrderId": "sample_action_order_id",
    "orderState": {
      "state": "IN_TRANSIT",
      "label": "Order is on the way"
    },
    "inTransitInfo": {
      "updatedTime": "2017-07-17T12:00:00Z"
    },
    "updateTime": "2017-07-17T12:00:00Z",
    "orderManagementActions": [
      {
        "type": "CUSTOMER_SERVICE",
        "button": {
          "title": "Contact customer service",
          "openUrlAction": {
            "url": "mailto:support@example.com"
          }
        }
      },
      {
        "type": "EMAIL",
        "button": {
          "title": "Email restaurant",
          "openUrlAction": {
            "url": "mailto:person@example.com"
          }
        }
      },
      {
        "type": "CALL_RESTAURANT",
        "button": {
          "title": "Call restaurant",
          "openUrlAction": {
            "url": "tel:+16505554679"
          }
        }
      }
    ],
    "receipt": {
      "userVisibleOrderId": "userVisibleId1234"
    },
    "infoExtension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
      "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
    }
  }
}

Informations de livraison

Le tableau suivant répertorie les propriétés du type DeliveryInfo:

Propriété Type Description
deliveryTimeIso8601 String

Date et heure de livraison estimées, au format ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" ou format de durée: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Par exemple, PT90M représente une durée de 90 minutes. La valeur par défaut (PT0M) indique que le délai de livraison préféré est le plus rapidement possible. Référence: https://en.wikipedia.org/wiki/ISO_8601#Combine_date_and_time_presentations. Utilisez cette option pour modifier le délai de livraison estimé lors du règlement.

Exemple : PT90M

L'exemple suivant illustre un élément DeliveryInfo:

Exemple

{
  "deliveryTimeIso8601": "PT90M"
}

Disclaimer

Le tableau suivant répertorie les propriétés du type Disclaimer:

Propriété Type Description
predefinedMessage PredefinedMessage

Obligatoire.

Afficher des messages de clause de non-responsabilité prédéfinis lors du règlement.

feeAmount Money

Le partenaire facture au marchand un montant de N pour cette commande.

feeAmountRange FeeAmountRange

Le partenaire facturera au restaurant des frais d'un montant de N à M par commande.

feePercent Numéro

Le partenaire facturera au marchand des frais à N% pour cette commande.

feePercentRange FeePercentRange

Le partenaire facture au marchand des frais de N% à M% par commande.

L'exemple suivant illustre un élément Disclaimer:

Exemple 1

{
  "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER"
}

Exemple 2

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE"
}

Exemple 3

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE",
  "feePercent": 25
}

Exemple 4

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE",
  "feePercentRange": {
    "minFeePercent": 20,
    "maxFeePercent": 30
  }
}

Exemple 5

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE",
  "feeAmount": {
    "currencyCode": "AUD",
    "units": 2,
    "nanos": 500000000
  }
}

Exemple 6

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE",
  "feeAmountRange": {
    "minFeeAmount": {
      "currencyCode": "AUD",
      "units": 2,
      "nanos": 500000000
    },
    "maxFeeAmount": {
      "currencyCode": "AUD",
      "units": 10,
      "nanos": 0
    }
  }
}

Error

Le type Error peut avoir les valeurs suivantes:

  • CLOSED: le restaurant est fermé au moment de la commande.
  • NO_CAPACITY: aucune capacité de service n'est disponible (par exemple, une panne temporaire due aux heures pleines).
  • NO_COURIER_AVAILABLE : impossible de traiter la commande en raison d'un personnel de livraison limité.
  • REQUIREMENTS_NOT_MET : les contraintes concernant l'acceptation de la commande n'ont pas été remplies (taille minimale du panier, par exemple).
  • UNAVAILABLE_SLOT: la commande ne peut pas être livrée à l'avance indiquée par DeliveryInfo ou PickupInfo.
  • OUT_OF_SERVICE_AREA : la commande ne peut pas être livrée à l'adresse de l'utilisateur.
  • PROMO_EXPIRED: impossible de les appliquer, car la promotion a expiré.
  • PROMO_NOT_APPLICABLE : code d'erreur générique pour détecter tous les cas d'échec d'application du code promotionnel, si aucune des autres erreurs de code promotionnel ne correspond.
  • PROMO_NOT_RECOGNIZED : le code promotionnel n'a pas été reconnu.
  • PROMO_ORDER_INELIGIBLE : la commande actuelle n'est pas éligible pour ce bon de réduction.
  • PROMO_USER_INELIGIBLE: l'utilisateur actuel n'est pas éligible pour ce bon de réduction.
  • AVAILABILITY_CHANGED: l'article n'est plus disponible ou le nombre d'articles est insuffisant pour répondre à la demande.
  • INCORRECT_PRICE : erreurs de prix (total ou non).
  • INVALID: une valeur "LineItem", "FulfillmentOption" ou "Promotion" contient des données non valides.
  • NOT_FOUND : impossible de trouver une élément LineLine, FulfillmentOption ou Promotion.
  • PRICE_CHANGED : le prix d'un article a changé.

Plage de frais

Le tableau suivant répertorie les propriétés du type FeeAmountRange:

Propriété Type Description
minFeeAmount Money

Limite inférieure des frais facturés.

maxFeeAmount Money

Limite supérieure du montant facturé.

Plage de frais en pourcentage

Le tableau suivant répertorie les propriétés du type FeePercentRange:

Propriété Type Description
minFeePercent Numéro

Limite inférieure des frais facturés.

maxFeePercent Numéro

Limite supérieure des frais facturés.

FoodCartExtension

Contient des détails sur l'utilisateur, tels que les préférences de traitement.

Le tableau suivant répertorie les propriétés du type FoodCartExtension:

Propriété Type Description
@type Const

Type de cette extension. Ce champ est toujours défini sur "type.googleapis.com/google.actions.v2.orders.FoodCartExtension".

Valeur : type.googleapis.com/google.actions.v2.orders.FoodCartExtension

contact Contact

Coordonnées de la personne qui reçoit la commande. par exemple le nom, le numéro de téléphone et l'adresse e-mail de la personne concernée.

fulfillmentPreference FulfillmentOption

Obligatoire.

Préférence de traitement des utilisateurs.

location Location

Dans le champ RequestRequestMessage, ce champ indique l'adresse de livraison, qui est obligatoire si la commande est destinée à la livraison. Ce champ n'est pas inclus dans le message des commandes à emporter ou à emporter.

L'exemple suivant illustre un élément FoodCartExtension:

Exemple 1

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
  "fulfillmentPreference": {
    "fulfillmentInfo": {
      "delivery": {
        "deliveryTimeIso8601": "P0M"
      }
    }
  },
  "location": {
    "coordinates": {
      "latitude": 37.788783,
      "longitude": -122.41384
    },
    "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
    "zipCode": "94043",
    "city": "Mountain View",
    "postalAddress": {
      "regionCode": "US",
      "postalCode": "94043",
      "administrativeArea": "CA",
      "locality": "Mountain View",
      "addressLines": [
        "1350 Charleston Road"
      ]
    },
    "notes": "Gate code is #111"
  }
}

Exemple 2

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
  "fulfillmentPreference": {
    "fulfillmentInfo": {
      "pickup": {
        "pickupTimeIso8601": "P0M"
      }
    }
  },
  "contact": {
    "displayName": "Lovefood Ordering",
    "email": "ilovefood@example.com",
    "phoneNumber": "+16501234567"
  }
}

FoodErrorExtension

Identifie une ou plusieurs erreurs qui se sont produites lors du traitement d'une requête. Le tableau suivant décrit les champs de type FoodErrorExtension. Les erreurs peuvent être envoyées dans un CheckoutResponse.

Le tableau suivant répertorie les propriétés du type FoodErrorExtension:

Propriété Type Description
@type Const

Obligatoire.

Type de cette extension.

Valeur : type.googleapis.com/google.actions.v2.orders.FoodErrorExtension

foodOrderErrors List<FoodOrderError>

Obligatoire.

Tableau d'objets FoodOrderError décrivant les erreurs qui se sont produites. Une erreur recommandée par panier ou par article.

Doit contenir au moins 1 élément.

correctedProposedOrder ProposedOrder

Obligatoire lorsque foodOrderErrors.error = "UNAVAILABLE_SLOT", "PROMO_EXPIRED", "PROMO_NOT_APPLICABLE", "PROMO_NOT_RECOGNIZED", "PROMO_ORDER_INELIGIBLE", "PROMO_USER_INELIGIBLE", "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "INVALID", "NOT_FOUND", or "PRICE_CHANGED".

Nouvelle commande proposée avec corrections. Renvoyez cet objet s'il existe des erreurs récupérables dans l'élément OfferdOrder d'origine. Par exemple, une modification du prix d'un ou plusieurs articles du panier est une erreur récupérable. Les erreurs récupérables avec une commande OfferdOrder valide sont avancées à l'étape de confirmation, au lieu de demander à l'utilisateur d'examiner son panier.

paymentOptions PaymentOptions

Obligatoire lorsque foodOrderErrors.error = "UNAVAILABLE_SLOT", "PROMO_EXPIRED", "PROMO_NOT_APPLICABLE", "PROMO_NOT_RECOGNIZED", "PROMO_ORDER_INELIGIBLE", "PROMO_USER_INELIGIBLE", "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "INVALID", "NOT_FOUND", or "PRICE_CHANGED".

Options de paiement par défaut sélectionnées pour l'utilisateur.

additionalPaymentOptions List<PaymentOptions>

Autres options de paiement disponibles pour l'utilisateur.

L'exemple suivant illustre un élément FoodErrorExtension:

Exemple

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension",
  "foodOrderErrors": [
    {
      "error": "PRICE_CHANGED",
      "id": "sample_item_offer_id_1",
      "description": "The price has changed.",
      "updatedPrice": {
        "currencyCode": "USD",
        "units": "2",
        "nanos": 750000000
      }
    },
    {
      "error": "PRICE_CHANGED",
      "id": "sample_item_offer_id_2",
      "description": "The price has changed.",
      "updatedPrice": {
        "currencyCode": "USD",
        "units": "8"
      }
    }
  ],
  "correctedProposedOrder": {
    "id": "sample_corrected_proposed_order_id_1",
    "otherItems": [
      {
        "name": "New customer discount",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "-5",
            "nanos": -500000000
          }
        },
        "type": "DISCOUNT"
      },
      {
        "name": "Delivery fee",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "3",
            "nanos": 500000000
          }
        },
        "type": "DELIVERY"
      },
      {
        "name": "Tax",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "1",
            "nanos": 500000000
          }
        },
        "type": "TAX"
      }
    ],
    "cart": {
      "merchant": {
        "id": "https://www.exampleprovider.com/merchant/id1",
        "name": "Falafel Bite"
      },
      "lineItems": [
        {
          "name": "Pita Chips",
          "type": "REGULAR",
          "id": "sample_item_offer_id_1",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "2",
              "nanos": 750000000
            }
          },
          "subLines": [
            {
              "note": "Notes for this item."
            }
          ],
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
            "options": [
              {
                "id": "sample_addon_offer_id_1",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                "name": "Honey Mustard",
                "price": {
                  "currencyCode": "USD"
                },
                "quantity": 1
              },
              {
                "id": "sample_addon_offer_id_2",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                "name": "BBQ Sauce",
                "price": {
                  "currencyCode": "USD",
                  "nanos": 500000000
                },
                "quantity": 1
              }
            ]
          }
        },
        {
          "name": "Chicken Shwarma Wrap",
          "type": "REGULAR",
          "id": "sample_item_offer_id_2",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id2",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "8"
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        },
        {
          "name": "Greek Salad",
          "type": "REGULAR",
          "id": "sample_item_offer_id_3",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id3",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "9",
              "nanos": 990000000
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        },
        {
          "name": "Prawns Biryani",
          "type": "REGULAR",
          "id": "sample_item_offer_id_4",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "15",
              "nanos": 990000000
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        }
      ],
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
        "fulfillmentPreference": {
          "fulfillmentInfo": {
            "delivery": {
              "deliveryTimeIso8601": "P90M"
            }
          }
        },
        "location": {
          "coordinates": {
            "latitude": 37.788783,
            "longitude": -122.41384
          },
          "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
          "zipCode": "94043",
          "city": "Mountain View",
          "postalAddress": {
            "regionCode": "US",
            "postalCode": "94043",
            "administrativeArea": "CA",
            "locality": "Mountain View",
            "addressLines": [
              "1350 Charleston Road"
            ]
          },
          "notes": "Gate code is #111"
        }
      }
    },
    "totalPrice": {
      "type": "ESTIMATE",
      "amount": {
        "currencyCode": "USD",
        "units": "36",
        "nanos": 730000000
      }
    },
    "extension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
      "availableFulfillmentOptions": [
        {
          "fulfillmentInfo": {
            "delivery": {
              "deliveryTimeIso8601": "P90M"
            }
          },
          "expiresAt": "2017-07-17T12:30:00Z"
        }
      ]
    }
  },
  "paymentOptions": {
    "googleProvidedOptions": {
      "tokenizationParameters": {
        "tokenizationType": "PAYMENT_GATEWAY",
        "parameters": {
          "gateway": "stripe",
          "stripe:publishableKey": "pk_live_stripe_client_key",
          "stripe:version": "2017-04-06"
        }
      },
      "supportedCardNetworks": [
        "AMEX",
        "DISCOVER",
        "MASTERCARD",
        "JCB",
        "VISA"
      ],
      "prepaidCardDisallowed": true
    }
  }
}

Extension d'article

Définit des modules complémentaires pour des aliments.

Le tableau suivant répertorie les propriétés du type FoodItemExtension:

Propriété Type Description
@type Const

Obligatoire.

Type de cette extension. Ce champ est toujours défini sur "type.googleapis.com/google.actions.v2.orders.FoodItemExtension".

Valeur : type.googleapis.com/google.actions.v2.orders.FoodItemExtension

options List<FoodItemOption>

Une option peut être un module complémentaire ou un groupe d'extensions contenant un ensemble de modules complémentaires.

L'exemple suivant illustre un élément FoodItemExtension:

Exemple

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
  "options": [
    {
      "id": "sample_addon_offer_id_1",
      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
      "name": "Honey Mustard",
      "price": {
        "currencyCode": "USD"
      },
      "quantity": 1
    },
    {
      "id": "sample_addon_offer_id_2",
      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
      "name": "BBQ Sauce",
      "price": {
        "currencyCode": "USD",
        "nanos": 500000000
      },
      "quantity": 1,
      "subOptions": [
        {
          "id": "10239138",
          "offerId": "912391723",
          "name": "Fries",
          "price": {
            "currencyCode": "USD",
            "units": "2",
            "nanos": 230000000
          },
          "quantity": 1
        }
      ]
    }
  ]
}

Option de l'article

Le tableau suivant répertorie les propriétés du type FoodItemOption:

Propriété Type Description
id String

Identifiant unique attribué par Google. Lorsque vous envoyez une erreur FoodOrderError ou AsyncOrderUpdateRequest, utilisez ce champ pour différencier les cas où un panier contient plusieurs articles avec le même identifiant d'offre.

Exemple : 39231093

offerId String

Identifiant de l'offre pour l'article.

Exemple : 912835081

name String

Nom de l'option.

Exemple : Honey Mustard

price Money
note String

Remarque concernant l'option.

quantity Numéro

Pour les options qui sont des éléments, le nombre d'éléments.

Exemple : 3

subOptions List<FoodItemOption>

Sous-options de l'option, le cas échéant.

Exemple : [ { "id": "71283712", "offerId": "51209121", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "units": "3", "nanos": 780000000 }, "quantity": 2 }, { "id": "102941024", "offerId": "12084102", "name": "Ketchup", "price": { "currencyCode": "USD", "units": "2", "nanos": 980000000 }, "quantity": 6 } ]

L'exemple suivant illustre un élément FoodItemOption:

Exemple 1

{
  "id": "10293231",
  "offerId": "1918491",
  "name": "Honey Mustard",
  "price": {
    "currencyCode": "USD",
    "units": "1",
    "nanos": 250000000
  },
  "quantity": 5
}

Exemple 2

{
  "id": "123166552",
  "offerId": "912849184",
  "name": "Make It A Meal",
  "price": {
    "currencyCode": "USD",
    "units": "3",
    "nanos": 730000000
  },
  "quantity": 1,
  "subOptions": [
    {
      "id": "10239138",
      "offerId": "912391723",
      "name": "Fries",
      "price": {
        "currencyCode": "USD",
        "units": "2",
        "nanos": 230000000
      },
      "quantity": 1
    },
    {
      "id": "57159183",
      "offerId": "81837123",
      "name": "Drink",
      "price": {
        "currencyCode": "USD",
        "units": "3",
        "nanos": 130000000
      },
      "quantity": 1
    }
  ]
}

Erreur de commande

Contient des détails sur les erreurs dans un CheckoutResponse.

Le tableau suivant répertorie les propriétés du type FoodOrderError:

Propriété Type Description
error Error

Obligatoire.

id String

Obligatoire lorsque error = "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "PRICE_CHANGED", "INVALID", or "NOT_FOUND".

Ce champ est obligatoire pour les erreurs au niveau des articles. LineItem.id, attribué par Google, pour les éléments de menu ou FoodItemOption.id pour les modules complémentaires.

description String

Description de l'erreur. Cette description est destinée à la journalisation interne et n'est pas visible par les utilisateurs.

updatedPrice Money

Obligatoire lorsque error = "PRICE_CHANGED".

Nouveau prix d'un article à l'origine de l'erreur. Obligatoire uniquement lorsque l'erreur est "PRICE_CHANGED".

availableQuantity Entier

Obligatoire lorsque error = "INVALID", or "NOT_FOUND".

Nouvelle quantité disponible de l'article à l'origine de l'erreur. Obligatoire uniquement lorsque l'erreur est "INVALID" ou "NOT_FOUND". La valeur doit être "0" pour "INVALID" et "NOT_FOUND".

L'exemple suivant illustre un élément FoodOrderError:

Exemple 1

{
  "error": "CLOSED",
  "description": "This store is currently reachable. Please try again later."
}

Exemple 2

{
  "error": "PRICE_CHANGED",
  "id": "french_fries",
  "description": "The price has changed.",
  "updatedPrice": {
    "currencyCode": "USD",
    "units": "2",
    "nanos": 750000000
  }
}

FoodOrderExtension

Contient des informations de traitement concernant la commande.

Le tableau suivant répertorie les propriétés du type FoodOrderExtension:

Propriété Type Description
@type Const

Type de cette extension. Ce champ est toujours défini sur "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension".

Valeur : type.googleapis.com/google.actions.v2.orders.FoodOrderExtension

availableFulfillmentOptions List<FulfillmentOption>

Représente les options de traitement disponibles pour la commande.

optinForRemarketing Booléen

Demande d'un utilisateur pour activer vos canaux marketing. Par défaut, vous ne pouvez pas envoyer de contenu marketing sans le consentement de l'utilisateur. Si "optinForRemarketing" est défini sur "true", vous pouvez abonner l'utilisateur. Si l'option d'activation du remarketing est "false" ou absente, vous devez conserver la valeur d'état de l'abonnement telle quelle dans votre système. Les utilisateurs ne peuvent pas désactiver la fonctionnalité via Google, mais uniquement via une fonction de désabonnement fournie dans vos canaux marketing. Cet indicateur n'est présent que dans SendOrderRequestMessage.

L'exemple suivant illustre un élément FoodOrderExtension:

Exemple 1

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
  "availableFulfillmentOptions": [
    {
      "fulfillmentInfo": {
        "delivery": {
          "deliveryTimeIso8601": "P0M"
        }
      },
      "expiresAt": "2017-07-17T12:30:00Z"
    }
  ]
}

Exemple 2

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
  "availableFulfillmentOptions": [
    {
      "fulfillmentInfo": {
        "pickup": {
          "pickupTimeIso8601": "P0M"
        }
      },
      "expiresAt": "2020-08-20T11:41:00Z"
    }
  ],
  "optinForRemarketing": true
}

FulfillmentOption (Option de traitement)

Vous pouvez utiliser un objet FulfillmentOption de différentes manières :
  • Dans Checkout AppRequest et Submit AppRequest, Cart.extension.fulfillmentPreference: stocke les préférences de l'utilisateur (livraison ou retrait). Le prix est toujours égal à 0 lorsque la demande de règlement est envoyée.
  • Dans Checkout AppResponse, ProposedOrder.extension.availableFulfillmentOptions : définit une ou plusieurs options de diffusion (actuellement, une seule option est acceptée). Vous spécifiez l'option par défaut en tant que LineItem dans ProposedOrder.otherItems. Le offerId de FulfillmentOption doit correspondre à l'ID de LineItem spécifié dans ProposedOrder.otherItems.

Le tableau suivant répertorie les propriétés du type FulfillmentOption:

Propriété Type Description
offerId String

Identifiant unique de cette option de traitement, le cas échéant.

fulfillmentInfo FulfillmentOptionInfo

Obligatoire.

expiresAt Horodatage ISO

Date/heure d'expiration de cette option de traitement.

price Money

Coût de cette option.

L'exemple suivant illustre un élément FulfillmentOption:

Exemple

{
  "offerId": "offer5",
  "fulfillmentInfo": {
    "pickup": {
      "pickupTimeIso8601": "P0M"
    }
  },
  "expiresAt": "2019-05-02T00:00:00-07:00",
  "price": {
    "currencyCode": "USD",
    "units": "5",
    "nanos": 230000000
  }
}

FulfillmentOptionInfo (Informations sur l'exécution)

Définit les informations liées à FulfillmentInfo.

Le tableau suivant répertorie les propriétés du type FulfillmentOptionInfo:

Propriété Type Description
Exactement l'un des groupes de propriétés suivants.
delivery Groupe 1 DeliveryInfo

Le cas échéant, indique la commande.

pickup Groupe 2 PickupInfo

Le cas échéant, indique une commande à retirer.

Images

Le tableau suivant répertorie les propriétés du type Image:

Propriété Type Description
sourceUrl String

Obligatoire.

URL de l'image. L'image doit mesurer au moins 72 x 72 pixels. Pour des résultats optimaux, utilisez une image d'au moins 216 x 216 pixels. Elle doit faire moins de 6 Mo et 64 mégapixels.

LineItem

Définit le contenu d'un panier (Cart.lineItems) ou les frais supplémentaires pour une commande (ProposedOrder.otherItems).

Le tableau suivant répertorie les propriétés du type LineItem:

Propriété Type Description
id String

Obligatoire lorsque type = "REGULAR".

Pour un élément de ligne dans un panier (OfferdOrder.cart.lineItems[0].id), il s'agit de l'identifiant unique créé par Google lors de la création de la commande. Pour un élément LineItem d'un ProposedOrder (OfferdOrder.otherItems[0].id), utilisé pour ajouter des articles tels que des frais de livraison et des taxes, la valeur de l'identifiant est définie par le fournisseur. Par exemple, un panier contient deux articles identiques avec des instructions de préparation différentes (deux pizzas moyennes avec différentes garnitures, par exemple). Dans ce cas, les deux articles ont le même ID de base d'offre. Lorsque vous envoyez une demande de mise à jour de commande pour indiquer qu'un article a été refusé, utilisez cet identifiant comme identifiant. En d'autres termes, si l'une des pizzas est refusée en raison de l'absence de garniture particulière, elle permet à Google de déterminer l'article de la commande à laquelle vous faites référence. Ce champ est obligatoire sauf dans les autres éléments.

name String

Obligatoire.

Nom de l'élément de campagne. Il s'agit d'une chaîne visible par l'utilisateur et, dans la mesure du possible, dans le cas d'une phrase (par exemple, "Frais de livraison", "Frais de service", "Taxes"). Ce champ est tronqué pour les utilisateurs dans 100 caractères.

type LineItemType

Obligatoire.

quantity Entier

Obligatoire lorsque type = "REGULAR".

Nombre d'articles inclus. Non applicable à OfferdOrder.otherItems.

description String

Description de l'article.

price Price

Obligatoire.

Prix du ou des articles. Cette valeur indique le prix total de tous les produits ou services de cet article. En d'autres termes, ajoutez le coût de tous les modules complémentaires et multipliez-le par la quantité. Par exemple, si un article à 10 € a une quantité égale à 3, le prix est de 30 €. Pour une pizza avec un prix de base de 5 $et un supplément de 1 $, le prix est de 6 $. Pour deux pizzas (quantité = 2) avec un prix de base de 5 $et chacune avec un supplément de 1 $, le prix est de 12 $. Chaque élément de ligne doit avoir un prix, même s'il est en "&0t". Lorsque le type est DISCOUNT, spécifiez la valeur comme étant négative (par exemple, "-2").

subLines List<SublineNote>

Facultatif et valide uniquement si le type est REGULAR. Une note spécifique à l'article de l'utilisateur peut être envoyée dans ce champ pour la demande de règlement et la demande d'envoi de commande. Assurez-vous que le marchand reçoit la note lorsqu'elle est fournie. Il sera dans la requête sous subLines[0].note, qui est la seule valeur fournie dans ce champ lorsqu'elle est présente dans une requête.

Ne doit pas contenir plus d'un élément.

offerId String

Obligatoire lorsque type = "REGULAR".

Identifiant de l'offre pour l'élément MenuMenu. Non applicable à OfferdOrder.otherItems.

extension FoodItemExtension

Définit des modules complémentaires pour des aliments.

L'exemple suivant illustre un élément LineItem:

Exemple 1

{
  "name": "New customer discount",
  "price": {
    "type": "ESTIMATE",
    "amount": {
      "currencyCode": "USD",
      "units": "-5",
      "nanos": -500000000
    }
  },
  "type": "DISCOUNT"
}

Exemple 2

{
  "name": "Pita Chips",
  "type": "REGULAR",
  "id": "sample_item_offer_id_1",
  "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
  "quantity": 1,
  "price": {
    "type": "ESTIMATE",
    "amount": {
      "currencyCode": "USD",
      "units": "2",
      "nanos": 750000000
    }
  },
  "subLines": [
    {
      "note": "Notes for this item."
    }
  ],
  "extension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
    "options": [
      {
        "id": "sample_addon_offer_id_1",
        "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
        "name": "Honey Mustard",
        "price": {
          "currencyCode": "USD"
        },
        "quantity": 1
      },
      {
        "id": "sample_addon_offer_id_2",
        "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
        "name": "BBQ Sauce",
        "price": {
          "currencyCode": "USD",
          "nanos": 500000000
        },
        "quantity": 1
      }
    ]
  }
}

Type d'élément de campagne

Le type LineItemType peut avoir les valeurs suivantes:

  • REGULAR: ligne de commande Applicable à Cart.lineItems.
  • TAX: ligne fiscale. Applicable à OfferdOrder.otherItems.
  • DISCOUNT: élément de campagne avec remise. Notez que le prix doit être négatif. Applicable à OfferdOrder.otherItems.
  • GRATUITY : élément de campagne offert. Généralement réservé pour le "SubmitOrderRequestMessage" d'un conseil sélectionné par l'utilisateur. Applicable à OfferdOrder.otherItems.
  • DELIVERY: élément de campagne de diffusion. Applicable à OfferdOrder.otherItems.
  • SUBTOTAL: élément de campagne du sous-total. Applicable à OfferdOrder.otherItems.
  • FEE: élément de campagne supplémentaire non couvert par les autres types. Applicable à OfferdOrder.otherItems.

Emplacement

Spécifie une adresse pour la commande de repas. Le type Location est utilisé dans un Cart pour indiquer uniquement la destination d'une commande de livraison. Le lieu finalisé est également présent dans TransactionDecisionValue si l'utilisateur passe la commande. Pour les commandes qui spécifient le retrait en magasin, l'emplacement n'est pas du tout inclus (même pas vide).

Le tableau suivant répertorie les propriétés du type Location:

Propriété Type Description
coordinates Coordinates
formattedAddress String

Affiche l'adresse de l'établissement.

Exemple : 1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States

postalAddress PostalAddress
zipCode String

Exemple : 90210

city String

Nom de la ville.

Exemple : Los Angeles

notes String

Remarques sur le lieu (codes de porte, par exemple) Il ne doit pas comporter plus de 500 caractères.

Exemple : Gate code is #111

L'exemple suivant illustre un élément Location:

Exemple

{
  "coordinates": {
    "latitude": 37.788783,
    "longitude": -122.41384
  },
  "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
  "zipCode": "94043",
  "city": "Mountain View",
  "postalAddress": {
    "regionCode": "US",
    "postalCode": "94043",
    "administrativeArea": "CA",
    "locality": "Mountain View",
    "addressLines": [
      "1350 Charleston Road"
    ]
  },
  "notes": "Gate code is #111"
}

Marchand

Le tableau suivant répertorie les propriétés du type Merchant:

Propriété Type Description
id String

Identifiant du marchand. Si spécifié, correspond à avec.Restaurant.@id dans le flux "Restaurant".

Exemple : https://www.exampleprovider.com/merchant/id1

name String

Obligatoire.

Nom visible du marchand.

Exemple : Falafel Bite

L'exemple suivant illustre un élément Merchant:

Exemple

{
  "id": "https://www.exampleprovider.com/merchant/id1",
  "name": "Falafel Bite"
}

Valeur monétaire

Le tableau suivant répertorie les propriétés du type Money:

Propriété Type Description
currencyCode String

Obligatoire.

Code de devise à trois lettres au format ISO 4217.

Exemple : USD

units String

Unités entières du montant. Par exemple, si la valeur currencyCode est "USD", cela signifie que l'unité est "un dollar américain".

Exemple : 36

nanos Entier

Nombre de nano-unités (10^-9) du montant. La valeur doit être comprise entre -999 999 999 et +999 999 999 inclus. Utilisez les règles suivantes: si les unités sont positives, les nano-unités doivent être positives ou nulles. Si les unités sont nulles, les nano-unités peuvent être positives, nulles ou négatives. Si les unités sont négatives, les nano-unités doivent être négatives ou nulles. Par exemple, -1,75 $ est représenté par les unités = -1 et les nano-unités = -750 000 000.

Exemple : 730000000

L'exemple suivant illustre un élément Money:

Exemple 1

{
  "currencyCode": "USD",
  "units": "36",
  "nanos": 730000000
}

Exemple 2

{
  "currencyCode": "EUR",
  "units": "10"
}

Commande

Contient la commande finale, y compris les taxes, les frais et les frais de livraison, ainsi que les informations de paiement. Cet objet est reçu par votre action dans un objet Submit AppRequest.

Le tableau suivant répertorie les propriétés du type Order:

Propriété Type Description
finalOrder ProposedOrder

Obligatoire.

Ordre proposé à l'origine de la campagne.

googleOrderId String

Obligatoire.

ID de commande attribué par Google. Cet identifiant doit être stable tout au long du cycle de vie d'une commande. Les utilisateurs finaux ne peuvent pas voir cet ID.

orderDate Horodatage ISO

Obligatoire.

Date et heure de création de la campagne.

paymentInfo PaymentInfo

Obligatoire.

Informations de paiement correspondant au paiement de cette commande.

L'exemple suivant illustre un élément Order:

Exemple

{
  "finalOrder": {
    "cart": {
      "notes": "Guest prefers their food to be hot when it is delivered.",
      "merchant": {
        "id": "https://www.exampleprovider.com/merchant/id1",
        "name": "Cucina Venti"
      },
      "lineItems": [
        {
          "name": "Sizzling Prawns Dinner",
          "type": "REGULAR",
          "id": "sample_item_offer_id_1",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "16",
              "nanos": 750000000
            }
          },
          "subLines": [
            {
              "note": "Notes for this item."
            }
          ],
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
            "options": [
              {
                "id": "sample_addon_offer_id_1",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                "name": "Honey Mustard",
                "price": {
                  "currencyCode": "USD"
                },
                "quantity": 1
              },
              {
                "id": "sample_addon_offer_id_2",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                "name": "BBQ Sauce",
                "price": {
                  "currencyCode": "USD",
                  "nanos": 500000000
                },
                "quantity": 1
              }
            ]
          }
        }
      ],
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
        "fulfillmentPreference": {
          "fulfillmentInfo": {
            "pickup": {
              "pickupTimeIso8601": "P0M"
            }
          }
        },
        "contact": {
          "displayName": "Lovefood Ordering",
          "email": "ilovefood@example.com",
          "phoneNumber": "+16501234567"
        }
      }
    },
    "otherItems": [
      {
        "name": "Service fee",
        "type": "FEE",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "3",
            "nanos": 500000000
          }
        }
      },
      {
        "name": "Tax",
        "type": "TAX",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "1",
            "nanos": 370000000
          }
        }
      },
      {
        "name": "Tip",
        "type": "GRATUITY",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "2",
            "nanos": 590000000
          }
        }
      }
    ],
    "totalPrice": {
      "type": "ESTIMATE",
      "amount": {
        "currencyCode": "USD",
        "units": "23",
        "nanos": 710000000
      }
    },
    "id": "sample_final_order_id",
    "extension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
      "availableFulfillmentOptions": [
        {
          "fulfillmentInfo": {
            "pickup": {
              "pickupTimeIso8601": "P0M"
            }
          },
          "expiresAt": "2017-07-17T12:30:00Z"
        }
      ],
      "optinForRemarketing": true
    }
  },
  "googleOrderId": "sample_google_order_id",
  "orderDate": "2017-07-17T12:00:00Z",
  "paymentInfo": {
    "displayName": "Visa\u2006****\u20061111",
    "googleProvidedPaymentInstrument": {
      "instrumentToken": "abcd"
    },
    "paymentType": "PAYMENT_CARD"
  }
}

Commande mise à jour

Le tableau suivant décrit les champs du type OrderUpdate, qui sont inclus dans AppResponse.

Le tableau suivant répertorie les propriétés du type OrderUpdate:

Propriété Type Description
actionOrderId String

Obligatoire.

Identifiant unique de la commande dans le système d'intégrateur qui permet d'identifier celle pour laquelle la mise à jour est envoyée. Si confirmation.user_visible_order_id n'est pas fourni au moins une fois dans OrderUpdate pour une commande "CREATED", cet ID sera celui saisi par l'utilisateur affiché dans la fiche de commande Google.

orderState OrderState

Obligatoire.

Nouvel état de la commande.

lineItemUpdates Map<String, LineItemUpdate>
updateTime Horodatage ISO

Obligatoire.

Heure à laquelle la commande a été mise à jour.

orderManagementActions List<OrderManagementAction>

Actions post-commande, comme contacter l'assistance et afficher les détails de la commande.

Doit contenir au moins 1 élément et 6 éléments au maximum.

rejectionInfo RejectionInfo

Obligatoire lorsque orderState.state = "REJECTED".

cancellationInfo CancellationInfo

Obligatoire lorsque orderState.state = "CANCELLED".

inTransitInfo InTransitInfo

Ce champ a été abandonné.

fulfillmentInfo FulfillmentInfo

Ce champ a été abandonné.

receipt Receipt

Obligatoire lorsque orderState.state = "CONFIRMED", "IN_PREPARATION", or "READY_FOR_PICKUP".

Fournissez l'ID de commande visible par l'utilisateur dans un reçu.

totalPrice Price

Prix total de la commande.

infoExtension FoodOrderUpdateExtension

Définit plus de détails sur la mise à jour de la commande, comme l'intervalle de livraison estimé ou de retrait.

L'exemple suivant illustre un élément OrderUpdate:

Exemple

{
  "actionOrderId": "sample_action_order_id",
  "orderState": {
    "state": "CONFIRMED",
    "label": "Provider confirmed"
  },
  "totalPrice": {
    "type": "ESTIMATE",
    "amount": {
      "currencyCode": "USD",
      "units": "41",
      "nanos": 600000000
    }
  },
  "lineItemUpdates": {
    "sample_item_id_1": {
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "3",
          "nanos": 500000000
        }
      },
      "reason": "This item has an updated price."
    }
  },
  "receipt": {
    "userVisibleOrderId": "userVisibleId1234"
  },
  "updateTime": "2017-07-17T12:00:00Z",
  "orderManagementActions": [
    {
      "type": "CUSTOMER_SERVICE",
      "button": {
        "title": "Contact customer service",
        "openUrlAction": {
          "url": "mailto:support@example.com"
        }
      }
    },
    {
      "type": "EMAIL",
      "button": {
        "title": "Email restaurant",
        "openUrlAction": {
          "url": "mailto:person@example.com"
        }
      }
    },
    {
      "type": "CALL_RESTAURANT",
      "button": {
        "title": "Call restaurant",
        "openUrlAction": {
          "url": "tel:+16505554679"
        }
      }
    }
  ],
  "infoExtension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
    "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
  }
}

Infos sur le retrait

Le tableau suivant répertorie les propriétés du type PickupInfo:

Propriété Type Description
pickupTimeIso8601 String

Heure de retrait estimée, au format ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Format Z ou durée: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Par exemple, PT90M représente une durée de 90 minutes. La valeur par défaut "PT0M" indique que l'heure de prise en charge préférée est la plus proche. Référence: https://en.wikipedia.org/wiki/ISO_8601#Combine_date_and_time_presentations. Utilisez cette option pour modifier l'heure de retrait estimée lors du règlement.

Exemple : PT90M

L'exemple suivant illustre un élément PickupInfo:

Exemple

{
  "pickupTimeIso8601": "PT90M"
}

PostalAddress

Le tableau suivant répertorie les propriétés du type PostalAddress:

Propriété Type Description
regionCode String

Obligatoire.

Code pays à deux lettres.

Exemple : US

postalCode String

Code postal.

Exemple : 94043

administrativeArea String

Plus haute subdivision administrative utilisée pour les adresses postales d'un pays ou d'une région. Il peut s'agir d'un État, d'une province, d'un oblast ou d'une préfecture.

Exemple : CA

locality String

Ville où se trouve ce lieu. Dans les régions du monde où les localités ne sont pas bien définies ou ne correspondent pas à cette structure, ne spécifiez pas de localité. Utilisez plutôt le champ addressLines.

Exemple : Mountain View

addressLines List<Chaîne>

Une ou plusieurs lignes que vous pouvez utiliser pour spécifier l'adresse postale. Ce champ ne doit pas être modifié, car il peut contenir des localités peu claires.

Exemple : [ "1350 Charleston Road" ]

recipients List<Chaîne>

Liste des destinataires d'une campagne. Ce champ n'est disponible que pour billingAddress.

L'exemple suivant illustre un élément PostalAddress:

Exemple

{
  "regionCode": "US",
  "postalCode": "94043",
  "administrativeArea": "CA",
  "locality": "Mountain View",
  "addressLines": [
    "1350 Charleston Road"
  ]
}

Prix

Le tableau suivant répertorie les propriétés du type Price:

Propriété Type Description
type Enum [ "ESTIMATE", "ACTUAL" ]

Obligatoire.

Code promotionnel.

amount Money

Obligatoire.

Promotion

Le tableau suivant répertorie les propriétés du type Promotion:

Propriété Type Description
coupon String

Obligatoire.

Code promotionnel.

Proposition proposée

Le tableau suivant répertorie les propriétés du type ProposedOrder:

Propriété Type Description
id String

Identifiant facultatif de la commande proposée.

cart Cart

Obligatoire.

Éléments de l'utilisateur.

otherItems List<LineItem>

Les articles ajoutés par le fournisseur, tels que les frais de livraison, les autres frais et les taxes. D'autres éléments peuvent également contenir des pourboires et/ou des remises ajoutés par l'utilisateur.

Ne doit pas contenir plus de 10 éléments.

image Image

Image associée à la commande proposée.

totalPrice Price

Obligatoire.

Prix total de la commande proposée.

extension FoodOrderExtension

Obligatoire.

Définit les informations de traitement des commandes de repas.

disclaimers List<Disclaimer>

Correspond aux messages de clause de non-responsabilité qui s'afficheront dans l'interface utilisateur avant de passer commande.

L'exemple suivant illustre un élément ProposedOrder:

Exemple

{
  "id": "sample_proposed_order_id_1",
  "otherItems": [
    {
      "name": "New customer discount",
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "-5",
          "nanos": -500000000
        }
      },
      "type": "DISCOUNT"
    },
    {
      "name": "Delivery fee",
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "3",
          "nanos": 500000000
        }
      },
      "type": "DELIVERY"
    },
    {
      "name": "Tax",
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "1",
          "nanos": 500000000
        }
      },
      "type": "TAX"
    }
  ],
  "cart": {
    "merchant": {
      "id": "https://www.exampleprovider.com/merchant/id1",
      "name": "Falafel Bite"
    },
    "lineItems": [
      {
        "name": "Pita Chips",
        "type": "REGULAR",
        "id": "sample_item_offer_id_1",
        "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
        "quantity": 1,
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "2",
            "nanos": 750000000
          }
        },
        "subLines": [
          {
            "note": "Notes for this item."
          }
        ],
        "extension": {
          "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
          "options": [
            {
              "id": "sample_addon_offer_id_1",
              "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
              "name": "Honey Mustard",
              "price": {
                "currencyCode": "USD"
              },
              "quantity": 1
            },
            {
              "id": "sample_addon_offer_id_2",
              "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
              "name": "BBQ Sauce",
              "price": {
                "currencyCode": "USD",
                "nanos": 500000000
              },
              "quantity": 1
            }
          ]
        }
      },
      {
        "name": "Chicken Shwarma Wrap",
        "type": "REGULAR",
        "id": "sample_item_offer_id_2",
        "offerId": "https://www.exampleprovider.com/menu/item/offer/id2",
        "quantity": 1,
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "8"
          }
        },
        "extension": {
          "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
        }
      },
      {
        "name": "Greek Salad",
        "type": "REGULAR",
        "id": "sample_item_offer_id_3",
        "offerId": "https://www.exampleprovider.com/menu/item/offer/id3",
        "quantity": 1,
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "9",
            "nanos": 990000000
          }
        },
        "extension": {
          "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
        }
      },
      {
        "name": "Prawns Biryani",
        "type": "REGULAR",
        "id": "sample_item_offer_id_4",
        "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
        "quantity": 1,
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "15",
            "nanos": 990000000
          }
        },
        "extension": {
          "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
        }
      }
    ],
    "extension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
      "fulfillmentPreference": {
        "fulfillmentInfo": {
          "delivery": {
            "deliveryTimeIso8601": "P90M"
          }
        }
      },
      "location": {
        "coordinates": {
          "latitude": 37.788783,
          "longitude": -122.41384
        },
        "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
        "zipCode": "94043",
        "city": "Mountain View",
        "postalAddress": {
          "regionCode": "US",
          "postalCode": "94043",
          "administrativeArea": "CA",
          "locality": "Mountain View",
          "addressLines": [
            "1350 Charleston Road"
          ]
        },
        "notes": "Gate code is #111"
      }
    }
  },
  "totalPrice": {
    "type": "ESTIMATE",
    "amount": {
      "currencyCode": "USD",
      "units": "36",
      "nanos": 730000000
    }
  },
  "extension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
    "availableFulfillmentOptions": [
      {
        "fulfillmentInfo": {
          "delivery": {
            "deliveryTimeIso8601": "P0M"
          }
        },
        "expiresAt": "2017-07-17T12:30:00Z"
      }
    ]
  }
}

Note secondaire

Le tableau suivant répertorie les propriétés du type SublineNote:

Propriété Type Description
note String

Obligatoire.

Code temporel

Date et heure, au format suivant : "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"

Valeur de la transaction

Contient le Order.

Le tableau suivant répertorie les propriétés du type TransactionDecisionValue:

Propriété Type Description
order Order

Obligatoire.

Commande à saisir avec des informations de paiement.

L'exemple suivant illustre un élément TransactionDecisionValue:

Exemple

{
  "order": {
    "finalOrder": {
      "cart": {
        "notes": "Guest prefers their food to be hot when it is delivered.",
        "merchant": {
          "id": "https://www.exampleprovider.com/merchant/id1",
          "name": "Cucina Venti"
        },
        "lineItems": [
          {
            "name": "Sizzling Prawns Dinner",
            "type": "REGULAR",
            "id": "sample_item_offer_id_1",
            "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
            "quantity": 1,
            "price": {
              "type": "ESTIMATE",
              "amount": {
                "currencyCode": "USD",
                "units": "16",
                "nanos": 750000000
              }
            },
            "subLines": [
              {
                "note": "Notes for this item."
              }
            ],
            "extension": {
              "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
              "options": [
                {
                  "id": "sample_addon_offer_id_1",
                  "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                  "name": "Honey Mustard",
                  "price": {
                    "currencyCode": "USD"
                  },
                  "quantity": 1
                },
                {
                  "id": "sample_addon_offer_id_2",
                  "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                  "name": "BBQ Sauce",
                  "price": {
                    "currencyCode": "USD",
                    "nanos": 500000000
                  },
                  "quantity": 1
                }
              ]
            }
          }
        ],
        "extension": {
          "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
          "fulfillmentPreference": {
            "fulfillmentInfo": {
              "pickup": {
                "pickupTimeIso8601": "P0M"
              }
            }
          },
          "contact": {
            "displayName": "Lovefood Ordering",
            "email": "ilovefood@example.com",
            "phoneNumber": "+16501234567"
          }
        }
      },
      "otherItems": [
        {
          "name": "Service fee",
          "type": "FEE",
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "3",
              "nanos": 500000000
            }
          }
        },
        {
          "name": "Tax",
          "type": "TAX",
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "1",
              "nanos": 370000000
            }
          }
        },
        {
          "name": "Tip",
          "type": "GRATUITY",
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "2",
              "nanos": 590000000
            }
          }
        }
      ],
      "totalPrice": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "23",
          "nanos": 710000000
        }
      },
      "id": "sample_final_order_id",
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
        "availableFulfillmentOptions": [
          {
            "fulfillmentInfo": {
              "pickup": {
                "pickupTimeIso8601": "P0M"
              }
            },
            "expiresAt": "2017-07-17T12:30:00Z"
          }
        ],
        "optinForRemarketing": true
      }
    },
    "googleOrderId": "sample_google_order_id",
    "orderDate": "2017-07-17T12:00:00Z",
    "paymentInfo": {
      "displayName": "Visa\u2006****\u20061111",
      "googleProvidedPaymentInstrument": {
        "instrumentToken": "abcd"
      },
      "paymentType": "PAYMENT_CARD"
    }
  }
}

Demande d'exécution

Demande d'application

Le tableau suivant répertorie les propriétés du type AppRequest:

Propriété Type Description
isInSandbox Booléen

Indique si les transactions suivantes sont effectuées dans un environnement de bac à sable.

conversation Conversation
inputs List<Input>

Obligatoire.

Contient les arguments attendus pour extraire un panier.

Doit contenir exactement 1 article.

L'exemple suivant illustre un élément AppRequest:

Exemple 1

{
  "isInSandbox": true,
  "inputs": [
    {
      "intent": "actions.foodordering.intent.CHECKOUT",
      "arguments": [
        {
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.Cart",
            "merchant": {
              "id": "https://www.exampleprovider.com/merchant/id1",
              "name": "Cucina Venti"
            },
            "lineItems": [
              {
                "name": "Sizzling Prawns Dinner",
                "type": "REGULAR",
                "id": "sample_item_offer_id_1",
                "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
                "quantity": 1,
                "price": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "16",
                    "nanos": 750000000
                  }
                },
                "subLines": [
                  {
                    "note": "Notes for this item."
                  }
                ],
                "extension": {
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
                  "options": [
                    {
                      "id": "sample_addon_offer_id_1",
                      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                      "name": "Honey Mustard",
                      "price": {
                        "currencyCode": "USD"
                      },
                      "quantity": 1
                    },
                    {
                      "id": "sample_addon_offer_id_2",
                      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                      "name": "BBQ Sauce",
                      "price": {
                        "currencyCode": "USD",
                        "nanos": 500000000
                      },
                      "quantity": 1
                    }
                  ]
                }
              }
            ],
            "extension": {
              "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
              "fulfillmentPreference": {
                "fulfillmentInfo": {
                  "delivery": {
                    "deliveryTimeIso8601": "P0M"
                  }
                }
              },
              "location": {
                "coordinates": {
                  "latitude": 37.788783,
                  "longitude": -122.41384
                },
                "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
                "zipCode": "94043",
                "city": "Mountain View",
                "postalAddress": {
                  "regionCode": "US",
                  "postalCode": "94043",
                  "administrativeArea": "CA",
                  "locality": "Mountain View",
                  "addressLines": [
                    "1350 Charleston Road"
                  ]
                },
                "notes": "Gate code is #111"
              }
            }
          }
        }
      ]
    }
  ]
}

Exemple 2

{
  "isInSandbox": true,
  "inputs": [
    {
      "intent": "actions.intent.TRANSACTION_DECISION",
      "arguments": [
        {
          "transactionDecisionValue": {
            "order": {
              "finalOrder": {
                "cart": {
                  "notes": "Guest prefers their food to be hot when it is delivered.",
                  "merchant": {
                    "id": "https://www.exampleprovider.com/merchant/id1",
                    "name": "Cucina Venti"
                  },
                  "lineItems": [
                    {
                      "name": "Sizzling Prawns Dinner",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_1",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "16",
                          "nanos": 750000000
                        }
                      },
                      "subLines": [
                        {
                          "note": "Notes for this item."
                        }
                      ],
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
                        "options": [
                          {
                            "id": "sample_addon_offer_id_1",
                            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                            "name": "Honey Mustard",
                            "price": {
                              "currencyCode": "USD"
                            },
                            "quantity": 1
                          },
                          {
                            "id": "sample_addon_offer_id_2",
                            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                            "name": "BBQ Sauce",
                            "price": {
                              "currencyCode": "USD",
                              "nanos": 500000000
                            },
                            "quantity": 1
                          }
                        ]
                      }
                    }
                  ],
                  "extension": {
                    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
                    "fulfillmentPreference": {
                      "fulfillmentInfo": {
                        "pickup": {
                          "pickupTimeIso8601": "P0M"
                        }
                      }
                    },
                    "contact": {
                      "displayName": "Lovefood Ordering",
                      "email": "ilovefood@example.com",
                      "phoneNumber": "+16501234567"
                    }
                  }
                },
                "otherItems": [
                  {
                    "name": "Service fee",
                    "type": "FEE",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "3",
                        "nanos": 500000000
                      }
                    }
                  },
                  {
                    "name": "Tax",
                    "type": "TAX",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "1",
                        "nanos": 370000000
                      }
                    }
                  },
                  {
                    "name": "Tip",
                    "type": "GRATUITY",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "2",
                        "nanos": 590000000
                      }
                    }
                  }
                ],
                "totalPrice": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "23",
                    "nanos": 710000000
                  }
                },
                "id": "sample_final_order_id",
                "extension": {
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
                  "availableFulfillmentOptions": [
                    {
                      "fulfillmentInfo": {
                        "pickup": {
                          "pickupTimeIso8601": "P0M"
                        }
                      },
                      "expiresAt": "2017-07-17T12:30:00Z"
                    }
                  ],
                  "optinForRemarketing": true
                }
              },
              "googleOrderId": "sample_google_order_id",
              "orderDate": "2017-07-17T12:00:00Z",
              "paymentInfo": {
                "displayName": "Visa\u2006****\u20061111",
                "googleProvidedPaymentInstrument": {
                  "instrumentToken": "abcd"
                },
                "paymentType": "PAYMENT_CARD"
              }
            }
          }
        }
      ]
    }
  ]
}

Message de demande de paiement

Un CheckoutRequestMessage est un AppRequest ayant l'intent actions.foodordering.intent.CHECKOUT.

Envoyer un message de requête de commande

Un SubmitOrderRequestMessage est un AppRequest ayant l'intent actions.foodordering.intent.TRANSACTION_DECISION.

Conversation

Un Conversation est propre à une seule session. Vous pouvez l'utiliser pour associer plusieurs actions Checkout et SubmitOrder si nécessaire.

Le tableau suivant répertorie les propriétés du type Conversation:

Propriété Type Description
conversationId String

Obligatoire.

ID unique de la conversation.

L'exemple suivant illustre un élément Conversation:

Exemple

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

Input

Arguments attendus pour finaliser un panier.

Le tableau suivant répertorie les propriétés du type Input:

Propriété Type Description
intent Enum [ "actions.foodordering.intent.CHECKOUT", "actions.intent.TRANSACTION_DECISION" ]

Obligatoire.

Définissez la valeur sur "actions.foodordering.intent.CHECKOUT" pour le message de demande de règlement OU "actions.intent.TRANSACTION_DECISION" pour l'envoi du message de demande de commande.

arguments List<Argument>

Obligatoire.

Contient le panier à payer ou la commande à passer

Doit contenir exactement 1 article.

Argument

Contient des informations sur les produits que l'utilisateur souhaite payer. Pour le règlement, seule l'extension est applicable. Pour l'envoi de la commande, seule transactionDecisionValue est applicable.

Le tableau suivant répertorie les propriétés du type Argument:

Propriété Type Description
Exactement l'un des groupes de propriétés suivants.
extension Groupe 1 Cart

Détails des plats que l'utilisateur souhaite payer.

transactionDecisionValue Groupe 2 TransactionDecisionValue

Contient la commande à passer, ainsi que les détails du paiement.

Réponse à l'exécution

Réponse d'application

Le tableau suivant répertorie les propriétés du type AppResponse:

Propriété Type Description
expectUserResponse Const

Défini sur "false".

Valeur : False

finalResponse FinalResponse

Obligatoire.

Contient votre réponse au règlement du panier.

L'exemple suivant illustre un élément AppResponse:

Exemple 1

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "checkoutResponse": {
              "proposedOrder": {
                "id": "sample_proposed_order_id_1",
                "otherItems": [
                  {
                    "name": "New customer discount",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "-5",
                        "nanos": -500000000
                      }
                    },
                    "type": "DISCOUNT"
                  },
                  {
                    "name": "Delivery fee",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "3",
                        "nanos": 500000000
                      }
                    },
                    "type": "DELIVERY"
                  },
                  {
                    "name": "Tax",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "1",
                        "nanos": 500000000
                      }
                    },
                    "type": "TAX"
                  }
                ],
                "cart": {
                  "merchant": {
                    "id": "https://www.exampleprovider.com/merchant/id1",
                    "name": "Falafel Bite"
                  },
                  "lineItems": [
                    {
                      "name": "Pita Chips",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_1",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "2",
                          "nanos": 750000000
                        }
                      },
                      "subLines": [
                        {
                          "note": "Notes for this item."
                        }
                      ],
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
                        "options": [
                          {
                            "id": "sample_addon_offer_id_1",
                            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                            "name": "Honey Mustard",
                            "price": {
                              "currencyCode": "USD"
                            },
                            "quantity": 1
                          },
                          {
                            "id": "sample_addon_offer_id_2",
                            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                            "name": "BBQ Sauce",
                            "price": {
                              "currencyCode": "USD",
                              "nanos": 500000000
                            },
                            "quantity": 1
                          }
                        ]
                      }
                    },
                    {
                      "name": "Chicken Shwarma Wrap",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_2",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id2",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "8"
                        }
                      },
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
                      }
                    },
                    {
                      "name": "Greek Salad",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_3",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id3",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "9",
                          "nanos": 990000000
                        }
                      },
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
                      }
                    },
                    {
                      "name": "Prawns Biryani",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_4",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "15",
                          "nanos": 990000000
                        }
                      },
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
                      }
                    }
                  ],
                  "extension": {
                    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
                    "fulfillmentPreference": {
                      "fulfillmentInfo": {
                        "delivery": {
                          "deliveryTimeIso8601": "P90M"
                        }
                      }
                    },
                    "location": {
                      "coordinates": {
                        "latitude": 37.788783,
                        "longitude": -122.41384
                      },
                      "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
                      "zipCode": "94043",
                      "city": "Mountain View",
                      "postalAddress": {
                        "regionCode": "US",
                        "postalCode": "94043",
                        "administrativeArea": "CA",
                        "locality": "Mountain View",
                        "addressLines": [
                          "1350 Charleston Road"
                        ]
                      },
                      "notes": "Gate code is #111"
                    }
                  }
                },
                "totalPrice": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "36",
                    "nanos": 730000000
                  }
                },
                "extension": {
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
                  "availableFulfillmentOptions": [
                    {
                      "fulfillmentInfo": {
                        "delivery": {
                          "deliveryTimeIso8601": "P0M"
                        }
                      },
                      "expiresAt": "2017-07-17T12:30:00Z"
                    }
                  ]
                }
              },
              "paymentOptions": {
                "googleProvidedOptions": {
                  "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": {  \"merchantId\": \"Merchant ID\",  \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [  {    \"type\": \"CARD\",    \"parameters\": {      \"allowedAuthMethods\": [        \"PAN_ONLY\"      ],      \"allowedCardNetworks\": [        \"VISA\",        \"AMEX\",        \"MASTERCARD\"      ],      \"billingAddressRequired\": false    },    \"tokenizationSpecification\": {      \"type\": \"PAYMENT_GATEWAY\",      \"parameters\": {        \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\",        \"gateway\": \"stripe\",        \"stripe:version\": \"2019-05-16\"      }    }  }],\"transactionInfo\": {  \"currencyCode\": \"AUD\",  \"totalPriceStatus\": \"ESTIMATED\",  \"totalPrice\": \"1.0\"}}"
                }
              },
              "additionalPaymentOptions": [
                {
                  "actionProvidedOptions": {
                    "paymentType": "ON_FULFILLMENT",
                    "displayName": "Cash on delivery."
                  }
                }
              ]
            }
          }
        }
      ]
    }
  }
}

Exemple 2

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "orderUpdate": {
              "actionOrderId": "sample_action_order_id",
              "orderState": {
                "state": "CONFIRMED",
                "label": "Provider confirmed"
              },
              "receipt": {
                "userVisibleOrderId": "userVisibleId1234"
              },
              "updateTime": "2017-07-17T12:00:00Z",
              "orderManagementActions": [
                {
                  "type": "CUSTOMER_SERVICE",
                  "button": {
                    "title": "Contact customer service",
                    "openUrlAction": {
                      "url": "mailto:support@example.com"
                    }
                  }
                },
                {
                  "type": "CUSTOMER_SERVICE",
                  "button": {
                    "title": "Call customer service",
                    "openUrlAction": {
                      "url": "tel:+18005554679"
                    }
                  }
                },
                {
                  "type": "EMAIL",
                  "button": {
                    "title": "Email restaurant",
                    "openUrlAction": {
                      "url": "mailto:person@example.com"
                    }
                  }
                },
                {
                  "type": "CALL_RESTAURANT",
                  "button": {
                    "title": "Call restaurant",
                    "openUrlAction": {
                      "url": "tel:+16505554679"
                    }
                  }
                }
              ],
              "infoExtension": {
                "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
                "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
              }
            }
          }
        }
      ]
    }
  }
}

Exemple 3

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "error": {
              "@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension",
              "foodOrderErrors": [
                {
                  "error": "CLOSED",
                  "description": "The restaurant is closed."
                }
              ]
            }
          }
        }
      ]
    }
  }
}

Exemple 4

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "checkoutResponse": {
              "proposedOrder": {
                "otherItems": [
                  {
                    "name": "Delivery Fees",
                    "subLines": [],
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "3",
                        "nanos": 500000000
                      }
                    },
                    "type": "DELIVERY"
                  },
                  {
                    "name": "Tax",
                    "subLines": [],
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "1",
                        "nanos": 370000000
                      }
                    },
                    "type": "TAX"
                  },
                  {
                    "name": "Promotion",
                    "subLines": [],
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "-5",
                        "nanos": 0
                      }
                    },
                    "id": "OWG_ACTIVE_CODE",
                    "type": "DISCOUNT"
                  }
                ],
                "cart": {
                  "merchant": {
                    "id": "https://www.exampleprovider.com/merchant/id1",
                    "name": "Falafel Bite"
                  },
                  "lineItems": [
                    {
                      "name": "Pita Chips",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_1",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "2",
                          "nanos": 750000000
                        }
                      },
                      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
                      }
                    }
                  ],
                  "promotions": [
                    {
                      "coupon": "OWG_ACTIVE_CODE"
                    }
                  ],
                  "extension": {
                    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
                    "fulfillmentPreference": {
                      "fulfillmentInfo": {
                        "pickup": {
                          "pickupTimeIso8601": "P0M"
                        }
                      }
                    }
                  }
                },
                "totalPrice": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "14",
                    "nanos": 860000000
                  }
                },
                "extension": {
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
                  "availableFulfillmentOptions": [
                    {
                      "fulfillmentInfo": {
                        "pickup": {
                          "pickupTimeIso8601": "P0M"
                        }
                      },
                      "expiresAt": "2018-04-10T01:20:08.471Z"
                    }
                  ]
                }
              },
              "paymentOptions": {
                "googleProvidedOptions": {
                  "tokenizationParameters": {
                    "tokenizationType": "PAYMENT_GATEWAY",
                    "parameters": {
                      "gateway": "stripe",
                      "stripe:publishableKey": "pk_live_stripe_client_key",
                      "stripe:version": "2017-04-06"
                    }
                  },
                  "supportedCardNetworks": [
                    "AMEX",
                    "DISCOVER",
                    "MASTERCARD",
                    "VISA",
                    "JCB"
                  ],
                  "prepaidCardDisallowed": true,
                  "billingAddressRequired": true
                }
              }
            }
          }
        }
      ]
    }
  }
}

Message de réponse au règlement

Un CheckoutResponseMessage est un AppResponse avec un checkoutResponse ou un error dans le StructuredResponse.

Envoyer un message de réponse de réponse

Un SubmitOrderResponseMessage est un AppResponse avec un orderUpdate dans le StructuredResponse.

Réponse finale

Votre réponse au règlement du panier ou à OrderOrderRequestMessage.

Le tableau suivant répertorie les propriétés du type FinalResponse:

Propriété Type Description
richResponse RichResponse

Obligatoire.

Contient votre réponse au message RequestRequest ou SubmitOrderRequestMessage.

Réponse au règlement

Le tableau suivant répertorie les propriétés du type CheckoutResponse:

Propriété Type Description
proposedOrder ProposedOrder

Obligatoire.

Proposition de commande à utiliser pour la transaction.

paymentOptions PaymentOptions

Obligatoire.

Option de paiement par défaut sélectionnée pour l'utilisateur.

additionalPaymentOptions List<PaymentOptions>

Autres options de paiement disponibles pour l'utilisateur.

L'exemple suivant illustre un élément CheckoutResponse:

Exemple

{
  "proposedOrder": {
    "id": "sample_proposed_order_id_1",
    "otherItems": [
      {
        "name": "New customer discount",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "-5",
            "nanos": -500000000
          }
        },
        "type": "DISCOUNT"
      },
      {
        "name": "Delivery fee",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "3",
            "nanos": 500000000
          }
        },
        "type": "DELIVERY"
      },
      {
        "name": "Tax",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "1",
            "nanos": 500000000
          }
        },
        "type": "TAX"
      }
    ],
    "cart": {
      "merchant": {
        "id": "https://www.exampleprovider.com/merchant/id1",
        "name": "Falafel Bite"
      },
      "lineItems": [
        {
          "name": "Pita Chips",
          "type": "REGULAR",
          "id": "sample_item_offer_id_1",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "2",
              "nanos": 750000000
            }
          },
          "subLines": [
            {
              "note": "Notes for this item."
            }
          ],
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
            "options": [
              {
                "id": "sample_addon_offer_id_1",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                "name": "Honey Mustard",
                "price": {
                  "currencyCode": "USD"
                },
                "quantity": 1
              },
              {
                "id": "sample_addon_offer_id_2",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                "name": "BBQ Sauce",
                "price": {
                  "currencyCode": "USD",
                  "nanos": 500000000
                },
                "quantity": 1
              }
            ]
          }
        },
        {
          "name": "Chicken Shwarma Wrap",
          "type": "REGULAR",
          "id": "sample_item_offer_id_2",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id2",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "8"
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        },
        {
          "name": "Greek Salad",
          "type": "REGULAR",
          "id": "sample_item_offer_id_3",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id3",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "9",
              "nanos": 990000000
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        },
        {
          "name": "Prawns Biryani",
          "type": "REGULAR",
          "id": "sample_item_offer_id_4",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "15",
              "nanos": 990000000
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        }
      ],
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
        "fulfillmentPreference": {
          "fulfillmentInfo": {
            "delivery": {
              "deliveryTimeIso8601": "P90M"
            }
          }
        },
        "location": {
          "coordinates": {
            "latitude": 37.788783,
            "longitude": -122.41384
          },
          "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
          "zipCode": "94043",
          "city": "Mountain View",
          "postalAddress": {
            "regionCode": "US",
            "postalCode": "94043",
            "administrativeArea": "CA",
            "locality": "Mountain View",
            "addressLines": [
              "1350 Charleston Road"
            ]
          },
          "notes": "Gate code is #111"
        }
      }
    },
    "totalPrice": {
      "type": "ESTIMATE",
      "amount": {
        "currencyCode": "USD",
        "units": "36",
        "nanos": 730000000
      }
    },
    "extension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
      "availableFulfillmentOptions": [
        {
          "fulfillmentInfo": {
            "delivery": {
              "deliveryTimeIso8601": "P0M"
            }
          },
          "expiresAt": "2017-07-17T12:30:00Z"
        }
      ]
    }
  },
  "paymentOptions": {
    "googleProvidedOptions": {
      "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": {  \"merchantId\": \"Merchant ID\",  \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [  {    \"type\": \"CARD\",    \"parameters\": {      \"allowedAuthMethods\": [        \"PAN_ONLY\"      ],      \"allowedCardNetworks\": [        \"VISA\",        \"AMEX\",        \"MASTERCARD\"      ],      \"billingAddressRequired\": false    },    \"tokenizationSpecification\": {      \"type\": \"PAYMENT_GATEWAY\",      \"parameters\": {        \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\",        \"gateway\": \"stripe\",        \"stripe:version\": \"2019-05-16\"      }    }  }],\"transactionInfo\": {  \"currencyCode\": \"AUD\",  \"totalPriceStatus\": \"ESTIMATED\",  \"totalPrice\": \"1.0\"}}"
    }
  },
  "additionalPaymentOptions": [
    {
      "actionProvidedOptions": {
        "paymentType": "ON_FULFILLMENT",
        "displayName": "Cash on delivery."
      }
    }
  ]
}

Article

Contient votre réponse à un règlement de panier ou à SendOrderRequestMessage.

Le tableau suivant répertorie les propriétés du type Item:

Propriété Type Description
structuredResponse StructuredResponse

Obligatoire.

Réponse enrichie

Contient votre réponse à un règlement de panier.

Le tableau suivant répertorie les propriétés du type RichResponse:

Propriété Type Description
items List<Item>

Obligatoire.

Doit contenir exactement 1 article.

Réponse structurée

Pour ResponseResponseMessage, il peut s'agir de l'un des états suivants: CheckResponse indique que le paiement a bien été effectué. OU FoodErrorExtension: indique un échec lors du règlement. La réponse peut inclure une proposition de ProposedOrder et de PaymentOptions ou un message d'erreur sans PaymentOptions. Pour SendOrderResponseMessage, seule orderUpdate est applicable.

Le tableau suivant répertorie les propriétés du type StructuredResponse:

Propriété Type Description
Exactement l'un des groupes de propriétés suivants.
checkoutResponse Groupe 1 CheckoutResponse

Articles réglés, taxes et remises appliquées

error Groupe 2 FoodErrorExtension

Erreurs observées dans les articles du panier. Selon la nature de l'erreur, cette propriété peut inclure une proposition de ProposedOrder et PaymentOptions ou simplement un message d'erreur sans PaymentOptions.

orderUpdate Groupe 3 OrderUpdate

Mises à jour de commandes asynchrones

Cette section décrit les types généraux qui constituent les requêtes et les réponses d'une interaction intégrée classique d'action de commande de repas.

Message AsyncOrderUpdateRequest

L'utilisateur reçoit une notification lorsque des commandes ont été envoyées et confirmées. Par exemple, vous pouvez informer l'utilisateur que la commande est en cours d'acheminement ou que le prix a changé. Plus en savoir plus, consultez la page

Le tableau suivant répertorie les propriétés du type AsyncOrderUpdateRequestMessage:

Propriété Type Description
isInSandbox Booléen

Indique que la commande a été envoyée pour un paiement en bac à sable.

customPushMessage CustomPushMessage

Obligatoire.

Contient le OrderUpdate pour la requête.

L'exemple suivant illustre un élément AsyncOrderUpdateRequestMessage:

Exemple

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
      "actionOrderId": "sample_action_order_id",
      "orderState": {
        "state": "IN_TRANSIT",
        "label": "Order is on the way"
      },
      "inTransitInfo": {
        "updatedTime": "2017-07-17T12:00:00Z"
      },
      "updateTime": "2017-07-17T12:00:00Z",
      "receipt": {
        "userVisibleOrderId": "userVisibleId1234"
      },
      "orderManagementActions": [
        {
          "type": "CUSTOMER_SERVICE",
          "button": {
            "title": "Contact customer service",
            "openUrlAction": {
              "url": "mailto:support@example.com"
            }
          }
        },
        {
          "type": "EMAIL",
          "button": {
            "title": "Email restaurant",
            "openUrlAction": {
              "url": "mailto:person@example.com"
            }
          }
        },
        {
          "type": "CALL_RESTAURANT",
          "button": {
            "title": "Call restaurant",
            "openUrlAction": {
              "url": "tel:+16505554679"
            }
          }
        }
      ],
      "infoExtension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
        "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
      }
    }
  }
}

Message AsyncOrderUpdateResponse

Une fois que vous avez envoyé un AsyncOrderUpdateRequestMessage, Google répond avec l'état HTTP 200 et un corps vide. Si la mise à jour a échoué, Google répond en expliquant pourquoi la mise à jour de la commande a échoué.

Types de mises à jour de commandes

Bouton

Définit un élément de l'interface utilisateur que vous pouvez ajouter pour permettre l'interaction utilisateur.

Le tableau suivant répertorie les propriétés du type Button:

Propriété Type Description
title String

Obligatoire.

Libellé d'affichage. Pour garantir un affichage correct, utilisez une majuscule de 30 caractères maximum.

Exemple : Contact us

openUrlAction OpenUrlAction

Obligatoire.

L'exemple suivant illustre un élément Button:

Exemple

{
  "title": "Send us feedback",
  "openUrlAction": {
    "url": "mailto:person@example.com"
  }
}

Résiliation des informations

Le tableau suivant répertorie les propriétés du type CancellationInfo:

Propriété Type Description
reason String

Obligatoire.

Motif de refus du texte à afficher lorsque OrderState.state est "CANCELLED".

Exemple : Restaurant closed

L'exemple suivant illustre un élément CancellationInfo:

Exemple

{
  "reason": "Insufficient inventory"
}

FoodOrderUpdateExtension

Ce type fournit à l'utilisateur un intervalle estimé pour la livraison de la commande ou son retrait. Envoyez cette extension dans un OrderUpdate chaque fois que les informations sont disponibles ou ont été modifiées depuis leur dernière envoi.

Fournissez une estimation prudente de l'intervalle de traitement pour répondre systématiquement aux attentes des utilisateurs. Par exemple, si la commande est estimée aujourd'hui à 13h00, vous devez envoyer une fréquence estimée correspondant aux variations en raison des conditions de circulation, telles qu'aujourd'hui entre 12h45 et 13h15.

Une durée ou un horodatage ISO 8601 est interprété comme l'intervalle entre updateTime de OrderUpdate (en substance, maintenant) et updateTime, plus duration. N'utilisez pas ce format, sauf s'il s'agit d'une attente raisonnable.

Un intervalle ISO 8601 est interprété comme l'intervalle entre le début et la fin de l'intervalle.

Le tableau suivant répertorie les propriétés du type FoodOrderUpdateExtension:

Propriété Type Description
@type Const

Type de cette extension. Ce champ est toujours défini sur "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension".

Valeur : type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension

estimatedFulfillmentTimeIso8601 String

Délai estimé de livraison de la commande ou de retrait. La chaîne doit être au format ISO 8601 et correspondre à un intervalle plutôt qu'à une seule heure fixe. Les conventions sont les suivantes: Intervalles, Durées et Dates/Heures. Ce champ peut être envoyé dans EnvoyerOrderResponseMessage ou AsyncOrderUpdateRequestMessage lorsque les informations deviennent disponibles ou en cas de modification, par exemple en cas d'arrivée anticipée ou de retard.

Exemple : 2017-07-17T13:00:00Z/2017-07-17T13:30:00Z

foodOrderErrors List<FoodOrderError>

Décrit les erreurs survenues après la commande. Une erreur recommandée par panier ou par article. Utilisez FoodOrderUpdateExtension.FoodOrderErrors pour toutes les erreurs non couvertes par RejectedionInfo.

Doit contenir au moins 1 élément.

L'exemple suivant illustre un élément FoodOrderUpdateExtension:

Exemple 1

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
  "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
}

Exemple 2

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
  "foodOrderErrors": [
    {
      "error": "NO_CAPACITY",
      "description": "Sorry, the restaurant cannot take your order right now."
    }
  ]
}

FulfillmentInfo

Le tableau suivant répertorie les propriétés du type FulfillmentInfo:

Propriété Type Description
Exactement l'un des groupes de propriétés suivants.
deliveryTime Groupe 1 Horodatage ISO

Utiliser "estimatedFulfillmentTimeIso8601" dans le message FoodOrderingUpdateExtension

pickupTime Groupe 2 Horodatage ISO

Utiliser "estimatedFulfillmentTimeIso8601" dans le message FoodOrderingUpdateExtension

L'exemple suivant illustre un élément FulfillmentInfo:

Exemple 1

{
  "deliveryTime": "2017-05-10T02:36:38.803Z"
}

Exemple 2

{
  "pickupTime": "2019-12-26T07:24:27.803Z"
}

Informations sur les transports en commun

Le tableau suivant répertorie les propriétés du type InTransitInfo:

Propriété Type Description
updatedTime Horodatage ISO

Utiliser "estimatedFulfillmentTimeIso8601" dans le message FoodOrderingUpdateExtension

L'exemple suivant illustre un élément InTransitInfo:

Exemple

{
  "updatedTime": "2017-05-10T02:36:38.803Z"
}

Mise à jour de l'article

Le tableau suivant répertorie les propriétés du type LineItemUpdate:

Propriété Type Description
orderState OrderState
price Price
reason String

Motif de la modification. Obligatoire pour les changements de prix.

L'exemple suivant illustre un élément LineItemUpdate:

Exemple

{
  "orderState": {
    "state": "CONFIRMED",
    "label": "Provider confirmed"
  },
  "price": {
    "type": "ESTIMATE",
    "amount": {
      "currencyCode": "USD",
      "units": "5",
      "nanos": 500000000
    }
  },
  "reason": "Menu updated prices."
}

OpenUrlAction

Le tableau suivant répertorie les propriétés du type OpenUrlAction:

Propriété Type Description
url String

Obligatoire.

Action déclenchée en cliquant ou en appuyant sur le bouton. La liste des préfixes applicables dépend de orderManagementActionType. "E-MAIL": le préfixe doit être "mailto". "CALL" : le préfixe doit être "tel". "CUSTOMER_SERVICE" : le préfixe doit être "mailto" ou "tel", "http" ou "https".

Exemple : https://www.google.com

OrderManagementAction (Action de gestion des commandes)

La gestion des commandes permet aux utilisateurs d'obtenir de l'aide après commande. Elle doit être envoyée dans chaque OrderUpdate de la commande AppResponse lors de l'envoi. Chaque action AsyncOrderUpdateRequestMessage peut ensuite varier selon l'état de la commande.

Par exemple, si l'état est "CREATED&DIT" (CRÉER), CUSTOMER_SERVICE peut faire référence au numéro de téléphone de votre service client. Ensuite, à l'état"CONFIRMED", CUSTOMER_SERVICE peut passer au numéro de téléphone du restaurant si celui-ci devient le meilleur point de contact pour le client. De même, lorsque la commande est à l'état "TERMINÉ", CUSTOMER_SERVICE peut faire référence aux adresses e-mail de votre équipe d'assistance.

Le tableau suivant répertorie les propriétés du type OrderManagementAction:

Propriété Type Description
type OrderManagementActionType

Obligatoire.

button Button

Obligatoire.

L'exemple suivant illustre un élément OrderManagementAction:

Exemple 1

{
  "type": "CUSTOMER_SERVICE",
  "button": {
    "title": "Contact customer service",
    "openUrlAction": {
      "url": "mailto:support@example.com"
    }
  }
}

Exemple 2

{
  "type": "EMAIL",
  "button": {
    "title": "Email restaurant",
    "openUrlAction": {
      "url": "mailto:person@example.com"
    }
  }
}

OrderManagementActionType (Type d'action de gestion des commandes)

Définit les types liés à OrderManagementAction.

Le type OrderManagementActionType peut avoir les valeurs suivantes:

  • CUSTOMER_SERVICE : adresse e-mail et/ou numéro du service client à afficher sur la page de confirmation de commande. Obligatoire. Le préfixe openUrlAction.url doit être "mailto" ou "tel", "http" ou "https".
  • EMAIL: action par e-mail uniquement sur la page des détails de la commande. Le préfixe openUrlAction.url doit être "mailto".
  • CALL_DRIVER: action d'appel sur la page d'informations de la commande uniquement. Le préfixe openUrlAction.url doit être de type"tel".
  • CALL_RESTAURANT : action d'appel sur la page d'informations de la commande uniquement. Le préfixe openUrlAction.url doit être de type "tel".

OrderState

État actuel de la commande. Chaque valeur state de OrderState correspond également à un état d'achat sur myaccount.google.com.

Le tableau suivant répertorie les propriétés du type OrderState:

Propriété Type Description
state OrderStateEnum

Obligatoire.

label String

Obligatoire.

Chaîne visible par l'utilisateur pour l'état. Seule la première lettre du titre doit être en majuscule.

Exemple : Your order has been received

L'exemple suivant illustre un élément OrderState:

Exemple

{
  "state": "CONFIRMED",
  "label": "Provider confirmed"
}

OrderStateEnum

Définit les types liés à OrderState.

Le type OrderStateEnum peut avoir les valeurs suivantes:

  • CREATED : commande créée par l'intégrateur et en attente de confirmation du fournisseur. Correspond à l'état d'achat en "Ordered".
  • CONFIRMED : la commande est confirmée par le fournisseur et est active. Correspond à l'état d'achat "Accepté".
  • REJECTED : commande refusée par l'intégrateur ou le fournisseur. Correspond à l'état d'achat "Refusée".
  • CANCELLED : l'utilisateur a annulé la commande. Correspond à l'état d'achat "Annulé".
  • IN_PREPARATION : les plats sont en cours de préparation. Correspond à l'état d'achat "État inconnu".
  • READY_FOR_PICKUP : les plats sont prêts à être retirés. Correspond à l'état d'achat "Prêt pour le retrait en magasin".
  • IN_TRANSIT: la commande est en cours de livraison. Correspond à l'état d'achat "En cours".
  • FULFILLED: l'utilisateur a reçu le produit commandé. Correspond à l'état d'achat "retiré".

Reçu

Envoyez ce type de requête dans un ordre d'envoi AppResponse, où OrderState est "CONFIRMED", "FULFILLED" ou "IN_TRANSIT". Envoyez la confirmation au moment où le userVisibleOrderId devient disponible. Vous n'avez pas besoin d'envoyer le reçu lors des prochaines mises à jour.

Le tableau suivant répertorie les propriétés du type Receipt:

Propriété Type Description
userVisibleOrderId String

Obligatoire.

Obligatoire si la commande est "CONFIRMED", "IN_TRANSIT" ou "FULFILLED". Ce champ correspond à l'identifiant unique de cette commande qui est présenté aux utilisateurs. Il s'agit généralement de l'ID de commande du restaurant, affiché à la fois sur le reçu de l'intégrateur et sur la fiche de commande Google. L'utilisateur doit pouvoir utiliser cet identifiant pour faire référence à sa commande auprès du fournisseur et de l'intégrateur. Vous n'avez besoin de fournir cet identifiant qu'une seule fois pour une commande OrderUpdate donnée. Tant qu'il n'est pas fourni, actionOrderId est userVisibleOrderId. Par exemple, il se peut que vous n'ayez pas d'identifiant utilisateurVisibleOrderId tant que la commande n'a pas été confirmée par le restaurant. Une fois la confirmation effectuée, vous devez envoyer un message AsyncOrderUpdateRequestMessage avec un OrderUpdate et un reçu.

L'exemple suivant illustre un élément Receipt:

Exemple

{
  "userVisibleOrderId": "userVisibleId1234"
}

Informations de refus

Le tableau suivant répertorie les propriétés du type RejectionInfo:

Propriété Type Description
type RejectionType

Obligatoire.

reason String

Motif du refus utilisé pour la journalisation interne. Les utilisateurs ne peuvent pas voir ce champ.

L'exemple suivant illustre un élément RejectionInfo:

Exemple

{
  "type": "PAYMENT_DECLINED",
  "reason": "There is an issue with payment processing."
}

Type de refus

Le type RejectionType peut avoir les valeurs suivantes:

  • INELIGIBLE : l'utilisateur n'est pas éligible en raison de problèmes liés aux règles ou aux risques.
  • PAYMENT_DECLINED: un problème est survenu avec le traitement des paiements.
  • UNAVAILABLE_SLOT : la commande ne peut pas être livrée à l'avance indiquée par DeliveryInfo ou PickupInfo.
  • PROMO_NOT_APPLICABLE : problème lié à la promotion.
  • UNKNOWN: pour toute autre raison.

Types de paiements

Cette section décrit les types de paiements utilisés pour la commande de repas.

ActionOffredPaiementOptions

Conditions requises pour un mode de paiement fourni par une action.

Le tableau suivant répertorie les propriétés du type ActionProvidedPaymentOptions:

Propriété Type Description
paymentType PaymentType

Obligatoire.

displayName String

Obligatoire.

Nom du mode de paiement indiqué sur le reçu.

Exemple : Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

Données supplémentaires pour le type de paiement "ON_FULFILLMENT". Par exemple, vous pouvez utiliser ce champ pour indiquer si les espèces ou les cartes sont acceptées lors du traitement des commandes.

L'exemple suivant illustre un élément ActionProvidedPaymentOptions:

Exemple

{
  "paymentType": "ON_FULFILLMENT",
  "displayName": "Pay when you get your food.",
  "onFulfillmentPaymentData": {
    "supportedPaymentOptions": [
      "Cash",
      "Card"
    ]
  }
}

AllowedAuthMethods

Le type AllowedAuthMethods peut avoir les valeurs suivantes:

  • PAN_ONLY: méthode d'authentification associée aux cartes de paiement enregistrées dans le compte Google de l'utilisateur. Les données de paiement renvoyées comprennent le numéro de compte personnel (PAN) avec le mois et l'année d'expiration.

AllowedCardNetworks

Le type AllowedCardNetworks peut avoir les valeurs suivantes:

  • AMEX
  • DISCOVER
  • INTERAC
  • JCB
  • MASTERCARD
  • VISA

Paramètres de la carte

Utilisez cet objet pour configurer la compatibilité de votre site avec l'API Google Pay.

Le tableau suivant répertorie les propriétés du type CardParameters:

Propriété Type Description
allowedAuthMethods List<Const>

Obligatoire.

Champs compatibles pour authentifier une transaction par carte.

Doit contenir au moins 1 élément.

allowedCardNetworks List<AllowedCardNetworks>

Obligatoire.

Un ou plusieurs réseaux de cartes compatibles qui sont également compatibles avec l'API Google Pay.

Doit contenir au moins 1 élément.

billingAddressRequired Booléen

Défini sur "true" si vous avez besoin d'une adresse de facturation. Ne demandez une adresse de facturation que si elle est nécessaire au traitement de la transaction. Les demandes de données supplémentaires peuvent fluidifier le processus de règlement et réduire les taux de conversion.

cvcRequired Booléen

Défini sur "true" si vous utilisez TimesofMoney, "false" pour toutes les autres sociétés de traitement des paiements.

L'exemple suivant illustre un élément CardParameters:

Exemple

{
  "allowedAuthMethods": [
    "PAN_ONLY"
  ],
  "allowedCardNetworks": [
    "AMEX",
    "DISCOVER"
  ],
  "billingAddressRequired": false,
  "cvcRequired": false
}

Mode de paiement fourni par Google

Le tableau suivant répertorie les propriétés du type GoogleProvidedPaymentInstrument:

Propriété Type Description
instrumentToken String

Obligatoire.

Chaîne encodée en base 64 contenant le jeton de paiement permettant de facturer à l'utilisateur une société de traitement des paiements Google Pay participant, conformément aux options GoogleProviderdPaymentOptions spécifiées précédemment.

billingAddress PostalAddress

Adresse de facturation du paiement.

L'exemple suivant illustre un élément GoogleProvidedPaymentInstrument:

Exemple

{
  "instrumentToken": "abcd",
  "billingAddress": {
    "regionCode": "US",
    "postalCode": "94043",
    "administrativeArea": "CA",
    "locality": "Mountain View",
    "addressLines": [
      "1350 Charleston Road"
    ]
  }
}

Options de paiement Google

Conditions requises pour le mode de paiement fourni par Google

Le tableau suivant répertorie les propriétés du type GoogleProvidedPaymentOptions:

Propriété Type Description
facilitationSpecification String

Fichier JSON PaymentDataRequest en tant que chaîne. Utilisez cet objet pour configurer la compatibilité de votre site avec l'API Google Pay.

supportedCardNetworks List<SupportedCardNetworks>

Utilisez plutôt facilitationSpecification. Type de réseaux de cartes compatibles avec l'agent.

Ce champ a été abandonné.

prepaidCardDisallowed Booléen

Utilisez plutôt facilitationSpecification. Indique si une carte prépayée est autorisée comme type de paiement.

Ce champ a été abandonné.

billingAddressRequired Booléen

Utilisez plutôt facilitationSpecification. Indique si une adresse de facturation est requise.

Ce champ a été abandonné.

tokenizationParameters TokenizationParameters

Ce champ a été abandonné.

L'exemple suivant illustre un élément GoogleProvidedPaymentOptions:

Exemple 1

{
  "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": {  \"merchantId\": \"Merchant ID\",  \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [  {    \"type\": \"CARD\",    \"parameters\": {      \"allowedAuthMethods\": [        \"PAN_ONLY\"      ],      \"allowedCardNetworks\": [        \"VISA\",        \"AMEX\",        \"MASTERCARD\"      ],      \"billingAddressRequired\": false    },    \"tokenizationSpecification\": {      \"type\": \"PAYMENT_GATEWAY\",      \"parameters\": {        \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\",        \"gateway\": \"stripe\",        \"stripe:version\": \"2019-05-16\"      }    }  }],\"transactionInfo\": {  \"currencyCode\": \"AUD\",  \"totalPriceStatus\": \"ESTIMATED\",  \"totalPrice\": \"1.0\"}}"
}

Exemple 2

{
  "tokenizationParameters": {
    "tokenizationType": "PAYMENT_GATEWAY",
    "parameters": {
      "gateway": "braintree",
      "braintree:apiVersion": "v1",
      "braintree:sdkVersion": "1.4.0",
      "braintree:merchantId": "a1b2c3d4e5",
      "braintree:clientKey": "production_braintree_client_key",
      "braintree:authorizationFingerprint": "same_as_client_key"
    }
  },
  "supportedCardNetworks": [
    "AMEX",
    "DISCOVER",
    "MASTERCARD",
    "JCB",
    "VISA"
  ],
  "prepaidCardDisallowed": true
}

Exemple 3

{
  "tokenizationParameters": {
    "tokenizationType": "PAYMENT_GATEWAY",
    "parameters": {
      "gateway": "stripe",
      "stripe:publishableKey": "pk_live_stripe_client_key",
      "stripe:version": "2017-04-06"
    }
  },
  "supportedCardNetworks": [
    "AMEX",
    "DISCOVER",
    "MASTERCARD",
    "VISA",
    "JCB"
  ],
  "prepaidCardDisallowed": true,
  "billingAddressRequired": true
}

Informations sur le marchand

Utilisez cet objet pour configurer la compatibilité de votre site avec l'API Google Pay.

Le tableau suivant répertorie les propriétés du type MerchantInfo:

Propriété Type Description
merchantId String

Référence marchand Google qui vous est fournie par Google Pay.

merchantName String

Obligatoire.

Nom du marchand encodé au format UTF-8. Le nom du marchand s'affiche dans la feuille de paiement.

OnFulfillmentPaymentData

Utilisez cet objet pour envoyer des données supplémentaires pour le type de paiement "ON_FULFILLMENT&".

Le tableau suivant répertorie les propriétés du type OnFulfillmentPaymentData:

Propriété Type Description
supportedPaymentOptions List<PaymentOptionsEnums>

Liste des options de paiement disponibles pour l'utilisateur au moment de l'exécution de la commande.

L'exemple suivant illustre un élément OnFulfillmentPaymentData:

Exemple

{
  "supportedPaymentOptions": [
    "Cash",
    "Card"
  ]
}

Paramètres

Définit les types liés à TokenizationParameters.

Le tableau suivant répertorie les propriétés du type Parameters:

Propriété Type Description
gateway String

Obligatoire.

Exemple : braintree

gatewayMerchantId String
[additionalKey: string] String Paires clé-valeur supplémentaires

L'exemple suivant illustre un élément Parameters:

Exemple 1

{
  "gatewayMerchantId": "90412491",
  "gateway": "olo"
}

Exemple 2

{
  "gateway": "braintree",
  "braintree:apiVersion": "v1",
  "braintree:sdkVersion": "1.4.0",
  "braintree:merchantId": "YOUR_MERCHANT_ID",
  "braintree:clientKey": "YOUR_BRAINTREE_SANDVOX_OR_PRODUCTION_KEY"
}

Demande de données de paiement

Utilisez cet objet pour configurer la compatibilité de votre site avec l'API Google Pay.

Le tableau suivant répertorie les propriétés du type PaymentDataRequest:

Propriété Type Description
apiVersion Const

Obligatoire.

Version majeure de l'API.

Valeur : 2

apiVersionMinor Const

Obligatoire.

Version d'API mineure.

Valeur : 0

merchantInfo MerchantInfo

Obligatoire.

(ID de marchand Google Pay) Informations sur le marchand qui demande des données de paiement.

allowedPaymentMethods List<PaymentMethod>

Obligatoire.

Indique les modes de paiement acceptés par l'API Google Pay.

transactionInfo TransactionInfo

Obligatoire.

Informations sur l'autorisation de la transaction selon que l'utilisateur l'accepte ou non. Ce champ indique le prix total et l'état du prix.

L'exemple suivant illustre un élément PaymentDataRequest:

Exemple

{
  "apiVersion": 2,
  "apiVersionMinor": 0,
  "merchantInfo": {
    "merchantId": "10391231",
    "merchantName": "Burrito Town"
  },
  "allowedPaymentMethods": [
    {
      "type": "CARD",
      "parameters": {
        "allowedAuthMethods": [
          "PAN_ONLY"
        ],
        "allowedCardNetworks": [
          "VISA",
          "AMEX",
          "MASTERCARD"
        ],
        "billingAddressRequired": true,
        "cvcRequired": false
      },
      "tokenizationSpecification": {
        "type": "PAYMENT_GATEWAY",
        "parameters": {
          "gateway": "stripe",
          "stripe:version": "2019-05-16",
          "stripe:publishableKey": "pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA"
        }
      }
    }
  ],
  "transactionInfo": {
    "currencyCode": "INR",
    "totalPriceStatus": "ESTIMATED",
    "totalPrice": "185.00"
  }
}

Informations de paiement

Informations de paiement pour une commande.

Le tableau suivant répertorie les propriétés du type PaymentInfo:

Propriété Type Description
displayName String

Obligatoire.

Nom visible du mode de paiement à afficher sur le reçu.

paymentType PaymentType

Obligatoire.

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

Jeton pouvant être utilisé par l'action. Renseignez cette valeur uniquement si vous avez spécifié Google comme comme option de paiement dans le message ResponseResponseMessage.

L'exemple suivant illustre un élément PaymentInfo:

Exemple 1

{
  "displayName": "Visa\u2006****\u20061111",
  "googleProvidedPaymentInstrument": {
    "instrumentToken": "abcd"
  },
  "paymentType": "PAYMENT_CARD"
}

Exemple 2

{
  "displayName": "Visa\u2006****\u20061111",
  "googleProvidedPaymentInstrument": {
    "instrumentToken": "abcd",
    "billingAddress": {
      "regionCode": "US",
      "postalCode": "94043",
      "administrativeArea": "CA",
      "locality": "Mountain View",
      "addressLines": [
        "123 Random Street",
        "Unit ABC"
      ],
      "recipients": [
        "sample_receipient"
      ]
    }
  },
  "paymentType": "PAYMENT_CARD"
}

Méthode de paiement

Utilisez cet objet pour configurer la compatibilité de votre site avec l'API Google Pay.

Le tableau suivant répertorie les propriétés du type PaymentMethod:

Propriété Type Description
type Const

Obligatoire.

Identifiant court du mode de paiement accepté. Seules les cartes CARD sont acceptées pour le moment.

Valeur : CARD

parameters CardParameters

Obligatoire.

Paramètres requis pour configurer le type de mode de paiement fourni.

tokenizationSpecification TokenizationSpecification

Obligatoire.

Configurez un compte ou un fournisseur de déchiffrement pour recevoir des informations de paiement. Cette propriété est obligatoire pour le mode de paiement CARD.

L'exemple suivant illustre un élément PaymentMethod:

Exemple

{
  "type": "CARD",
  "parameters": {
    "allowedAuthMethods": [
      "PAN_ONLY"
    ],
    "allowedCardNetworks": [
      "VISA",
      "AMEX",
      "MASTERCARD"
    ],
    "billingAddressRequired": false
  },
  "tokenizationSpecification": {
    "type": "PAYMENT_GATEWAY",
    "parameters": {
      "gatewayMerchantId": "90412491",
      "gateway": "olo"
    }
  }
}

Options de paiement

Le tableau suivant répertorie les propriétés du type PaymentOptions:

Propriété Type Description
Exactement l'un des groupes de propriétés suivants.
googleProvidedOptions Groupe 1 GoogleProvidedPaymentOptions

Mutuellement exclusif avec l'action actionFournidOptions. Utilisez-la pour effectuer des paiements en ligne avec gPay.

actionProvidedOptions Groupe 2 ActionProvidedPaymentOptions

Mutuellement exclusif avec googleProvidedOptions. Utilisez cette option pour le paiement à la livraison ou le paiement à la livraison.

L'exemple suivant illustre un élément PaymentOptions:

Exemple 1

{
  "googleProvidedOptions": {
    "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": {  \"merchantId\": \"Merchant ID\",  \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [  {    \"type\": \"CARD\",    \"parameters\": {      \"allowedAuthMethods\": [        \"PAN_ONLY\"      ],      \"allowedCardNetworks\": [        \"VISA\",        \"AMEX\",        \"MASTERCARD\"      ],      \"billingAddressRequired\": false    },    \"tokenizationSpecification\": {      \"type\": \"PAYMENT_GATEWAY\",      \"parameters\": {        \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\",        \"gateway\": \"stripe\",        \"stripe:version\": \"2019-05-16\"      }    }  }],\"transactionInfo\": {  \"currencyCode\": \"AUD\",  \"totalPriceStatus\": \"ESTIMATED\",  \"totalPrice\": \"1.0\"}}"
  }
}

Exemple 2

{
  "actionProvidedOptions": {
    "paymentType": "ON_FULFILLMENT",
    "displayName": "Pay when you get your food.",
    "onFulfillmentPaymentData": {
      "supportedPaymentOptions": [
        "Cash",
        "Card"
      ]
    }
  }
}

Options de paiement

Le type PaymentOptionsEnums peut avoir les valeurs suivantes:

  • Cash
  • Card
  • UPI
  • Paytm

PaymentType

Le type PaymentType peut avoir les valeurs suivantes:

  • PAYMENT_CARD: pour GoogleProvidedPaymentOptions.
  • ON_FULFILLMENT : pour ActionProvidedPaymentOptions.

Prise en charge des réseaux de cartes

Définit les types liés à GoogleProvidedPaymentOptions.

Le type SupportedCardNetworks peut avoir les valeurs suivantes:

  • UNSPECIFIED_CARD_NETWORK
  • AMEX
  • DISCOVER
  • JCB
  • MASTERCARD
  • VISA

Paramètres de tokenisation

Définit les types liés à GoogleProvidedPaymentOptions.

Le tableau suivant répertorie les propriétés du type TokenizationParameters:

Propriété Type Description
tokenizationType Enum [ "UNSPECIFIED_TOKENIZATION_TYPE", "PAYMENT_GATEWAY" ]

Obligatoire.

Utilisez plutôt facilitationSpecification. Type de jetons acceptable.

parameters Parameters

Utilisez plutôt facilitationSpecification.

Spécification de tokenisation

Cet objet vous permet de configurer un compte afin de recevoir des informations de paiement facturables.

Le tableau suivant répertorie les propriétés du type TokenizationSpecification:

Propriété Type Description
type Const

Obligatoire.

parameters Parameters

Obligatoire.

L'exemple suivant illustre un élément TokenizationSpecification:

Exemple 1

{
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gatewayMerchantId": "1247192",
    "gateway": "cybersource"
  }
}

Exemple 2

{
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "stripe",
    "stripe:version": "2018-10-31",
    "stripe:publishableKey": "12378127"
  }
}

TransactionInfo

Cet objet décrit une transaction qui détermine la capacité d'un payeur à effectuer des paiements. Utilisé pour présenter une boîte de dialogue d'autorisation de paiement.

Le tableau suivant répertorie les propriétés du type TransactionInfo:

Propriété Type Description
currencyCode String

Obligatoire.

Code de devise alphabétique ISO 4217.

transactionId String

Identifiant unique qui identifie une tentative de transaction. Les marchands peuvent utiliser un ID existant ou en générer un spécifique pour les tentatives de transaction Google Pay. Ce champ est obligatoire lorsque vous envoyez des rappels à l'API Google Transaction Events.

totalPriceStatus Const

Obligatoire.

Utilisez la valeur par défaut "Estimed" (Estimée). Le prix total peut être ajusté en fonction des détails de la réponse, tels que la taxe de vente collectée en fonction d'une adresse de facturation.

Valeur : ESTIMATED

totalPrice String

Obligatoire.

Valeur monétaire totale de la transaction avec éventuellement une décimale de deux décimales. La valeur de ce champ doit être identique à celle du panier.totalPrice.

L'exemple suivant illustre un élément TransactionInfo:

Exemple

{
  "totalPriceStatus": "ESTIMATED",
  "totalPrice": "12.34",
  "currencyCode": "USD"
}