Types de base
Collection
Contient des détails sur la commande et indique si elle concerne un retrait ou une livraison. Un panier contient également les détails de livraison, les pourboires et l'adresse de livraison. L'objetCart
est défini dans un Checkout AppRequest
.f.
Vous incluez une copie du panier dans votre Checkout AppResponse
.
Le tableau suivant répertorie les propriétés pour le type Cart
:
Propriété | Type | Description | |
---|---|---|---|
@type |
Const. |
Type de cet objet. Omettez ce champ si l'objet Panier parent fait partie de ProposedOrder. Valeur : |
|
id |
String |
Identifiant facultatif du panier. |
|
merchant |
Merchant |
Marchand affilié à ce panier. |
|
lineItems |
Liste<LineItem > |
Obligatoire. Liste des produits ou services commandés par l'utilisateur. Ne doit pas contenir moins de 1 élément. |
|
promotions |
Liste<Promotion > |
Promotion appliquée dans ce panier. Une seule promotion est actuellement acceptée. |
|
notes |
String |
Notes sur la commande ou les instructions de livraison |
|
extension |
FoodCartExtension |
Définit les détails de 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 détails de la personne recevant la commande. Elle n'est disponible que dansAppResponse
.
Le tableau suivant répertorie les propriétés pour le type Contact
:
Propriété | Type | Description | |
---|---|---|---|
displayName |
String |
Nom de la personne qui reçoit la commande, tel que vous voulez qu'il apparaisse. Utilisez ce champ si firstName et lastName ne sont pas spécifiés. Exemple : |
|
email |
String |
Adresse e-mail de la personne qui reçoit la commande. Exemple : |
|
firstName |
String |
Prénom de la personne qui reçoit la commande. Exemple : |
|
lastName |
String |
Nom de famille de la personne qui reçoit la commande. Exemple : |
|
phoneNumber |
String |
Numéro de téléphone de la personne recevant la commande, avec le code pays. Exemple : |
|
emailVerified |
Booléen |
Indique si la personne qui reçoit la commande est connectée avec son compte Google. |
L'exemple suivant illustre un élément Contact
:
Exemple
{ "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" }
CustomPushMessage
Contient leOrderUpdate
pour la requête.
Le tableau suivant répertorie les propriétés pour le type CustomPushMessage
:
Propriété | Type | Description | |
---|---|---|---|
orderUpdate |
OrderUpdate |
Obligatoire. Informations mises à jour pour la commande. |
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" } } }
DeliveryInfo
Le tableau suivant répertorie les propriétés pour le type DeliveryInfo
:
Propriété | Type | Description | |
---|---|---|---|
deliveryTimeIso8601 |
String |
Délai de livraison estimé, au format d'horodatage ISO 8601: "{année}-{mois}-{jour}T{heure}:{min}:{s}[.{frac_sec}]Z" ou au 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 tôt possible. Référence: https://fr.wikipedia.org/wiki/ISO_8601#Combine_date_and_time_Representations. Utilisez cette option pour mettre à jour le délai de livraison estimé lors de la réponse au règlement. Exemple : |
L'exemple suivant illustre un élément DeliveryInfo
:
Exemple
{ "deliveryTimeIso8601": "PT90M" }
Disclaimer
Le tableau suivant répertorie les propriétés pour le type Disclaimer
:
Propriété | Type | Description | |
---|---|---|---|
predefinedMessage |
PredefinedMessage |
Obligatoire. Pour afficher des messages prédéfinis avec des clauses de non-responsabilité lors du règlement. |
|
feeAmount |
Money |
Le partenaire facturera au marchand des frais d'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 |
Number |
Le partenaire facturera des frais de N% au marchand 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 } } }
Erreur
Le type Error
a les valeurs possibles suivantes:
CLOSED
: le restaurant est fermé à l'heure de la commande.NO_CAPACITY
: aucune capacité de service disponible (par exemple, une indisponibilité temporaire due aux heures de pointe).NO_COURIER_AVAILABLE
: impossible de traiter la commande en raison du personnel de livraison limité.REQUIREMENTS_NOT_MET
: les contraintes d'acceptation de la commande n'ont pas été remplies (par exemple, la taille minimale du panier).UNAVAILABLE_SLOT
: la commande ne peut pas être traitée à l'avance à l'heure 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 d'appliquer la promotion, car la promotion a expiré.PROMO_NOT_APPLICABLE
: code d'erreur générique permettant d'identifier tous les cas de non-application du code promotionnel, si aucune des autres erreurs liées aux codes promotionnels ne correspond.PROMO_NOT_RECOGNIZED
: le code promotionnel n'a pas été reconnu.PROMO_ORDER_INELIGIBLE
: la commande en cours ne permet pas de bénéficier de ce bon de réduction.PROMO_USER_INELIGIBLE
: l'utilisateur actuel ne peut pas bénéficier de ce bon de réduction.AVAILABILITY_CHANGED
: l'article n'est plus disponible ou le nombre d'articles est insuffisant pour traiter la demande.INCORRECT_PRICE
: erreurs de prix dans les frais ou le total.INVALID
: un élément de campagne, une option de traitement ou une promotion contient des données non valides.NOT_FOUND
: élément de campagne, FulfillmentOption ou promotion introuvable.PRICE_CHANGED
: le prix d'un article a changé.
FeeAmountRange
Le tableau suivant répertorie les propriétés pour le type FeeAmountRange
:
Propriété | Type | Description | |
---|---|---|---|
minFeeAmount |
Money |
Limite inférieure des frais facturés. |
|
maxFeeAmount |
Money |
Limite supérieure des frais facturés. |
FeePercentRange
Le tableau suivant répertorie les propriétés pour le type FeePercentRange
:
Propriété | Type | Description | |
---|---|---|---|
minFeePercent |
Number |
Limite inférieure du pourcentage de frais facturé. |
|
maxFeePercent |
Number |
Limite supérieure du pourcentage de frais facturé. |
FoodCartExtension
Contient des informations sur l'utilisateur, telles que les préférences de traitement.
Le tableau suivant répertorie les propriétés pour le 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 : |
|
contact |
Contact |
Coordonnées de la personne qui reçoit la commande. Les informations incluent 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 de l'utilisateur. |
|
location |
Location |
Dans le CheckoutRequestMessage, ce champ indique l'adresse de livraison, qui est obligatoire si la commande est destinée à une livraison. Pour les commandes à emporter ou à retirer, ce champ n'est pas inclus dans le message. |
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 du typeFoodErrorExtension
.
Les erreurs peuvent être envoyées dans un CheckoutResponse
.
Le tableau suivant répertorie les propriétés pour le type FoodErrorExtension
:
Propriété | Type | Description | |
---|---|---|---|
@type |
Const. | Obligatoire. Type de cette extension. Valeur : |
|
foodOrderErrors |
Liste<FoodOrderError > |
Obligatoire. Tableau d'objets FoodOrderError décrivant les erreurs qui se sont produites. Une erreur recommandée par panier ou par article. Ne doit pas contenir moins de 1 élément. |
|
correctedProposedOrder |
ProposedOrder |
Obligatoire si Nouvelle commande proposée avec des corrections. Renvoie cet objet s'il existe des erreurs récupérables dans l'objet ProposedOrder d'origine. Par exemple, un changement du prix d'un ou de plusieurs articles dans le panier est une erreur récupérable. Les erreurs récupérables associées à un ProposedOrder valide passent à l'étape de confirmation, au lieu de demander à l'utilisateur de vérifier son panier. |
|
paymentOptions |
PaymentOptions |
Obligatoire si Options de paiement par défaut sélectionnées pour l'utilisateur. |
|
additionalPaymentOptions |
Liste<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 } } }
FoodItemExtension
Définit les modules complémentaires des aliments.
Le tableau suivant répertorie les propriétés pour le 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 : |
|
options |
Liste<FoodItemOption > |
Il peut s'agir d'un module complémentaire ou d'un groupe 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 } ] } ] }
FoodItemOption
Le tableau suivant répertorie les propriétés pour le 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 offerId. Exemple : |
|
offerId |
String |
Identifiant de l'offre pour l'article. Exemple : |
|
name |
String |
Nom de l'option. Exemple : |
|
price |
Money |
||
note |
String |
Remarque concernant l'option. |
|
quantity |
Number |
Pour les options qui correspondent à des éléments, le nombre d'éléments. Exemple : |
|
subOptions |
Liste<FoodItemOption > |
Sous-options de l'option, le cas échéant. Exemple : |
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 } ] }
FoodOrderError
Contient des détails sur les erreurs dans unCheckoutResponse
.
Le tableau suivant répertorie les propriétés pour le type FoodOrderError
:
Propriété | Type | Description | |
---|---|---|---|
error |
Error |
Obligatoire. |
|
id |
String | Obligatoire si Ce champ est obligatoire pour les erreurs au niveau des articles. Il s'agit de l'ID LineItem.id attribué par Google aux éléments du menu ou de l'ID 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 si Nouveau prix d'un article à l'origine de l'erreur. Cet attribut n'est requis que si l'erreur est "PRICE_CHANGED". |
|
availableQuantity |
Entier | Obligatoire si Nouvelle quantité disponible de l'article à l'origine de l'erreur. Cette condition n'est requise que si l'erreur est "INVALID" ou "NOT_FOUND". La valeur de "INVALID" et "NOT_FOUND" doit être égale à zéro. |
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 pour la commande.
Le tableau suivant répertorie les propriétés pour le 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 : |
|
availableFulfillmentOptions |
Liste<FulfillmentOption > |
Représente les options de traitement disponibles pour la commande. |
|
optinForRemarketing |
Booléen |
Demande d'un utilisateur concernant l'activation de vos canaux marketing. Par défaut, vous ne pouvez pas envoyer de contenu marketing sans le consentement de l'utilisateur. Si la valeur de optinForRemarketing est "true", vous pouvez abonner l'utilisateur. Si la valeur optinForRemarketing est définie sur "false" ou si elle est absente, vous devez conserver l'état de l'abonnement dans votre système tel quel. Les utilisateurs ne peuvent pas désactiver l'option via Google, uniquement via une fonction de désabonnement fournie dans vos canaux marketing. Cet indicateur n'est présent que dans SubmitOrderRequestMessage. |
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
Vous pouvez utiliser un objetFulfillmentOption
de différentes manières :
-
Dans
Checkout AppRequest
etSubmit AppRequest
,Cart.extension.fulfillmentPreference
: stocke la préférence de l'utilisateur (livraison ou retrait). Le prix est toujours égal à 0 au moment de l'envoi de la demande de règlement. -
Dans
Checkout AppResponse
, l'élémentProposedOrder.extension.availableFulfillmentOptions
définit une ou plusieurs options de diffusion (actuellement, une seule option est acceptée). Spécifiez l'option par défaut en tant queLineItem
dansProposedOrder.otherItems
. LeofferId
deFulfillmentOption
doit correspondre à l'ID deLineItem
spécifié dansProposedOrder.otherItems
.
Le tableau suivant répertorie les propriétés pour le 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 |
Heure à laquelle cette option de traitement expire. |
|
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
Définit les informations liées àFulfillmentInfo
.
Le tableau suivant répertorie les propriétés pour le type FulfillmentOptionInfo
:
Propriété | Type | Description | |
---|---|---|---|
Vous devez indiquer exactement l'un des groupes de propriétés suivants. | |||
delivery |
Groupe 1 | DeliveryInfo |
S'il est présent, indique l'ordre de livraison. |
pickup |
Groupe 2 | PickupInfo |
Si cet attribut est présent, il indique une commande à retirer. |
Image
Le tableau suivant répertorie les propriétés pour le type Image
:
Propriété | Type | Description | |
---|---|---|---|
sourceUrl |
String | Obligatoire. URL de l'image. L'image doit mesurer au minimum 72 x 72 pixels. Pour un résultat optimal, utilisez une image d'au moins 216 x 216 pixels. La taille de l'image doit être inférieure à 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 pour le type LineItem
:
Propriété | Type | Description | |
---|---|---|---|
id |
String | Obligatoire si Pour un article dans un panier (ProposedOrder.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 de campagne dans ProposedOrder (ProposedOrder.otherItems[0].id), qui permet d'ajouter des éléments tels que les frais et les taxes de livraison, la valeur de l'identifiant est définie par le fournisseur. Par exemple, dans un chariot, il y a deux articles identiques avec des instructions de préparation différentes (comme deux pizzas moyennes avec des ensembles de garnitures différents). Dans ce cas, les deux articles ont le même "offerId" de base. Lorsque vous envoyez une demande de mise à jour d'une commande pour indiquer qu'un article est refusé, utilisez cet identifiant comme outil de sélection. En d'autres termes, si l'une des pizzas est refusée parce qu'elle manque une garniture particulière, l'identifiant permet à Google de déterminer à quel élément de la commande 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. Cette chaîne est visible par l'utilisateur. Elle doit, si possible, utiliser une majuscule en début de phrase (par exemple, "Frais de livraison", "Frais de service" ou "Taxes"). Ce champ est tronqué à 100 caractères pour les utilisateurs. |
|
type |
LineItemType |
Obligatoire. |
|
quantity |
Entier | Obligatoire si Nombre d'articles inclus. Non applicable à ProposedOrder.otherItems. |
|
description |
String |
Description de l'article. |
|
price |
Price |
Obligatoire. Prix du ou des articles Cette valeur reflète le prix total de tous les biens ou services pour cet élément de campagne (en d'autres termes, ajoutez le coût des modules complémentaires et multipliez-le par la quantité). Par exemple, si un article à 10 € a une quantité de 3, le prix est de 30 €. Pour une pizza dont le prix de base est de 5 $et d'une pizza dont le prix est de 1 $, le prix est de 6 $. Pour deux pizzas (quantité = 2) au prix de base de 5 $et chacune avec un supplément de 1 $, le prix serait de 12 $. Chaque élément de campagne doit comporter un prix, même s'il est égal à "0". Lorsque le type est DISCOUNT, spécifiez la valeur comme négative (par exemple, "-2"). |
|
subLines |
Liste<SublineNote > |
Facultatif et valide uniquement si le type est "REGULAR". Une remarque de l'utilisateur concernant l'article peut être envoyée dans ce champ lors de la demande de règlement et de la demande d'envoi de commande. Assurez-vous que le marchand reçoit la note lorsqu'elle est envoyée. Il apparaît dans la requête sous la forme 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 de 1 élément. |
|
offerId |
String | Obligatoire si Identifiant de l'offre de l'élément MenuItem pour l'article. Non applicable à ProposedOrder.otherItems. |
|
extension |
FoodItemExtension |
Définit les modules complémentaires 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 } ] } }
LineItemType
Le type LineItemType
a les valeurs possibles suivantes:
REGULAR
: élément de campagne de type "Produit". Applicable à Cart.lineItems.TAX
: ligne "Taxes". Applicable à ProposedOrder.otherItems.DISCOUNT
: ligne de remise. Notez que le prix doit être négatif. Applicable à ProposedOrder.otherItems.GRATUITY
: élément de campagne de type sans frais. Généralement réservé au champ "SubmitOrderRequestMessage" pour un conseil sélectionné par l'utilisateur. Applicable à ProposedOrder.otherItems.DELIVERY
: élément de campagne de diffusion. Applicable à ProposedOrder.otherItems.SUBTOTAL
: ligne de sous-total. Applicable à ProposedOrder.otherItems.FEE
: élément de campagne supplémentaire non couvert par les autres types. Applicable à ProposedOrder.otherItems.
Emplacement
Spécifie une adresse pour la commande de repas. Le typeLocation
est utilisé dans un Cart
pour indiquer uniquement la destination d'une commande de livraison.
L'établissement finalisé est également présent dans TransactionDecisionValue
si l'utilisateur passe la commande. Pour les commandes spécifiant le retrait, l'établissement n'est pas du tout inclus (même vide).
Le tableau suivant répertorie les propriétés pour le type Location
:
Propriété | Type | Description | |
---|---|---|---|
coordinates |
Coordinates |
||
formattedAddress |
String |
Afficher l'adresse du lieu. Exemple : |
|
postalAddress |
PostalAddress |
||
zipCode |
String |
Exemple : |
|
city |
String |
Nom de la ville. Exemple : |
|
notes |
String |
Remarques sur l'emplacement, telles que les codes d'entrée. Il ne doit pas comporter plus de 500 caractères. Exemple : |
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 pour le type Merchant
:
Propriété | Type | Description | |
---|---|---|---|
id |
String |
Identifiant du marchand. Si une valeur est spécifiée, il correspond à l'identifiant Restaurant.@id dans le flux "Restaurants". Exemple : |
|
name |
String | Obligatoire. Nom du marchand visible par l'utilisateur. Exemple : |
L'exemple suivant illustre un élément Merchant
:
Exemple
{ "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }
Monnaie
Le tableau suivant répertorie les propriétés pour le type Money
:
Propriété | Type | Description | |
---|---|---|---|
currencyCode |
String | Obligatoire. Code de devise à trois lettres, au format ISO 4217. Exemple : |
|
units |
String |
Unités entières du montant. Par exemple, si le code currencyCode est "USD", l'unité "1" correspond à un dollar américain. Exemple : |
|
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 des unités = -1 et par des nanos = -750 000 000. Exemple : |
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 des informations de paiement. Cet objet est reçu par votre action dans un objetSubmit AppRequest
.
Le tableau suivant répertorie les propriétés pour le type Order
:
Propriété | Type | Description | |
---|---|---|---|
finalOrder |
ProposedOrder |
Obligatoire. Commande proposée à l'origine de la commande. |
|
googleOrderId |
String | Obligatoire. ID de commande attribué par Google. Cet identifiant doit être stable pendant tout le cycle de vie de la commande. L'utilisateur final ne peut pas voir cet ID. |
|
orderDate |
Horodatage ISO | Obligatoire. Date et heure de création de la commande. |
|
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" } }
OrderUpdate
Le tableau suivant décrit les champs du type OrderUpdate inclus dansAppResponse
.
Le tableau suivant répertorie les propriétés pour le type OrderUpdate
:
Propriété | Type | Description | |
---|---|---|---|
actionOrderId |
String | Obligatoire. Identifiant unique de la commande dans le système de l'intégrateur, qui permet d'identifier la commande pour laquelle la mise à jour est envoyée. Si vous ne fournissez pas reçu.user_visible_order_id au moins une fois dans OrderUpdate pour une commande "CREATED", cet ID correspond à l'ID visible par l'utilisateur saisi, tel qu'il apparaît sur 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 |
Liste<OrderManagementAction > |
Les actions post-commande, comme contacter l'assistance et afficher les détails d'une commande Doit contenir entre 1 article et 6 articles. |
|
rejectionInfo |
RejectionInfo |
Obligatoire si |
|
cancellationInfo |
CancellationInfo |
Obligatoire si |
|
inTransitInfo |
InTransitInfo |
Ce champ est obsolète. |
|
fulfillmentInfo |
FulfillmentInfo |
Ce champ est obsolète. |
|
receipt |
Receipt |
Obligatoire si Indiquez l'ID de commande visible par l'utilisateur sur 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 ou de retrait estimé. |
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" } }
PickupInfo
Le tableau suivant répertorie les propriétés pour le type PickupInfo
:
Propriété | Type | Description | |
---|---|---|---|
pickupTimeIso8601 |
String |
Heure de retrait estimée, au format d'horodatage ISO 8601: "{année}-{mois}-{jour}T{heure}:{min}:{s}[.{frac_sec}]Z" ou au 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 l'heure de retrait préférée est le plus tôt possible. Référence: https://fr.wikipedia.org/wiki/ISO_8601#Combine_date_and_time_Representations. Utilisez cette option pour mettre à jour l'heure de retrait estimée lors de la réponse au règlement. Exemple : |
L'exemple suivant illustre un élément PickupInfo
:
Exemple
{ "pickupTimeIso8601": "PT90M" }
PostalAddress
Le tableau suivant répertorie les propriétés pour le type PostalAddress
:
Propriété | Type | Description | |
---|---|---|---|
regionCode |
String | Obligatoire. Code pays à deux lettres. Exemple : |
|
postalCode |
String |
Code postal. Exemple : |
|
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 : |
|
locality |
String |
Ville de cet emplacement. Dans les régions du monde où les localités ne sont pas bien définies ou ne correspondent pas à cette structure, n'indiquez pas de localité et utilisez plutôt le champ addressLines. Exemple : |
|
addressLines |
List<String> |
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 : |
|
recipients |
List<String> |
Liste des destinataires d'une commande. Ce champ n'est disponible que dans 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 pour le 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 pour le type Promotion
:
Propriété | Type | Description | |
---|---|---|---|
coupon |
String | Obligatoire. Code promotionnel. |
ProposedOrder
Le tableau suivant répertorie les propriétés pour le type ProposedOrder
:
Propriété | Type | Description | |
---|---|---|---|
id |
String |
ID facultatif pour la commande proposée. |
|
cart |
Cart |
Obligatoire. Éléments de l'utilisateur. |
|
otherItems |
Liste<LineItem > |
Les articles ajoutés par le fournisseur, tels que les frais de livraison, les autres frais et les taxes. otherItems peuvent également contenir des pourboires et/ou des remises ajoutés par l'utilisateur. Ne doit pas contenir plus de 10 articles. |
|
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 pour les commandes de repas. |
|
disclaimers |
Liste<Disclaimer > |
Correspond aux messages de clause de non-responsabilité qui s'affichent dans l'interface utilisateur avant la 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" } ] } }
SublineNote
Le tableau suivant répertorie les propriétés pour le 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"
TransactionDecisionValue
Contient leOrder
.
Le tableau suivant répertorie les propriétés pour le type TransactionDecisionValue
:
Propriété | Type | Description | |
---|---|---|---|
order |
Order |
Obligatoire. Commande à passer avec les détails du 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 de traitement
AppRequest
Le tableau suivant répertorie les propriétés pour le 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 |
Liste<Input > |
Obligatoire. Contient les arguments attendus pour régler 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" } } } } ] } ] }
CheckoutRequestMessage
UnCheckoutRequestMessage
est un AppRequest
avec l'intent actions.foodordering.intent.CHECKOUT
.
SubmitOrderRequestMessage
UnSubmitOrderRequestMessage
est un AppRequest
avec l'intent actions.foodordering.intent.TRANSACTION_DECISION
.
Conversation
UnConversation
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 pour le 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" }
Entrée
Arguments attendus pour procéder au règlement d'un panier.
Le tableau suivant répertorie les propriétés pour le type Input
:
Propriété | Type | Description | |
---|---|---|---|
intent |
Enum [
"actions.foodordering.intent.CHECKOUT",
"actions.intent.TRANSACTION_DECISION"
] |
Obligatoire. Défini sur "actions.foodordering.intent.CHECKOUT" pour le message de demande de règlement OU "actions.intent.TRANSACTION_DECISION" pour le message de demande d'envoi de commande. |
|
arguments |
Liste<Argument > |
Obligatoire. Contient le panier à régler ou la commande à passer. Doit contenir exactement 1 article. |
Argument
Contient des détails sur les aliments que l'utilisateur souhaite acheter. Pour le règlement, seule une extension est applicable. Pour l'envoi de la commande, seule transactionDecisionValue est applicable.
Le tableau suivant répertorie les propriétés pour le type Argument
:
Propriété | Type | Description | |
---|---|---|---|
Vous devez indiquer exactement l'un des groupes de propriétés suivants. | |||
extension |
Groupe 1 | Cart |
Détaille les aliments que l'utilisateur souhaite acheter. |
transactionDecisionValue |
Groupe 2 | TransactionDecisionValue |
Contient la commande à passer ainsi que les détails du paiement. |
Réponse de traitement
AppResponse
Le tableau suivant répertorie les propriétés pour le type AppResponse
:
Propriété | Type | Description | |
---|---|---|---|
expectUserResponse |
Const. |
Défini sur "false". Valeur : |
|
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 } } } } } ] } } }
CheckoutResponseMessage
UnCheckoutResponseMessage
est un AppResponse
avec un checkoutResponse
ou un error
dans le StructuredResponse
.
SubmitOrderResponseMessage
UnSubmitOrderResponseMessage
est un AppResponse
avec un orderUpdate
dans le StructuredResponse
.
FinalResponse
Votre réponse au règlement du panier ou SubmitOrderRequestMessage.
Le tableau suivant répertorie les propriétés pour le type FinalResponse
:
Propriété | Type | Description | |
---|---|---|---|
richResponse |
RichResponse |
Obligatoire. Contient votre réponse au CheckoutRequestMessage ou au SubmitOrderRequestMessage. |
CheckoutResponse
Le tableau suivant répertorie les propriétés pour le 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 |
Liste<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 à SubmitOrderRequestMessage.
Le tableau suivant répertorie les propriétés pour le type Item
:
Propriété | Type | Description | |
---|---|---|---|
structuredResponse |
StructuredResponse |
Obligatoire. |
RichResponse
Contient votre réponse au règlement d'un panier.
Le tableau suivant répertorie les propriétés pour le type RichResponse
:
Propriété | Type | Description | |
---|---|---|---|
items |
Liste<Item > |
Obligatoire. Doit contenir exactement 1 article. |
StructuredResponse
Pour CheckoutResponseMessage, il peut s'agir de l'un des éléments suivants: CheckoutResponse indique que le paiement a réussi. OR FoodErrorExtension: indique un échec lors du règlement. La réponse peut inclure une commande ProposedOrder et PaymentOptions corrigées ou un message d'erreur sans PaymentOptions. Pour SubmitOrderResponseMessage, seule orderUpdate est applicable.
Le tableau suivant répertorie les propriétés pour le type StructuredResponse
:
Propriété | Type | Description | |
---|---|---|---|
Vous devez indiquer exactement l'un des groupes de propriétés suivants. | |||
checkoutResponse |
Groupe 1 | CheckoutResponse |
Articles achetés avec les taxes et les remises |
error |
Groupe 2 | FoodErrorExtension |
Erreurs observées dans les articles du panier. Selon la nature de l'erreur, cette propriété peut inclure une commande ProposedOrder et PaymentOptions corrigées, ou simplement un message d'erreur sans PaymentOptions. |
orderUpdate |
Groupe 3 | OrderUpdate |
Mises à jour asynchrones des commandes
Cette section décrit les principaux types qui composent les requêtes et les réponses d'une interaction typique d'une commande de repas avec une action intégrée.AsyncOrderUpdateRequestMessage
Notifie l'utilisateur des modifications après l'envoi et la confirmation d'une commande. Par exemple, vous pouvez informer l'utilisateur que la commande est en cours d'acheminement ou si le prix a changé. Plus en savoir plus, consultez la pageLe tableau suivant répertorie les propriétés pour le type AsyncOrderUpdateRequestMessage
:
Propriété | Type | Description | |
---|---|---|---|
isInSandbox |
Booléen |
Indique que la commande pour laquelle cette mise à jour a été envoyée est un paiement de bac à sable. |
|
customPushMessage |
CustomPushMessage |
Obligatoire. Contient la valeur OrderUpdate de 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" } } } }
AsyncOrderUpdateResponseMessage
Une fois que vous avez envoyéAsyncOrderUpdateRequestMessage
, Google répond avec l'état HTTP 200 et le corps vide. En cas d'échec de la mise à jour, Google répond en indiquant le motif de l'échec.
Types de mises à jour des commandes
Bouton
Définit un élément d'interface utilisateur que vous pouvez ajouter pour permettre une interaction utilisateur.
Le tableau suivant répertorie les propriétés pour le type Button
:
Propriété | Type | Description | |
---|---|---|---|
title |
String | Obligatoire. Libellé d'affichage. Utilisez une majuscule en début de phrase ne dépassant pas 30 caractères pour garantir un rendu correct. Exemple : |
|
openUrlAction |
OpenUrlAction |
Obligatoire. |
L'exemple suivant illustre un élément Button
:
Exemple
{ "title": "Send us feedback", "openUrlAction": { "url": "mailto:person@example.com" } }
CancellationInfo
Le tableau suivant répertorie les propriétés pour le type CancellationInfo
:
Propriété | Type | Description | |
---|---|---|---|
reason |
String | Obligatoire. Motif du refus à afficher sous forme de texte lorsque OrderState.state a la valeur "CANCELLED". Exemple : |
L'exemple suivant illustre un élément CancellationInfo
:
Exemple
{ "reason": "Insufficient inventory" }
FoodOrderUpdateExtension
Ce type fournit à l'utilisateur une estimation de l'intervalle entre la livraison ou le retrait de la commande. Envoyez cette extension dans un OrderUpdate
lorsque les informations sont disponibles ou ont été modifiées depuis leur dernier envoi.
Fournissez une estimation prudente de l'intervalle de traitement afin de répondre de manière cohérente aux attentes des utilisateurs. Par exemple, si la livraison estimée de la commande est prévue aujourd'hui à 13h00, envoyez un intervalle estimé cohérent avec les variations en fonction des conditions de circulation (par exemple, aujourd'hui de 12h45 à 13h15).
Une durée ou un horodatage ISO 8601 est interprété comme correspondant à l'intervalle entre la updateTime
de OrderUpdate
(en substance, "maintenant") et la updateTime
plus duration
.
N'utilisez ce format que si "maintenant" correspond à une attente raisonnable.
Un intervalle ISO 8601 est interprété comme correspondant à l'intervalle compris entre le début et la fin de l'intervalle.
Le tableau suivant répertorie les propriétés pour le 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 : |
|
estimatedFulfillmentTimeIso8601 |
String |
L'heure estimée à laquelle la commande sera livrée ou prête à être retirée. La chaîne doit être au format ISO 8601 et doit correspondre à un intervalle plutôt qu'à une heure fixe. Les conventions acceptées sont les suivantes: Intervalles, Durées et Dates/Heures. Ce champ peut être envoyé dans SubmitOrderResponseMessage ou AsyncOrderUpdateRequestMessage lorsque les informations deviennent disponibles ou qu'il y a un changement, par exemple des arrivées anticipées ou retardées. Exemple : |
|
foodOrderErrors |
Liste<FoodOrderError > |
Décrit les erreurs qui se sont produites après la commande. Une erreur recommandée par panier ou par article. Utilisez FoodOrderUpdateExtension.FoodOrderErrors pour toutes les erreurs non couvertes par RejetionInfo. Ne doit pas contenir moins de 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 pour le type FulfillmentInfo
:
Propriété | Type | Description | |
---|---|---|---|
Vous devez indiquer exactement l'un des groupes de propriétés suivants. | |||
deliveryTime |
Groupe 1 | Horodatage ISO |
Utilisez estiméFulfillmentTimeIso8601 dans le message FoodOrderingUpdateExtension |
pickupTime |
Groupe 2 | Horodatage ISO |
Utilisez estiméFulfillmentTimeIso8601 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" }
InTransitInfo
Le tableau suivant répertorie les propriétés pour le type InTransitInfo
:
Propriété | Type | Description | |
---|---|---|---|
updatedTime |
Horodatage ISO |
Utilisez estiméFulfillmentTimeIso8601 dans le message FoodOrderingUpdateExtension |
L'exemple suivant illustre un élément InTransitInfo
:
Exemple
{ "updatedTime": "2017-05-10T02:36:38.803Z" }
LineItemUpdate
Le tableau suivant répertorie les propriétés pour le type LineItemUpdate
:
Propriété | Type | Description | |
---|---|---|---|
orderState |
OrderState |
||
price |
Price |
||
reason |
String |
Raison 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 pour le 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. "EMAIL": le préfixe doit être "mailto". "APPELER": le préfixe doit être "tel". "CUSTOMER_SERVICE": le préfixe doit être "mailto", "tel", "http" ou "https". Exemple : |
OrderManagementAction
La gestion des commandes permet aux utilisateurs de bénéficier d'une assistance après commande. Elle doit être envoyée dans chaque OrderUpdate
de l'AppResponse
d'envoi de la commande, ainsi que dans chaque AsyncOrderUpdateRequestMessage
action de gestion des commandes envoyée pour une commande spécifique, qui peut varier en fonction de l'état.
Par exemple, dans l'état "CREATED", 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 utiliser le numéro de téléphone du restaurant s'il devient le meilleur point de contact pour le client. De même, une fois que la commande est à l'état "FULFILLED", CUSTOMER_SERVICE
peut faire référence à vos adresses e-mail d'assistance.
Le tableau suivant répertorie les propriétés pour le 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
Définit les types associés àOrderManagementAction
.
Le type OrderManagementActionType
a les valeurs possibles suivantes:
CUSTOMER_SERVICE
: adresse e-mail et/ou numéro de téléphone du service client à afficher sur la page de confirmation de commande. Ce champ est obligatoire. Le préfixe openUrlAction.url doit être "mailto", "tel", "http" ou "https".EMAIL
: action par e-mail sur la page de détails de la commande uniquement. Le préfixe openUrlAction.url doit être "mailto".CALL_DRIVER
: action d'appel sur la page de détails de la commande uniquement. Le préfixe openUrlAction.url doit être "tel".CALL_RESTAURANT
: action d'appel sur la page de détails de la commande uniquement. Le préfixe openUrlAction.url doit être "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 pour le type OrderState
:
Propriété | Type | Description | |
---|---|---|---|
state |
OrderStateEnum |
Obligatoire. |
|
label |
String | Obligatoire. Chaîne d'affichage visible par l'utilisateur pour l'état. Utilisez une majuscule en début de phrase. Exemple : |
L'exemple suivant illustre un élément OrderState
:
Exemple
{ "state": "CONFIRMED", "label": "Provider confirmed" }
OrderStateEnum
Définit les types associés àOrderState
.
Le type OrderStateEnum
a les valeurs possibles suivantes:
CREATED
: commande créée par l'intégrateur et en attente de la confirmation du fournisseur. Correspond à l'état d'achat "Commandé".CONFIRMED
: commande confirmée par le fournisseur et active. Correspond à l'état d'achat "Accepté".REJECTED
: commande refusée par l'intégrateur ou le fournisseur. Correspond à l'état "Refusé".CANCELLED
: l'utilisateur a annulé la commande. Correspond à l'état d'achat "Annulé".IN_PREPARATION
: le repas est en cours de préparation. Correspond à l'état d'achat "État inconnu".READY_FOR_PICKUP
: le plat est prêt à être retiré. Correspond à l'état d'achat "Prêt pour le retrait".IN_TRANSIT
: la commande est en cours de livraison. Correspond à l'état "En cours" de l'achat.FULFILLED
: l'utilisateur a reçu la commande. Correspond à l'état d'achat "Retiré".
Reçu
Envoyez ce type dans une commandeAppResponse
, où OrderState
est "CONFIRMED", "FULFILLED" ou "IN_TRANSIT". Envoyez une confirmation au moment où le userVisibleOrderId
devient disponible. Vous n'avez pas besoin d'envoyer le reçu en continu dans les mises à jour ultérieures.
Le tableau suivant répertorie les propriétés pour le 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 (généralement celui du restaurant) qui figure à la fois sur le reçu de l'intégrateur et sur la fiche de commande Google. L'utilisateur doit pouvoir utiliser cet ID pour référencer sa commande de service client auprès du fournisseur et de l'intégrateur. Cet ID ne doit être fourni qu'une seule fois dans une mise à jour OrderUpdate donnée. Tant qu'il n'est pas fourni, actionOrderId correspond à userVisibleOrderId. Par exemple, il est possible que vous n'ayez pas de valeur userVisibleOrderId tant que la commande n'a pas été confirmée par le restaurant. Après confirmation, vous devez envoyer un AsyncOrderUpdateRequestMessage avec un OrderUpdate et un Receipt. |
L'exemple suivant illustre un élément Receipt
:
Exemple
{ "userVisibleOrderId": "userVisibleId1234" }
RejectionInfo
Le tableau suivant répertorie les propriétés pour le type RejectionInfo
:
Propriété | Type | Description | |
---|---|---|---|
type |
RejectionType |
Obligatoire. |
|
reason |
String |
Motif du refus utilisé pour la journalisation interne. Ce champ n'est pas visible par les utilisateurs. |
L'exemple suivant illustre un élément RejectionInfo
:
Exemple
{ "type": "PAYMENT_DECLINED", "reason": "There is an issue with payment processing." }
RejectionType
Le type RejectionType
a les valeurs possibles suivantes:
INELIGIBLE
: l'utilisateur n'est pas éligible en raison de problèmes liés au règlement ou aux risques.PAYMENT_DECLINED
: un problème est survenu lors du traitement des paiements.UNAVAILABLE_SLOT
: la commande ne peut pas être traitée à l'avance à l'heure indiquée par DeliveryInfo ou PickupInfo.PROMO_NOT_APPLICABLE
: il y a un problème avec la promotion.UNKNOWN
: toute autre raison.
Types de paiements
Cette section décrit les types de paiements utilisés pour la commande de repas.ActionProvidedPaymentOptions
Conditions requises pour un mode de paiement associé à une action.
Le tableau suivant répertorie les propriétés pour le type ActionProvidedPaymentOptions
:
Propriété | Type | Description | |
---|---|---|---|
paymentType |
PaymentType |
Obligatoire. |
|
displayName |
String | Obligatoire. Nom du mode de paiement indiqué sur le reçu. Exemple : |
|
onFulfillmentPaymentData |
OnFulfillmentPaymentData |
Données supplémentaires pour le type de paiement "ON_FULFILLMENT". Par exemple, vous pouvez utiliser ce champ pour indiquer si le traitement des commandes en espèces ou par carte est accepté. |
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
a les valeurs possibles 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 incluent le numéro de compte personnel (PAN) ainsi que le mois et l'année d'expiration.
AllowedCardNetworks
Le type AllowedCardNetworks
a les valeurs possibles suivantes:
AMEX
DISCOVER
INTERAC
JCB
MASTERCARD
VISA
BillingAddressParameters
Cet objet vous permet de définir des champs supplémentaires à renvoyer pour une adresse de facturation demandée.
Le tableau suivant répertorie les propriétés pour le type BillingAddressParameters
:
Propriété | Type | Description | |
---|---|---|---|
format |
String |
Format d'adresse de facturation requis pour terminer la transaction. MIN: nom, code pays et code postal. COMPLET: nom, adresse postale, localité, région, code pays et code postal. |
L'exemple suivant illustre un élément BillingAddressParameters
:
Exemple 1
{ "format": "MIN" }
Exemple 2
{ "format": "FULL" }
CardParameters
Utilisez cet objet pour configurer la compatibilité de votre site avec l'API Google Pay.
Le tableau suivant répertorie les propriétés pour le type CardParameters
:
Propriété | Type | Description | |
---|---|---|---|
allowedAuthMethods |
List<Const> | Obligatoire. Champs pris en charge pour authentifier une transaction par carte. Ne doit pas contenir moins de 1 élément. |
|
allowedCardNetworks |
Liste<AllowedCardNetworks > |
Obligatoire. Un ou plusieurs réseaux de cartes compatibles avec l'API Google Pay Ne doit pas contenir moins de 1 élément. |
|
billingAddressRequired |
Booléen |
Définissez cette valeur 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 améliorer la fluidité du processus de règlement et entraîner une diminution des taux de conversion. |
|
billingAddressParameters |
BillingAddressParameters |
Champs attendus affichés si billingAddressRequired est défini sur "true". |
|
cvcRequired |
Booléen |
Définissez cette valeur sur "true" si vous utilisez TimesofMoney et sur "false" pour toutes les autres sociétés de traitement des paiements. |
L'exemple suivant illustre un élément CardParameters
:
Exemple 1
{ "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "AMEX", "DISCOVER" ], "billingAddressRequired": false, "cvcRequired": false }
Exemple 2
{ "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "AMEX", "DISCOVER" ], "billingAddressRequired": true, "billingAddressParameters": { "format": "MIN" }, "cvcRequired": false }
GoogleProvidedPaymentInstrument
Le tableau suivant répertorie les propriétés pour le type GoogleProvidedPaymentInstrument
:
Propriété | Type | Description | |
---|---|---|---|
instrumentToken |
String | Obligatoire. Chaîne encodée en base64 contenant le jeton de paiement permettant de facturer l'utilisateur à une société de traitement des paiements Google Pay participante, conformément aux options GoogleProvidedPaymentOptions spécifiées précédemment. |
|
billingAddress |
PostalAddress |
Adresse de facturation pour le 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" ] } }
GoogleProvidedPaymentOptions
Conditions requises pour le mode de paiement fourni par Google.
Le tableau suivant répertorie les propriétés pour le type GoogleProvidedPaymentOptions
:
Propriété | Type | Description | |
---|---|---|---|
facilitationSpecification |
String |
JSON PaymentDataRequest sous forme de chaîne. Utilisez cet objet pour configurer la compatibilité de votre site avec l'API Google Pay. |
|
supportedCardNetworks |
Liste<SupportedCardNetworks > |
Utilisez plutôt facilitationSpecification. Type de réseaux de cartes compatibles avec l'agent. Ce champ est obsolète. |
|
prepaidCardDisallowed |
Booléen |
Utilisez plutôt facilitationSpecification. Indique si une carte prépayée est autorisée ou non comme type de paiement. Ce champ est obsolète. |
|
billingAddressRequired |
Booléen |
Utilisez plutôt facilitationSpecification. Indique si une adresse de facturation est requise. Ce champ est obsolète. |
|
tokenizationParameters |
TokenizationParameters |
Ce champ est obsolète. |
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 }
MerchantInfo
Utilisez cet objet pour configurer la compatibilité de votre site avec l'API Google Pay.
Le tableau suivant répertorie les propriétés pour le type MerchantInfo
:
Propriété | Type | Description | |
---|---|---|---|
merchantId |
String |
Identifiant de marchand Google qui vous est attribué par Google Pay. |
|
merchantName |
String | Obligatoire. Nom du marchand encodé au format UTF-8. Le nom du marchand est affiché sur 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 pour le type OnFulfillmentPaymentData
:
Propriété | Type | Description | |
---|---|---|---|
supportedPaymentOptions |
Liste<PaymentOptionsEnums > |
Liste des options de paiement disponibles pour l'utilisateur au moment du traitement de la commande. |
L'exemple suivant illustre un élément OnFulfillmentPaymentData
:
Exemple
{ "supportedPaymentOptions": [ "Cash", "Card" ] }
Paramètres
Définit les types associés à TokenizationParameters
.
Le tableau suivant répertorie les propriétés pour le type Parameters
:
Propriété | Type | Description | |
---|---|---|---|
gateway |
String | Obligatoire. Exemple : |
|
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" }
PaymentDataRequest
Utilisez cet objet pour configurer la compatibilité de votre site avec l'API Google Pay.
Le tableau suivant répertorie les propriétés pour le type PaymentDataRequest
:
Propriété | Type | Description | |
---|---|---|---|
apiVersion |
Const. | Obligatoire. Version majeure de l'API. Valeur : |
|
apiVersionMinor |
Const. | Obligatoire. Version mineure de l'API. Valeur : |
|
merchantInfo |
MerchantInfo |
Obligatoire. (Référence marchand Google Pay) Informations sur le marchand qui demande des données de paiement. |
|
allowedPaymentMethods |
Liste<PaymentMethod > |
Obligatoire. Indique la compatibilité avec un ou plusieurs 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, "billingAddressParameters": { "format": "FULL" }, "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" } }
PaymentInfo
Informations relatives au paiement d'une commande.
Le tableau suivant répertorie les propriétés pour le type PaymentInfo
:
Propriété | Type | Description | |
---|---|---|---|
displayName |
String | Obligatoire. Nom du mode de paiement qui sera visible par l'utilisateur et qui apparaîtra sur le reçu. |
|
paymentType |
PaymentType |
Obligatoire. |
|
googleProvidedPaymentInstrument |
GoogleProvidedPaymentInstrument |
Jeton pouvant être utilisé par l'action. Ne le spécifiez que si vous avez spécifié GoogleProvidedPaymentOptions comme option de paiement dans CheckoutResponseMessage. |
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" }
PaymentMethod
Utilisez cet objet pour configurer la compatibilité de votre site avec l'API Google Pay.
Le tableau suivant répertorie les propriétés pour le type PaymentMethod
:
Propriété | Type | Description | |
---|---|---|---|
type |
Const. | Obligatoire. Identifiant court du mode de paiement accepté. Seule la carte CARD est acceptée pour le moment. Valeur : |
|
parameters |
CardParameters |
Obligatoire. Paramètres requis pour configurer le type de mode de paiement fourni. |
|
tokenizationSpecification |
TokenizationSpecification |
Obligatoire. Configurez un fournisseur de compte ou de déchiffrement pour recevoir des informations de paiement. Cette propriété est obligatoire pour le mode de paiement par carte. |
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" } } }
PaymentOptions
Le tableau suivant répertorie les propriétés pour le type PaymentOptions
:
Propriété | Type | Description | |
---|---|---|---|
Vous devez indiquer exactement l'un des groupes de propriétés suivants. | |||
googleProvidedOptions |
Groupe 1 | GoogleProvidedPaymentOptions |
Exclusivité mutuelle avec actionProvidedOptions. Utilisez-le pour payer en ligne via gPay. |
actionProvidedOptions |
Groupe 2 | ActionProvidedPaymentOptions |
Exclusion mutuelle avec googleProvidedOptions. Utilisez cette option pour "espèces à la livraison" ou "paiement lors de la réalisation". |
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
{ "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\":true, \"billingAddressParameters\": { \"format\":\"MIN\" } }, \"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 3
{ "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } } }
PaymentOptionsEnums
Le type PaymentOptionsEnums
a les valeurs possibles suivantes:
Cash
Card
UPI
Paytm
PaymentType
Le type PaymentType
a les valeurs possibles suivantes:
PAYMENT_CARD
: pour GoogleProvidedPaymentOptions.ON_FULFILLMENT
: pour ActionProvidedPaymentOptions.
SupportedCardNetworks
Définit les types associés àGoogleProvidedPaymentOptions
.
Le type SupportedCardNetworks
a les valeurs possibles suivantes:
UNSPECIFIED_CARD_NETWORK
AMEX
DISCOVER
JCB
MASTERCARD
VISA
TokenizationParameters
Définit les types liés àGoogleProvidedPaymentOptions
.
Le tableau suivant répertorie les propriétés pour le type TokenizationParameters
:
Propriété | Type | Description | |
---|---|---|---|
tokenizationType |
Enum [
"UNSPECIFIED_TOKENIZATION_TYPE",
"PAYMENT_GATEWAY"
] |
Obligatoire. Utilisez plutôt facilitationSpecification. Types de jetons acceptables. |
|
parameters |
Parameters |
Utilisez plutôt facilitationSpecification. |
TokenizationSpecification
Cet objet vous permet de configurer un compte pour recevoir des informations de paiement facturables.
Le tableau suivant répertorie les propriétés pour le 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 à payer. Il permet d'afficher une boîte de dialogue d'autorisation de paiement.
Le tableau suivant répertorie les propriétés pour le 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 "ESTIMATED" comme valeur par défaut. Le prix total peut être ajusté en fonction des détails de la réponse, comme la taxe de vente collectée à partir d'une adresse de facturation. Valeur : |
|
totalPrice |
String | Obligatoire. Valeur monétaire totale de la transaction avec une précision décimale facultative de deux chiffres. La valeur de ce champ doit être identique à celle de cart.totalPrice. |
L'exemple suivant illustre un élément TransactionInfo
:
Exemple
{ "totalPriceStatus": "ESTIMATED", "totalPrice": "12.34", "currencyCode": "USD" }