Types de base
Collection
Contient les détails de la commande et indique si la demande concerne le retrait ou de livraison. Le panier contient également des informations sur la livraison, le pourboire et la livraison. adresse e-mail. L'objetCart
est défini dans un fichier Checkout AppRequest
.f
Vous incluez une copie du panier dans votre Checkout AppResponse
Le tableau suivant répertorie les propriétés du type Cart
:
Propriété | Type | Description | |
---|---|---|---|
@type |
Const. |
Type de cet objet. Omettez ce champ si l'objet "Panier" parent fait partie de "ProposedOrder". Valeur : |
|
id |
String |
ID facultatif du panier. |
|
merchant |
Merchant |
Marchand affilié à ce panier. |
|
lineItems |
Liste<LineItem > |
Obligatoire. Liste des produits ou services que l'utilisateur commande. Ne doit pas contenir moins de 1 élément. |
|
promotions |
Liste<Promotion > |
Promotion appliquée à ce panier. Une seule promotion est actuellement acceptée. |
|
notes |
String |
Notes sur les instructions de commande ou de livraison |
|
extension |
FoodCartExtension |
Définit les détails de l'utilisateur, tels que les préférences de traitement. |
L'exemple suivant montre 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 concernant la personne qui reçoit la commande. Elle n'est disponible que dans les pays suivants :AppResponse
Le tableau suivant répertorie les propriétés du type Contact
:
Propriété | Type | Description | |
---|---|---|---|
displayName |
String |
Nom de la personne recevant la commande, tel que vous souhaitez 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 recevant la commande. Exemple : |
|
lastName |
String |
Nom de famille de la personne recevant la commande. Exemple : |
|
phoneNumber |
String |
Numéro de téléphone de la personne qui reçoit la commande, avec le code pays Exemple : |
|
emailVerified |
Valeur booléenne |
Indique si la personne qui reçoit la commande est connectée à son compte Google. |
L'exemple suivant montre 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 du type CustomPushMessage
:
Propriété | Type | Description | |
---|---|---|---|
orderUpdate |
OrderUpdate |
Obligatoire. Informations mises à jour pour la commande. |
L'exemple suivant montre 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 du type DeliveryInfo
:
Propriété | Type | Description | |
---|---|---|---|
deliveryTimeIso8601 |
String |
Délai de livraison estimé, au format d'horodatage ISO 8601 : "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" ou 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://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_représentations. Utilisez-le pour mettre à jour le délai de livraison estimé lors du règlement. Exemple : |
L'exemple suivant montre un élément DeliveryInfo
:
Exemple
{ "deliveryTimeIso8601": "PT90M" }
Clause de non-responsabilité
Le tableau suivant répertorie les propriétés du type Disclaimer
:
Propriété | Type | Description | |
---|---|---|---|
predefinedMessage |
PredefinedMessage |
Obligatoire. Pour afficher des messages de clause de non-responsabilité prédéfinis 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 au marchand des frais de N% pour cette commande. |
|
feePercentRange |
FeePercentRange |
Le partenaire facturera au marchand des frais de N% à M% par commande. |
L'exemple suivant montre 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
peut avoir les valeurs suivantes:
CLOSED
: le restaurant est fermé au moment de la commande.NO_CAPACITY
: aucune capacité de service n'est disponible (par exemple, en raison d'une indisponibilité temporaire due aux heures de pointe).NO_COURIER_AVAILABLE
: impossible de traiter la commande en raison d'un personnel de livraison limité.REQUIREMENTS_NOT_MET
: les contraintes d'acceptation de la commande n'ont pas été respectées (par exemple, la taille minimale du panier).UNAVAILABLE_SLOT
: la commande ne peut pas être traitée au délai de commande spécifié 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 elle a expiré.PROMO_NOT_APPLICABLE
: code d'erreur générique permettant de détecter tous les cas d'échec d'application du code promotionnel si aucune des autres erreurs de code promotionnel ne correspond.PROMO_NOT_RECOGNIZED
: le code promotionnel n'a pas été reconnu.PROMO_ORDER_INELIGIBLE
: la commande en cours ne permet pas d'utiliser 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 répondre à la demande.INCORRECT_PRICE
: erreurs de prix dans les frais ou le totalINVALID
: un élément LineItem, FulfillmentOption ou une promotion contient des données non valides.NOT_FOUND
: élément LineItem, FulfillmentOption ou Promotion introuvable.PRICE_CHANGED
: le prix d'un article a changé.
FeeAmountRange
Le tableau suivant répertorie les propriétés du type FeeAmountRange
:
Propriété | Type | Description | |
---|---|---|---|
minFeeAmount |
Money |
Limite inférieure du montant des frais facturés... |
|
maxFeeAmount |
Money |
Limite supérieure du montant des frais facturés. |
FeePercentRange
Le tableau suivant répertorie les propriétés du 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 du type FoodCartExtension
:
Propriété | Type | Description | |
---|---|---|---|
@type |
Const. |
Type de cette extension. Ce champ est toujours défini sur "type.googleapis.com/google.actions.v2.orders.FoodCartExtension". Valeur : |
|
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. |
|
fulfillmentPreference |
FulfillmentOption |
Obligatoire. Préférence de traitement de l'utilisateur. |
|
location |
Location |
Dans le message "CheckoutRequestMessage", ce champ indique l'adresse de livraison, qui est obligatoire si la commande doit être livrée. Pour les commandes à emporter ou à retirer, ce champ n'est pas inclus dans le message. |
L'exemple suivant montre 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 du 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 lorsque
Nouvelle ProposedOrder avec des corrections. Renvoyez cet objet s'il existe des erreurs récupérables dans l'élément ProposedOrder d'origine. Par exemple, la modification du prix d'un ou plusieurs articles dans le panier constitue une erreur récupérable. Les erreurs récupérables associées à un objet ProposedOrder valide passent à l'étape de confirmation, au lieu de demander à l'utilisateur de vérifier son panier. |
|
paymentOptions |
PaymentOptions |
Obligatoire lorsque
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 montre 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 du type FoodItemExtension
:
Propriété | Type | Description | |
---|---|---|---|
@type |
Const. | Obligatoire. Type de cette extension. Ce champ est toujours défini sur "type.googleapis.com/google.actions.v2.orders.FoodItemExtension". Valeur : |
|
options |
Liste<FoodItemOption > |
Il peut s'agir d'un élément ou d'un groupe de modules complémentaires contenant un ensemble de modules complémentaires. |
L'exemple suivant montre 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 du type FoodItemOption
:
Propriété | Type | Description | |
---|---|---|---|
id |
String |
Identifiant unique attribué par Google. Lorsque vous envoyez une erreur FoodOrderError ou AsyncOrderUpdateRequest, utilisez ce champ pour différencier les cas où un panier contient plusieurs articles avec le même offerId. Exemple : |
|
offerId |
String |
Identifiant d'offre de l'article. Exemple : |
|
name |
String |
Nom de l'option. Exemple : |
|
price |
Money |
||
note |
String |
Remarque concernant l'option. |
|
quantity |
Number |
Pour les options qui sont des éléments, il s'agit du nombre d'éléments. Exemple : |
|
subOptions |
Liste<FoodItemOption > |
Sous-options de l'option, le cas échéant. Exemple : |
L'exemple suivant montre 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 du type FoodOrderError
:
Propriété | Type | Description | |
---|---|---|---|
error |
Error |
Obligatoire. |
|
id |
String | Obligatoire lorsque
Ce champ est obligatoire pour les erreurs au niveau des articles. Il s'agit de l'élément LineItem.id attribué par Google pour les éléments de menu ou FoodItemOption.id pour les modules complémentaires. |
|
description |
String |
Description de l'erreur. Cette description est destinée à la journalisation interne et n'est pas visible par les utilisateurs. |
|
updatedPrice |
Money |
Obligatoire lorsque
Nouveau prix de l'article à l'origine de l'erreur. Ce champ n'est obligatoire que si l'erreur est "PRICE_CHANGED". |
|
availableQuantity |
Entier | Obligatoire lorsque
Nouvelle quantité disponible de l'article à l'origine de l'erreur. Ce champ n'est obligatoire que si l'erreur est "NON VALIDE". ou "NOT_FOUND". La valeur doit être zéro pour "NON VALIDE". et "NOT_FOUND". |
L'exemple suivant montre 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 les informations de traitement de la commande.
Le tableau suivant répertorie les propriétés du type FoodOrderExtension
:
Propriété | Type | Description | |
---|---|---|---|
@type |
Const. |
Type de cette extension. Ce champ est toujours défini sur "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension". Valeur : |
|
availableFulfillmentOptions |
Liste<FulfillmentOption > |
Représente les options de traitement disponibles pour la commande. |
|
optinForRemarketing |
Valeur booléenne |
Demande de l'utilisateur d'activer vos canaux marketing. Par défaut, vous ne pouvez pas envoyer de contenus marketing sans le consentement de l'utilisateur. Si optinForRemarketing est défini sur "true", vous pouvez abonner l'utilisateur. Si optinForRemarketing est défini sur "false" ou absent, vous devez conserver l'état de l'abonnement dans votre système. Les utilisateurs ne peuvent pas se désabonner par le biais de Google, mais uniquement par le biais d'une fonction de désabonnement fournie sur vos canaux marketing. Cet indicateur n'est présent que dans SubmitOrderRequestMessage. |
L'exemple suivant montre 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
des manières suivantes:
-
Dans
Checkout AppRequest
etSubmit AppRequest
, leCart.extension.fulfillmentPreference
: stocke les préférences de l'utilisateur (distribution ou retrait en magasin). Le prix est toujours égal à 0 lors de l'envoi de la demande de règlement. -
Dans
Checkout AppResponse
, le paramètreProposedOrder.extension.availableFulfillmentOptions
: Définit une ou plusieurs options de diffusion (actuellement, une seule option est compatibles). Vous spécifiez l'option par défaut en tant queLineItem
dansProposedOrder.otherItems
LesofferId
deFulfillmentOption
doit correspondre à l'identifiantLineItem
spécifié dansProposedOrder.otherItems
.
Le tableau suivant répertorie les propriétés du type FulfillmentOption
:
Propriété | Type | Description | |
---|---|---|---|
offerId |
String |
Identifiant unique pour cette option de traitement, le cas échéant. |
|
fulfillmentInfo |
FulfillmentOptionInfo |
Obligatoire. |
|
expiresAt |
Code temporel ISO |
Heure d'expiration de cette option de traitement. |
|
price |
Money |
Coût de cette option. |
L'exemple suivant montre 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 du type FulfillmentOptionInfo
:
Propriété | Type | Description | |
---|---|---|---|
Vous devez indiquer 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 |
S'il est présent, indique une commande à retirer. |
Image
Le tableau suivant répertorie les propriétés du type Image
:
Propriété | Type | Description | |
---|---|---|---|
sourceUrl |
String | Obligatoire. URL de l'image. Elle doit faire au moins 72 x 72 pixels. Pour des résultats optimaux, 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 du panier (Cart.lineItems
) ou les frais supplémentaires pour une
commande (ProposedOrder.otherItems
).
Le tableau suivant répertorie les propriétés du type LineItem
:
Propriété | Type | Description | |
---|---|---|---|
id |
String | Obligatoire lorsque
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 d'une commande ProposedOrder (ProposedOrder.otherItems[0].id), utilisé pour ajouter des éléments tels que les frais de livraison et les taxes, la valeur de l'identifiant est définie par le fournisseur. Par exemple, dans un chariot, il y a deux mêmes articles avec des instructions de préparation différentes (par exemple, deux pizzas de taille intermédiaire avec des garnitures différentes). Dans ce cas, les deux articles ont le même identifiant d'offre de base. Lorsque vous envoyez une demande de mise à jour de la commande pour indiquer qu'un article a été refusé, utilisez cet ID comme facteur d'ambiguïté. En d'autres termes, si l'une des pizzas est refusée en raison de l'absence d'une garniture particulière, l'identifiant aide Google à déterminer à quel article de l'ordre vous faites référence. Ce champ est obligatoire, sauf dans otherItems. |
|
name |
String | Obligatoire. Nom de l'élément de campagne. Il s'agit d'une chaîne visible par l'utilisateur qui doit, dans la mesure du possible, utiliser une majuscule en début de phrase (par exemple, "Frais de livraison", "Frais de service" ou "Taxe"). Ce champ est tronqué à 100 caractères pour les utilisateurs. |
|
type |
LineItemType |
Obligatoire. |
|
quantity |
Entier | Obligatoire lorsque
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 de tous les modules complémentaires et multipliez-le par la quantité). Par exemple, si un article à 10 € contient une quantité de trois, le prix est de 30 €. Pour une pizza au prix de base de 5 $et une option supplémentaire de 1 $, le prix serait de 6 $. Pour deux pizzas (quantité = 2) au prix de base de 5 $et avec une offre complémentaire de 1 $chacune, le prix est de 12 $. Chaque élément de campagne doit être associé à un prix, même s'il est égal à "0". Si le type est "DISCOUNT", spécifiez la valeur en tant que valeur négative (par exemple, "-2"). |
|
subLines |
Liste<SublineNote > |
Facultatif et valide uniquement si le type est "REGULAR". Une note spécifique à l'article de l'utilisateur peut être envoyée dans ce champ lors de la demande de paiement ou d'envoi de la commande. Assurez-vous que le marchand reçoit la note lorsqu'elle vous a été envoyée. Elle apparaîtra dans la requête en tant que subLines[0].note, qui est la seule valeur fournie dans ce champ lorsqu'il est présent dans une requête. Ne doit pas contenir plus d'1 élément. |
|
offerId |
String | Obligatoire lorsque
ID d'offre de l'élément MenuItem pour l'élément. Non applicable à ProposedOrder.otherItems. |
|
extension |
FoodItemExtension |
Définit les modules complémentaires des aliments. |
L'exemple suivant montre 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
peut avoir les valeurs suivantes:
REGULAR
: élément de campagne de produits. Applicable à Cart.lineItems.TAX
: ligne "Taxe". Applicable à ProposedOrder.otherItems.DISCOUNT
: élément de campagne de remise. Notez que le prix doit être négatif. Applicable à ProposedOrder.otherItems.GRATUITY
: élément de campagne sans frais. Généralement réservé à l'élément SubmitOrderRequestMessage pour un pourboire sélectionné par l'utilisateur. Applicable à ProposedOrder.otherItems.DELIVERY
: élément de campagne de diffusion. Applicable à ProposedOrder.otherItems.SUBTOTAL
: élément de campagne de sous-total. Applicable à ProposedOrder.otherItems.FEE
: élément de campagne supplémentaire non couvert par les autres types. Applicable à ProposedOrder.otherItems.
Lieu
Spécifie une adresse pour la commande de repas. Le typeLocation
est utilisé dans un
Cart
pour indiquer uniquement la destination
d'une commande à livrer.
L'emplacement finalisé est également présent dans
TransactionDecisionValue
si l'utilisateur passe la commande. Pour les commandes spécifiant le retrait, un lieu est
pas du tout (pas même une table vide).
Le tableau suivant répertorie les propriétés du type Location
:
Propriété | Type | Description | |
---|---|---|---|
coordinates |
Coordinates |
||
formattedAddress |
String |
Adresse à afficher du lieu. Exemple : |
|
postalAddress |
PostalAddress |
||
zipCode |
String |
Exemple : |
|
city |
String |
Nom de la ville. Exemple : |
|
notes |
String |
Remarques sur l'emplacement (codes d'entrée, par exemple). Il ne doit pas dépasser 500 caractères. Exemple : |
L'exemple suivant montre un élément Location
:
Exemple
{ "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" }
Marchand
Le tableau suivant répertorie les propriétés du type Merchant
:
Propriété | Type | Description | |
---|---|---|---|
id |
String |
ID du marchand. Si spécifié, correspond à l'identifiant Restaurant.@id du flux "Restaurant". Exemple : |
|
name |
String | Obligatoire. Nom visible de l'utilisateur du marchand. Exemple : |
L'exemple suivant montre un élément Merchant
:
Exemple
{ "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }
Valeur monétaire
Le tableau suivant répertorie les propriétés du type Money
:
Propriété | Type | Description | |
---|---|---|---|
currencyCode |
String | Obligatoire. Code de devise à trois lettres au format ISO 4217. Exemple : |
|
units |
String |
Unités entières du montant. Par exemple, si le codecurrencyCode est "USD", alors "1" est d'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. Appliquez les règles suivantes: si les unités sont positives, les nano-unités doivent être positives ou nulles. Si les unités sont nulles, les nano-unités peuvent être positives, nulles ou négatives. Si les unités sont négatives, les nano-unités doivent être négatives ou nulles. Par exemple, -1,75 $ est représenté par les unités = -1 et nanos = -750 000 000. Exemple : |
L'exemple suivant montre 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, frais et frais de livraison, comme ainsi que les informations de paiement. Cet objet est reçu par votre action dans unSubmit AppRequest
Le tableau suivant répertorie les propriétés du type Order
:
Propriété | Type | Description | |
---|---|---|---|
finalOrder |
ProposedOrder |
Obligatoire. Ordre proposé ayant généré l'ordre. |
|
googleOrderId |
String | Obligatoire. ID de commande attribué par Google. Cet identifiant doit rester identique pendant tout le cycle de vie d'une commande. Cet ID n'est pas visible par l'utilisateur final. |
|
orderDate |
Code temporel 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 montre 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 qui est inclus dansAppResponse
.
Le tableau suivant répertorie les propriétés du type OrderUpdate
:
Propriété | Type | Description | |
---|---|---|---|
actionOrderId |
String | Obligatoire. Identifiant unique de la commande dans le système de l'intégrateur, qui permet d'identifier la commande pour laquelle la mise à jour est envoyée. Si "Receipt.user_visible_order_id" n'est pas fourni au moins une fois dans "OrderUpdate" pour une valeur "CREATED" commande, cet ID sera l'ID visible par l'utilisateur saisi et affiché sur la fiche de commande Google. |
|
orderState |
OrderState |
Obligatoire. Nouvel état de l'ordre. |
|
lineItemUpdates |
Map<String, LineItemUpdate > |
||
updateTime |
Code temporel ISO | Obligatoire. Heure à laquelle la commande a été mise à jour. |
|
orderManagementActions |
Liste<OrderManagementAction > |
Actions post-commande, comme contacter l'assistance et afficher les détails d'une commande Doit contenir au moins 1 élément. six éléments maximum. |
|
rejectionInfo |
RejectionInfo |
Obligatoire lorsque
|
|
cancellationInfo |
CancellationInfo |
Obligatoire lorsque
|
|
inTransitInfo |
InTransitInfo |
Ce champ est obsolète. |
|
fulfillmentInfo |
FulfillmentInfo |
Ce champ est obsolète. |
|
receipt |
Receipt |
Obligatoire lorsque
Indiquez l'ID de commande (Order ID) visible par l'utilisateur dans un reçu. |
|
totalPrice |
Price |
Prix total de la commande. |
|
infoExtension |
FoodOrderUpdateExtension |
Définit plus de détails sur la mise à jour de la commande, comme l'intervalle d'estimation de la livraison ou du retrait. |
L'exemple suivant montre 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 du type PickupInfo
:
Propriété | Type | Description | |
---|---|---|---|
pickupTimeIso8601 |
String |
Heure de retrait estimée, au format d'horodatage ISO 8601 : "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" ou 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 prise en charge souhaitée est le plus tôt possible. Référence: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_représentations. Utilisez cette option pour mettre à jour l'heure de retrait estimée lors du règlement. Exemple : |
L'exemple suivant montre un élément PickupInfo
:
Exemple
{ "pickupTimeIso8601": "PT90M" }
PostalAddress
Le tableau suivant répertorie les propriétés du type PostalAddress
:
Propriété | Type | Description | |
---|---|---|---|
regionCode |
String | Obligatoire. Code pays à deux lettres. Exemple : |
|
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 |
Liste<Chaîne> |
Une ou plusieurs lignes que vous pouvez utiliser pour spécifier l'adresse postale. Ce champ ne doit pas être modifié, car il peut contenir des localités peu claires. Exemple : |
|
recipients |
Liste<Chaîne> |
Liste des destinataires d'un ordre. Ce champ n'est disponible que dans billingAddress. |
L'exemple suivant montre un élément PostalAddress
:
Exemple
{ "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }
Prix
Le tableau suivant répertorie les propriétés du type Price
:
Propriété | Type | Description | |
---|---|---|---|
type |
Enum [
"ESTIMATE",
"ACTUAL"
] |
Obligatoire. Code promotionnel. |
|
amount |
Money |
Obligatoire. |
Promotion
Le tableau suivant répertorie les propriétés du type Promotion
:
Propriété | Type | Description | |
---|---|---|---|
coupon |
String | Obligatoire. Code promotionnel. |
ProposedOrder
Le tableau suivant répertorie les propriétés du type ProposedOrder
:
Propriété | Type | Description | |
---|---|---|---|
id |
String |
ID facultatif de la commande proposée. |
|
cart |
Cart |
Obligatoire. Éléments de l'utilisateur. |
|
otherItems |
Liste<LineItem > |
les articles ajoutés par le fournisseur, tels que des frais de livraison, d'autres frais et des taxes ; otherItems peuvent également contenir des pourboires et/ou une remise ajoutés par l'utilisateur. Ne doit pas contenir plus de 10 éléments. |
|
image |
Image |
Image associée à la commande proposée. |
|
totalPrice |
Price |
Obligatoire. Prix total de la commande proposée. |
|
extension |
FoodOrderExtension |
Obligatoire. Définit les informations de traitement pour les commandes de repas. |
|
disclaimers |
Liste<Disclaimer > |
Correspond aux messages de clause de non-responsabilité qui s'affichent dans l'interface utilisateur avant que la commande ne soit passée. |
L'exemple suivant montre 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 du type SublineNote
:
Propriété | Type | Description | |
---|---|---|---|
note |
String | Obligatoire. |
Horodatage
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 du type TransactionDecisionValue
:
Propriété | Type | Description | |
---|---|---|---|
order |
Order |
Obligatoire. Commande à passer avec les détails du paiement. |
L'exemple suivant montre 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 du type AppRequest
:
Propriété | Type | Description | |
---|---|---|---|
isInSandbox |
Valeur booléenne |
Indique si les transactions ultérieures sont effectuées dans un environnement de bac à sable. |
|
conversation |
Conversation |
||
inputs |
Liste<Input > |
Obligatoire. Contient les arguments attendus pour le règlement d'un panier. Doit contenir exactement 1 élément. |
L'exemple suivant montre 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
Checkout
et SubmitOrder
actions simultanément si nécessaire.
Le tableau suivant répertorie les propriétés du type Conversation
:
Propriété | Type | Description | |
---|---|---|---|
conversationId |
String | Obligatoire. ID unique de la conversation. |
L'exemple suivant montre un élément Conversation
:
Exemple
{ "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ" }
Entrée
Arguments attendus pour le règlement d'un panier.
Le tableau suivant répertorie les propriétés du type Input
:
Propriété | Type | Description | |
---|---|---|---|
intent |
Enum [
"actions.foodordering.intent.CHECKOUT",
"actions.intent.TRANSACTION_DECISION"
] |
Obligatoire. Défini sur "actions.foodordering.intent.CHECKOUT" pour le message de demande de paiement 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 élément. |
Argument
Contient des détails sur les aliments que l'utilisateur souhaite vérifier. Pour le paiement, seule l'extension est applicable. Pour l'envoi de la commande, seule transactionDecisionValue est applicable
Le tableau suivant répertorie les propriétés du type Argument
:
Propriété | Type | Description | |
---|---|---|---|
Vous devez indiquer l'un des groupes de propriétés suivants. | |||
extension |
Groupe 1 | Cart |
Détaille les aliments que l'utilisateur souhaite emprunter. |
transactionDecisionValue |
Groupe 2 | TransactionDecisionValue |
Contient la commande à passer et les détails du paiement. |
Réponse de traitement
AppResponse
Le tableau suivant répertorie les propriétés du type AppResponse
:
Propriété | Type | Description | |
---|---|---|---|
expectUserResponse |
Const. |
Défini sur "false". Valeur : |
|
finalResponse |
FinalResponse |
Obligatoire. Contient votre réponse au paiement du panier. |
L'exemple suivant montre 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
StructuredResponse
SubmitOrderResponseMessage
UnSubmitOrderResponseMessage
est un AppResponse
avec
un orderUpdate
dans StructuredResponse
.
FinalResponse
Votre réponse au paiement du panier ou à SubmitOrderRequestMessage.
Le tableau suivant répertorie les propriétés du type FinalResponse
:
Propriété | Type | Description | |
---|---|---|---|
richResponse |
RichResponse |
Obligatoire. Contient votre réponse à CheckoutRequestMessage ou SubmitOrderRequestMessage. |
CheckoutResponse
Le tableau suivant répertorie les propriétés du type CheckoutResponse
:
Propriété | Type | Description | |
---|---|---|---|
proposedOrder |
ProposedOrder |
Obligatoire. Ordre proposé à 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 montre 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." } } ] }
Élément
Contient votre réponse à un paiement du panier ou SubmitOrderRequestMessage.
Le tableau suivant répertorie les propriétés du type Item
:
Propriété | Type | Description | |
---|---|---|---|
structuredResponse |
StructuredResponse |
Obligatoire. |
RichResponse
Contient votre réponse à un paiement du panier.
Le tableau suivant répertorie les propriétés du type RichResponse
:
Propriété | Type | Description | |
---|---|---|---|
items |
Liste<Item > |
Obligatoire. Doit contenir exactement 1 élément. |
StructuredResponse
Pour "CheckoutResponseMessage", il peut s'agir de l'un des éléments suivants : "CheckoutResponse" indique que le règlement a bien été effectué. OR FoodErrorExtension: indique un échec lors du règlement. La réponse peut inclure des corrections ProposedOrder et PaymentOptions ou un message d'erreur sans PaymentOptions. Pour SubmitOrderResponseMessage, seul orderUpdate est applicable.
Le tableau suivant répertorie les propriétés du type StructuredResponse
:
Propriété | Type | Description | |
---|---|---|---|
Vous devez indiquer l'un des groupes de propriétés suivants. | |||
checkoutResponse |
Groupe 1 | CheckoutResponse |
A validé les articles, plus 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 correction de ProposedOrder et de PaymentOptions, ou simplement un message d'erreur sans PaymentOptions. |
orderUpdate |
Groupe 3 | OrderUpdate |
Mises à jour de commandes asynchrones
Cette section décrit les types de haut niveau qui composent les demandes et réponses d'une interaction typique d’action intégrée de commande de repas.AsyncOrderUpdateRequestMessage
Informe l'utilisateur des modifications après l'envoi et la confirmation d'une commande. Par exemple, vous pouvez informer l'utilisateur que sa commande est en cours d'acheminement ou si le le prix a changé. Plus en savoir plus, consultez la pageLe tableau suivant répertorie les propriétés du type AsyncOrderUpdateRequestMessage
:
Propriété | Type | Description | |
---|---|---|---|
isInSandbox |
Valeur booléenne |
Indique que la commande pour laquelle cette mise à jour a été envoyée est un paiement en mode sandbox. |
|
customPushMessage |
CustomPushMessage |
Obligatoire. Contient la mise à jour OrderUpdate de la requête. |
L'exemple suivant montre 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
Lorsque vous envoyez unAsyncOrderUpdateRequestMessage
, Google vous répond
avec l'état HTTP 200 et un corps vide. Si la mise à jour
échoue,
Google vous explique pourquoi la mise à jour de la commande a échoué.
Types de mise à jour de commande
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 du 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 le bon rendu. Exemple : |
|
openUrlAction |
OpenUrlAction |
Obligatoire. |
L'exemple suivant montre 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 du type CancellationInfo
:
Propriété | Type | Description | |
---|---|---|---|
reason |
String | Obligatoire. Motif du refus (texte à afficher) lorsque OrderState.state est défini sur "CANCELLED". Exemple : |
L'exemple suivant montre un élément CancellationInfo
:
Exemple
{ "reason": "Insufficient inventory" }
FoodOrderUpdateExtension
Ce type fournit à l'utilisateur une estimation de l'intervalle de la commande
livrés ou prêts à être retirés. Envoyez cette extension dans une
OrderUpdate
chaque fois que les informations sont disponibles ou ont changé depuis leur dernier envoi.
Fournissez une estimation prudente de l'intervalle de traitement afin que l'utilisateur les attentes sont régulièrement satisfaites. Par exemple, si la commande est estimée à livré aujourd'hui à 13 h 00, vous devez lui envoyer un intervalle estimé correspondant aux variations dues aux conditions de circulation (aujourd'hui à 12h45, par exemple) à 13h15.
Une durée ou un code temporel ISO 8601 est interprété comme correspondant à l'intervalle entre
updateTime
de OrderUpdate
(en substance "maintenant") à la
updateTime
plus duration
.
N'utilisez ce format que si "maintenant" est en fait une attente raisonnable.
Un intervalle ISO 8601 correspond à l'intervalle compris entre le début et à la fin de l'intervalle.
Le tableau suivant répertorie les propriétés du type FoodOrderUpdateExtension
:
Propriété | Type | Description | |
---|---|---|---|
@type |
Const. |
Type de cette extension. Ce champ est toujours défini sur "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension". Valeur : |
|
estimatedFulfillmentTimeIso8601 |
String |
Estimation de l'heure à laquelle la commande sera livrée ou prête à être retirée. La chaîne doit être au format ISO 8601 et correspondre à un intervalle plutôt qu'à une seule heure fixe. Les conventions acceptables sont les suivantes: Intervalles, Durées et Dates/Heures. Ce champ peut être envoyé dans SubmitOrderResponseMessage ou AsyncOrderUpdateRequestMessage lorsque les informations sont disponibles ou en cas de changement, par exemple une arrivée anticipée ou retardée. 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 DenyionInfo. Ne doit pas contenir moins de 1 élément. |
L'exemple suivant montre un élément FoodOrderUpdateExtension
:
Exemple 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" }
Exemple 2
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "foodOrderErrors": [ { "error": "NO_CAPACITY", "description": "Sorry, the restaurant cannot take your order right now." } ] }
FulfillmentInfo
Le tableau suivant répertorie les propriétés du type FulfillmentInfo
:
Propriété | Type | Description | |
---|---|---|---|
Vous devez indiquer l'un des groupes de propriétés suivants. | |||
deliveryTime |
Groupe 1 | Code temporel ISO |
Utilisation de l'heure estiméeFulfillmentTimeIso8601 dans le message FoodOrderingUpdateExtension |
pickupTime |
Groupe 2 | Code temporel ISO |
Utilisation de l'heure estiméeFulfillmentTimeIso8601 dans le message FoodOrderingUpdateExtension |
L'exemple suivant montre 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 du type InTransitInfo
:
Propriété | Type | Description | |
---|---|---|---|
updatedTime |
Code temporel ISO |
Utilisation de l'heure estiméeFulfillmentTimeIso8601 dans le message FoodOrderingUpdateExtension |
L'exemple suivant montre un élément InTransitInfo
:
Exemple
{ "updatedTime": "2017-05-10T02:36:38.803Z" }
LineItemUpdate
Le tableau suivant répertorie les propriétés du type LineItemUpdate
:
Propriété | Type | Description | |
---|---|---|---|
orderState |
OrderState |
||
price |
Price |
||
reason |
String |
Motif de la modification. Obligatoire pour les changements de prix. |
L'exemple suivant montre un élément LineItemUpdate
:
Exemple
{ "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "5", "nanos": 500000000 } }, "reason": "Menu updated prices." }
OpenUrlAction
Le tableau suivant répertorie les propriétés du type OpenUrlAction
:
Propriété | Type | Description | |
---|---|---|---|
url |
String | Obligatoire. Action déclenchée par un clic ou une pression sur le bouton. La liste des préfixes applicables dépend de orderManagementActionType. "EMAIL" : le préfixe doit être "mailto". "CALL" : 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 d'obtenir une assistance après commande et doit être envoyée
chaque OrderUpdate
dans la commande d'envoi
AppResponse
et chaque ligne suivante
AsyncOrderUpdateRequestMessage
Les actions de gestion des commandes envoyées pour une commande donnée peuvent varier en fonction de la
de l'état.
Par exemple, dans la colonne "CREATED", état, CUSTOMER_SERVICE
peut faire référence à votre
le numéro de téléphone du service client. Ensuite, dans la partie "CONFIRMÉ", État, CUSTOMER_SERVICE
vous pouvez utiliser le téléphone
du restaurant si cela devient le meilleur moyen
le contact du client. De même, une fois la commande passée à l'état "FULFILLED" l'état,
CUSTOMER_SERVICE
peut référencer vos adresses e-mail d'assistance.
Le tableau suivant répertorie les propriétés du type OrderManagementAction
:
Propriété | Type | Description | |
---|---|---|---|
type |
OrderManagementActionType |
Obligatoire. |
|
button |
Button |
Obligatoire. |
L'exemple suivant montre 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 liés àOrderManagementAction
.
Le type OrderManagementActionType
peut avoir les valeurs 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 "Détails de la commande" uniquement. Le préfixe openUrlAction.url doit être "mailto".CALL_DRIVER
: action d'appel uniquement sur la page "Détails de la commande". Le préfixe openUrlAction.url doit être "tel".CALL_RESTAURANT
: action d'appel uniquement sur la page "Détails de la commande". Le préfixe openUrlAction.url doit être "tel".
OrderState
État actuel de la commande. Chaque valeur state
de OrderState
correspond à un état d'achat sur
myaccount.google.com
Le tableau suivant répertorie les propriétés du type OrderState
:
Propriété | Type | Description | |
---|---|---|---|
state |
OrderStateEnum |
Obligatoire. |
|
label |
String | Obligatoire. Chaîne à afficher visible par l'utilisateur pour l'état. Utilisez une majuscule en début de phrase. Exemple : |
L'exemple suivant montre un élément OrderState
:
Exemple
{ "state": "CONFIRMED", "label": "Provider confirmed" }
OrderStateEnum
Définit les types liés àOrderState
.
Le type OrderStateEnum
peut avoir les valeurs suivantes:
CREATED
: commande créée par l'intégrateur et en attente de confirmation du fournisseur. Correspond à l'état de la commande état de l'achat.CONFIRMED
: la commande est confirmée par le fournisseur et est active. Correspond à l'état "Accepté" état de l'achat.REJECTED
: commande refusée par l'intégrateur ou le fournisseur. Correspond à l'état état de l'achat.CANCELLED
: l'utilisateur a annulé la commande. Correspond à l'état "Annulé" état de l'achat.IN_PREPARATION
: le repas est en cours de préparation. Correspond à l'état "Inconnu". état de l'achat.READY_FOR_PICKUP
: le repas est prêt à être retiré. Correspond à l'état "Prêt pour le retrait" état de l'achat.IN_TRANSIT
: la commande est en cours de livraison. Correspond à l'état "En cours" état de l'achat.FULFILLED
: l'utilisateur a reçu ce qui a été commandé. Correspond à l'état "Retiré" état de l'achat.
Reçu
Envoyez ce type dans une commande d'envoiAppResponse
.
où OrderState
correspond à "CONFIRMED", "FULFILLED" ou "IN_TRANSIT". Envoyer la confirmation à l'adresse
l'heure à laquelle userVisibleOrderId
devient disponible. Vous n'avez pas besoin de conserver
l'envoi du reçu dans les mises à jour ultérieures.
Le tableau suivant répertorie les propriétés du type Receipt
:
Propriété | Type | Description | |
---|---|---|---|
userVisibleOrderId |
String | Obligatoire. Obligatoire si l'état de la commande est "CONFIRMED", "IN_TRANSIT" ou "FULFILLED". Ce champ correspond à l'identifiant unique de la commande, visible par l'utilisateur (généralement l'ID de commande du restaurant), affiché à la fois sur le reçu de l'intégrateur et sur la carte de commande Google. L'utilisateur doit pouvoir utiliser cet ID pour faire référence à sa commande auprès du fournisseur et de l'intégrateur. Vous ne devez fournir cet ID qu'une seule fois par commande OrderUpdate. Tant qu'il n'est pas fourni, actionOrderId correspond à userVisibleOrderId. Par exemple, vous ne pouvez pas avoir un userVisibleOrderId tant que la commande n'a pas été confirmée par le restaurant. Une fois la confirmation effectuée, vous devez envoyer un AsyncOrderUpdateRequestMessage avec un OrderUpdate et un Receipt. |
L'exemple suivant montre un élément Receipt
:
Exemple
{ "userVisibleOrderId": "userVisibleId1234" }
RejectionInfo
Le tableau suivant répertorie les propriétés du type RejectionInfo
:
Propriété | Type | Description | |
---|---|---|---|
type |
RejectionType |
Obligatoire. |
|
reason |
String |
Motif du refus utilisé pour la journalisation interne. Ce champ n'est pas visible par les utilisateurs. |
L'exemple suivant montre un élément RejectionInfo
:
Exemple
{ "type": "PAYMENT_DECLINED", "reason": "There is an issue with payment processing." }
RejectionType
Le type RejectionType
peut avoir les valeurs suivantes:
INELIGIBLE
: l'utilisateur n'est pas éligible en raison de problèmes liés aux règles ou aux risques.PAYMENT_DECLINED
: un problème est survenu lors du traitement des paiements.UNAVAILABLE_SLOT
: la commande ne peut pas être traitée au délai de commande spécifié 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 les commandes de repas. le traitement.ActionProvidedPaymentOptions
Conditions requises pour un mode de paiement fourni par une action
Le tableau suivant répertorie les propriétés du type ActionProvidedPaymentOptions
:
Propriété | Type | Description | |
---|---|---|---|
paymentType |
PaymentType |
Obligatoire. |
|
displayName |
String | Obligatoire. Nom du mode de paiement indiqué sur le reçu. Exemple : |
|
onFulfillmentPaymentData |
OnFulfillmentPaymentData |
Données supplémentaires pour le type de paiement "ON_FULFILLMENT". Par exemple, vous pouvez utiliser ce champ pour indiquer si les espèces ou les cartes sont acceptées pour le traitement des commandes. |
L'exemple suivant montre un élément ActionProvidedPaymentOptions
:
Exemple
{ "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } }
AllowedAuthMethods
Le type AllowedAuthMethods
peut avoir les valeurs suivantes:
PAN_ONLY
: méthode d'authentification associée aux cartes de paiement enregistrées dans le compte Google de l'utilisateur. Les données de paiement renvoyées incluent le numéro de compte personnel (PAN) avec le mois et l'année d'expiration.
AllowedCardNetworks
Le type AllowedCardNetworks
peut avoir les valeurs suivantes:
AMEX
DISCOVER
INTERAC
JCB
MASTERCARD
VISA
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 du type BillingAddressParameters
:
Propriété | Type | Description | |
---|---|---|---|
format |
String |
Format d'adresse de facturation requis pour finaliser la transaction. MIN: nom, code pays et code postal. COMPLET: nom, adresse postale, localité, région, code pays et code postal. |
L'exemple suivant montre 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 du 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 que vous prenez en charge et qui sont également compatibles avec l'API Google Pay Ne doit pas contenir moins de 1 élément. |
|
billingAddressRequired |
Valeur booléenne |
Défini sur "true" si vous avez besoin d'une adresse de facturation. Ne demandez une adresse de facturation que si elle est nécessaire au traitement de la transaction. Les demandes de données supplémentaires peuvent rendre le processus de paiement plus fluide et entraîner une diminution des taux de conversion. |
|
billingAddressParameters |
BillingAddressParameters |
Les champs attendus sont renvoyés si billingAddressRequired est défini sur "true". |
|
cvcRequired |
Valeur booléenne |
Défini sur "true" si vous utilisez TimesofMoney et sur "false" pour toutes les autres sociétés de traitement des paiements. |
L'exemple suivant montre 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 du 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 auprès d'une société de traitement des paiements Google Pay participante, conformément aux options de paiement Google fournies précédemment. |
|
billingAddress |
PostalAddress |
Adresse de facturation pour le paiement. |
L'exemple suivant montre 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 du 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 pris en charge par l'agent. Ce champ est obsolète. |
|
prepaidCardDisallowed |
Valeur booléenne |
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 |
Valeur booléenne |
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 montre 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 du type MerchantInfo
:
Propriété | Type | Description | |
---|---|---|---|
merchantId |
String |
Identifiant de marchand Google qui vous a été attribué par Google Pay. |
|
merchantName |
String | Obligatoire. Nom du marchand encodé au format UTF-8. Le nom du marchand apparaît dans la feuille de paiement. |
OnFulfillmentPaymentData
Utilisez cet objet pour envoyer des données supplémentaires pour le type de paiement "ON_FULFILLMENT".
Le tableau suivant répertorie les propriétés du type OnFulfillmentPaymentData
:
Propriété | Type | Description | |
---|---|---|---|
supportedPaymentOptions |
Liste<PaymentOptionsEnums > |
Liste des options de paiement disponibles pour l'utilisateur au moment du traitement de la commande. |
L'exemple suivant montre un élément OnFulfillmentPaymentData
:
Exemple
{ "supportedPaymentOptions": [ "Cash", "Card" ] }
Paramètres
Définit les types liés à TokenizationParameters
.
Le tableau suivant répertorie les propriétés du type Parameters
:
Propriété | Type | Description | |
---|---|---|---|
gateway |
String | Obligatoire. Exemple : |
|
gatewayMerchantId |
String | ||
[additionalKey: string] |
String | Paires clé-valeur supplémentaires |
L'exemple suivant montre 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 du 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 prise en charge d'un ou de 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 accepte ou non la transaction. Ce champ inclut le prix total et son état. |
L'exemple suivant montre 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 du type PaymentInfo
:
Propriété | Type | Description | |
---|---|---|---|
displayName |
String | Obligatoire. Nom du mode de paiement visible par l'utilisateur, à afficher sur le reçu. |
|
paymentType |
PaymentType |
Obligatoire. |
|
googleProvidedPaymentInstrument |
GoogleProvidedPaymentInstrument |
Jeton pouvant être utilisé par l'action. Ne l'indiquez que si vous avez spécifié GoogleProvidedPaymentOptions comme option de paiement dans CheckoutResponseMessage. |
L'exemple suivant montre 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 du type PaymentMethod
:
Propriété | Type | Description | |
---|---|---|---|
type |
Const. | Obligatoire. Identifiant court du mode de paiement accepté. Seule la carte CARD est actuellement acceptée. Valeur : |
|
parameters |
CardParameters |
Obligatoire. Paramètres requis pour configurer le type de mode de paiement fourni. |
|
tokenizationSpecification |
TokenizationSpecification |
Obligatoire. Configurez un compte ou un fournisseur de services de déchiffrement pour recevoir les informations de paiement. Cette propriété est requise pour le mode de paiement CARD. |
L'exemple suivant montre 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 du type PaymentOptions
:
Propriété | Type | Description | |
---|---|---|---|
Vous devez indiquer l'un des groupes de propriétés suivants. | |||
googleProvidedOptions |
Groupe 1 | GoogleProvidedPaymentOptions |
Exclusivité mutuelle avec actionProvidedOptions. Utilisez cette option pour les paiements en ligne via gPay. |
actionProvidedOptions |
Groupe 2 | ActionProvidedPaymentOptions |
Mutuellement exclusif avec googleProvidedOptions. Utilisez cette option pour le paiement à la livraison ou "paiement à la commande". |
L'exemple suivant montre 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
peut avoir les valeurs suivantes:
Cash
Card
UPI
Paytm
PaymentType
Le type PaymentType
peut avoir les valeurs suivantes:
PAYMENT_CARD
: pour GoogleProvidedPaymentOptions.ON_FULFILLMENT
: pour ActionProvidedPaymentOptions.
SupportedCardNetworks
Définit les types liés àGoogleProvidedPaymentOptions
.
Le type SupportedCardNetworks
peut avoir les valeurs 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 du type TokenizationParameters
:
Propriété | Type | Description | |
---|---|---|---|
tokenizationType |
Enum [
"UNSPECIFIED_TOKENIZATION_TYPE",
"PAYMENT_GATEWAY"
] |
Obligatoire. Utilisez plutôt facilitationSpecification. Type de jeton accepté. |
|
parameters |
Parameters |
Utilisez plutôt facilitationSpecification. |
TokenizationSpecification
Cet objet vous permet de configurer un compte pour recevoir des informations de paiement à facturer.
Le tableau suivant répertorie les propriétés du type TokenizationSpecification
:
Propriété | Type | Description | |
---|---|---|---|
type |
Const. | Obligatoire. |
|
parameters |
Parameters |
Obligatoire. |
L'exemple suivant montre 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. Permet de présenter une boîte de dialogue d'autorisation de paiement.
Le tableau suivant répertorie les propriétés du type TransactionInfo
:
Propriété | Type | Description | |
---|---|---|---|
currencyCode |
String | Obligatoire. Code de devise alphabétique ISO 4217. |
|
transactionId |
String |
Identifiant unique qui identifie une tentative de transaction. Les marchands peuvent utiliser une pièce d'identité existante ou en générer une 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. Utiliser "ESTIMATED" par défaut. Le prix total peut être ajusté en fonction des détails de la réponse, tels que la taxe de vente perçue en fonction 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 après la virgule. La valeur de ce champ doit être identique à celle de cart.totalPrice. |
L'exemple suivant montre un élément TransactionInfo
:
Exemple
{ "totalPriceStatus": "ESTIMATED", "totalPrice": "12.34", "currencyCode": "USD" }