Types de base
Collection
Contient des détails sur la commande, ainsi que si la demande concerne le retrait en magasin ou la livraison. Un panier contient également des informations sur la livraison, un pourboire et l'adresse de livraison. L'objetCart
est défini dans Checkout AppRequest
.f
Vous incluez une copie du panier dans votre Checkout AppResponse
.
Le tableau suivant répertorie les propriétés du type Cart
:
Propriété | Type | Description | |
---|---|---|---|
@type |
Const |
Type de cet objet. Omettez ce champ si l'objet Cart parent fait partie de ProposedOrder. Valeur : |
|
id |
String |
ID facultatif du panier. |
|
merchant |
Merchant |
Marchand affilié à ce panier. |
|
lineItems |
List<LineItem > |
Obligatoire. Liste des produits ou services commandés par l'utilisateur. Doit contenir au moins 1 élément. |
|
promotions |
List<Promotion > |
Promotion appliquée dans ce panier. Une seule promotion est actuellement acceptée. |
|
notes |
String |
Remarques sur la commande ou les instructions de livraison |
|
extension |
FoodCartExtension |
Définit les détails concernant l'utilisateur, tels que les préférences de traitement. |
L'exemple suivant illustre un élément Cart
:
Exemple 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.Cart", "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Cucina Venti" }, "lineItems": [ { "name": "Sizzling Prawns Dinner", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "16", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }
Exemple 2
{ "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }
Contact
Spécifie les informations concernant la personne qui reçoit la commande. Elle n'est disponible que dansAppResponse
.
Le tableau suivant répertorie les propriétés du type Contact
:
Propriété | Type | Description | |
---|---|---|---|
displayName |
String |
Nom de la personne qui reçoit la commande, comme vous souhaitez qu'elle soit affichée. Utilisez ce champ si firstName et lastName ne sont pas spécifiés. Exemple : |
|
email |
String |
Adresse e-mail de la personne qui reçoit la commande. Exemple : |
|
firstName |
String |
Prénom de la personne qui reçoit la commande. Exemple : |
|
lastName |
String |
Nom de la personne qui reçoit la commande. Exemple : |
|
phoneNumber |
String |
Numéro de téléphone de la personne qui reçoit la commande, y compris l'indicatif du pays. Exemple : |
|
emailVerified |
Booléen |
Indique si la personne qui reçoit la commande est connectée à son compte Google. |
L'exemple suivant illustre un élément Contact
:
Exemple
{ "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" }
Message push personnalisé
Contient leOrderUpdate
de la requête.
Le tableau suivant répertorie les propriétés du type CustomPushMessage
:
Propriété | Type | Description | |
---|---|---|---|
orderUpdate |
OrderUpdate |
Obligatoire. Les informations concernant la commande ont été mises à jour. |
L'exemple suivant illustre un élément CustomPushMessage
:
Exemple
{ "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "IN_TRANSIT", "label": "Order is on the way" }, "inTransitInfo": { "updatedTime": "2017-07-17T12:00:00Z" }, "updateTime": "2017-07-17T12:00:00Z", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } }
Informations de livraison
Le tableau suivant répertorie les propriétés du type DeliveryInfo
:
Propriété | Type | Description | |
---|---|---|---|
deliveryTimeIso8601 |
String |
Date et heure de livraison estimées, au format ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" ou format de durée: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Par exemple, PT90M représente une durée de 90 minutes. La valeur par défaut (PT0M) indique que le délai de livraison préféré est le plus rapidement possible. Référence: https://en.wikipedia.org/wiki/ISO_8601#Combine_date_and_time_presentations. Utilisez cette option pour modifier le délai de livraison estimé lors du règlement. Exemple : |
L'exemple suivant illustre un élément DeliveryInfo
:
Exemple
{ "deliveryTimeIso8601": "PT90M" }
Disclaimer
Le tableau suivant répertorie les propriétés du type Disclaimer
:
Propriété | Type | Description | |
---|---|---|---|
predefinedMessage |
PredefinedMessage |
Obligatoire. Afficher des messages de clause de non-responsabilité prédéfinis lors du règlement. |
|
feeAmount |
Money |
Le partenaire facture au marchand un montant de N pour cette commande. |
|
feeAmountRange |
FeeAmountRange |
Le partenaire facturera au restaurant des frais d'un montant de N à M par commande. |
|
feePercent |
Numéro |
Le partenaire facturera au marchand des frais à N% pour cette commande. |
|
feePercentRange |
FeePercentRange |
Le partenaire facture au marchand des frais de N% à M% par commande. |
L'exemple suivant illustre un élément Disclaimer
:
Exemple 1
{ "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER" }
Exemple 2
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE" }
Exemple 3
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feePercent": 25 }
Exemple 4
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feePercentRange": { "minFeePercent": 20, "maxFeePercent": 30 } }
Exemple 5
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feeAmount": { "currencyCode": "AUD", "units": 2, "nanos": 500000000 } }
Exemple 6
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feeAmountRange": { "minFeeAmount": { "currencyCode": "AUD", "units": 2, "nanos": 500000000 }, "maxFeeAmount": { "currencyCode": "AUD", "units": 10, "nanos": 0 } } }
Error
Le type Error
peut avoir les valeurs suivantes:
CLOSED
: le restaurant est fermé au moment de la commande.NO_CAPACITY
: aucune capacité de service n'est disponible (par exemple, une panne temporaire due aux heures pleines).NO_COURIER_AVAILABLE
: impossible de traiter la commande en raison d'un personnel de livraison limité.REQUIREMENTS_NOT_MET
: les contraintes concernant l'acceptation de la commande n'ont pas été remplies (taille minimale du panier, par exemple).UNAVAILABLE_SLOT
: la commande ne peut pas être livrée à l'avance indiquée par DeliveryInfo ou PickupInfo.OUT_OF_SERVICE_AREA
: la commande ne peut pas être livrée à l'adresse de l'utilisateur.PROMO_EXPIRED
: impossible de les appliquer, car la promotion a expiré.PROMO_NOT_APPLICABLE
: code d'erreur générique pour détecter tous les cas d'échec d'application du code promotionnel, si aucune des autres erreurs de code promotionnel ne correspond.PROMO_NOT_RECOGNIZED
: le code promotionnel n'a pas été reconnu.PROMO_ORDER_INELIGIBLE
: la commande actuelle n'est pas éligible pour ce bon de réduction.PROMO_USER_INELIGIBLE
: l'utilisateur actuel n'est pas éligible pour ce bon de réduction.AVAILABILITY_CHANGED
: l'article n'est plus disponible ou le nombre d'articles est insuffisant pour répondre à la demande.INCORRECT_PRICE
: erreurs de prix (total ou non).INVALID
: une valeur "LineItem", "FulfillmentOption" ou "Promotion" contient des données non valides.NOT_FOUND
: impossible de trouver une élément LineLine, FulfillmentOption ou Promotion.PRICE_CHANGED
: le prix d'un article a changé.
Plage de frais
Le tableau suivant répertorie les propriétés du type FeeAmountRange
:
Propriété | Type | Description | |
---|---|---|---|
minFeeAmount |
Money |
Limite inférieure des frais facturés. |
|
maxFeeAmount |
Money |
Limite supérieure du montant facturé. |
Plage de frais en pourcentage
Le tableau suivant répertorie les propriétés du type FeePercentRange
:
Propriété | Type | Description | |
---|---|---|---|
minFeePercent |
Numéro |
Limite inférieure des frais facturés. |
|
maxFeePercent |
Numéro |
Limite supérieure des frais facturés. |
FoodCartExtension
Contient des détails sur l'utilisateur, tels que les préférences de traitement.
Le tableau suivant répertorie les propriétés du type FoodCartExtension
:
Propriété | Type | Description | |
---|---|---|---|
@type |
Const |
Type de cette extension. Ce champ est toujours défini sur "type.googleapis.com/google.actions.v2.orders.FoodCartExtension". Valeur : |
|
contact |
Contact |
Coordonnées de la personne qui reçoit la commande. par exemple le nom, le numéro de téléphone et l'adresse e-mail de la personne concernée. |
|
fulfillmentPreference |
FulfillmentOption |
Obligatoire. Préférence de traitement des utilisateurs. |
|
location |
Location |
Dans le champ RequestRequestMessage, ce champ indique l'adresse de livraison, qui est obligatoire si la commande est destinée à la livraison. Ce champ n'est pas inclus dans le message des commandes à emporter ou à emporter. |
L'exemple suivant illustre un élément FoodCartExtension
:
Exemple 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } }
Exemple 2
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } }, "contact": { "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" } }
FoodErrorExtension
Identifie une ou plusieurs erreurs qui se sont produites lors du traitement d'une requête. Le tableau suivant décrit les champs de 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 |
List<FoodOrderError > |
Obligatoire. Tableau d'objets FoodOrderError décrivant les erreurs qui se sont produites. Une erreur recommandée par panier ou par article. Doit contenir au moins 1 élément. |
|
correctedProposedOrder |
ProposedOrder |
Obligatoire lorsque Nouvelle commande proposée avec corrections. Renvoyez cet objet s'il existe des erreurs récupérables dans l'élément OfferdOrder d'origine. Par exemple, une modification du prix d'un ou plusieurs articles du panier est une erreur récupérable. Les erreurs récupérables avec une commande OfferdOrder valide sont avancées à l'étape de confirmation, au lieu de demander à l'utilisateur d'examiner son panier. |
|
paymentOptions |
PaymentOptions |
Obligatoire lorsque Options de paiement par défaut sélectionnées pour l'utilisateur. |
|
additionalPaymentOptions |
List<PaymentOptions > |
Autres options de paiement disponibles pour l'utilisateur. |
L'exemple suivant illustre un élément FoodErrorExtension
:
Exemple
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension", "foodOrderErrors": [ { "error": "PRICE_CHANGED", "id": "sample_item_offer_id_1", "description": "The price has changed.", "updatedPrice": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, { "error": "PRICE_CHANGED", "id": "sample_item_offer_id_2", "description": "The price has changed.", "updatedPrice": { "currencyCode": "USD", "units": "8" } } ], "correctedProposedOrder": { "id": "sample_corrected_proposed_order_id_1", "otherItems": [ { "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }, { "name": "Delivery fee", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 500000000 } }, "type": "TAX" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "36", "nanos": 730000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:publishableKey": "pk_live_stripe_client_key", "stripe:version": "2017-04-06" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "JCB", "VISA" ], "prepaidCardDisallowed": true } } }
Extension d'article
Définit des modules complémentaires pour des aliments.
Le tableau suivant répertorie les propriétés du type FoodItemExtension
:
Propriété | Type | Description | |
---|---|---|---|
@type |
Const | Obligatoire. Type de cette extension. Ce champ est toujours défini sur "type.googleapis.com/google.actions.v2.orders.FoodItemExtension". Valeur : |
|
options |
List<FoodItemOption > |
Une option peut être un module complémentaire ou un groupe d'extensions contenant un ensemble de modules complémentaires. |
L'exemple suivant illustre un élément FoodItemExtension
:
Exemple
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1, "subOptions": [ { "id": "10239138", "offerId": "912391723", "name": "Fries", "price": { "currencyCode": "USD", "units": "2", "nanos": 230000000 }, "quantity": 1 } ] } ] }
Option de l'article
Le tableau suivant répertorie les propriétés du type FoodItemOption
:
Propriété | Type | Description | |
---|---|---|---|
id |
String |
Identifiant unique attribué par Google. Lorsque vous envoyez une erreur FoodOrderError ou AsyncOrderUpdateRequest, utilisez ce champ pour différencier les cas où un panier contient plusieurs articles avec le même identifiant d'offre. Exemple : |
|
offerId |
String |
Identifiant de l'offre pour l'article. Exemple : |
|
name |
String |
Nom de l'option. Exemple : |
|
price |
Money |
||
note |
String |
Remarque concernant l'option. |
|
quantity |
Numéro |
Pour les options qui sont des éléments, le nombre d'éléments. Exemple : |
|
subOptions |
List<FoodItemOption > |
Sous-options de l'option, le cas échéant. Exemple : |
L'exemple suivant illustre un élément FoodItemOption
:
Exemple 1
{ "id": "10293231", "offerId": "1918491", "name": "Honey Mustard", "price": { "currencyCode": "USD", "units": "1", "nanos": 250000000 }, "quantity": 5 }
Exemple 2
{ "id": "123166552", "offerId": "912849184", "name": "Make It A Meal", "price": { "currencyCode": "USD", "units": "3", "nanos": 730000000 }, "quantity": 1, "subOptions": [ { "id": "10239138", "offerId": "912391723", "name": "Fries", "price": { "currencyCode": "USD", "units": "2", "nanos": 230000000 }, "quantity": 1 }, { "id": "57159183", "offerId": "81837123", "name": "Drink", "price": { "currencyCode": "USD", "units": "3", "nanos": 130000000 }, "quantity": 1 } ] }
Erreur de commande
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. 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 d'un article à l'origine de l'erreur. Obligatoire uniquement lorsque l'erreur est "PRICE_CHANGED". |
|
availableQuantity |
Entier | Obligatoire lorsque Nouvelle quantité disponible de l'article à l'origine de l'erreur. Obligatoire uniquement lorsque l'erreur est "INVALID" ou "NOT_FOUND". La valeur doit être "0" pour "INVALID" et "NOT_FOUND". |
L'exemple suivant illustre un élément FoodOrderError
:
Exemple 1
{ "error": "CLOSED", "description": "This store is currently reachable. Please try again later." }
Exemple 2
{ "error": "PRICE_CHANGED", "id": "french_fries", "description": "The price has changed.", "updatedPrice": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }
FoodOrderExtension
Contient des informations de traitement concernant la commande.
Le tableau suivant répertorie les propriétés du type FoodOrderExtension
:
Propriété | Type | Description | |
---|---|---|---|
@type |
Const |
Type de cette extension. Ce champ est toujours défini sur "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension". Valeur : |
|
availableFulfillmentOptions |
List<FulfillmentOption > |
Représente les options de traitement disponibles pour la commande. |
|
optinForRemarketing |
Booléen |
Demande d'un utilisateur pour activer vos canaux marketing. Par défaut, vous ne pouvez pas envoyer de contenu marketing sans le consentement de l'utilisateur. Si "optinForRemarketing" est défini sur "true", vous pouvez abonner l'utilisateur. Si l'option d'activation du remarketing est "false" ou absente, vous devez conserver la valeur d'état de l'abonnement telle quelle dans votre système. Les utilisateurs ne peuvent pas désactiver la fonctionnalité via Google, mais uniquement via une fonction de désabonnement fournie dans vos canaux marketing. Cet indicateur n'est présent que dans SendOrderRequestMessage. |
L'exemple suivant illustre un élément FoodOrderExtension
:
Exemple 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] }
Exemple 2
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2020-08-20T11:41:00Z" } ], "optinForRemarketing": true }
FulfillmentOption (Option de traitement)
Vous pouvez utiliser un objetFulfillmentOption
de différentes manières :
-
Dans
Checkout AppRequest
etSubmit AppRequest
,Cart.extension.fulfillmentPreference
: stocke les préférences de l'utilisateur (livraison ou retrait). Le prix est toujours égal à 0 lorsque la demande de règlement est envoyée. -
Dans
Checkout AppResponse
,ProposedOrder.extension.availableFulfillmentOptions
: définit une ou plusieurs options de diffusion (actuellement, une seule option est acceptée). Vous spécifiez l'option par défaut en tant queLineItem
dansProposedOrder.otherItems
. LeofferId
deFulfillmentOption
doit correspondre à l'ID deLineItem
spécifié dansProposedOrder.otherItems
.
Le tableau suivant répertorie les propriétés du type FulfillmentOption
:
Propriété | Type | Description | |
---|---|---|---|
offerId |
String |
Identifiant unique de cette option de traitement, le cas échéant. |
|
fulfillmentInfo |
FulfillmentOptionInfo |
Obligatoire. |
|
expiresAt |
Horodatage ISO |
Date/heure d'expiration de cette option de traitement. |
|
price |
Money |
Coût de cette option. |
L'exemple suivant illustre un élément FulfillmentOption
:
Exemple
{ "offerId": "offer5", "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2019-05-02T00:00:00-07:00", "price": { "currencyCode": "USD", "units": "5", "nanos": 230000000 } }
FulfillmentOptionInfo (Informations sur l'exécution)
Définit les informations liées àFulfillmentInfo
.
Le tableau suivant répertorie les propriétés du type FulfillmentOptionInfo
:
Propriété | Type | Description | |
---|---|---|---|
Exactement l'un des groupes de propriétés suivants. | |||
delivery |
Groupe 1 | DeliveryInfo |
Le cas échéant, indique la commande. |
pickup |
Groupe 2 | PickupInfo |
Le cas échéant, indique une commande à retirer. |
Images
Le tableau suivant répertorie les propriétés du type Image
:
Propriété | Type | Description | |
---|---|---|---|
sourceUrl |
String | Obligatoire. URL de l'image. L'image doit mesurer au moins 72 x 72 pixels. Pour des résultats optimaux, utilisez une image d'au moins 216 x 216 pixels. Elle doit faire moins de 6 Mo et 64 mégapixels. |
LineItem
Définit le contenu d'un panier (Cart.lineItems
) ou les frais supplémentaires pour une commande (ProposedOrder.otherItems
).
Le tableau suivant répertorie les propriétés du type LineItem
:
Propriété | Type | Description | |
---|---|---|---|
id |
String | Obligatoire lorsque Pour un élément de ligne dans un panier (OfferdOrder.cart.lineItems[0].id), il s'agit de l'identifiant unique créé par Google lors de la création de la commande. Pour un élément LineItem d'un ProposedOrder (OfferdOrder.otherItems[0].id), utilisé pour ajouter des articles tels que des frais de livraison et des taxes, la valeur de l'identifiant est définie par le fournisseur. Par exemple, un panier contient deux articles identiques avec des instructions de préparation différentes (deux pizzas moyennes avec différentes garnitures, par exemple). Dans ce cas, les deux articles ont le même ID de base d'offre. Lorsque vous envoyez une demande de mise à jour de commande pour indiquer qu'un article a été refusé, utilisez cet identifiant comme identifiant. En d'autres termes, si l'une des pizzas est refusée en raison de l'absence de garniture particulière, elle permet à Google de déterminer l'article de la commande à laquelle vous faites référence. Ce champ est obligatoire sauf dans les autres éléments. |
|
name |
String | Obligatoire. Nom de l'élément de campagne. Il s'agit d'une chaîne visible par l'utilisateur et, dans la mesure du possible, dans le cas d'une phrase (par exemple, "Frais de livraison", "Frais de service", "Taxes"). Ce champ est tronqué pour les utilisateurs dans 100 caractères. |
|
type |
LineItemType |
Obligatoire. |
|
quantity |
Entier | Obligatoire lorsque Nombre d'articles inclus. Non applicable à OfferdOrder.otherItems. |
|
description |
String |
Description de l'article. |
|
price |
Price |
Obligatoire. Prix du ou des articles. Cette valeur indique le prix total de tous les produits ou services de cet article. En d'autres termes, ajoutez le coût de tous les modules complémentaires et multipliez-le par la quantité. Par exemple, si un article à 10 € a une quantité égale à 3, le prix est de 30 €. Pour une pizza avec un prix de base de 5 $et un supplément de 1 $, le prix est de 6 $. Pour deux pizzas (quantité = 2) avec un prix de base de 5 $et chacune avec un supplément de 1 $, le prix est de 12 $. Chaque élément de ligne doit avoir un prix, même s'il est en "&0t". Lorsque le type est DISCOUNT, spécifiez la valeur comme étant négative (par exemple, "-2"). |
|
subLines |
List<SublineNote > |
Facultatif et valide uniquement si le type est REGULAR. Une note spécifique à l'article de l'utilisateur peut être envoyée dans ce champ pour la demande de règlement et la demande d'envoi de commande. Assurez-vous que le marchand reçoit la note lorsqu'elle est fournie. Il sera dans la requête sous subLines[0].note, qui est la seule valeur fournie dans ce champ lorsqu'elle est présente dans une requête. Ne doit pas contenir plus d'un élément. |
|
offerId |
String | Obligatoire lorsque Identifiant de l'offre pour l'élément MenuMenu. Non applicable à OfferdOrder.otherItems. |
|
extension |
FoodItemExtension |
Définit des modules complémentaires pour des aliments. |
L'exemple suivant illustre un élément LineItem
:
Exemple 1
{ "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }
Exemple 2
{ "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }
Type d'élément de campagne
Le type LineItemType
peut avoir les valeurs suivantes:
REGULAR
: ligne de commande Applicable à Cart.lineItems.TAX
: ligne fiscale. Applicable à OfferdOrder.otherItems.DISCOUNT
: élément de campagne avec remise. Notez que le prix doit être négatif. Applicable à OfferdOrder.otherItems.GRATUITY
: élément de campagne offert. Généralement réservé pour le "SubmitOrderRequestMessage" d'un conseil sélectionné par l'utilisateur. Applicable à OfferdOrder.otherItems.DELIVERY
: élément de campagne de diffusion. Applicable à OfferdOrder.otherItems.SUBTOTAL
: élément de campagne du sous-total. Applicable à OfferdOrder.otherItems.FEE
: élément de campagne supplémentaire non couvert par les autres types. Applicable à OfferdOrder.otherItems.
Emplacement
Spécifie une adresse pour la commande de repas. Le typeLocation
est utilisé dans un Cart
pour indiquer uniquement la destination d'une commande de livraison.
Le lieu finalisé est également présent dans TransactionDecisionValue
si l'utilisateur passe la commande. Pour les commandes qui spécifient le retrait en magasin, l'emplacement n'est pas du tout inclus (même pas vide).
Le tableau suivant répertorie les propriétés du type Location
:
Propriété | Type | Description | |
---|---|---|---|
coordinates |
Coordinates |
||
formattedAddress |
String |
Affiche l'adresse de l'établissement. Exemple : |
|
postalAddress |
PostalAddress |
||
zipCode |
String |
Exemple : |
|
city |
String |
Nom de la ville. Exemple : |
|
notes |
String |
Remarques sur le lieu (codes de porte, par exemple) Il ne doit pas comporter plus de 500 caractères. Exemple : |
L'exemple suivant illustre un élément Location
:
Exemple
{ "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" }
Marchand
Le tableau suivant répertorie les propriétés du type Merchant
:
Propriété | Type | Description | |
---|---|---|---|
id |
String |
Identifiant du marchand. Si spécifié, correspond à avec.Restaurant.@id dans le flux "Restaurant". Exemple : |
|
name |
String | Obligatoire. Nom visible du marchand. Exemple : |
L'exemple suivant illustre un élément Merchant
:
Exemple
{ "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }
Valeur monétaire
Le tableau suivant répertorie les propriétés du type Money
:
Propriété | Type | Description | |
---|---|---|---|
currencyCode |
String | Obligatoire. Code de devise à trois lettres au format ISO 4217. Exemple : |
|
units |
String |
Unités entières du montant. Par exemple, si la valeur currencyCode est "USD", cela signifie que l'unité est "un dollar américain". Exemple : |
|
nanos |
Entier |
Nombre de nano-unités (10^-9) du montant. La valeur doit être comprise entre -999 999 999 et +999 999 999 inclus. Utilisez les règles suivantes: si les unités sont positives, les nano-unités doivent être positives ou nulles. Si les unités sont nulles, les nano-unités peuvent être positives, nulles ou négatives. Si les unités sont négatives, les nano-unités doivent être négatives ou nulles. Par exemple, -1,75 $ est représenté par les unités = -1 et les nano-unités = -750 000 000. Exemple : |
L'exemple suivant illustre un élément Money
:
Exemple 1
{ "currencyCode": "USD", "units": "36", "nanos": 730000000 }
Exemple 2
{ "currencyCode": "EUR", "units": "10" }
Commande
Contient la commande finale, y compris les taxes, les frais et les frais de livraison, ainsi que les informations de paiement. Cet objet est reçu par votre action dans un objetSubmit AppRequest
.
Le tableau suivant répertorie les propriétés du type Order
:
Propriété | Type | Description | |
---|---|---|---|
finalOrder |
ProposedOrder |
Obligatoire. Ordre proposé à l'origine de la campagne. |
|
googleOrderId |
String | Obligatoire. ID de commande attribué par Google. Cet identifiant doit être stable tout au long du cycle de vie d'une commande. Les utilisateurs finaux ne peuvent pas voir cet ID. |
|
orderDate |
Horodatage ISO | Obligatoire. Date et heure de création de la campagne. |
|
paymentInfo |
PaymentInfo |
Obligatoire. Informations de paiement correspondant au paiement de cette commande. |
L'exemple suivant illustre un élément Order
:
Exemple
{ "finalOrder": { "cart": { "notes": "Guest prefers their food to be hot when it is delivered.", "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Cucina Venti" }, "lineItems": [ { "name": "Sizzling Prawns Dinner", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "16", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } }, "contact": { "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" } } }, "otherItems": [ { "name": "Service fee", "type": "FEE", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } } }, { "name": "Tax", "type": "TAX", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 370000000 } } }, { "name": "Tip", "type": "GRATUITY", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 590000000 } } } ], "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "23", "nanos": 710000000 } }, "id": "sample_final_order_id", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ], "optinForRemarketing": true } }, "googleOrderId": "sample_google_order_id", "orderDate": "2017-07-17T12:00:00Z", "paymentInfo": { "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd" }, "paymentType": "PAYMENT_CARD" } }
Commande mise à jour
Le tableau suivant décrit les champs du type OrderUpdate, qui sont inclus 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 d'intégrateur qui permet d'identifier celle pour laquelle la mise à jour est envoyée. Si confirmation.user_visible_order_id n'est pas fourni au moins une fois dans OrderUpdate pour une commande "CREATED", cet ID sera celui saisi par l'utilisateur affiché dans la fiche de commande Google. |
|
orderState |
OrderState |
Obligatoire. Nouvel état de la commande. |
|
lineItemUpdates |
Map<String, LineItemUpdate > |
||
updateTime |
Horodatage ISO | Obligatoire. Heure à laquelle la commande a été mise à jour. |
|
orderManagementActions |
List<OrderManagementAction > |
Actions post-commande, comme contacter l'assistance et afficher les détails de la commande. Doit contenir au moins 1 élément et 6 éléments au maximum. |
|
rejectionInfo |
RejectionInfo |
Obligatoire lorsque |
|
cancellationInfo |
CancellationInfo |
Obligatoire lorsque |
|
inTransitInfo |
InTransitInfo |
Ce champ a été abandonné. |
|
fulfillmentInfo |
FulfillmentInfo |
Ce champ a été abandonné. |
|
receipt |
Receipt |
Obligatoire lorsque Fournissez l'ID de commande visible par l'utilisateur dans un reçu. |
|
totalPrice |
Price |
Prix total de la commande. |
|
infoExtension |
FoodOrderUpdateExtension |
Définit plus de détails sur la mise à jour de la commande, comme l'intervalle de livraison estimé ou de retrait. |
L'exemple suivant illustre un élément OrderUpdate
:
Exemple
{ "actionOrderId": "sample_action_order_id", "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "41", "nanos": 600000000 } }, "lineItemUpdates": { "sample_item_id_1": { "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "reason": "This item has an updated price." } }, "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "updateTime": "2017-07-17T12:00:00Z", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } }
Infos sur le retrait
Le tableau suivant répertorie les propriétés du type PickupInfo
:
Propriété | Type | Description | |
---|---|---|---|
pickupTimeIso8601 |
String |
Heure de retrait estimée, au format ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Format Z ou durée: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Par exemple, PT90M représente une durée de 90 minutes. La valeur par défaut "PT0M" indique que l'heure de prise en charge préférée est la plus proche. Référence: https://en.wikipedia.org/wiki/ISO_8601#Combine_date_and_time_presentations. Utilisez cette option pour modifier l'heure de retrait estimée lors du règlement. Exemple : |
L'exemple suivant illustre un élément PickupInfo
:
Exemple
{ "pickupTimeIso8601": "PT90M" }
PostalAddress
Le tableau suivant répertorie les propriétés du type PostalAddress
:
Propriété | Type | Description | |
---|---|---|---|
regionCode |
String | Obligatoire. Code pays à deux lettres. Exemple : |
|
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 où se trouve ce lieu. Dans les régions du monde où les localités ne sont pas bien définies ou ne correspondent pas à cette structure, ne spécifiez pas de localité. Utilisez plutôt le champ addressLines. Exemple : |
|
addressLines |
List<Chaîne> |
Une ou plusieurs lignes que vous pouvez utiliser pour spécifier l'adresse postale. Ce champ ne doit pas être modifié, car il peut contenir des localités peu claires. Exemple : |
|
recipients |
List<Chaîne> |
Liste des destinataires d'une campagne. Ce champ n'est disponible que pour billingAddress. |
L'exemple suivant illustre un élément PostalAddress
:
Exemple
{ "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }
Prix
Le tableau suivant répertorie les propriétés du type Price
:
Propriété | Type | Description | |
---|---|---|---|
type |
Enum [
"ESTIMATE",
"ACTUAL"
] |
Obligatoire. Code promotionnel. |
|
amount |
Money |
Obligatoire. |
Promotion
Le tableau suivant répertorie les propriétés du type Promotion
:
Propriété | Type | Description | |
---|---|---|---|
coupon |
String | Obligatoire. Code promotionnel. |
Proposition proposée
Le tableau suivant répertorie les propriétés du type ProposedOrder
:
Propriété | Type | Description | |
---|---|---|---|
id |
String |
Identifiant facultatif de la commande proposée. |
|
cart |
Cart |
Obligatoire. Éléments de l'utilisateur. |
|
otherItems |
List<LineItem > |
Les articles ajoutés par le fournisseur, tels que les frais de livraison, les autres frais et les taxes. D'autres éléments peuvent également contenir des pourboires et/ou des remises ajoutés par l'utilisateur. Ne doit pas contenir plus de 10 éléments. |
|
image |
Image |
Image associée à la commande proposée. |
|
totalPrice |
Price |
Obligatoire. Prix total de la commande proposée. |
|
extension |
FoodOrderExtension |
Obligatoire. Définit les informations de traitement des commandes de repas. |
|
disclaimers |
List<Disclaimer > |
Correspond aux messages de clause de non-responsabilité qui s'afficheront dans l'interface utilisateur avant de passer commande. |
L'exemple suivant illustre un élément ProposedOrder
:
Exemple
{ "id": "sample_proposed_order_id_1", "otherItems": [ { "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }, { "name": "Delivery fee", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 500000000 } }, "type": "TAX" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "36", "nanos": 730000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] } }
Note secondaire
Le tableau suivant répertorie les propriétés du type SublineNote
:
Propriété | Type | Description | |
---|---|---|---|
note |
String | Obligatoire. |
Code temporel
Date et heure, au format suivant :
"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
Valeur de la transaction
Contient leOrder
.
Le tableau suivant répertorie les propriétés du type TransactionDecisionValue
:
Propriété | Type | Description | |
---|---|---|---|
order |
Order |
Obligatoire. Commande à saisir avec des informations de paiement. |
L'exemple suivant illustre un élément TransactionDecisionValue
:
Exemple
{ "order": { "finalOrder": { "cart": { "notes": "Guest prefers their food to be hot when it is delivered.", "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Cucina Venti" }, "lineItems": [ { "name": "Sizzling Prawns Dinner", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "16", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } }, "contact": { "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" } } }, "otherItems": [ { "name": "Service fee", "type": "FEE", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } } }, { "name": "Tax", "type": "TAX", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 370000000 } } }, { "name": "Tip", "type": "GRATUITY", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 590000000 } } } ], "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "23", "nanos": 710000000 } }, "id": "sample_final_order_id", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ], "optinForRemarketing": true } }, "googleOrderId": "sample_google_order_id", "orderDate": "2017-07-17T12:00:00Z", "paymentInfo": { "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd" }, "paymentType": "PAYMENT_CARD" } } }
Demande d'exécution
Demande d'application
Le tableau suivant répertorie les propriétés du type AppRequest
:
Propriété | Type | Description | |
---|---|---|---|
isInSandbox |
Booléen |
Indique si les transactions suivantes sont effectuées dans un environnement de bac à sable. |
|
conversation |
Conversation |
||
inputs |
List<Input > |
Obligatoire. Contient les arguments attendus pour extraire un panier. Doit contenir exactement 1 article. |
L'exemple suivant illustre un élément AppRequest
:
Exemple 1
{ "isInSandbox": true, "inputs": [ { "intent": "actions.foodordering.intent.CHECKOUT", "arguments": [ { "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.Cart", "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Cucina Venti" }, "lineItems": [ { "name": "Sizzling Prawns Dinner", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "16", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } } } ] } ] }
Exemple 2
{ "isInSandbox": true, "inputs": [ { "intent": "actions.intent.TRANSACTION_DECISION", "arguments": [ { "transactionDecisionValue": { "order": { "finalOrder": { "cart": { "notes": "Guest prefers their food to be hot when it is delivered.", "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Cucina Venti" }, "lineItems": [ { "name": "Sizzling Prawns Dinner", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "16", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } }, "contact": { "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" } } }, "otherItems": [ { "name": "Service fee", "type": "FEE", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } } }, { "name": "Tax", "type": "TAX", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 370000000 } } }, { "name": "Tip", "type": "GRATUITY", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 590000000 } } } ], "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "23", "nanos": 710000000 } }, "id": "sample_final_order_id", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ], "optinForRemarketing": true } }, "googleOrderId": "sample_google_order_id", "orderDate": "2017-07-17T12:00:00Z", "paymentInfo": { "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd" }, "paymentType": "PAYMENT_CARD" } } } } ] } ] }
Message de demande de paiement
UnCheckoutRequestMessage
est un AppRequest
ayant l'intent actions.foodordering.intent.CHECKOUT
.
Envoyer un message de requête de commande
UnSubmitOrderRequestMessage
est un AppRequest
ayant l'intent actions.foodordering.intent.TRANSACTION_DECISION
.
Conversation
UnConversation
est propre à une seule session. Vous pouvez l'utiliser pour associer plusieurs actions Checkout
et SubmitOrder
si nécessaire.
Le tableau suivant répertorie les propriétés du type Conversation
:
Propriété | Type | Description | |
---|---|---|---|
conversationId |
String | Obligatoire. ID unique de la conversation. |
L'exemple suivant illustre un élément Conversation
:
Exemple
{ "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ" }
Input
Arguments attendus pour finaliser un panier.
Le tableau suivant répertorie les propriétés du type Input
:
Propriété | Type | Description | |
---|---|---|---|
intent |
Enum [
"actions.foodordering.intent.CHECKOUT",
"actions.intent.TRANSACTION_DECISION"
] |
Obligatoire. Définissez la valeur sur "actions.foodordering.intent.CHECKOUT" pour le message de demande de règlement OU "actions.intent.TRANSACTION_DECISION" pour l'envoi du message de demande de commande. |
|
arguments |
List<Argument > |
Obligatoire. Contient le panier à payer ou la commande à passer Doit contenir exactement 1 article. |
Argument
Contient des informations sur les produits que l'utilisateur souhaite payer. Pour le règlement, seule l'extension est applicable. Pour l'envoi de la commande, seule transactionDecisionValue est applicable.
Le tableau suivant répertorie les propriétés du type Argument
:
Propriété | Type | Description | |
---|---|---|---|
Exactement l'un des groupes de propriétés suivants. | |||
extension |
Groupe 1 | Cart |
Détails des plats que l'utilisateur souhaite payer. |
transactionDecisionValue |
Groupe 2 | TransactionDecisionValue |
Contient la commande à passer, ainsi que les détails du paiement. |
Réponse à l'exécution
Réponse d'application
Le tableau suivant répertorie les propriétés du type AppResponse
:
Propriété | Type | Description | |
---|---|---|---|
expectUserResponse |
Const |
Défini sur "false". Valeur : |
|
finalResponse |
FinalResponse |
Obligatoire. Contient votre réponse au règlement du panier. |
L'exemple suivant illustre un élément AppResponse
:
Exemple 1
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "checkoutResponse": { "proposedOrder": { "id": "sample_proposed_order_id_1", "otherItems": [ { "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }, { "name": "Delivery fee", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 500000000 } }, "type": "TAX" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "36", "nanos": 730000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }, "additionalPaymentOptions": [ { "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Cash on delivery." } } ] } } } ] } } }
Exemple 2
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "updateTime": "2017-07-17T12:00:00Z", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "CUSTOMER_SERVICE", "button": { "title": "Call customer service", "openUrlAction": { "url": "tel:+18005554679" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } } } ] } } }
Exemple 3
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "error": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension", "foodOrderErrors": [ { "error": "CLOSED", "description": "The restaurant is closed." } ] } } } ] } } }
Exemple 4
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "checkoutResponse": { "proposedOrder": { "otherItems": [ { "name": "Delivery Fees", "subLines": [], "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "subLines": [], "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 370000000 } }, "type": "TAX" }, { "name": "Promotion", "subLines": [], "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": 0 } }, "id": "OWG_ACTIVE_CODE", "type": "DISCOUNT" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "promotions": [ { "coupon": "OWG_ACTIVE_CODE" } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "14", "nanos": 860000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2018-04-10T01:20:08.471Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:publishableKey": "pk_live_stripe_client_key", "stripe:version": "2017-04-06" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "VISA", "JCB" ], "prepaidCardDisallowed": true, "billingAddressRequired": true } } } } } ] } } }
Message de réponse au règlement
UnCheckoutResponseMessage
est un AppResponse
avec un checkoutResponse
ou un error
dans le StructuredResponse
.
Envoyer un message de réponse de réponse
UnSubmitOrderResponseMessage
est un AppResponse
avec un orderUpdate
dans le StructuredResponse
.
Réponse finale
Votre réponse au règlement du panier ou à OrderOrderRequestMessage.
Le tableau suivant répertorie les propriétés du type FinalResponse
:
Propriété | Type | Description | |
---|---|---|---|
richResponse |
RichResponse |
Obligatoire. Contient votre réponse au message RequestRequest ou SubmitOrderRequestMessage. |
Réponse au règlement
Le tableau suivant répertorie les propriétés du type CheckoutResponse
:
Propriété | Type | Description | |
---|---|---|---|
proposedOrder |
ProposedOrder |
Obligatoire. Proposition de commande à utiliser pour la transaction. |
|
paymentOptions |
PaymentOptions |
Obligatoire. Option de paiement par défaut sélectionnée pour l'utilisateur. |
|
additionalPaymentOptions |
List<PaymentOptions > |
Autres options de paiement disponibles pour l'utilisateur. |
L'exemple suivant illustre un élément CheckoutResponse
:
Exemple
{ "proposedOrder": { "id": "sample_proposed_order_id_1", "otherItems": [ { "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }, { "name": "Delivery fee", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 500000000 } }, "type": "TAX" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "36", "nanos": 730000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }, "additionalPaymentOptions": [ { "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Cash on delivery." } } ] }
Article
Contient votre réponse à un règlement de panier ou à SendOrderRequestMessage.
Le tableau suivant répertorie les propriétés du type Item
:
Propriété | Type | Description | |
---|---|---|---|
structuredResponse |
StructuredResponse |
Obligatoire. |
Réponse enrichie
Contient votre réponse à un règlement de panier.
Le tableau suivant répertorie les propriétés du type RichResponse
:
Propriété | Type | Description | |
---|---|---|---|
items |
List<Item > |
Obligatoire. Doit contenir exactement 1 article. |
Réponse structurée
Pour ResponseResponseMessage, il peut s'agir de l'un des états suivants: CheckResponse indique que le paiement a bien été effectué. OU FoodErrorExtension: indique un échec lors du règlement. La réponse peut inclure une proposition de ProposedOrder et de PaymentOptions ou un message d'erreur sans PaymentOptions. Pour SendOrderResponseMessage, seule orderUpdate est applicable.
Le tableau suivant répertorie les propriétés du type StructuredResponse
:
Propriété | Type | Description | |
---|---|---|---|
Exactement l'un des groupes de propriétés suivants. | |||
checkoutResponse |
Groupe 1 | CheckoutResponse |
Articles réglés, taxes et remises appliquées |
error |
Groupe 2 | FoodErrorExtension |
Erreurs observées dans les articles du panier. Selon la nature de l'erreur, cette propriété peut inclure une proposition de ProposedOrder et PaymentOptions ou simplement un message d'erreur sans PaymentOptions. |
orderUpdate |
Groupe 3 | OrderUpdate |
Mises à jour de commandes asynchrones
Cette section décrit les types généraux qui constituent les requêtes et les réponses d'une interaction intégrée classique d'action de commande de repas.Message AsyncOrderUpdateRequest
L'utilisateur reçoit une notification lorsque des commandes ont été envoyées et confirmées. Par exemple, vous pouvez informer l'utilisateur que la commande est en cours d'acheminement ou que le prix a changé. Plus en savoir plus, consultez la pageLe tableau suivant répertorie les propriétés du type AsyncOrderUpdateRequestMessage
:
Propriété | Type | Description | |
---|---|---|---|
isInSandbox |
Booléen |
Indique que la commande a été envoyée pour un paiement en bac à sable. |
|
customPushMessage |
CustomPushMessage |
Obligatoire. Contient le OrderUpdate pour la requête. |
L'exemple suivant illustre un élément AsyncOrderUpdateRequestMessage
:
Exemple
{ "isInSandbox": true, "customPushMessage": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "IN_TRANSIT", "label": "Order is on the way" }, "inTransitInfo": { "updatedTime": "2017-07-17T12:00:00Z" }, "updateTime": "2017-07-17T12:00:00Z", "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } } }
Message AsyncOrderUpdateResponse
Une fois que vous avez envoyé unAsyncOrderUpdateRequestMessage
, Google répond avec l'état HTTP 200 et un corps vide. Si la mise à jour a échoué, Google répond en expliquant pourquoi la mise à jour de la commande a échoué.
Types de mises à jour de commandes
Bouton
Définit un élément de l'interface utilisateur que vous pouvez ajouter pour permettre l'interaction utilisateur.
Le tableau suivant répertorie les propriétés du type Button
:
Propriété | Type | Description | |
---|---|---|---|
title |
String | Obligatoire. Libellé d'affichage. Pour garantir un affichage correct, utilisez une majuscule de 30 caractères maximum. Exemple : |
|
openUrlAction |
OpenUrlAction |
Obligatoire. |
L'exemple suivant illustre un élément Button
:
Exemple
{ "title": "Send us feedback", "openUrlAction": { "url": "mailto:person@example.com" } }
Résiliation des informations
Le tableau suivant répertorie les propriétés du type CancellationInfo
:
Propriété | Type | Description | |
---|---|---|---|
reason |
String | Obligatoire. Motif de refus du texte à afficher lorsque OrderState.state est "CANCELLED". Exemple : |
L'exemple suivant illustre un élément CancellationInfo
:
Exemple
{ "reason": "Insufficient inventory" }
FoodOrderUpdateExtension
Ce type fournit à l'utilisateur un intervalle estimé pour la livraison de la commande ou son retrait. Envoyez cette extension dans un OrderUpdate
chaque fois que les informations sont disponibles ou ont été modifiées depuis leur dernière envoi.
Fournissez une estimation prudente de l'intervalle de traitement pour répondre systématiquement aux attentes des utilisateurs. Par exemple, si la commande est estimée aujourd'hui à 13h00, vous devez envoyer une fréquence estimée correspondant aux variations en raison des conditions de circulation, telles qu'aujourd'hui entre 12h45 et 13h15.
Une durée ou un horodatage ISO 8601 est interprété comme l'intervalle entre updateTime
de OrderUpdate
(en substance, maintenant) et updateTime
, plus duration
.
N'utilisez pas ce format, sauf s'il s'agit d'une attente raisonnable.
Un intervalle ISO 8601 est interprété comme l'intervalle entre le début et la fin de l'intervalle.
Le tableau suivant répertorie les propriétés du type FoodOrderUpdateExtension
:
Propriété | Type | Description | |
---|---|---|---|
@type |
Const |
Type de cette extension. Ce champ est toujours défini sur "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension". Valeur : |
|
estimatedFulfillmentTimeIso8601 |
String |
Délai estimé de livraison de la commande ou de retrait. La chaîne doit être au format ISO 8601 et correspondre à un intervalle plutôt qu'à une seule heure fixe. Les conventions sont les suivantes: Intervalles, Durées et Dates/Heures. Ce champ peut être envoyé dans EnvoyerOrderResponseMessage ou AsyncOrderUpdateRequestMessage lorsque les informations deviennent disponibles ou en cas de modification, par exemple en cas d'arrivée anticipée ou de retard. Exemple : |
|
foodOrderErrors |
List<FoodOrderError > |
Décrit les erreurs survenues après la commande. Une erreur recommandée par panier ou par article. Utilisez FoodOrderUpdateExtension.FoodOrderErrors pour toutes les erreurs non couvertes par RejectedionInfo. Doit contenir au moins 1 élément. |
L'exemple suivant illustre un élément FoodOrderUpdateExtension
:
Exemple 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" }
Exemple 2
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "foodOrderErrors": [ { "error": "NO_CAPACITY", "description": "Sorry, the restaurant cannot take your order right now." } ] }
FulfillmentInfo
Le tableau suivant répertorie les propriétés du type FulfillmentInfo
:
Propriété | Type | Description | |
---|---|---|---|
Exactement l'un des groupes de propriétés suivants. | |||
deliveryTime |
Groupe 1 | Horodatage ISO |
Utiliser "estimatedFulfillmentTimeIso8601" dans le message FoodOrderingUpdateExtension |
pickupTime |
Groupe 2 | Horodatage ISO |
Utiliser "estimatedFulfillmentTimeIso8601" dans le message FoodOrderingUpdateExtension |
L'exemple suivant illustre un élément FulfillmentInfo
:
Exemple 1
{ "deliveryTime": "2017-05-10T02:36:38.803Z" }
Exemple 2
{ "pickupTime": "2019-12-26T07:24:27.803Z" }
Informations sur les transports en commun
Le tableau suivant répertorie les propriétés du type InTransitInfo
:
Propriété | Type | Description | |
---|---|---|---|
updatedTime |
Horodatage ISO |
Utiliser "estimatedFulfillmentTimeIso8601" dans le message FoodOrderingUpdateExtension |
L'exemple suivant illustre un élément InTransitInfo
:
Exemple
{ "updatedTime": "2017-05-10T02:36:38.803Z" }
Mise à jour de l'article
Le tableau suivant répertorie les propriétés du type LineItemUpdate
:
Propriété | Type | Description | |
---|---|---|---|
orderState |
OrderState |
||
price |
Price |
||
reason |
String |
Motif de la modification. Obligatoire pour les changements de prix. |
L'exemple suivant illustre un élément LineItemUpdate
:
Exemple
{ "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "5", "nanos": 500000000 } }, "reason": "Menu updated prices." }
OpenUrlAction
Le tableau suivant répertorie les propriétés du type OpenUrlAction
:
Propriété | Type | Description | |
---|---|---|---|
url |
String | Obligatoire. Action déclenchée en cliquant ou en appuyant sur le bouton. La liste des préfixes applicables dépend de orderManagementActionType. "E-MAIL": le préfixe doit être "mailto". "CALL" : le préfixe doit être "tel". "CUSTOMER_SERVICE" : le préfixe doit être "mailto" ou "tel", "http" ou "https". Exemple : |
OrderManagementAction (Action de gestion des commandes)
La gestion des commandes permet aux utilisateurs d'obtenir de l'aide après commande. Elle doit être envoyée dans chaque OrderUpdate
de la commande AppResponse
lors de l'envoi. Chaque action AsyncOrderUpdateRequestMessage
peut ensuite varier selon l'état de la commande.
Par exemple, si l'état est "CREATED&DIT" (CRÉER), CUSTOMER_SERVICE
peut faire référence au numéro de téléphone de votre service client. Ensuite, à l'état"CONFIRMED", CUSTOMER_SERVICE
peut passer au numéro de téléphone du restaurant si celui-ci devient le meilleur point de contact pour le client. De même, lorsque la commande est à l'état "TERMINÉ", CUSTOMER_SERVICE
peut faire référence aux adresses e-mail de votre équipe d'assistance.
Le tableau suivant répertorie les propriétés du type OrderManagementAction
:
Propriété | Type | Description | |
---|---|---|---|
type |
OrderManagementActionType |
Obligatoire. |
|
button |
Button |
Obligatoire. |
L'exemple suivant illustre un élément OrderManagementAction
:
Exemple 1
{ "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }
Exemple 2
{ "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }
OrderManagementActionType (Type d'action de gestion des commandes)
Définit les types liés àOrderManagementAction
.
Le type OrderManagementActionType
peut avoir les valeurs suivantes:
CUSTOMER_SERVICE
: adresse e-mail et/ou numéro du service client à afficher sur la page de confirmation de commande. Obligatoire. Le préfixe openUrlAction.url doit être "mailto" ou "tel", "http" ou "https".EMAIL
: action par e-mail uniquement sur la page des détails de la commande. Le préfixe openUrlAction.url doit être "mailto".CALL_DRIVER
: action d'appel sur la page d'informations de la commande uniquement. Le préfixe openUrlAction.url doit être de type"tel".CALL_RESTAURANT
: action d'appel sur la page d'informations de la commande uniquement. Le préfixe openUrlAction.url doit être de type "tel".
OrderState
État actuel de la commande. Chaque valeur state
de OrderState
correspond également à un état d'achat sur myaccount.google.com.
Le tableau suivant répertorie les propriétés du type OrderState
:
Propriété | Type | Description | |
---|---|---|---|
state |
OrderStateEnum |
Obligatoire. |
|
label |
String | Obligatoire. Chaîne visible par l'utilisateur pour l'état. Seule la première lettre du titre doit être en majuscule. Exemple : |
L'exemple suivant illustre un élément OrderState
:
Exemple
{ "state": "CONFIRMED", "label": "Provider confirmed" }
OrderStateEnum
Définit les types liés àOrderState
.
Le type OrderStateEnum
peut avoir les valeurs suivantes:
CREATED
: commande créée par l'intégrateur et en attente de confirmation du fournisseur. Correspond à l'état d'achat en "Ordered".CONFIRMED
: la commande est confirmée par le fournisseur et est active. Correspond à l'état d'achat "Accepté".REJECTED
: commande refusée par l'intégrateur ou le fournisseur. Correspond à l'état d'achat "Refusée".CANCELLED
: l'utilisateur a annulé la commande. Correspond à l'état d'achat "Annulé".IN_PREPARATION
: les plats sont en cours de préparation. Correspond à l'état d'achat "État inconnu".READY_FOR_PICKUP
: les plats sont prêts à être retirés. Correspond à l'état d'achat "Prêt pour le retrait en magasin".IN_TRANSIT
: la commande est en cours de livraison. Correspond à l'état d'achat "En cours".FULFILLED
: l'utilisateur a reçu le produit commandé. Correspond à l'état d'achat "retiré".
Reçu
Envoyez ce type de requête dans un ordre d'envoiAppResponse
, où OrderState
est "CONFIRMED", "FULFILLED" ou "IN_TRANSIT". Envoyez la confirmation au moment où le userVisibleOrderId
devient disponible. Vous n'avez pas besoin d'envoyer le reçu lors des prochaines mises à jour.
Le tableau suivant répertorie les propriétés du type Receipt
:
Propriété | Type | Description | |
---|---|---|---|
userVisibleOrderId |
String | Obligatoire. Obligatoire si la commande est "CONFIRMED", "IN_TRANSIT" ou "FULFILLED". Ce champ correspond à l'identifiant unique de cette commande qui est présenté aux utilisateurs. Il s'agit généralement de l'ID de commande du restaurant, affiché à la fois sur le reçu de l'intégrateur et sur la fiche de commande Google. L'utilisateur doit pouvoir utiliser cet identifiant pour faire référence à sa commande auprès du fournisseur et de l'intégrateur. Vous n'avez besoin de fournir cet identifiant qu'une seule fois pour une commande OrderUpdate donnée. Tant qu'il n'est pas fourni, actionOrderId est userVisibleOrderId. Par exemple, il se peut que vous n'ayez pas d'identifiant utilisateurVisibleOrderId tant que la commande n'a pas été confirmée par le restaurant. Une fois la confirmation effectuée, vous devez envoyer un message AsyncOrderUpdateRequestMessage avec un OrderUpdate et un reçu. |
L'exemple suivant illustre un élément Receipt
:
Exemple
{ "userVisibleOrderId": "userVisibleId1234" }
Informations de refus
Le tableau suivant répertorie les propriétés du type RejectionInfo
:
Propriété | Type | Description | |
---|---|---|---|
type |
RejectionType |
Obligatoire. |
|
reason |
String |
Motif du refus utilisé pour la journalisation interne. Les utilisateurs ne peuvent pas voir ce champ. |
L'exemple suivant illustre un élément RejectionInfo
:
Exemple
{ "type": "PAYMENT_DECLINED", "reason": "There is an issue with payment processing." }
Type de refus
Le type RejectionType
peut avoir les valeurs suivantes:
INELIGIBLE
: l'utilisateur n'est pas éligible en raison de problèmes liés aux règles ou aux risques.PAYMENT_DECLINED
: un problème est survenu avec le traitement des paiements.UNAVAILABLE_SLOT
: la commande ne peut pas être livrée à l'avance indiquée par DeliveryInfo ou PickupInfo.PROMO_NOT_APPLICABLE
: problème lié à la promotion.UNKNOWN
: pour toute autre raison.
Types de paiements
Cette section décrit les types de paiements utilisés pour la commande de repas.ActionOffredPaiementOptions
Conditions requises pour un mode de paiement fourni par une action.
Le tableau suivant répertorie les propriétés du type ActionProvidedPaymentOptions
:
Propriété | Type | Description | |
---|---|---|---|
paymentType |
PaymentType |
Obligatoire. |
|
displayName |
String | Obligatoire. Nom du mode de paiement indiqué sur le reçu. Exemple : |
|
onFulfillmentPaymentData |
OnFulfillmentPaymentData |
Données supplémentaires pour le type de paiement "ON_FULFILLMENT". Par exemple, vous pouvez utiliser ce champ pour indiquer si les espèces ou les cartes sont acceptées lors du traitement des commandes. |
L'exemple suivant illustre un élément ActionProvidedPaymentOptions
:
Exemple
{ "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } }
AllowedAuthMethods
Le type AllowedAuthMethods
peut avoir les valeurs suivantes:
PAN_ONLY
: méthode d'authentification associée aux cartes de paiement enregistrées dans le compte Google de l'utilisateur. Les données de paiement renvoyées comprennent le numéro de compte personnel (PAN) avec le mois et l'année d'expiration.
AllowedCardNetworks
Le type AllowedCardNetworks
peut avoir les valeurs suivantes:
AMEX
DISCOVER
INTERAC
JCB
MASTERCARD
VISA
Paramètres de la carte
Utilisez cet objet pour configurer la compatibilité de votre site avec l'API Google Pay.
Le tableau suivant répertorie les propriétés du type CardParameters
:
Propriété | Type | Description | |
---|---|---|---|
allowedAuthMethods |
List<Const> | Obligatoire. Champs compatibles pour authentifier une transaction par carte. Doit contenir au moins 1 élément. |
|
allowedCardNetworks |
List<AllowedCardNetworks > |
Obligatoire. Un ou plusieurs réseaux de cartes compatibles qui sont également compatibles avec l'API Google Pay. Doit contenir au moins 1 élément. |
|
billingAddressRequired |
Booléen |
Défini sur "true" si vous avez besoin d'une adresse de facturation. Ne demandez une adresse de facturation que si elle est nécessaire au traitement de la transaction. Les demandes de données supplémentaires peuvent fluidifier le processus de règlement et réduire les taux de conversion. |
|
cvcRequired |
Booléen |
Défini sur "true" si vous utilisez TimesofMoney, "false" pour toutes les autres sociétés de traitement des paiements. |
L'exemple suivant illustre un élément CardParameters
:
Exemple
{ "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "AMEX", "DISCOVER" ], "billingAddressRequired": false, "cvcRequired": false }
Mode de paiement fourni par Google
Le tableau suivant répertorie les propriétés du type GoogleProvidedPaymentInstrument
:
Propriété | Type | Description | |
---|---|---|---|
instrumentToken |
String | Obligatoire. Chaîne encodée en base 64 contenant le jeton de paiement permettant de facturer à l'utilisateur une société de traitement des paiements Google Pay participant, conformément aux options GoogleProviderdPaymentOptions spécifiées précédemment. |
|
billingAddress |
PostalAddress |
Adresse de facturation du paiement. |
L'exemple suivant illustre un élément GoogleProvidedPaymentInstrument
:
Exemple
{ "instrumentToken": "abcd", "billingAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] } }
Options de paiement Google
Conditions requises pour le mode de paiement fourni par Google
Le tableau suivant répertorie les propriétés du type GoogleProvidedPaymentOptions
:
Propriété | Type | Description | |
---|---|---|---|
facilitationSpecification |
String |
Fichier JSON PaymentDataRequest en tant que chaîne. Utilisez cet objet pour configurer la compatibilité de votre site avec l'API Google Pay. |
|
supportedCardNetworks |
List<SupportedCardNetworks > |
Utilisez plutôt facilitationSpecification. Type de réseaux de cartes compatibles avec l'agent. Ce champ a été abandonné. |
|
prepaidCardDisallowed |
Booléen |
Utilisez plutôt facilitationSpecification. Indique si une carte prépayée est autorisée comme type de paiement. Ce champ a été abandonné. |
|
billingAddressRequired |
Booléen |
Utilisez plutôt facilitationSpecification. Indique si une adresse de facturation est requise. Ce champ a été abandonné. |
|
tokenizationParameters |
TokenizationParameters |
Ce champ a été abandonné. |
L'exemple suivant illustre un élément GoogleProvidedPaymentOptions
:
Exemple 1
{ "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" }
Exemple 2
{ "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "braintree", "braintree:apiVersion": "v1", "braintree:sdkVersion": "1.4.0", "braintree:merchantId": "a1b2c3d4e5", "braintree:clientKey": "production_braintree_client_key", "braintree:authorizationFingerprint": "same_as_client_key" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "JCB", "VISA" ], "prepaidCardDisallowed": true }
Exemple 3
{ "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:publishableKey": "pk_live_stripe_client_key", "stripe:version": "2017-04-06" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "VISA", "JCB" ], "prepaidCardDisallowed": true, "billingAddressRequired": true }
Informations sur le marchand
Utilisez cet objet pour configurer la compatibilité de votre site avec l'API Google Pay.
Le tableau suivant répertorie les propriétés du type MerchantInfo
:
Propriété | Type | Description | |
---|---|---|---|
merchantId |
String |
Référence marchand Google qui vous est fournie par Google Pay. |
|
merchantName |
String | Obligatoire. Nom du marchand encodé au format UTF-8. Le nom du marchand s'affiche dans la feuille de paiement. |
OnFulfillmentPaymentData
Utilisez cet objet pour envoyer des données supplémentaires pour le type de paiement "ON_FULFILLMENT&".
Le tableau suivant répertorie les propriétés du type OnFulfillmentPaymentData
:
Propriété | Type | Description | |
---|---|---|---|
supportedPaymentOptions |
List<PaymentOptionsEnums > |
Liste des options de paiement disponibles pour l'utilisateur au moment de l'exécution de la commande. |
L'exemple suivant illustre un élément OnFulfillmentPaymentData
:
Exemple
{ "supportedPaymentOptions": [ "Cash", "Card" ] }
Paramètres
Définit les types liés à TokenizationParameters
.
Le tableau suivant répertorie les propriétés du type Parameters
:
Propriété | Type | Description | |
---|---|---|---|
gateway |
String | Obligatoire. Exemple : |
|
gatewayMerchantId |
String | ||
[additionalKey: string] |
String | Paires clé-valeur supplémentaires |
L'exemple suivant illustre un élément Parameters
:
Exemple 1
{ "gatewayMerchantId": "90412491", "gateway": "olo" }
Exemple 2
{ "gateway": "braintree", "braintree:apiVersion": "v1", "braintree:sdkVersion": "1.4.0", "braintree:merchantId": "YOUR_MERCHANT_ID", "braintree:clientKey": "YOUR_BRAINTREE_SANDVOX_OR_PRODUCTION_KEY" }
Demande de données de paiement
Utilisez cet objet pour configurer la compatibilité de votre site avec l'API Google Pay.
Le tableau suivant répertorie les propriétés du type PaymentDataRequest
:
Propriété | Type | Description | |
---|---|---|---|
apiVersion |
Const | Obligatoire. Version majeure de l'API. Valeur : |
|
apiVersionMinor |
Const | Obligatoire. Version d'API mineure. Valeur : |
|
merchantInfo |
MerchantInfo |
Obligatoire. (ID de marchand Google Pay) Informations sur le marchand qui demande des données de paiement. |
|
allowedPaymentMethods |
List<PaymentMethod > |
Obligatoire. Indique les modes de paiement acceptés par l'API Google Pay. |
|
transactionInfo |
TransactionInfo |
Obligatoire. Informations sur l'autorisation de la transaction selon que l'utilisateur l'accepte ou non. Ce champ indique le prix total et l'état du prix. |
L'exemple suivant illustre un élément PaymentDataRequest
:
Exemple
{ "apiVersion": 2, "apiVersionMinor": 0, "merchantInfo": { "merchantId": "10391231", "merchantName": "Burrito Town" }, "allowedPaymentMethods": [ { "type": "CARD", "parameters": { "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "VISA", "AMEX", "MASTERCARD" ], "billingAddressRequired": true, "cvcRequired": false }, "tokenizationSpecification": { "type": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:version": "2019-05-16", "stripe:publishableKey": "pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA" } } } ], "transactionInfo": { "currencyCode": "INR", "totalPriceStatus": "ESTIMATED", "totalPrice": "185.00" } }
Informations de paiement
Informations de paiement pour une commande.
Le tableau suivant répertorie les propriétés du type PaymentInfo
:
Propriété | Type | Description | |
---|---|---|---|
displayName |
String | Obligatoire. Nom visible du mode de paiement à afficher sur le reçu. |
|
paymentType |
PaymentType |
Obligatoire. |
|
googleProvidedPaymentInstrument |
GoogleProvidedPaymentInstrument |
Jeton pouvant être utilisé par l'action. Renseignez cette valeur uniquement si vous avez spécifié Google comme comme option de paiement dans le message ResponseResponseMessage. |
L'exemple suivant illustre un élément PaymentInfo
:
Exemple 1
{ "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd" }, "paymentType": "PAYMENT_CARD" }
Exemple 2
{ "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd", "billingAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "123 Random Street", "Unit ABC" ], "recipients": [ "sample_receipient" ] } }, "paymentType": "PAYMENT_CARD" }
Méthode de paiement
Utilisez cet objet pour configurer la compatibilité de votre site avec l'API Google Pay.
Le tableau suivant répertorie les propriétés du type PaymentMethod
:
Propriété | Type | Description | |
---|---|---|---|
type |
Const | Obligatoire. Identifiant court du mode de paiement accepté. Seules les cartes CARD sont acceptées pour le moment. Valeur : |
|
parameters |
CardParameters |
Obligatoire. Paramètres requis pour configurer le type de mode de paiement fourni. |
|
tokenizationSpecification |
TokenizationSpecification |
Obligatoire. Configurez un compte ou un fournisseur de déchiffrement pour recevoir des informations de paiement. Cette propriété est obligatoire pour le mode de paiement CARD. |
L'exemple suivant illustre un élément PaymentMethod
:
Exemple
{ "type": "CARD", "parameters": { "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "VISA", "AMEX", "MASTERCARD" ], "billingAddressRequired": false }, "tokenizationSpecification": { "type": "PAYMENT_GATEWAY", "parameters": { "gatewayMerchantId": "90412491", "gateway": "olo" } } }
Options de paiement
Le tableau suivant répertorie les propriétés du type PaymentOptions
:
Propriété | Type | Description | |
---|---|---|---|
Exactement l'un des groupes de propriétés suivants. | |||
googleProvidedOptions |
Groupe 1 | GoogleProvidedPaymentOptions |
Mutuellement exclusif avec l'action actionFournidOptions. Utilisez-la pour effectuer des paiements en ligne avec gPay. |
actionProvidedOptions |
Groupe 2 | ActionProvidedPaymentOptions |
Mutuellement exclusif avec googleProvidedOptions. Utilisez cette option pour le paiement à la livraison ou le paiement à la livraison. |
L'exemple suivant illustre un élément PaymentOptions
:
Exemple 1
{ "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }
Exemple 2
{ "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } } }
Options de paiement
Le type PaymentOptionsEnums
peut avoir les valeurs suivantes:
Cash
Card
UPI
Paytm
PaymentType
Le type PaymentType
peut avoir les valeurs suivantes:
PAYMENT_CARD
: pour GoogleProvidedPaymentOptions.ON_FULFILLMENT
: pour ActionProvidedPaymentOptions.
Prise en charge des réseaux de cartes
Définit les types liés àGoogleProvidedPaymentOptions
.
Le type SupportedCardNetworks
peut avoir les valeurs suivantes:
UNSPECIFIED_CARD_NETWORK
AMEX
DISCOVER
JCB
MASTERCARD
VISA
Paramètres de tokenisation
Définit les types liés àGoogleProvidedPaymentOptions
.
Le tableau suivant répertorie les propriétés du type TokenizationParameters
:
Propriété | Type | Description | |
---|---|---|---|
tokenizationType |
Enum [
"UNSPECIFIED_TOKENIZATION_TYPE",
"PAYMENT_GATEWAY"
] |
Obligatoire. Utilisez plutôt facilitationSpecification. Type de jetons acceptable. |
|
parameters |
Parameters |
Utilisez plutôt facilitationSpecification. |
Spécification de tokenisation
Cet objet vous permet de configurer un compte afin de recevoir des informations de paiement facturables.
Le tableau suivant répertorie les propriétés du type TokenizationSpecification
:
Propriété | Type | Description | |
---|---|---|---|
type |
Const | Obligatoire. |
|
parameters |
Parameters |
Obligatoire. |
L'exemple suivant illustre un élément TokenizationSpecification
:
Exemple 1
{ "type": "PAYMENT_GATEWAY", "parameters": { "gatewayMerchantId": "1247192", "gateway": "cybersource" } }
Exemple 2
{ "type": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:version": "2018-10-31", "stripe:publishableKey": "12378127" } }
TransactionInfo
Cet objet décrit une transaction qui détermine la capacité d'un payeur à effectuer des paiements. Utilisé pour présenter une boîte de dialogue d'autorisation de paiement.
Le tableau suivant répertorie les propriétés du type TransactionInfo
:
Propriété | Type | Description | |
---|---|---|---|
currencyCode |
String | Obligatoire. Code de devise alphabétique ISO 4217. |
|
transactionId |
String |
Identifiant unique qui identifie une tentative de transaction. Les marchands peuvent utiliser un ID existant ou en générer un spécifique pour les tentatives de transaction Google Pay. Ce champ est obligatoire lorsque vous envoyez des rappels à l'API Google Transaction Events. |
|
totalPriceStatus |
Const | Obligatoire. Utilisez la valeur par défaut "Estimed" (Estimée). Le prix total peut être ajusté en fonction des détails de la réponse, tels que la taxe de vente collectée en fonction d'une adresse de facturation. Valeur : |
|
totalPrice |
String | Obligatoire. Valeur monétaire totale de la transaction avec éventuellement une décimale de deux décimales. La valeur de ce champ doit être identique à celle du panier.totalPrice. |
L'exemple suivant illustre un élément TransactionInfo
:
Exemple
{ "totalPriceStatus": "ESTIMATED", "totalPrice": "12.34", "currencyCode": "USD" }