Schéma des actions d'exécution

Cette page décrit la charge utile du service Web de traitement (API Ordering End-to-End) avec l'API Ordering End-to-End Action intégrée. Pour obtenir une version de ces informations lisible par un ordinateur, vous pouvez télécharger le schéma JSON.

Types de base

Collection

Contient des détails sur la commande et indique si elle concerne un retrait ou une livraison. Un panier contient également les détails de livraison, les pourboires et l'adresse de livraison. L'objet Cart est défini dans un Checkout AppRequest.f. Vous incluez une copie du panier dans votre Checkout AppResponse.

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

Propriété Type Description
@type Const.

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

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

id String

Identifiant facultatif du panier.

merchant Merchant

Marchand affilié à ce panier.

lineItems Liste<LineItem>

Obligatoire.

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

Ne doit pas contenir moins de 1 élément.

promotions Liste<Promotion>

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

notes String

Notes sur la commande ou les instructions de livraison

extension FoodCartExtension

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

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

Exemple 1

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

Exemple 2

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

Contact

Spécifie les détails de la personne recevant la commande. Elle n'est disponible que dans AppResponse.

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

Propriété Type Description
displayName String

Nom de la personne qui reçoit la commande, tel que vous voulez qu'il apparaisse. Utilisez ce champ si firstName et lastName ne sont pas spécifiés.

Exemple : Lovefood Ordering

email String

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

Exemple : ilovefood@example.com

firstName String

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

Exemple : Lovefood

lastName String

Nom de famille de la personne qui reçoit la commande.

Exemple : Ordering

phoneNumber String

Numéro de téléphone de la personne recevant la commande, avec le code pays.

Exemple : +16501234567

emailVerified Booléen

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

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

Exemple

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

CustomPushMessage

Contient le OrderUpdate pour la requête.

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

Propriété Type Description
orderUpdate OrderUpdate

Obligatoire.

Informations mises à jour pour la commande.

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

Exemple

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

DeliveryInfo

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

Propriété Type Description
deliveryTimeIso8601 String

Délai de livraison estimé, au format d'horodatage ISO 8601: "{année}-{mois}-{jour}T{heure}:{min}:{s}[.{frac_sec}]Z" ou au format de durée: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Par exemple, "PT90M" représente une durée de 90 minutes. La valeur par défaut "PT0M" indique que le délai de livraison préféré est le plus tôt possible. Référence: https://fr.wikipedia.org/wiki/ISO_8601#Combine_date_and_time_Representations. Utilisez cette option pour mettre à jour le délai de livraison estimé lors de la réponse au règlement.

Exemple : PT90M

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

Exemple

{
  "deliveryTimeIso8601": "PT90M"
}

Disclaimer

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

Propriété Type Description
predefinedMessage PredefinedMessage

Obligatoire.

Pour afficher des messages prédéfinis avec des clauses de non-responsabilité lors du règlement.

feeAmount Money

Le partenaire facturera au marchand des frais d'un montant de N pour cette commande.

feeAmountRange FeeAmountRange

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

feePercent Number

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

feePercentRange FeePercentRange

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

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

Exemple 1

{
  "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER"
}

Exemple 2

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE"
}

Exemple 3

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

Exemple 4

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

Exemple 5

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

Exemple 6

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

Erreur

Le type Error a les valeurs possibles suivantes:

  • CLOSED: le restaurant est fermé à l'heure de la commande.
  • NO_CAPACITY: aucune capacité de service disponible (par exemple, une indisponibilité temporaire due aux heures de pointe).
  • NO_COURIER_AVAILABLE: impossible de traiter la commande en raison du personnel de livraison limité.
  • REQUIREMENTS_NOT_MET: les contraintes d'acceptation de la commande n'ont pas été remplies (par exemple, la taille minimale du panier).
  • UNAVAILABLE_SLOT: la commande ne peut pas être traitée à l'avance à l'heure indiquée par DeliveryInfo ou PickupInfo.
  • OUT_OF_SERVICE_AREA: la commande ne peut pas être livrée à l'adresse de l'utilisateur.
  • PROMO_EXPIRED: impossible d'appliquer la promotion, car la promotion a expiré.
  • PROMO_NOT_APPLICABLE: code d'erreur générique permettant d'identifier tous les cas de non-application du code promotionnel, si aucune des autres erreurs liées aux codes promotionnels ne correspond.
  • PROMO_NOT_RECOGNIZED: le code promotionnel n'a pas été reconnu.
  • PROMO_ORDER_INELIGIBLE: la commande en cours ne permet pas de bénéficier de ce bon de réduction.
  • PROMO_USER_INELIGIBLE: l'utilisateur actuel ne peut pas bénéficier de ce bon de réduction.
  • AVAILABILITY_CHANGED: l'article n'est plus disponible ou le nombre d'articles est insuffisant pour traiter la demande.
  • INCORRECT_PRICE: erreurs de prix dans les frais ou le total.
  • INVALID: un élément de campagne, une option de traitement ou une promotion contient des données non valides.
  • NOT_FOUND: élément de campagne, FulfillmentOption ou promotion introuvable.
  • PRICE_CHANGED: le prix d'un article a changé.

