Types de base
Collection
Contient les détails de la commande, ainsi que si la demande concerne un retrait ou une livraison. Un panier contient également des informations de livraison, des cadeaux et l'adresse de livraison. L'objetCart
est défini dans un fichier Checkout AppRequest
.f. Vous incluez une copie du panier dans votre Checkout AppResponse
.
Le tableau suivant répertorie les propriétés du type Cart
:
Propriété | Type | Description | |
---|---|---|---|
@type |
Const |
Type de cet objet. Omettre ce champ si l'objet Cart parent fait partie de ProposedOrder. Valeur : |
|
id |
String |
ID facultatif du panier. |
|
merchant |
Merchant |
Marchand associé à ce panier. |
|
lineItems |
List<LineItem > |
Obligatoire. Liste des biens ou services que l'utilisateur commande. Doit contenir au moins un élément. |
|
promotions |
List<Promotion > |
Promotion appliquée à ce panier. Une seule promotion est actuellement acceptée. |
|
notes |
String |
Remarques sur la commande ou les instructions de livraison. |
|
extension |
FoodCartExtension |
Définit des informations sur l'utilisateur, telles que ses préférences de traitement. |
L'exemple suivant montre un élément Cart
:
Exemple 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.Cart", "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Cucina Venti" }, "lineItems": [ { "name": "Sizzling Prawns Dinner", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "16", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }
Exemple 2
{ "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }
Contact
Spécifie les informations sur la personne qui reçoit la commande. Il n'est disponible qu'enAppResponse
.
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, tel que vous souhaitez qu'il s'affiche. Utilisez ce champ si les champs 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, avec le code pays. Exemple : |
|
emailVerified |
Valeur booléenne |
Indique si la personne qui reçoit la commande est connectée avec son compte Google. |
L'exemple suivant montre un élément Contact
:
Exemple
{ "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" }
CustomPushMessage
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. Informations mises à jour sur la commande. |
L'exemple suivant montre un élément CustomPushMessage
:
Exemple
{ "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "IN_TRANSIT", "label": "Order is on the way" }, "inTransitInfo": { "updatedTime": "2017-07-17T12:00:00Z" }, "updateTime": "2017-07-17T12:00:00Z", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } }
DeliveryInfo
Le tableau suivant répertorie les propriétés du type DeliveryInfo
:
Propriété | Type | Description | |
---|---|---|---|
deliveryTimeIso8601 |
String |
Heure de livraison estimée, au format code temporel ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" ou au format 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 la date de livraison souhaitée est la plus proche possible. Référence: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. Utilisez-le pour mettre à jour le délai de livraison estimé lors de la réponse au règlement. Exemple : |
L'exemple suivant montre un élément DeliveryInfo
:
Exemple
{ "deliveryTimeIso8601": "PT90M" }
Clause de non-responsabilité
Le tableau suivant répertorie les propriétés du type Disclaimer
:
Propriété | Type | Description | |
---|---|---|---|
predefinedMessage |
PredefinedMessage |
Obligatoire. Pour afficher des messages de clause de non-responsabilité prédéfinis lors du paiement |
|
feeAmount |
Money |
Le partenaire facturera au marchand un montant de N pour cette commande. |
|
feeAmountRange |
FeeAmountRange |
Le partenaire facturera au restaurant des frais de N à M € par commande. |
|
feePercent |
Number |
Le partenaire facturera des frais de N% au marchand pour cette commande. |
|
feePercentRange |
FeePercentRange |
Le partenaire facturera au marchand des frais de N% à M% par commande. |
L'exemple suivant montre un élément Disclaimer
:
Exemple 1
{ "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER" }
Exemple 2
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE" }
Exemple 3
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feePercent": 25 }
Exemple 4
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feePercentRange": { "minFeePercent": 20, "maxFeePercent": 30 } }
Exemple 5
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feeAmount": { "currencyCode": "AUD", "units": 2, "nanos": 500000000 } }
Exemple 6
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feeAmountRange": { "minFeeAmount": { "currencyCode": "AUD", "units": 2, "nanos": 500000000 }, "maxFeeAmount": { "currencyCode": "AUD", "units": 10, "nanos": 0 } } }
Erreur
Le type Error
peut avoir les valeurs suivantes:
CLOSED
: le restaurant est fermé au moment de la commande.NO_CAPACITY
: aucune capacité de service n'est disponible (par exemple, en cas d'indisponibilité temporaire en raison des heures de pointe).NO_COURIER_AVAILABLE
: Impossible de traiter la commande en raison du manque de personnel de livraison.REQUIREMENTS_NOT_MET
: les contraintes d'acceptation de la commande n'ont pas été respectées (par exemple, taille minimale du panier).UNAVAILABLE_SLOT
: la commande ne peut pas être traitée à l'heure de commande à l'avance spécifiée par DeliveryInfo ou PickupInfo.OUT_OF_SERVICE_AREA
: la commande ne peut pas être livrée à l'adresse de l'utilisateur.PROMO_EXPIRED
: Impossible d'appliquer la promotion, car elle a expiré.PROMO_NOT_APPLICABLE
: code d'erreur générique permettant de détecter tous les cas d'échec de l'application du code promotionnel, si aucune des autres erreurs de code promotionnel ne s'applique.PROMO_NOT_RECOGNIZED
: le code promotionnel n'a pas été reconnu.PROMO_ORDER_INELIGIBLE
: le bon de réduction n'est pas valable pour la commande en cours.PROMO_USER_INELIGIBLE
: l'utilisateur actuel n'est pas éligible à ce bon de réduction.AVAILABILITY_CHANGED
: l'article n'est plus disponible ou il n'y a pas suffisamment d'articles pour répondre à la demande.INCORRECT_PRICE
: erreurs de prix dans les frais ou le total.INVALID
: un élément de ligne, une option de traitement ou une promotion contient des données non valides.NOT_FOUND
: un élément de ligne, une option de traitement ou une promotion ne sont pas trouvés.PRICE_CHANGED
: le prix d'un article a changé.
FeeAmountRange
Le tableau suivant répertorie les propriétés du type FeeAmountRange
:
Propriété | Type | Description | |
---|---|---|---|
minFeeAmount |
Money |
Limite inférieure du montant des frais facturés. |
|
maxFeeAmount |
Money |
Limite supérieure du montant des frais facturés |
FeePercentRange
Le tableau suivant répertorie les propriétés du type FeePercentRange
:
Propriété | Type | Description | |
---|---|---|---|
minFeePercent |
Number |
Limite inférieure du pourcentage de frais facturés. |
|
maxFeePercent |
Number |
Limite supérieure du pourcentage de frais facturés. |
FoodCartExtension
Contient des informations sur l'utilisateur, telles que ses 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 recevra la commande. Ces informations incluent le nom, le numéro de téléphone et l'adresse e-mail de la personne. |
|
fulfillmentPreference |
FulfillmentOption |
Obligatoire. Préférence de traitement de l'utilisateur. |
|
location |
Location |
Dans CheckoutRequestMessage, ce champ spécifie l'adresse de livraison, qui est obligatoire si la commande est livrée. Pour les commandes à emporter ou à retirer, ce champ n'est pas inclus dans le message. |
L'exemple suivant montre un élément FoodCartExtension
:
Exemple 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } }
Exemple 2
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } }, "contact": { "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" } }
FoodErrorExtension
Identifie une ou plusieurs erreurs survenues lors du traitement d'une requête. Le tableau suivant décrit les champs du typeFoodErrorExtension
.
Les erreurs peuvent être envoyées dans un CheckoutResponse
.
Le tableau suivant répertorie les propriétés du type FoodErrorExtension
:
Propriété | Type | Description | |
---|---|---|---|
@type |
Const | Obligatoire. Type de cette extension. Valeur : |
|
foodOrderErrors |
List<FoodOrderError > |
Obligatoire. Tableau d'objets FoodOrderError qui décrivent les erreurs qui se sont produites. Nous vous recommandons de n'indiquer qu'une seule erreur par panier ou par article. Doit contenir au moins un élément. |
|
correctedProposedOrder |
ProposedOrder |
Obligatoire lorsque Nouvelle ProposedOrder avec corrections. Renvoyez cet objet en cas d'erreurs récupérables dans l'ordre proposé d'origine. Par exemple, une modification du prix d'un ou de plusieurs articles du panier est une erreur récupérable. Les erreurs récupérables avec une commande proposée valide passent à l'étape de confirmation, au lieu de demander à l'utilisateur de vérifier son panier. |
|
paymentOptions |
PaymentOptions |
Obligatoire lorsque Options de paiement par défaut sélectionnées pour l'utilisateur. |
|
additionalPaymentOptions |
List<PaymentOptions > |
Autres options de paiement disponibles pour l'utilisateur. |
L'exemple suivant montre un élément FoodErrorExtension
:
Exemple
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension", "foodOrderErrors": [ { "error": "PRICE_CHANGED", "id": "sample_item_offer_id_1", "description": "The price has changed.", "updatedPrice": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, { "error": "PRICE_CHANGED", "id": "sample_item_offer_id_2", "description": "The price has changed.", "updatedPrice": { "currencyCode": "USD", "units": "8" } } ], "correctedProposedOrder": { "id": "sample_corrected_proposed_order_id_1", "otherItems": [ { "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }, { "name": "Delivery fee", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 500000000 } }, "type": "TAX" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "36", "nanos": 730000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:publishableKey": "pk_live_stripe_client_key", "stripe:version": "2017-04-06" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "JCB", "VISA" ], "prepaidCardDisallowed": true } } }
FoodItemExtension
Définit les compléments pour les 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 élément de module complémentaire ou un groupe de modules complémentaires contenant un ensemble de modules complémentaires. |
L'exemple suivant montre un élément FoodItemExtension
:
Exemple
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1, "subOptions": [ { "id": "10239138", "offerId": "912391723", "name": "Fries", "price": { "currencyCode": "USD", "units": "2", "nanos": 230000000 }, "quantity": 1 } ] } ] }
FoodItemOption
Le tableau suivant répertorie les propriétés du type FoodItemOption
:
Propriété | Type | Description | |
---|---|---|---|
id |
String |
Identifiant unique attribué par Google. Lorsque vous envoyez une erreur FoodOrderError ou une requête AsyncOrderUpdateRequest, utilisez ce champ pour différencier les cas où un panier contient plusieurs articles avec le même offerId. Exemple : |
|
offerId |
String |
ID de l'offre pour l'article. Exemple : |
|
name |
String |
Nom de l'option. Exemple : |
|
price |
Money |
||
note |
String |
Remarque concernant l'option. |
|
quantity |
Number |
Pour les options qui 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 montre un élément FoodItemOption
:
Exemple 1
{ "id": "10293231", "offerId": "1918491", "name": "Honey Mustard", "price": { "currencyCode": "USD", "units": "1", "nanos": 250000000 }, "quantity": 5 }
Exemple 2
{ "id": "123166552", "offerId": "912849184", "name": "Make It A Meal", "price": { "currencyCode": "USD", "units": "3", "nanos": 730000000 }, "quantity": 1, "subOptions": [ { "id": "10239138", "offerId": "912391723", "name": "Fries", "price": { "currencyCode": "USD", "units": "2", "nanos": 230000000 }, "quantity": 1 }, { "id": "57159183", "offerId": "81837123", "name": "Drink", "price": { "currencyCode": "USD", "units": "3", "nanos": 130000000 }, "quantity": 1 } ] }
FoodOrderError
Contient des informations sur les erreurs dans unCheckoutResponse
.
Le tableau suivant répertorie les propriétés du type FoodOrderError
:
Propriété | Type | Description | |
---|---|---|---|
error |
Error |
Obligatoire. |
|
id |
String | Obligatoire lorsque Ce champ est obligatoire pour les erreurs au niveau des articles. Il s'agit de l'identifiant LineItem.id attribué par Google pour les éléments de menu ou de l'identifiant FoodItemOption.id pour les compléments. |
|
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. Cet attribut n'est obligatoire que lorsque l'erreur est "PRICE_CHANGED". |
|
availableQuantity |
Entier | Obligatoire lorsque Nouvelle quantité disponible de l'article à l'origine de l'erreur. Cet élément n'est obligatoire que lorsque l'erreur est "INVALID" ou "NOT_FOUND". La valeur doit être nulle pour "INVALID" et "NOT_FOUND". |
L'exemple suivant montre un élément FoodOrderError
:
Exemple 1
{ "error": "CLOSED", "description": "This store is currently reachable. Please try again later." }
Exemple 2
{ "error": "PRICE_CHANGED", "id": "french_fries", "description": "The price has changed.", "updatedPrice": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }
FoodOrderExtension
Contient des informations sur le traitement de la commande.
Le tableau suivant répertorie les propriétés du type FoodOrderExtension
:
Propriété | Type | Description | |
---|---|---|---|
@type |
Const |
Type de cette extension. Ce champ est toujours défini sur "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension". Valeur : |
|
availableFulfillmentOptions |
List<FulfillmentOption > |
Représente les options de traitement disponibles pour la commande. |
|
optinForRemarketing |
Valeur booléenne |
Demande de l'utilisateur d'activer vos canaux marketing Par défaut, vous ne pouvez pas envoyer de contenu marketing sans l'autorisation de l'utilisateur. Si optinForRemarketing est défini sur "true", vous pouvez abonner l'utilisateur. Si optinForRemarketing est défini sur "false" ou n'est pas présent, vous devez conserver l'état de l'abonnement dans votre système tel quel. Les utilisateurs ne peuvent pas se désabonner via Google, mais uniquement via une fonction de désabonnement fournie dans vos canaux marketing. Cette option n'est présente que dans SubmitOrderRequestMessage. |
L'exemple suivant montre un élément FoodOrderExtension
:
Exemple 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] }
Exemple 2
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2020-08-20T11:41:00Z" } ], "optinForRemarketing": true }
FulfillmentOption
Vous pouvez utiliser un objetFulfillmentOption
de différentes manières :
-
Dans
Checkout AppRequest
etSubmit AppRequest
,Cart.extension.fulfillmentPreference
: stocke la préférence de l'utilisateur (livraison ou retrait). Le prix est toujours égal à 0 lorsque la requête de paiement est envoyée. -
Dans
Checkout AppResponse
,ProposedOrder.extension.availableFulfillmentOptions
: définit une ou plusieurs options de diffusion (actuellement, une seule option est prise en charge). Vous spécifiez l'option par défaut en tant queLineItem
dansProposedOrder.otherItems
. L'offerId
deFulfillmentOption
doit correspondre à l'ID de l'LineItem
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 |
Code temporel ISO |
Heure à laquelle cette option de traitement expire. |
|
price |
Money |
Coût de cette option. |
L'exemple suivant montre un élément FulfillmentOption
:
Exemple
{ "offerId": "offer5", "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2019-05-02T00:00:00-07:00", "price": { "currencyCode": "USD", "units": "5", "nanos": 230000000 } }
FulfillmentOptionInfo
Définit les informations associées àFulfillmentInfo
.
Le tableau suivant répertorie les propriétés du type FulfillmentOptionInfo
:
Propriété | Type | Description | |
---|---|---|---|
Vous devez spécifier exactement l'un des groupes de propriétés suivants. | |||
delivery |
Groupe 1 | DeliveryInfo |
Si présent, indique l'ordre de livraison. |
pickup |
Groupe 2 | PickupInfo |
Si présent, indique une commande de retrait. |
Image
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 un affichage optimal, utilisez une image de 216 x 216 pixels minimum. L'image doit être inférieure à 6 Mo et à 64 mégapixels. |
LineItem
Définit le contenu d'un panier (Cart.lineItems
) ou les frais supplémentaires d'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 LineItem dans un panier (ProposedOrder.cart.lineItems[0].id), il s'agit de l'identifiant unique créé par Google lors de la création de la commande. Pour un élément de campagne dans une commande proposée (ProposedOrder.otherItems[0].id), qui permet d'ajouter des éléments tels que les frais de livraison et les taxes, la valeur de l'identifiant est définie par le fournisseur. Par exemple, un panier contient deux articles identiques avec des instructions de préparation différentes (par exemple, deux pizzas moyennes avec différents types de garnitures). Dans ce cas, les deux articles ont le même offerId de base. Lorsque vous envoyez une requête de modification de commande pour indiquer qu'un article est refusé, utilisez cet ID comme outil de désambiguïsation. En d'autres termes, si l'une des pizzas est refusée parce qu'elle ne comporte pas de garniture particulière, l'ID permet à Google de déterminer à quel article de la commande vous faites référence. Ce champ est obligatoire, sauf dans "otherItems". |
|
name |
String | Obligatoire. Nom de l'élément de campagne. Il s'agit d'une chaîne visible par l'utilisateur. Elle doit être en majuscules lorsque cela est possible (par exemple, "Frais de livraison", "Frais de service", "Taxe"). Ce champ est limité à 100 caractères pour les utilisateurs. |
|
type |
LineItemType |
Obligatoire. |
|
quantity |
Entier | Obligatoire lorsque Nombre d'articles inclus. Non applicable à ProposedOrder.otherItems. |
|
description |
String |
Description de l'article. |
|
price |
Price |
Obligatoire. Prix de l'article ou des articles Cette valeur reflète le prix total de tous les biens ou services de cette ligne (en d'autres termes, ajoutez le coût des éventuels modules complémentaires et multipliez-le par la quantité). Par exemple, si un article à 10 $est vendu en trois exemplaires, le prix sera de 30 $. Pour une pizza dont le prix de base est 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 un supplément de 1 $chacune, le prix est de 12 $. Chaque ligne de commande doit comporter un prix, même s'il est de "0". Lorsque le type est "DISCOUNT", spécifiez la valeur sous la forme d'un nombre négatif (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 dans les requêtes de paiement et d'envoi de commande. Assurez-vous que le marchand reçoit la note lorsqu'elle est fournie. Il apparaît dans la requête sous la forme subLines[0].note, qui est la seule valeur fournie dans ce champ lorsqu'il est présent dans une requête. Ne doit pas comporter plus d'un élément. |
|
offerId |
String | Obligatoire lorsque ID de l'offre du MenuItem pour l'article. Non applicable à ProposedOrder.otherItems. |
|
extension |
FoodItemExtension |
Définit les compléments pour les aliments. |
L'exemple suivant montre un élément LineItem
:
Exemple 1
{ "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }
Exemple 2
{ "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }
LineItemType
Le type LineItemType
peut avoir les valeurs suivantes:
REGULAR
: ligne de marchandises. Applicable à Cart.lineItems.TAX
: ligne de taxe. Applicable à ProposedOrder.otherItems.DISCOUNT
: ligne de remise. Notez que le prix doit être négatif. Applicable à ProposedOrder.otherItems.GRATUITY
: ligne de pourboire. Généralement réservé à SubmitOrderRequestMessage pour un pourboire sélectionné par l'utilisateur. Applicable à ProposedOrder.otherItems.DELIVERY
: élément de campagne de diffusion. Applicable à ProposedOrder.otherItems.SUBTOTAL
: ligne de sous-total. Applicable à ProposedOrder.otherItems.FEE
: élément de campagne supplémentaire qui ne correspond à aucun autre type. Applicable à ProposedOrder.otherItems.
Lieu
Spécifie une adresse pour la commande de repas. Le typeLocation
est utilisé dans un Cart
pour indiquer uniquement la destination d'une commande de livraison.
La position finalisée est également présente dans TransactionDecisionValue
si l'utilisateur passe la commande. Pour les commandes qui spécifient un retrait, aucun lieu n'est inclus (même pas un lieu vide).
Le tableau suivant répertorie les propriétés du type Location
:
Propriété | Type | Description | |
---|---|---|---|
coordinates |
Coordinates |
||
formattedAddress |
String |
Afficher l'adresse du lieu Exemple : |
|
postalAddress |
PostalAddress |
||
zipCode |
String |
Exemple : |
|
city |
String |
Nom de la ville. Exemple : |
|
notes |
String |
Informations sur l'emplacement, telles que les codes de portail Il ne doit pas dépasser 500 caractères. Exemple : |
L'exemple suivant montre un élément Location
:
Exemple
{ "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" }
Marchand
Le tableau suivant répertorie les propriétés du type Merchant
:
Propriété | Type | Description | |
---|---|---|---|
id |
String |
ID du marchand. Si spécifié, correspond à Restaurant.@id dans le flux Restaurant. Exemple : |
|
name |
String | Obligatoire. Nom visible par l'utilisateur du marchand. Exemple : |
L'exemple suivant montre un élément Merchant
:
Exemple
{ "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }
Valeur monétaire
Le tableau suivant répertorie les propriétés du type Money
:
Propriété | Type | Description | |
---|---|---|---|
currencyCode |
String | Obligatoire. Code de devise à trois lettres au format ISO 4217. Exemple : |
|
units |
String |
Unités entières du montant. Par exemple, si currencyCode est "USD", une unité correspond à un dollar américain. Exemple : |
|
nanos |
Entier |
Nombre de nano-unités (10^-9) du montant. La valeur doit être comprise entre -999 999 999 et +999 999 999 inclus. Suivez 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 units = -1 et nanos = -750 000 000. Exemple : |
L'exemple suivant montre un élément Money
:
Exemple 1
{ "currencyCode": "USD", "units": "36", "nanos": 730000000 }
Exemple 2
{ "currencyCode": "EUR", "units": "10" }
Commande
Contient la commande finale, y compris les taxes, les frais et les frais de livraison, ainsi que les informations de paiement. Cet objet est reçu par votre action dans unSubmit AppRequest
.
Le tableau suivant répertorie les propriétés du type Order
:
Propriété | Type | Description | |
---|---|---|---|
finalOrder |
ProposedOrder |
Obligatoire. Ordre proposé à l'origine de la commande. |
|
googleOrderId |
String | Obligatoire. Numéro de commande attribué par Google. Cet ID doit rester stable pendant tout le cycle de vie d'une commande. Cet ID n'est pas visible par l'utilisateur final. |
|
orderDate |
Code temporel ISO | Obligatoire. Date et heure de création de la commande. |
|
paymentInfo |
PaymentInfo |
Obligatoire. Informations de paiement correspondant au paiement de cette commande. |
L'exemple suivant montre un élément Order
:
Exemple
{ "finalOrder": { "cart": { "notes": "Guest prefers their food to be hot when it is delivered.", "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Cucina Venti" }, "lineItems": [ { "name": "Sizzling Prawns Dinner", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "16", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } }, "contact": { "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" } } }, "otherItems": [ { "name": "Service fee", "type": "FEE", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } } }, { "name": "Tax", "type": "TAX", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 370000000 } } }, { "name": "Tip", "type": "GRATUITY", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 590000000 } } } ], "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "23", "nanos": 710000000 } }, "id": "sample_final_order_id", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ], "optinForRemarketing": true } }, "googleOrderId": "sample_google_order_id", "orderDate": "2017-07-17T12:00:00Z", "paymentInfo": { "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd" }, "paymentType": "PAYMENT_CARD" } }
OrderUpdate
Le tableau suivant décrit les champs du type OrderUpdate, qui est inclus dansAppResponse
.
Le tableau suivant répertorie les propriétés du type OrderUpdate
:
Propriété | Type | Description | |
---|---|---|---|
actionOrderId |
String | Obligatoire. Identifiant unique de la commande dans le système de l'intégrateur, utilisé pour identifier la commande pour laquelle la mise à jour est envoyée. Si receipt.user_visible_order_id n'est pas fourni au moins une fois dans OrderUpdate pour une commande "CRÉÉÉE", il s'agira de l'ID visible par l'utilisateur saisi et affiché dans la fiche de commande Google. |
|
orderState |
OrderState |
Obligatoire. Nouvel état de la commande. |
|
lineItemUpdates |
Map<String, LineItemUpdate > |
||
updateTime |
Code temporel ISO | Obligatoire. Heure à laquelle la commande a été mise à jour. |
|
orderManagementActions |
List<OrderManagementAction > |
Actions post-commande, comme contacter l'assistance et consulter les détails de la commande Doit comporter au moins un élément et pas plus de six éléments. |
|
rejectionInfo |
RejectionInfo |
Obligatoire lorsque |
|
cancellationInfo |
CancellationInfo |
Obligatoire lorsque |
|
inTransitInfo |
InTransitInfo |
Ce champ est obsolète. |
|
fulfillmentInfo |
FulfillmentInfo |
Ce champ est obsolète. |
|
receipt |
Receipt |
Obligatoire lorsque Indiquez l'ID de commande visible par l'utilisateur sur le reçu. |
|
totalPrice |
Price |
Prix total de la commande. |
|
infoExtension |
FoodOrderUpdateExtension |
Définit plus de détails sur la mise à jour de la commande, tels que l'intervalle de livraison ou de retrait estimé. |
L'exemple suivant montre un élément OrderUpdate
:
Exemple
{ "actionOrderId": "sample_action_order_id", "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "41", "nanos": 600000000 } }, "lineItemUpdates": { "sample_item_id_1": { "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "reason": "This item has an updated price." } }, "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "updateTime": "2017-07-17T12:00:00Z", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } }
PickupInfo
Le tableau suivant répertorie les propriétés du type PickupInfo
:
Propriété | Type | Description | |
---|---|---|---|
pickupTimeIso8601 |
String |
Heure de prise en charge estimée, au format code temporel ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" ou au format durée: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Par exemple, PT90M représente une durée de 90 minutes. La valeur par défaut ,"PT0M", indique que l'heure de prise en charge souhaitée est la plus proche possible. Référence: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. Utilisez-le pour mettre à jour l'heure de retrait estimée lors de la réponse au règlement. Exemple : |
L'exemple suivant montre un élément PickupInfo
:
Exemple
{ "pickupTimeIso8601": "PT90M" }
PostalAddress
Le tableau suivant répertorie les propriétés du type PostalAddress
:
Propriété | Type | Description | |
---|---|---|---|
regionCode |
String | Obligatoire. Code pays à deux lettres. Exemple : |
|
postalCode |
String |
Code postal. Exemple : |
|
administrativeArea |
String |
Plus haute subdivision administrative utilisée pour les adresses postales d'un pays ou d'une région. Il peut s'agir d'un État, d'une province, d'un oblast ou d'une préfecture. Exemple : |
|
locality |
String |
Ville de cet établissement. Dans les régions du monde où les localités ne sont pas bien définies ou ne s'intègrent pas bien dans cette structure, ne spécifiez pas de localité et utilisez plutôt le champ "addressLines". Exemple : |
|
addressLines |
List<String> |
Une ou plusieurs lignes que vous pouvez utiliser pour spécifier l'adresse postale. Ce champ ne doit pas être modifié, car il peut contenir des localités peu claires. Exemple : |
|
recipients |
List<String> |
Liste des destinataires d'une commande. Ce champ n'est disponible que dans billingAddress. |
L'exemple suivant montre un élément PostalAddress
:
Exemple
{ "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }
Prix
Le tableau suivant répertorie les propriétés du type Price
:
Propriété | Type | Description | |
---|---|---|---|
type |
Enum [
"ESTIMATE",
"ACTUAL"
] |
Obligatoire. Code du bon de réduction 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 du bon de réduction promotionnel. |
ProposedOrder
Le tableau suivant répertorie les propriétés du type ProposedOrder
:
Propriété | Type | Description | |
---|---|---|---|
id |
String |
ID facultatif de la commande proposée. |
|
cart |
Cart |
Obligatoire. Articles de l'utilisateur |
|
otherItems |
List<LineItem > |
Éléments ajoutés par le fournisseur, tels que les frais de port, les autres frais et les taxes. Les autres éléments peuvent également contenir un pourboire et/ou une remise ajoutés par l'utilisateur. Ne doit pas comporter plus de 10 éléments. |
|
image |
Image |
Image associée à la commande proposée. |
|
totalPrice |
Price |
Obligatoire. Prix total de la commande proposée. |
|
extension |
FoodOrderExtension |
Obligatoire. Définit les informations de traitement pour les commandes de repas. |
|
disclaimers |
List<Disclaimer > |
Correspond aux messages de clause de non-responsabilité qui s'affichent dans l'interface utilisateur avant la passation de la commande. |
L'exemple suivant montre un élément ProposedOrder
:
Exemple
{ "id": "sample_proposed_order_id_1", "otherItems": [ { "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }, { "name": "Delivery fee", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 500000000 } }, "type": "TAX" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "36", "nanos": 730000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] } }
SublineNote
Le tableau suivant répertorie les propriétés du type SublineNote
:
Propriété | Type | Description | |
---|---|---|---|
note |
String | Obligatoire. |
Horodatage
La date et l'heure, au format suivant :
"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
TransactionDecisionValue
ContientOrder
.
Le tableau suivant répertorie les propriétés du type TransactionDecisionValue
:
Propriété | Type | Description | |
---|---|---|---|
order |
Order |
Obligatoire. Commande à passer avec les informations de paiement. |
L'exemple suivant montre un élément TransactionDecisionValue
:
Exemple
{ "order": { "finalOrder": { "cart": { "notes": "Guest prefers their food to be hot when it is delivered.", "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Cucina Venti" }, "lineItems": [ { "name": "Sizzling Prawns Dinner", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "16", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } }, "contact": { "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" } } }, "otherItems": [ { "name": "Service fee", "type": "FEE", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } } }, { "name": "Tax", "type": "TAX", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 370000000 } } }, { "name": "Tip", "type": "GRATUITY", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 590000000 } } } ], "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "23", "nanos": 710000000 } }, "id": "sample_final_order_id", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ], "optinForRemarketing": true } }, "googleOrderId": "sample_google_order_id", "orderDate": "2017-07-17T12:00:00Z", "paymentInfo": { "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd" }, "paymentType": "PAYMENT_CARD" } } }
Demande de traitement
AppRequest
Le tableau suivant répertorie les propriétés du type AppRequest
:
Propriété | Type | Description | |
---|---|---|---|
isInSandbox |
Valeur booléenne |
Indique si les transactions ultérieures sont effectuées dans un environnement bac à sable. |
|
conversation |
Conversation |
||
inputs |
List<Input > |
Obligatoire. Contient les arguments attendus pour payer un panier. Doit contenir exactement un élément. |
L'exemple suivant montre un élément AppRequest
:
Exemple 1
{ "isInSandbox": true, "inputs": [ { "intent": "actions.foodordering.intent.CHECKOUT", "arguments": [ { "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.Cart", "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Cucina Venti" }, "lineItems": [ { "name": "Sizzling Prawns Dinner", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "16", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } } } ] } ] }
Exemple 2
{ "isInSandbox": true, "inputs": [ { "intent": "actions.intent.TRANSACTION_DECISION", "arguments": [ { "transactionDecisionValue": { "order": { "finalOrder": { "cart": { "notes": "Guest prefers their food to be hot when it is delivered.", "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Cucina Venti" }, "lineItems": [ { "name": "Sizzling Prawns Dinner", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "16", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } }, "contact": { "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" } } }, "otherItems": [ { "name": "Service fee", "type": "FEE", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } } }, { "name": "Tax", "type": "TAX", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 370000000 } } }, { "name": "Tip", "type": "GRATUITY", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 590000000 } } } ], "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "23", "nanos": 710000000 } }, "id": "sample_final_order_id", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ], "optinForRemarketing": true } }, "googleOrderId": "sample_google_order_id", "orderDate": "2017-07-17T12:00:00Z", "paymentInfo": { "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd" }, "paymentType": "PAYMENT_CARD" } } } } ] } ] }
CheckoutRequestMessage
UnCheckoutRequestMessage
est un AppRequest
avec l'intent actions.foodordering.intent.CHECKOUT
.
SubmitOrderRequestMessage
UnSubmitOrderRequestMessage
est un AppRequest
avec l'intent actions.foodordering.intent.TRANSACTION_DECISION
.
Conversation
UnConversation
est unique à une session donnée. 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. Identifiant unique de la conversation. |
L'exemple suivant montre un élément Conversation
:
Exemple
{ "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ" }
Entrée
Arguments attendus pour payer 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-le sur "actions.foodordering.intent.CHECKOUT" pour le message de demande de paiement OU sur "actions.intent.TRANSACTION_DECISION" pour le message de demande d'envoi de commande. |
|
arguments |
List<Argument > |
Obligatoire. Contient le panier à régler ou la commande à passer Doit contenir exactement un élément. |
Argument
Contient des informations sur les plats que l'utilisateur souhaite payer. Pour le règlement, seule la prolongation est applicable. Pour envoyer une commande, seule la valeur transactionDecisionValue est applicable.
Le tableau suivant répertorie les propriétés du type Argument
:
Propriété | Type | Description | |
---|---|---|---|
Vous devez spécifier exactement l'un des groupes de propriétés suivants. | |||
extension |
Groupe 1 | Cart |
Détail des aliments que l'utilisateur souhaite payer. |
transactionDecisionValue |
Groupe 2 | TransactionDecisionValue |
Inclut la commande à passer ainsi que les informations de paiement. |
Réponse de traitement
AppResponse
Le tableau suivant répertorie les propriétés du type AppResponse
:
Propriété | Type | Description | |
---|---|---|---|
expectUserResponse |
Const |
Défini sur "false". Valeur : |
|
finalResponse |
FinalResponse |
Obligatoire. Inclut votre réponse à la page de paiement du panier. |
L'exemple suivant montre un élément AppResponse
:
Exemple 1
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "checkoutResponse": { "proposedOrder": { "id": "sample_proposed_order_id_1", "otherItems": [ { "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }, { "name": "Delivery fee", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 500000000 } }, "type": "TAX" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "36", "nanos": 730000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }, "additionalPaymentOptions": [ { "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Cash on delivery." } } ] } } } ] } } }
Exemple 2
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "updateTime": "2017-07-17T12:00:00Z", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "CUSTOMER_SERVICE", "button": { "title": "Call customer service", "openUrlAction": { "url": "tel:+18005554679" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } } } ] } } }
Exemple 3
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "error": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension", "foodOrderErrors": [ { "error": "CLOSED", "description": "The restaurant is closed." } ] } } } ] } } }
Exemple 4
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "checkoutResponse": { "proposedOrder": { "otherItems": [ { "name": "Delivery Fees", "subLines": [], "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "subLines": [], "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 370000000 } }, "type": "TAX" }, { "name": "Promotion", "subLines": [], "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": 0 } }, "id": "OWG_ACTIVE_CODE", "type": "DISCOUNT" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "promotions": [ { "coupon": "OWG_ACTIVE_CODE" } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "14", "nanos": 860000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2018-04-10T01:20:08.471Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:publishableKey": "pk_live_stripe_client_key", "stripe:version": "2017-04-06" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "VISA", "JCB" ], "prepaidCardDisallowed": true, "billingAddressRequired": true } } } } } ] } } }
CheckoutResponseMessage
UnCheckoutResponseMessage
est un AppResponse
avec un checkoutResponse
ou un error
dans le StructuredResponse
.
SubmitOrderResponseMessage
UnSubmitOrderResponseMessage
est un AppResponse
avec un orderUpdate
dans le StructuredResponse
.
FinalResponse
Votre réponse à la page de paiement du panier ou à SubmitOrderRequestMessage.
Le tableau suivant répertorie les propriétés du type FinalResponse
:
Propriété | Type | Description | |
---|---|---|---|
richResponse |
RichResponse |
Obligatoire. Inclut votre réponse au message CheckoutRequestMessage ou SubmitOrderRequestMessage. |
CheckoutResponse
Le tableau suivant répertorie les propriétés du type CheckoutResponse
:
Propriété | Type | Description | |
---|---|---|---|
proposedOrder |
ProposedOrder |
Obligatoire. Ordre proposé à utiliser pour la transaction. |
|
paymentOptions |
PaymentOptions |
Obligatoire. Option de paiement par défaut sélectionnée pour l'utilisateur. |
|
additionalPaymentOptions |
List<PaymentOptions > |
Autres options de paiement disponibles pour l'utilisateur. |
L'exemple suivant montre un élément CheckoutResponse
:
Exemple
{ "proposedOrder": { "id": "sample_proposed_order_id_1", "otherItems": [ { "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }, { "name": "Delivery fee", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 500000000 } }, "type": "TAX" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "36", "nanos": 730000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }, "additionalPaymentOptions": [ { "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Cash on delivery." } } ] }
Élément
Contient votre réponse à un paiement par panier ou à un message SubmitOrderRequestMessage.
Le tableau suivant répertorie les propriétés du type Item
:
Propriété | Type | Description | |
---|---|---|---|
structuredResponse |
StructuredResponse |
Obligatoire. |
RichResponse
Inclut votre réponse à un paiement par panier.
Le tableau suivant répertorie les propriétés du type RichResponse
:
Propriété | Type | Description | |
---|---|---|---|
items |
List<Item > |
Obligatoire. Doit contenir exactement un élément. |
StructuredResponse
Pour CheckoutResponseMessage, il peut s'agir de l'un des éléments suivants: CheckoutResponse Indique qu'un paiement a bien été effectué. OU FoodErrorExtension: indique un échec lors du règlement. La réponse peut inclure une proposition de commande et des options de paiement corrigées, ou un message d'erreur sans options de paiement. Pour SubmitOrderResponseMessage, seul orderUpdate est applicable.
Le tableau suivant répertorie les propriétés du type StructuredResponse
:
Propriété | Type | Description | |
---|---|---|---|
Vous devez spécifier exactement l'un des groupes de propriétés suivants. | |||
checkoutResponse |
Groupe 1 | CheckoutResponse |
Articles achetés, taxes et remises |
error |
Groupe 2 | FoodErrorExtension |
Des erreurs ont été détectées dans les articles du panier. Selon la nature de l'erreur, cette propriété peut inclure une proposition de commande et des options de paiement corrigées, ou simplement un message d'erreur sans options de paiement. |
orderUpdate |
Groupe 3 | OrderUpdate |
Notifications asynchrones sur les commandes
Cette section décrit les types de haut niveau qui constituent les requêtes et les réponses d'une interaction d'action intégrée de commande de repas typique.AsyncOrderUpdateRequestMessage
Informe l'utilisateur des modifications apportées une fois la commande envoyée et confirmée. Par exemple, vous pouvez informer l'utilisateur que la commande est en cours de livraison ou que le prix a changé. Pour en savoir plus, consultezLe tableau suivant répertorie les propriétés du type AsyncOrderUpdateRequestMessage
:
Propriété | Type | Description | |
---|---|---|---|
isInSandbox |
Valeur booléenne |
Indique que la commande pour laquelle cette mise à jour a été envoyée est un paiement dans l'environnement bac à sable. |
|
customPushMessage |
CustomPushMessage |
Obligatoire. Inclut l'ordre de mise à jour pour la requête. |
L'exemple suivant montre un élément AsyncOrderUpdateRequestMessage
:
Exemple
{ "isInSandbox": true, "customPushMessage": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "IN_TRANSIT", "label": "Order is on the way" }, "inTransitInfo": { "updatedTime": "2017-07-17T12:00:00Z" }, "updateTime": "2017-07-17T12:00:00Z", "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } } }
AsyncOrderUpdateResponseMessage
Une fois que vous avez envoyé unAsyncOrderUpdateRequestMessage
, Google répond avec un état HTTP 200 et un corps vide. Si la mise à jour échoue, Google répond en indiquant pourquoi la mise à jour de la commande a échoué.
Types de mises à jour de commandes
Bouton
Définit un élément d'interface utilisateur que vous pouvez ajouter pour permettre une interaction avec l'utilisateur.
Le tableau suivant répertorie les propriétés du type Button
:
Propriété | Type | Description | |
---|---|---|---|
title |
String | Obligatoire. Libellé à afficher. Utilisez la casse de phrase avec 30 caractères maximum pour garantir un rendu correct. Exemple : |
|
openUrlAction |
OpenUrlAction |
Obligatoire. |
L'exemple suivant montre un élément Button
:
Exemple
{ "title": "Send us feedback", "openUrlAction": { "url": "mailto:person@example.com" } }
CancellationInfo
Le tableau suivant répertorie les propriétés du type CancellationInfo
:
Propriété | Type | Description | |
---|---|---|---|
reason |
String | Obligatoire. Raison du refus affichée lorsque OrderState.state est "CANCELLED". Exemple : |
L'exemple suivant montre un élément CancellationInfo
:
Exemple
{ "reason": "Insufficient inventory" }
FoodOrderUpdateExtension
Ce type fournit à l'utilisateur un intervalle estimé pour la livraison ou le retrait de la commande. Envoyez cette extension dans un OrderUpdate
chaque fois que les informations sont disponibles ou ont changé depuis leur dernier envoi.
Fournissez une estimation prudente de l'intervalle de traitement afin que les attentes des utilisateurs soient systématiquement satisfaites. Par exemple, si la livraison de la commande est estimée aujourd'hui à 13h00, vous devez envoyer un intervalle estimé qui correspond aux variations dues aux conditions de circulation, par exemple entre 12h45 et 13h15.
Une durée ou un code temporel ISO 8601 est interprété comme l'intervalle entre le updateTime
de l'OrderUpdate
(en substance, "maintenant") et le updateTime
plus duration
.
N'utilisez pas ce format, sauf si "maintenant" est 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 |
Heure estimée à laquelle la commande sera livrée ou prête à être retirée. La chaîne doit être au format ISO 8601 et correspondre à un intervalle plutôt qu'à une heure fixe. Les conventions acceptables sont les suivantes: intervalles, durées et dates/heures. Ce champ peut être envoyé dans SubmitOrderResponseMessage ou AsyncOrderUpdateRequestMessage lorsque les informations sont disponibles ou qu'il y a un changement, comme un départ anticipé ou un retard. Exemple : |
|
foodOrderErrors |
List<FoodOrderError > |
Décrit les erreurs qui se sont produites après la commande. Nous vous recommandons de n'indiquer qu'une seule erreur par panier ou par article. Utilisez FoodOrderUpdateExtension.FoodOrderErrors pour toutes les erreurs non couvertes par RejectionInfo. Doit contenir au moins un élément. |
L'exemple suivant montre un élément FoodOrderUpdateExtension
:
Exemple 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" }
Exemple 2
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "foodOrderErrors": [ { "error": "NO_CAPACITY", "description": "Sorry, the restaurant cannot take your order right now." } ] }
FulfillmentInfo
Le tableau suivant répertorie les propriétés du type FulfillmentInfo
:
Propriété | Type | Description | |
---|---|---|---|
Vous devez spécifier exactement l'un des groupes de propriétés suivants. | |||
deliveryTime |
Groupe 1 | Code temporel ISO |
Utiliser estimatedFulfillmentTimeIso8601 dans le message FoodOrderingUpdateExtension |
pickupTime |
Groupe 2 | Code temporel ISO |
Utiliser estimatedFulfillmentTimeIso8601 dans le message FoodOrderingUpdateExtension |
L'exemple suivant montre un élément FulfillmentInfo
:
Exemple 1
{ "deliveryTime": "2017-05-10T02:36:38.803Z" }
Exemple 2
{ "pickupTime": "2019-12-26T07:24:27.803Z" }
InTransitInfo
Le tableau suivant répertorie les propriétés du type InTransitInfo
:
Propriété | Type | Description | |
---|---|---|---|
updatedTime |
Code temporel ISO |
Utiliser estimatedFulfillmentTimeIso8601 dans le message FoodOrderingUpdateExtension |
L'exemple suivant montre un élément InTransitInfo
:
Exemple
{ "updatedTime": "2017-05-10T02:36:38.803Z" }
LineItemUpdate
Le tableau suivant répertorie les propriétés du type LineItemUpdate
:
Propriété | Type | Description | |
---|---|---|---|
orderState |
OrderState |
||
price |
Price |
||
reason |
String |
Raison du changement. Obligatoire pour les changements de prix. |
L'exemple suivant montre un élément LineItemUpdate
:
Exemple
{ "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "5", "nanos": 500000000 } }, "reason": "Menu updated prices." }
OpenUrlAction
Le tableau suivant répertorie les propriétés du type OpenUrlAction
:
Propriété | Type | Description | |
---|---|---|---|
url |
String | Obligatoire. Action déclenchée en cliquant ou en appuyant sur le bouton. La liste des préfixes applicables dépend de orderManagementActionType. "EMAIL": le préfixe doit être "mailto". "CALL": le préfixe doit être "tel". "CUSTOMER_SERVICE": le préfixe doit être "mailto", "tel", "http" ou "https". Exemple : |
OrderManagementAction
La gestion des commandes permet aux utilisateurs d'obtenir une assistance après la commande. Elle doit être envoyée dans chaque OrderUpdate
dans l'élément AppResponse
et dans chaque élément AsyncOrderUpdateRequestMessage
ultérieur. Les actions de gestion des commandes envoyées pour une commande particulière peuvent varier en fonction de l'état.
Par exemple, dans l'état "CREATED" (CRÉÉ), 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 remplacer le numéro de téléphone du restaurant par celui du client si celui-ci devient le meilleur point de contact pour le client. De même, une fois la commande passée à l'état "LIVRÉE", CUSTOMER_SERVICE
peut faire référence à vos adresses e-mail d'assistance.
Le tableau suivant répertorie les propriétés du type OrderManagementAction
:
Propriété | Type | Description | |
---|---|---|---|
type |
OrderManagementActionType |
Obligatoire. |
|
button |
Button |
Obligatoire. |
L'exemple suivant montre un élément OrderManagementAction
:
Exemple 1
{ "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }
Exemple 2
{ "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }
OrderManagementActionType
Définit les types associés àOrderManagementAction
.
Le type OrderManagementActionType
peut avoir les valeurs suivantes:
CUSTOMER_SERVICE
: adresse e-mail et/ou numéro de téléphone du service client à afficher sur la page de confirmation de commande. Ce champ est obligatoire. Le préfixe openUrlAction.url doit être "mailto", "tel", "http" ou "https".EMAIL
: action par e-mail sur la page d'informations sur la commande uniquement. Le préfixe de l'URL openUrlAction doit être "mailto".CALL_DRIVER
: action d'appel sur la page d'informations sur la commande uniquement. Le préfixe de l'URL openUrlAction doit être "tel".CALL_RESTAURANT
: action d'appel sur la page d'informations sur la commande uniquement. Le préfixe de l'URL openUrlAction doit être "tel".
OrderState
État actuel de la commande. Chaque valeur state
de OrderState
correspond également à un état d'achat sur myaccount.google.com.
Le tableau suivant répertorie les propriétés du type OrderState
:
Propriété | Type | Description | |
---|---|---|---|
state |
OrderStateEnum |
Obligatoire. |
|
label |
String | Obligatoire. Chaîne d'affichage visible par l'utilisateur pour l'état. Seule la première lettre du titre doit être en majuscule. Exemple : |
L'exemple suivant montre un élément OrderState
:
Exemple
{ "state": "CONFIRMED", "label": "Provider confirmed" }
OrderStateEnum
Définit les types associés àOrderState
.
Le type OrderStateEnum
peut avoir les valeurs suivantes:
CREATED
: commande créée par l'intégrateur et en attente de confirmation par le fournisseur. Correspond à l'état d'achat "Commandé".CONFIRMED
: la commande a été 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é".CANCELLED
: l'utilisateur a annulé la commande. Correspond à l'état d'achat "Annulé".IN_PREPARATION
: la nourriture est en cours de préparation. Correspond à l'état d'achat "État inconnu".READY_FOR_PICKUP
: la nourriture est prête à être retirée. Correspond à l'état d'achat "Prêt à être retiré".IN_TRANSIT
: la commande est en cours de livraison. Correspond à l'état d'achat "En cours".FULFILLED
: l'utilisateur a reçu ce qu'il a commandé. Correspond à l'état d'achat "Récupéré".
Reçu
Envoyez ce type dans une commande d'envoiAppResponse
, où OrderState
est "CONFIRMED", "FULFILLED" ou "IN_TRANSIT". Envoyez un reçu au moment où l'userVisibleOrderId
devient disponible. Vous n'avez pas besoin de continuer à envoyer le reçu dans les mises à jour ultérieures.
Le tableau suivant répertorie les propriétés du type Receipt
:
Propriété | Type | Description | |
---|---|---|---|
userVisibleOrderId |
String | Obligatoire. Obligatoire si la commande est "CONFIRMED", "IN_TRANSIT" ou "FULFILLED". Ce champ correspond à l'identifiant unique visible par l'utilisateur pour cette commande (généralement l'ID de commande du restaurant). Il s'affiche à la fois sur le reçu de l'intégrateur et sur la fiche de commande Google. L'utilisateur doit pouvoir utiliser cet ID pour référencer sa commande auprès du service client du fournisseur et de l'intégrateur. Vous n'avez besoin de fournir cet ID qu'une seule fois dans une commande. Tant qu'il n'est pas fourni, l'actionOrderId est l'userVisibleOrderId. Par exemple, vous ne disposez peut-être pas d'un userVisibleOrderId tant que la commande n'a pas été confirmée par le restaurant. Une fois la confirmation reçue, vous devez envoyer un message AsyncOrderUpdateRequestMessage avec un OrderUpdate et un reçu. |
L'exemple suivant montre un élément Receipt
:
Exemple
{ "userVisibleOrderId": "userVisibleId1234" }
RejectionInfo
Le tableau suivant répertorie les propriétés du type RejectionInfo
:
Propriété | Type | Description | |
---|---|---|---|
type |
RejectionType |
Obligatoire. |
|
reason |
String |
Motif du refus utilisé pour la journalisation interne. Ce champ n'est pas visible par les utilisateurs. |
L'exemple suivant montre un élément RejectionInfo
:
Exemple
{ "type": "PAYMENT_DECLINED", "reason": "There is an issue with payment processing." }
RejectionType
Le type RejectionType
peut avoir les valeurs suivantes:
INELIGIBLE
: l'utilisateur n'est pas éligible en raison de problèmes liés aux règles ou aux risques.PAYMENT_DECLINED
: un problème est survenu lors du traitement du paiement.UNAVAILABLE_SLOT
: la commande ne peut pas être traitée à l'heure de commande à l'avance spécifiée par DeliveryInfo ou PickupInfo.PROMO_NOT_APPLICABLE
: un problème est survenu avec la promotion.UNKNOWN
: toute autre raison.
Types liés aux paiements
Cette section décrit les types de paiement utilisés pour le traitement des commandes de repas.ActionProvidedPaymentOptions
Conditions requises pour un mode de paiement fourni par une action.
Le tableau suivant répertorie les propriétés du type ActionProvidedPaymentOptions
:
Propriété | Type | Description | |
---|---|---|---|
paymentType |
PaymentType |
Obligatoire. |
|
displayName |
String | Obligatoire. Nom du mode de paiement affiché 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 spécifier si le règlement en espèces ou par carte est accepté pour le traitement. |
L'exemple suivant montre un élément ActionProvidedPaymentOptions
:
Exemple
{ "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } }
AllowedAuthMethods
Le type AllowedAuthMethods
peut avoir les valeurs suivantes:
PAN_ONLY
: méthode d'authentification associée aux cartes de paiement enregistrées dans le compte Google de l'utilisateur. Les données de paiement renvoyées incluent le numéro de compte personnel (PAN) avec le mois et l'année d'expiration.
AllowedCardNetworks
Le type AllowedCardNetworks
peut avoir les valeurs suivantes:
AMEX
DISCOVER
INTERAC
JCB
MASTERCARD
VISA
BillingAddressParameters
Cet objet vous permet de définir des champs supplémentaires à renvoyer pour une adresse de facturation demandée.
Le tableau suivant répertorie les propriétés du type BillingAddressParameters
:
Propriété | Type | Description | |
---|---|---|---|
format |
String |
Format d'adresse de facturation requis pour finaliser la transaction. MIN: nom, code pays et code postal. COMPLET: nom, adresse postale, localité, région, code pays et code postal. |
L'exemple suivant montre un élément BillingAddressParameters
:
Exemple 1
{ "format": "MIN" }
Exemple 2
{ "format": "FULL" }
CardParameters
Utilisez cet objet pour configurer la prise en charge de l'API Google Pay sur votre site.
Le tableau suivant répertorie les propriétés du type CardParameters
:
Propriété | Type | Description | |
---|---|---|---|
allowedAuthMethods |
List<Const> | Obligatoire. Champs acceptés pour authentifier une transaction par carte. Doit contenir au moins un élément. |
|
allowedCardNetworks |
List<AllowedCardNetworks > |
Obligatoire. Un ou plusieurs réseaux de cartes que vous acceptez et qui sont également compatibles avec l'API Google Pay. Doit contenir au moins un élément. |
|
billingAddressRequired |
Valeur booléenne |
Définissez cette valeur sur "true" si vous avez besoin d'une adresse de facturation. Ne demandez une adresse de facturation que si elle est nécessaire au traitement de la transaction. Les demandes de données supplémentaires peuvent augmenter les frictions lors du processus de paiement et entraîner une baisse des taux de conversion. |
|
billingAddressParameters |
BillingAddressParameters |
Champs attendus renvoyés si billingAddressRequired est défini sur "true". |
|
cvcRequired |
Valeur booléenne |
Définissez cette valeur sur "true" si vous utilisez TimesofMoney, et sur "false" pour tous les autres systèmes de traitement des paiements. |
L'exemple suivant montre un élément CardParameters
:
Exemple 1
{ "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "AMEX", "DISCOVER" ], "billingAddressRequired": false, "cvcRequired": false }
Exemple 2
{ "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "AMEX", "DISCOVER" ], "billingAddressRequired": true, "billingAddressParameters": { "format": "MIN" }, "cvcRequired": false }
GoogleProvidedPaymentInstrument
Le tableau suivant répertorie les propriétés du type GoogleProvidedPaymentInstrument
:
Propriété | Type | Description | |
---|---|---|---|
instrumentToken |
String | Obligatoire. Chaîne encodée en base64 contenant le jeton de paiement permettant de facturer l'utilisateur à l'aide d'un processeur Google Pay participant, conformément aux GoogleProvidedPaymentOptions spécifiées précédemment. |
|
billingAddress |
PostalAddress |
Adresse de facturation du paiement. |
L'exemple suivant montre un élément GoogleProvidedPaymentInstrument
:
Exemple
{ "instrumentToken": "abcd", "billingAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] } }
GoogleProvidedPaymentOptions
Conditions requises pour le mode de paiement fourni par Google
Le tableau suivant répertorie les propriétés du type GoogleProvidedPaymentOptions
:
Propriété | Type | Description | |
---|---|---|---|
facilitationSpecification |
String |
Chaîne de données JSON PaymentDataRequest. Utilisez cet objet pour configurer la prise en charge de l'API Google Pay sur votre site. |
|
supportedCardNetworks |
List<SupportedCardNetworks > |
Utilisez plutôt facilitationSpecification. Type de réseaux de cartes acceptés par l'agent. Ce champ est obsolète. |
|
prepaidCardDisallowed |
Valeur booléenne |
Utilisez plutôt facilitationSpecification. Indique si une carte prépayée est autorisée comme mode de paiement. Ce champ est obsolète. |
|
billingAddressRequired |
Valeur booléenne |
Utilisez plutôt facilitationSpecification. Indique si une adresse de facturation est obligatoire. Ce champ est obsolète. |
|
tokenizationParameters |
TokenizationParameters |
Ce champ est obsolète. |
L'exemple suivant montre un élément GoogleProvidedPaymentOptions
:
Exemple 1
{ "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" }
Exemple 2
{ "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "braintree", "braintree:apiVersion": "v1", "braintree:sdkVersion": "1.4.0", "braintree:merchantId": "a1b2c3d4e5", "braintree:clientKey": "production_braintree_client_key", "braintree:authorizationFingerprint": "same_as_client_key" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "JCB", "VISA" ], "prepaidCardDisallowed": true }
Exemple 3
{ "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:publishableKey": "pk_live_stripe_client_key", "stripe:version": "2017-04-06" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "VISA", "JCB" ], "prepaidCardDisallowed": true, "billingAddressRequired": true }
MerchantInfo
Utilisez cet objet pour configurer la prise en charge de l'API Google Pay sur votre site.
Le tableau suivant répertorie les propriétés du type MerchantInfo
:
Propriété | Type | Description | |
---|---|---|---|
merchantId |
String |
Identifiant de marchand Google qui vous a été attribué par Google Pay. |
|
merchantName |
String | Obligatoire. Nom du marchand encodé en UTF-8. Le nom du marchand s'affiche dans la fiche 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 montre un élément OnFulfillmentPaymentData
:
Exemple
{ "supportedPaymentOptions": [ "Cash", "Card" ] }
Paramètres
Définit les types associés à TokenizationParameters
.
Le tableau suivant répertorie les propriétés du type Parameters
:
Propriété | Type | Description | |
---|---|---|---|
gateway |
String | Obligatoire. Exemple : |
|
gatewayMerchantId |
String | ||
[additionalKey: string] |
String | Paires clé-valeur supplémentaires |
L'exemple suivant montre un élément Parameters
:
Exemple 1
{ "gatewayMerchantId": "90412491", "gateway": "olo" }
Exemple 2
{ "gateway": "braintree", "braintree:apiVersion": "v1", "braintree:sdkVersion": "1.4.0", "braintree:merchantId": "YOUR_MERCHANT_ID", "braintree:clientKey": "YOUR_BRAINTREE_SANDVOX_OR_PRODUCTION_KEY" }
PaymentDataRequest
Utilisez cet objet pour configurer la prise en charge de l'API Google Pay sur votre site.
Le tableau suivant répertorie les propriétés du type PaymentDataRequest
:
Propriété | Type | Description | |
---|---|---|---|
apiVersion |
Const | Obligatoire. Version majeure de l'API. Valeur : |
|
apiVersionMinor |
Const | Obligatoire. Version mineure de l'API. Valeur : |
|
merchantInfo |
MerchantInfo |
Obligatoire. (ID de marchand Google Pay) Informations sur le marchand qui demande des données de paiement. |
|
allowedPaymentMethods |
List<PaymentMethod > |
Obligatoire. Spécifie la prise en charge d'un ou de plusieurs modes de paiement acceptés par l'API Google Pay. |
|
transactionInfo |
TransactionInfo |
Obligatoire. Informations sur l'autorisation de la transaction en fonction de l'acceptation ou du refus de l'utilisateur. Ce champ inclut le prix total et l'état du prix. |
L'exemple suivant montre un élément PaymentDataRequest
:
Exemple
{ "apiVersion": 2, "apiVersionMinor": 0, "merchantInfo": { "merchantId": "10391231", "merchantName": "Burrito Town" }, "allowedPaymentMethods": [ { "type": "CARD", "parameters": { "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "VISA", "AMEX", "MASTERCARD" ], "billingAddressRequired": true, "billingAddressParameters": { "format": "FULL" }, "cvcRequired": false }, "tokenizationSpecification": { "type": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:version": "2019-05-16", "stripe:publishableKey": "pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA" } } } ], "transactionInfo": { "currencyCode": "INR", "totalPriceStatus": "ESTIMATED", "totalPrice": "185.00" } }
PaymentInfo
Informations 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 par l'utilisateur de l'instrument de paiement à afficher sur le reçu. |
|
paymentType |
PaymentType |
Obligatoire. |
|
googleProvidedPaymentInstrument |
GoogleProvidedPaymentInstrument |
Jeton pouvant être utilisé par l'action. Ne spécifiez cette valeur que si vous avez spécifié GoogleProvidedPaymentOptions comme mode de paiement dans CheckoutResponseMessage. |
L'exemple suivant montre un élément PaymentInfo
:
Exemple 1
{ "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd" }, "paymentType": "PAYMENT_CARD" }
Exemple 2
{ "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd", "billingAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "123 Random Street", "Unit ABC" ], "recipients": [ "sample_receipient" ] } }, "paymentType": "PAYMENT_CARD" }
PaymentMethod
Utilisez cet objet pour configurer la prise en charge de l'API Google Pay sur votre site.
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é. Seul le format CARTE est actuellement accepté. 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 les informations de paiement. Cette propriété est obligatoire pour le mode de paiement CARTE. |
L'exemple suivant montre un élément PaymentMethod
:
Exemple
{ "type": "CARD", "parameters": { "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "VISA", "AMEX", "MASTERCARD" ], "billingAddressRequired": false }, "tokenizationSpecification": { "type": "PAYMENT_GATEWAY", "parameters": { "gatewayMerchantId": "90412491", "gateway": "olo" } } }
PaymentOptions
Le tableau suivant répertorie les propriétés du type PaymentOptions
:
Propriété | Type | Description | |
---|---|---|---|
Vous devez spécifier exactement l'un des groupes de propriétés suivants. | |||
googleProvidedOptions |
Groupe 1 | GoogleProvidedPaymentOptions |
S'exclut mutuellement avec actionProvidedOptions. Utilisez-le pour payer en ligne avec gPay. |
actionProvidedOptions |
Groupe 2 | ActionProvidedPaymentOptions |
S'exclut mutuellement avec googleProvidedOptions. Utilisez-le pour "Paiement à la livraison" ou "Paiement à la livraison". |
L'exemple suivant montre un élément PaymentOptions
:
Exemple 1
{ "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }
Exemple 2
{ "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\":true, \"billingAddressParameters\": { \"format\":\"MIN\" } }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }
Exemple 3
{ "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } } }
PaymentOptionsEnums
Le type PaymentOptionsEnums
peut avoir les valeurs suivantes:
Cash
Card
UPI
Paytm
PaymentType
Le type PaymentType
peut avoir les valeurs suivantes:
PAYMENT_CARD
: pour GoogleProvidedPaymentOptions.ON_FULFILLMENT
: pour ActionProvidedPaymentOptions.
SupportedCardNetworks
Définit les types associés àGoogleProvidedPaymentOptions
.
Le type SupportedCardNetworks
peut avoir les valeurs suivantes:
UNSPECIFIED_CARD_NETWORK
AMEX
DISCOVER
JCB
MASTERCARD
VISA
TokenizationParameters
Définit les types liés àGoogleProvidedPaymentOptions
.
Le tableau suivant répertorie les propriétés du type TokenizationParameters
:
Propriété | Type | Description | |
---|---|---|---|
tokenizationType |
Enum [
"UNSPECIFIED_TOKENIZATION_TYPE",
"PAYMENT_GATEWAY"
] |
Obligatoire. Utilisez plutôt facilitationSpecification. Type de jetons acceptés. |
|
parameters |
Parameters |
Utilisez plutôt facilitationSpecification. |
TokenizationSpecification
Cet objet vous permet de configurer un compte pour recevoir des informations de paiement facturables.
Le tableau suivant répertorie les propriétés du type TokenizationSpecification
:
Propriété | Type | Description | |
---|---|---|---|
type |
Const | Obligatoire. |
|
parameters |
Parameters |
Obligatoire. |
L'exemple suivant montre un élément TokenizationSpecification
:
Exemple 1
{ "type": "PAYMENT_GATEWAY", "parameters": { "gatewayMerchantId": "1247192", "gateway": "cybersource" } }
Exemple 2
{ "type": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:version": "2018-10-31", "stripe:publishableKey": "12378127" } }
TransactionInfo
Cet objet décrit une transaction qui détermine la capacité de paiement d'un payeur. Il permet d'afficher 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 |
ID unique qui identifie une tentative de transaction. Les marchands peuvent utiliser un ID existant ou en générer un spécifique pour les tentatives de transaction Google Pay. Ce champ est obligatoire lorsque vous envoyez des rappels à l'API Google Transaction Events. |
|
totalPriceStatus |
Const | Obligatoire. Utilisez "ESTIMATED" (ESTIMÉ) par défaut. Le prix total peut être ajusté en fonction des détails de la réponse, comme la taxe de vente collectée en fonction d'une adresse de facturation. Valeur : |
|
totalPrice |
String | Obligatoire. Valeur monétaire totale de la transaction, avec une précision décimale facultative de deux chiffres après la virgule. La valeur de ce champ doit être identique à celle de cart.totalPrice. |
L'exemple suivant montre un élément TransactionInfo
:
Exemple
{ "totalPriceStatus": "ESTIMATED", "totalPrice": "12.34", "currencyCode": "USD" }