FeeAmountRange

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

Propriété Type Description
minFeeAmount Money

Limite inférieure des frais facturés.

maxFeeAmount Money

Limite supérieure des frais facturés.

FeePercentRange

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

Propriété Type Description
minFeePercent Number

Limite inférieure du pourcentage de frais facturé.

maxFeePercent Number

Limite supérieure du pourcentage de frais facturé.

FoodCartExtension

Contient des informations sur l'utilisateur, telles que les préférences de traitement.

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

Propriété Type Description
@type Const.

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

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

contact Contact

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

fulfillmentPreference FulfillmentOption

Obligatoire.

Préférence de traitement de l'utilisateur.

location Location

Dans le CheckoutRequestMessage, ce champ indique l'adresse de livraison, qui est obligatoire si la commande est destinée à une livraison. Pour les commandes à emporter ou à retirer, ce champ n'est pas inclus dans le message.

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

Exemple 1

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

Exemple 2

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

FoodErrorExtension

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

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

Propriété Type Description
@type Const.

Obligatoire.

Type de cette extension.

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

foodOrderErrors Liste<FoodOrderError>

Obligatoire.

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

Ne doit pas contenir moins de 1 élément.

correctedProposedOrder ProposedOrder

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

Nouvelle commande proposée avec des corrections. Renvoie cet objet s'il existe des erreurs récupérables dans l'objet ProposedOrder d'origine. Par exemple, un changement du prix d'un ou de plusieurs articles dans le panier est une erreur récupérable. Les erreurs récupérables associées à un ProposedOrder valide passent à l'étape de confirmation, au lieu de demander à l'utilisateur de vérifier son panier.

paymentOptions PaymentOptions

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

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

additionalPaymentOptions Liste<PaymentOptions>

Autres options de paiement disponibles pour l'utilisateur.

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

Exemple

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

FoodItemExtension

Définit les modules complémentaires des aliments.

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

Propriété Type Description
@type Const.

Obligatoire.

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

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

options Liste<FoodItemOption>

Il peut s'agir d'un module complémentaire ou d'un groupe de modules complémentaires.

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

Exemple

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

FoodItemOption

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

Propriété Type Description
id String

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

Exemple : 39231093

offerId String

Identifiant de l'offre pour l'article.

Exemple : 912835081

name String

Nom de l'option.

Exemple : Honey Mustard

price Money
note String

Remarque concernant l'option.

quantity Number

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

Exemple : 3

subOptions Liste<FoodItemOption>

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

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

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

Exemple 1

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

Exemple 2

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

FoodOrderError

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

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

Propriété Type Description
error Error

Obligatoire.

id String

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

Ce champ est obligatoire pour les erreurs au niveau des articles. Il s'agit de l'ID LineItem.id attribué par Google aux éléments du menu ou de l'ID FoodItemOption.id pour les modules complémentaires.

description String

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

updatedPrice Money

Obligatoire si error = "PRICE_CHANGED".

Nouveau prix d'un article à l'origine de l'erreur. Cet attribut n'est requis que si l'erreur est "PRICE_CHANGED".

availableQuantity Entier

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

Nouvelle quantité disponible de l'article à l'origine de l'erreur. Cette condition n'est requise que si l'erreur est "INVALID" ou "NOT_FOUND". La valeur de "INVALID" et "NOT_FOUND" doit être égale à zéro.

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

Exemple 1

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

Exemple 2

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

FoodOrderExtension

Contient des informations de traitement pour la commande.

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

Propriété Type Description
@type Const.

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

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

availableFulfillmentOptions Liste<FulfillmentOption>

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

optinForRemarketing Booléen

Demande d'un utilisateur concernant l'activation de vos canaux marketing. Par défaut, vous ne pouvez pas envoyer de contenu marketing sans le consentement de l'utilisateur. Si la valeur de optinForRemarketing est "true", vous pouvez abonner l'utilisateur. Si la valeur optinForRemarketing est définie sur "false" ou si elle est absente, vous devez conserver l'état de l'abonnement dans votre système tel quel. Les utilisateurs ne peuvent pas désactiver l'option via Google, uniquement via une fonction de désabonnement fournie dans vos canaux marketing. Cet indicateur n'est présent que dans SubmitOrderRequestMessage.

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

Exemple 1

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

Exemple 2

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

FulfillmentOption

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

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

Propriété Type Description
offerId String

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

fulfillmentInfo FulfillmentOptionInfo

Obligatoire.

expiresAt Horodatage ISO

Heure à laquelle cette option de traitement expire.

price Money

Coût de cette option.

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

Exemple

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

FulfillmentOptionInfo

Définit les informations liées à FulfillmentInfo.

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

Propriété Type Description
Vous devez indiquer exactement l'un des groupes de propriétés suivants.
delivery Groupe 1 DeliveryInfo

S'il est présent, indique l'ordre de livraison.

pickup Groupe 2 PickupInfo

Si cet attribut est présent, il indique une commande à retirer.

Image

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

Propriété Type Description
sourceUrl String

Obligatoire.

URL de l'image. L'image doit mesurer au minimum 72 x 72 pixels. Pour un résultat optimal, utilisez une image d'au moins 216 x 216 pixels. La taille de l'image doit être inférieure à 6 Mo et à 64 mégapixels.

LineItem

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

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

Propriété Type Description
id String

Obligatoire si type = "REGULAR".

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

name String

Obligatoire.

Nom de l'élément de campagne. Cette chaîne est visible par l'utilisateur. Elle doit, si possible, utiliser une majuscule en début de phrase (par exemple, "Frais de livraison", "Frais de service" ou "Taxes"). Ce champ est tronqué à 100 caractères pour les utilisateurs.

type LineItemType

Obligatoire.

quantity Entier

Obligatoire si type = "REGULAR".

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

description String

Description de l'article.

price Price

Obligatoire.

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

subLines Liste<SublineNote>

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

Ne doit pas contenir plus de 1 élément.

offerId String

Obligatoire si type = "REGULAR".

Identifiant de l'offre de l'élément MenuItem pour l'article. Non applicable à ProposedOrder.otherItems.

extension FoodItemExtension

Définit les modules complémentaires des aliments.

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

Exemple 1

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

Exemple 2

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

LineItemType

Le type LineItemType a les valeurs possibles suivantes:

  • REGULAR: élément de campagne de type "Produit". Applicable à Cart.lineItems.
  • TAX: ligne "Taxes". Applicable à ProposedOrder.otherItems.
  • DISCOUNT: ligne de remise. Notez que le prix doit être négatif. Applicable à ProposedOrder.otherItems.
  • GRATUITY: élément de campagne de type sans frais. Généralement réservé au champ "SubmitOrderRequestMessage" pour un conseil sélectionné par l'utilisateur. Applicable à ProposedOrder.otherItems.
  • DELIVERY: élément de campagne de diffusion. Applicable à ProposedOrder.otherItems.
  • SUBTOTAL: ligne de sous-total. Applicable à ProposedOrder.otherItems.
  • FEE: élément de campagne supplémentaire non couvert par les autres types. Applicable à ProposedOrder.otherItems.

Emplacement

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

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

Propriété Type Description
coordinates Coordinates
formattedAddress String

Afficher l'adresse du lieu.

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

postalAddress PostalAddress
zipCode String

Exemple : 90210

city String

Nom de la ville.

Exemple : Los Angeles

notes String

Remarques sur l'emplacement, telles que les codes d'entrée. Il ne doit pas comporter plus de 500 caractères.

Exemple : Gate code is #111

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

Exemple

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

Marchand

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

Propriété Type Description
id String

Identifiant du marchand. Si une valeur est spécifiée, il correspond à l'identifiant Restaurant.@id dans le flux "Restaurants".

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

name String

Obligatoire.

Nom du marchand visible par l'utilisateur.

Exemple : Falafel Bite

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

Exemple

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

Monnaie

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

Propriété Type Description
currencyCode String

Obligatoire.

Code de devise à trois lettres, au format ISO 4217.

Exemple : USD

units String

Unités entières du montant. Par exemple, si le code currencyCode est "USD", l'unité "1" correspond à un dollar américain.

Exemple : 36

nanos Entier

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

Exemple : 730000000

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

Exemple 1

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

Exemple 2

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

Commande

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

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

Propriété Type Description
finalOrder ProposedOrder

Obligatoire.

Commande proposée à l'origine de la commande.

googleOrderId String

Obligatoire.

ID de commande attribué par Google. Cet identifiant doit être stable pendant tout le cycle de vie de la commande. L'utilisateur final ne peut pas voir cet ID.

orderDate Horodatage ISO

Obligatoire.

Date et heure de création de la commande.

paymentInfo PaymentInfo

Obligatoire.

Informations de paiement correspondant au paiement de cette commande.

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

Exemple

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

OrderUpdate

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

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

Propriété Type Description
actionOrderId String

Obligatoire.

Identifiant unique de la commande dans le système de l'intégrateur, qui permet d'identifier la commande pour laquelle la mise à jour est envoyée. Si vous ne fournissez pas reçu.user_visible_order_id au moins une fois dans OrderUpdate pour une commande "CREATED", cet ID correspond à l'ID visible par l'utilisateur saisi, tel qu'il apparaît sur la fiche de commande Google.

orderState OrderState

Obligatoire.

Nouvel état de la commande.

lineItemUpdates Map<String, LineItemUpdate>
updateTime Horodatage ISO

Obligatoire.

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

orderManagementActions Liste<OrderManagementAction>

Les actions post-commande, comme contacter l'assistance et afficher les détails d'une commande

Doit contenir entre 1 article et 6 articles.

rejectionInfo RejectionInfo

Obligatoire si orderState.state = "REJECTED".

cancellationInfo CancellationInfo

Obligatoire si orderState.state = "CANCELLED".

inTransitInfo InTransitInfo

Ce champ est obsolète.

fulfillmentInfo FulfillmentInfo

Ce champ est obsolète.

receipt Receipt

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

Indiquez l'ID de commande visible par l'utilisateur sur un reçu.

totalPrice Price

Prix total de la commande.

infoExtension FoodOrderUpdateExtension

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

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

Exemple

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

PickupInfo

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

Propriété Type Description
pickupTimeIso8601 String

Heure de retrait estimée, au format d'horodatage ISO 8601: "{année}-{mois}-{jour}T{heure}:{min}:{s}[.{frac_sec}]Z" ou au format de durée: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Par exemple, "PT90M" représente une durée de 90 minutes. La valeur par défaut "PT0M" indique que l'heure de retrait préférée est le plus tôt possible. Référence: https://fr.wikipedia.org/wiki/ISO_8601#Combine_date_and_time_Representations. Utilisez cette option pour mettre à jour l'heure de retrait estimée lors de la réponse au règlement.

Exemple : PT90M

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

Exemple

{
  "pickupTimeIso8601": "PT90M"
}

PostalAddress

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

Propriété Type Description
regionCode String

Obligatoire.

Code pays à deux lettres.

Exemple : US

postalCode String

Code postal.

Exemple : 94043

administrativeArea String

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

Exemple : CA

locality String

Ville de cet emplacement. Dans les régions du monde où les localités ne sont pas bien définies ou ne correspondent pas à cette structure, n'indiquez pas de localité et utilisez plutôt le champ addressLines.

Exemple : Mountain View

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 : [ "1350 Charleston Road" ]

recipients List<String>

Liste des destinataires d'une commande. Ce champ n'est disponible que dans billingAddress.

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

Exemple

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

Prix

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

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

Obligatoire.

Code promotionnel.

amount Money

Obligatoire.

Promotion

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

Propriété Type Description
coupon String

Obligatoire.

Code promotionnel.

ProposedOrder

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

Propriété Type Description
id String

ID facultatif pour la commande proposée.

cart Cart

Obligatoire.

Éléments de l'utilisateur.

otherItems Liste<LineItem>

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

Ne doit pas contenir plus de 10 articles.

image Image

Image associée à la commande proposée.

totalPrice Price

Obligatoire.

Prix total de la commande proposée.

extension FoodOrderExtension

Obligatoire.

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

disclaimers Liste<Disclaimer>

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

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

Exemple

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

SublineNote

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

Propriété Type Description
note String

Obligatoire.

Code temporel

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

TransactionDecisionValue

Contient le Order.

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

Propriété Type Description
order Order

Obligatoire.

Commande à passer avec les détails du paiement.

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

Exemple

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

Demande de traitement

AppRequest

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

Propriété Type Description
isInSandbox Booléen

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

conversation Conversation
inputs Liste<Input>

Obligatoire.

Contient les arguments attendus pour régler un panier.

Doit contenir exactement 1 article.

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

Exemple 1

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

Exemple 2

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

CheckoutRequestMessage

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

SubmitOrderRequestMessage

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

Conversation

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

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

Propriété Type Description
conversationId String

Obligatoire.

ID unique de la conversation.

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

Exemple

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

Entrée

Arguments attendus pour procéder au règlement d'un panier.

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

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

Obligatoire.

Défini sur "actions.foodordering.intent.CHECKOUT" pour le message de demande de règlement OU "actions.intent.TRANSACTION_DECISION" pour le message de demande d'envoi de commande.

arguments Liste<Argument>

Obligatoire.

Contient le panier à régler ou la commande à passer.

Doit contenir exactement 1 article.

Argument

Contient des détails sur les aliments que l'utilisateur souhaite acheter. Pour le règlement, seule une extension est applicable. Pour l'envoi de la commande, seule transactionDecisionValue est applicable.

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

Propriété Type Description
Vous devez indiquer exactement l'un des groupes de propriétés suivants.
extension Groupe 1 Cart

Détaille les aliments que l'utilisateur souhaite acheter.

transactionDecisionValue Groupe 2 TransactionDecisionValue

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

Réponse de traitement

AppResponse

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

Propriété Type Description
expectUserResponse Const.

Défini sur "false".

Valeur : False

finalResponse FinalResponse

Obligatoire.

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

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

Exemple 1

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

Exemple 2

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

Exemple 3

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

Exemple 4

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

CheckoutResponseMessage

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

SubmitOrderResponseMessage

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

FinalResponse

Votre réponse au règlement du panier ou SubmitOrderRequestMessage.

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

Propriété Type Description
richResponse RichResponse

Obligatoire.

Contient votre réponse au CheckoutRequestMessage ou au SubmitOrderRequestMessage.

CheckoutResponse

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

Propriété Type Description
proposedOrder ProposedOrder

Obligatoire.

Proposition de commande à utiliser pour la transaction.

paymentOptions PaymentOptions

Obligatoire.

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

additionalPaymentOptions Liste<PaymentOptions>

Autres options de paiement disponibles pour l'utilisateur.

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

Exemple

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

Article

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

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

Propriété Type Description
structuredResponse StructuredResponse

Obligatoire.

RichResponse

Contient votre réponse au règlement d'un panier.

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

Propriété Type Description
items Liste<Item>

Obligatoire.

Doit contenir exactement 1 article.

StructuredResponse

Pour CheckoutResponseMessage, il peut s'agir de l'un des éléments suivants: CheckoutResponse indique que le paiement a réussi. OR FoodErrorExtension: indique un échec lors du règlement. La réponse peut inclure une commande ProposedOrder et PaymentOptions corrigées ou un message d'erreur sans PaymentOptions. Pour SubmitOrderResponseMessage, seule orderUpdate est applicable.

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

Propriété Type Description
Vous devez indiquer exactement l'un des groupes de propriétés suivants.
checkoutResponse Groupe 1 CheckoutResponse

Articles achetés avec les taxes et les remises

error Groupe 2 FoodErrorExtension

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

orderUpdate Groupe 3 OrderUpdate

Mises à jour asynchrones des commandes

Cette section décrit les principaux types qui composent les requêtes et les réponses d'une interaction typique d'une commande de repas avec une action intégrée.

AsyncOrderUpdateRequestMessage

Notifie l'utilisateur des modifications après l'envoi et la confirmation d'une commande. Par exemple, vous pouvez informer l'utilisateur que la commande est en cours d'acheminement ou si le prix a changé. Plus en savoir plus, consultez la page

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

Propriété Type Description
isInSandbox Booléen

Indique que la commande pour laquelle cette mise à jour a été envoyée est un paiement de bac à sable.

customPushMessage CustomPushMessage

Obligatoire.

Contient la valeur OrderUpdate de la requête.

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

Exemple

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

AsyncOrderUpdateResponseMessage

Une fois que vous avez envoyé AsyncOrderUpdateRequestMessage, Google répond avec l'état HTTP 200 et le corps vide. En cas d'échec de la mise à jour, Google répond en indiquant le motif de l'échec.

Types de mises à jour des commandes

Bouton

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

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

Propriété Type Description
title String

Obligatoire.

Libellé d'affichage. Utilisez une majuscule en début de phrase ne dépassant pas 30 caractères pour garantir un rendu correct.

Exemple : Contact us

openUrlAction OpenUrlAction

Obligatoire.

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

Exemple

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

CancellationInfo

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

Propriété Type Description
reason String

Obligatoire.

Motif du refus à afficher sous forme de texte lorsque OrderState.state a la valeur "CANCELLED".

Exemple : Restaurant closed

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

Exemple

{
  "reason": "Insufficient inventory"
}

FoodOrderUpdateExtension

Ce type fournit à l'utilisateur une estimation de l'intervalle entre la livraison ou le retrait de la commande. Envoyez cette extension dans un OrderUpdate lorsque les informations sont disponibles ou ont été modifiées depuis leur dernier envoi.

Fournissez une estimation prudente de l'intervalle de traitement afin de répondre de manière cohérente aux attentes des utilisateurs. Par exemple, si la livraison estimée de la commande est prévue aujourd'hui à 13h00, envoyez un intervalle estimé cohérent avec les variations en fonction des conditions de circulation (par exemple, aujourd'hui de 12h45 à 13h15).

Une durée ou un horodatage ISO 8601 est interprété comme correspondant à l'intervalle entre la updateTime de OrderUpdate (en substance, "maintenant") et la updateTime plus duration. N'utilisez ce format que si "maintenant" correspond à une attente raisonnable.

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

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

Propriété Type Description
@type Const.

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

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

estimatedFulfillmentTimeIso8601 String

L'heure estimée à laquelle la commande sera livrée ou prête à être retirée. La chaîne doit être au format ISO 8601 et doit correspondre à un intervalle plutôt qu'à une heure fixe. Les conventions acceptées sont les suivantes: Intervalles, Durées et Dates/Heures. Ce champ peut être envoyé dans SubmitOrderResponseMessage ou AsyncOrderUpdateRequestMessage lorsque les informations deviennent disponibles ou qu'il y a un changement, par exemple des arrivées anticipées ou retardées.

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

foodOrderErrors Liste<FoodOrderError>

Décrit les erreurs qui se sont produites après la commande. Une erreur recommandée par panier ou par article. Utilisez FoodOrderUpdateExtension.FoodOrderErrors pour toutes les erreurs non couvertes par RejetionInfo.

Ne doit pas contenir moins de 1 élément.

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

Exemple 1

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

Exemple 2

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

FulfillmentInfo

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

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

Utilisez estiméFulfillmentTimeIso8601 dans le message FoodOrderingUpdateExtension

pickupTime Groupe 2 Horodatage ISO

Utilisez estiméFulfillmentTimeIso8601 dans le message FoodOrderingUpdateExtension

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

Exemple 1

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

Exemple 2

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

InTransitInfo

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

Propriété Type Description
updatedTime Horodatage ISO

Utilisez estiméFulfillmentTimeIso8601 dans le message FoodOrderingUpdateExtension

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

Exemple

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

LineItemUpdate

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

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

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

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

Exemple

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

OpenUrlAction

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

Propriété Type Description
url String

Obligatoire.

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

Exemple : https://www.google.com

OrderManagementAction

La gestion des commandes permet aux utilisateurs de bénéficier d'une assistance après commande. Elle doit être envoyée dans chaque OrderUpdate de l'AppResponse d'envoi de la commande, ainsi que dans chaque AsyncOrderUpdateRequestMessage action de gestion des commandes envoyée pour une commande spécifique, qui peut varier en fonction de l'état.

Par exemple, dans l'état "CREATED", CUSTOMER_SERVICE peut faire référence au numéro de téléphone de votre service client. Ensuite, à l'état "CONFIRMED", CUSTOMER_SERVICE peut utiliser le numéro de téléphone du restaurant s'il devient le meilleur point de contact pour le client. De même, une fois que la commande est à l'état "FULFILLED", CUSTOMER_SERVICE peut faire référence à vos adresses e-mail d'assistance.

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

Propriété Type Description
type OrderManagementActionType

Obligatoire.

button Button

Obligatoire.

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

Exemple 1

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

Exemple 2

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

OrderManagementActionType

Définit les types associés à OrderManagementAction.

Le type OrderManagementActionType a les valeurs possibles suivantes:

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

OrderState

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

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

Propriété Type Description
state OrderStateEnum

Obligatoire.

label String

Obligatoire.

Chaîne d'affichage visible par l'utilisateur pour l'état. Utilisez une majuscule en début de phrase.

Exemple : Your order has been received

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

Exemple

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

OrderStateEnum

Définit les types associés à OrderState.

Le type OrderStateEnum a les valeurs possibles suivantes:

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

Reçu

Envoyez ce type dans une commande AppResponse, où OrderState est "CONFIRMED", "FULFILLED" ou "IN_TRANSIT". Envoyez une confirmation au moment où le userVisibleOrderId devient disponible. Vous n'avez pas besoin d'envoyer le reçu en continu dans les mises à jour ultérieures.

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

Propriété Type Description
userVisibleOrderId String

Obligatoire.

Obligatoire si la commande est "CONFIRMED", "IN_TRANSIT" ou "FULFILLED". Ce champ correspond à l'identifiant unique de cette commande (généralement celui du restaurant) qui figure à la fois sur le reçu de l'intégrateur et sur la fiche de commande Google. L'utilisateur doit pouvoir utiliser cet ID pour référencer sa commande de service client auprès du fournisseur et de l'intégrateur. Cet ID ne doit être fourni qu'une seule fois dans une mise à jour OrderUpdate donnée. Tant qu'il n'est pas fourni, actionOrderId correspond à userVisibleOrderId. Par exemple, il est possible que vous n'ayez pas de valeur userVisibleOrderId tant que la commande n'a pas été confirmée par le restaurant. Après confirmation, vous devez envoyer un AsyncOrderUpdateRequestMessage avec un OrderUpdate et un Receipt.

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

Exemple

{
  "userVisibleOrderId": "userVisibleId1234"
}

RejectionInfo

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

Propriété Type Description
type RejectionType

Obligatoire.

reason String

Motif du refus utilisé pour la journalisation interne. Ce champ n'est pas visible par les utilisateurs.

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

Exemple

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

RejectionType

Le type RejectionType a les valeurs possibles suivantes:

  • INELIGIBLE: l'utilisateur n'est pas éligible en raison de problèmes liés au règlement ou aux risques.
  • PAYMENT_DECLINED: un problème est survenu lors du traitement des paiements.
  • UNAVAILABLE_SLOT: la commande ne peut pas être traitée à l'avance à l'heure indiquée par DeliveryInfo ou PickupInfo.
  • PROMO_NOT_APPLICABLE: il y a un problème avec la promotion.
  • UNKNOWN: toute autre raison.

Types de paiements

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

ActionProvidedPaymentOptions

Conditions requises pour un mode de paiement associé à une action.

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

Propriété Type Description
paymentType PaymentType

Obligatoire.

displayName String

Obligatoire.

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

Exemple : Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

Données supplémentaires pour le type de paiement "ON_FULFILLMENT". Par exemple, vous pouvez utiliser ce champ pour indiquer si le traitement des commandes en espèces ou par carte est accepté.

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

Exemple

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

AllowedAuthMethods

Le type AllowedAuthMethods a les valeurs possibles suivantes:

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

AllowedCardNetworks

Le type AllowedCardNetworks a les valeurs possibles suivantes:

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

BillingAddressParameters

Cet objet vous permet de définir des champs supplémentaires à renvoyer pour une adresse de facturation demandée.

Le tableau suivant répertorie les propriétés pour le type BillingAddressParameters:

Propriété Type Description
format String

Format d'adresse de facturation requis pour terminer la transaction. MIN: nom, code pays et code postal. COMPLET: nom, adresse postale, localité, région, code pays et code postal.

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

Exemple 1

{
  "format": "MIN"
}

Exemple 2

{
  "format": "FULL"
}

CardParameters

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

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

Propriété Type Description
allowedAuthMethods List<Const>

Obligatoire.

Champs pris en charge pour authentifier une transaction par carte.

Ne doit pas contenir moins de 1 élément.

allowedCardNetworks Liste<AllowedCardNetworks>

Obligatoire.

Un ou plusieurs réseaux de cartes compatibles avec l'API Google Pay

Ne doit pas contenir moins de 1 élément.

billingAddressRequired Booléen

Définissez cette valeur sur "true" si vous avez besoin d'une adresse de facturation. Ne demandez une adresse de facturation que si elle est nécessaire au traitement de la transaction. Les demandes de données supplémentaires peuvent améliorer la fluidité du processus de règlement et entraîner une diminution des taux de conversion.

billingAddressParameters BillingAddressParameters

Champs attendus affichés si billingAddressRequired est défini sur "true".

cvcRequired Booléen

Définissez cette valeur sur "true" si vous utilisez TimesofMoney et sur "false" pour toutes les autres sociétés de traitement des paiements.

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

Exemple 1

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

Exemple 2

{
  "allowedAuthMethods": [
    "PAN_ONLY"
  ],
  "allowedCardNetworks": [
    "AMEX",
    "DISCOVER"
  ],
  "billingAddressRequired": true,
  "billingAddressParameters": {
    "format": "MIN"
  },
  "cvcRequired": false
}

GoogleProvidedPaymentInstrument

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

Propriété Type Description
instrumentToken String

Obligatoire.

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

billingAddress PostalAddress

Adresse de facturation pour le paiement.

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

Exemple

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

GoogleProvidedPaymentOptions

Conditions requises pour le mode de paiement fourni par Google.

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

Propriété Type Description
facilitationSpecification String

JSON PaymentDataRequest sous forme de chaîne. Utilisez cet objet pour configurer la compatibilité de votre site avec l'API Google Pay.

supportedCardNetworks Liste<SupportedCardNetworks>

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

Ce champ est obsolète.

prepaidCardDisallowed Booléen

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

Ce champ est obsolète.

billingAddressRequired Booléen

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

Ce champ est obsolète.

tokenizationParameters TokenizationParameters

Ce champ est obsolète.

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

Exemple 1

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

Exemple 2

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

Exemple 3

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

MerchantInfo

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

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

Propriété Type Description
merchantId String

Identifiant de marchand Google qui vous est attribué par Google Pay.

merchantName String

Obligatoire.

Nom du marchand encodé au format UTF-8. Le nom du marchand est affiché sur la feuille de paiement.

OnFulfillmentPaymentData

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

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

Propriété Type Description
supportedPaymentOptions Liste<PaymentOptionsEnums>

Liste des options de paiement disponibles pour l'utilisateur au moment du traitement de la commande.

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

Exemple

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

Paramètres

Définit les types associés à TokenizationParameters.

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

Propriété Type Description
gateway String

Obligatoire.

Exemple : braintree

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

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

Exemple 1

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

Exemple 2

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

PaymentDataRequest

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

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

Propriété Type Description
apiVersion Const.

Obligatoire.

Version majeure de l'API.

Valeur : 2

apiVersionMinor Const.

Obligatoire.

Version mineure de l'API.

Valeur : 0

merchantInfo MerchantInfo

Obligatoire.

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

allowedPaymentMethods Liste<PaymentMethod>

Obligatoire.

Indique la compatibilité avec un ou plusieurs modes de paiement acceptés par l'API Google Pay.

transactionInfo TransactionInfo

Obligatoire.

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

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

Exemple

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

PaymentInfo

Informations relatives au paiement d'une commande.

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

Propriété Type Description
displayName String

Obligatoire.

Nom du mode de paiement qui sera visible par l'utilisateur et qui apparaîtra sur le reçu.

paymentType PaymentType

Obligatoire.

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

Jeton pouvant être utilisé par l'action. Ne le spécifiez que si vous avez spécifié GoogleProvidedPaymentOptions comme option de paiement dans CheckoutResponseMessage.

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

Exemple 1

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

Exemple 2

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

PaymentMethod

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

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

Propriété Type Description
type Const.

Obligatoire.

Identifiant court du mode de paiement accepté. Seule la carte CARD est acceptée pour le moment.

Valeur : CARD

parameters CardParameters

Obligatoire.

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

tokenizationSpecification TokenizationSpecification

Obligatoire.

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

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

Exemple

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

PaymentOptions

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

Propriété Type Description
Vous devez indiquer exactement l'un des groupes de propriétés suivants.
googleProvidedOptions Groupe 1 GoogleProvidedPaymentOptions

Exclusivité mutuelle avec actionProvidedOptions. Utilisez-le pour payer en ligne via gPay.

actionProvidedOptions Groupe 2 ActionProvidedPaymentOptions

Exclusion mutuelle avec googleProvidedOptions. Utilisez cette option pour "espèces à la livraison" ou "paiement lors de la réalisation".

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

Exemple 1

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

Exemple 2

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

Exemple 3

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

PaymentOptionsEnums

Le type PaymentOptionsEnums a les valeurs possibles suivantes:

  • Cash
  • Card
  • UPI
  • Paytm

PaymentType

Le type PaymentType a les valeurs possibles suivantes:

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

SupportedCardNetworks

Définit les types associés à GoogleProvidedPaymentOptions.

Le type SupportedCardNetworks a les valeurs possibles suivantes:

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

TokenizationParameters

Définit les types liés à GoogleProvidedPaymentOptions.

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

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

Obligatoire.

Utilisez plutôt facilitationSpecification. Types de jetons acceptables.

parameters Parameters

Utilisez plutôt facilitationSpecification.

TokenizationSpecification

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

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

Propriété Type Description
type Const.

Obligatoire.

parameters Parameters

Obligatoire.

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

Exemple 1

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

Exemple 2

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

TransactionInfo

Cet objet décrit une transaction qui détermine la capacité d'un payeur à payer. Il permet d'afficher une boîte de dialogue d'autorisation de paiement.

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

Propriété Type Description
currencyCode String

Obligatoire.

Code de devise alphabétique ISO 4217.

transactionId String

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

totalPriceStatus Const.

Obligatoire.

Utilisez "ESTIMATED" comme valeur par défaut. Le prix total peut être ajusté en fonction des détails de la réponse, comme la taxe de vente collectée à partir d'une adresse de facturation.

Valeur : ESTIMATED

totalPrice String

Obligatoire.

Valeur monétaire totale de la transaction avec une précision décimale facultative de deux chiffres. La valeur de ce champ doit être identique à celle de cart.totalPrice.

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

Exemple

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