Schéma des actions d'exécution

Cette page décrit la charge utile du service Web de traitement (API Ordering de bout en bout) lorsque vous utilisez l'API d'action intégrée Ordering de bout en bout. Pour obtenir une version exploitable par un ordinateur de ces informations, vous pouvez télécharger le schéma JSON.

Types de base

Collection

Contient les détails de la commande et indique si la demande concerne le retrait ou de livraison. Le panier contient également des informations sur la livraison, le pourboire et la livraison. adresse e-mail. L'objet Cart est défini dans un fichier Checkout AppRequest.f Vous incluez une copie du panier dans votre Checkout AppResponse

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

Propriété Type Description
@type Const.

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

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

id String

ID facultatif du panier.

merchant Merchant

Marchand affilié à ce panier.

lineItems Liste<LineItem>

Obligatoire.

Liste des produits ou services que l'utilisateur commande.

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

promotions Liste<Promotion>

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

notes String

Notes sur les instructions de commande ou de livraison

extension FoodCartExtension

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

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

Exemple 1

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

Exemple 2

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

Contact

Spécifie les détails concernant la personne qui reçoit la commande. Elle n'est disponible que dans les pays suivants : AppResponse

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

Propriété Type Description
displayName String

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

Exemple : 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 recevant la commande.

Exemple : Lovefood

lastName String

Nom de famille de la personne recevant la commande.

Exemple : Ordering

phoneNumber String

Numéro de téléphone de la personne qui reçoit la commande, avec le code pays

Exemple : +16501234567

emailVerified Valeur booléenne

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

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

Exemple

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

CustomPushMessage

Contient le OrderUpdate pour la requête.

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

Propriété Type Description
orderUpdate OrderUpdate

Obligatoire.

Informations mises à jour pour la commande.

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

Exemple

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

DeliveryInfo

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

Propriété Type Description
deliveryTimeIso8601 String

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

Exemple : PT90M

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

Exemple

{
  "deliveryTimeIso8601": "PT90M"
}

Clause de non-responsabilité

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

Propriété Type Description
predefinedMessage PredefinedMessage

Obligatoire.

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

feeAmount Money

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

feeAmountRange FeeAmountRange

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

feePercent Number

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

feePercentRange FeePercentRange

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

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

Exemple 1

{
  "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER"
}

Exemple 2

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE"
}

Exemple 3

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

Exemple 4

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

Exemple 5

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

Exemple 6

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

Erreur

Le type Error peut avoir les valeurs suivantes:

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

FeeAmountRange

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

Propriété Type Description
minFeeAmount Money

Limite inférieure du montant des frais facturés...

maxFeeAmount Money

Limite supérieure du montant des frais facturés.

FeePercentRange

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

Propriété Type Description
minFeePercent Number

Limite inférieure du pourcentage de frais facturé.

maxFeePercent Number

Limite supérieure du pourcentage de frais facturé.

FoodCartExtension

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

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

Propriété Type Description
@type Const.

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

Valeur : 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.

fulfillmentPreference FulfillmentOption

Obligatoire.

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

location Location

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

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

Exemple 1

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

Exemple 2

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

FoodErrorExtension

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

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

Propriété Type Description
@type Const.

Obligatoire.

Type de cette extension.

Valeur : 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 lorsque 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 ProposedOrder avec des corrections. Renvoyez cet objet s'il existe des erreurs récupérables dans l'élément ProposedOrder d'origine. Par exemple, la modification du prix d'un ou plusieurs articles dans le panier constitue une erreur récupérable. Les erreurs récupérables associées à un objet ProposedOrder valide passent à l'étape de confirmation, au lieu de demander à l'utilisateur de vérifier son panier.

paymentOptions PaymentOptions

Obligatoire lorsque 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 montre un élément FoodErrorExtension:

Exemple

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

FoodItemExtension

Définit les modules complémentaires des aliments.

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

Propriété Type Description
@type Const.

Obligatoire.

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

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

options Liste<FoodItemOption>

Il peut s'agir d'un élément ou d'un groupe de modules complémentaires contenant un ensemble de modules complémentaires.

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

Exemple

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

FoodItemOption

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

Propriété Type Description
id String

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

Exemple : 39231093

offerId String

Identifiant d'offre de 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 sont des éléments, il s'agit du 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 montre un élément FoodItemOption:

Exemple 1

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

Exemple 2

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

FoodOrderError

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

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

Propriété Type Description
error Error

Obligatoire.

id String

Obligatoire lorsque 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'élément LineItem.id attribué par Google pour les éléments de menu ou FoodItemOption.id pour les modules complémentaires.

description String

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

updatedPrice Money

Obligatoire lorsque error = "PRICE_CHANGED"

Nouveau prix de l'article à l'origine de l'erreur. Ce champ n'est obligatoire que si l'erreur est "PRICE_CHANGED".

availableQuantity Entier

Obligatoire lorsque error = "INVALID", or "NOT_FOUND"

Nouvelle quantité disponible de l'article à l'origine de l'erreur. Ce champ n'est obligatoire que si l'erreur est "NON VALIDE". ou "NOT_FOUND". La valeur doit être zéro pour "NON VALIDE". et "NOT_FOUND".

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

Exemple 1

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

Exemple 2

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

FoodOrderExtension

Contient les informations de traitement de la commande.

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

Propriété Type Description
@type Const.

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

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

availableFulfillmentOptions Liste<FulfillmentOption>

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

optinForRemarketing Valeur booléenne

Demande de l'utilisateur d'activer vos canaux marketing. Par défaut, vous ne pouvez pas envoyer de contenus marketing sans le consentement de l'utilisateur. Si optinForRemarketing est défini sur "true", vous pouvez abonner l'utilisateur. Si optinForRemarketing est défini sur "false" ou absent, vous devez conserver l'état de l'abonnement dans votre système. Les utilisateurs ne peuvent pas se désabonner par le biais de Google, mais uniquement par le biais d'une fonction de désabonnement fournie sur vos canaux marketing. Cet indicateur n'est présent que dans SubmitOrderRequestMessage.

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

Exemple 1

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

Exemple 2

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

FulfillmentOption

Vous pouvez utiliser un objet FulfillmentOption des manières suivantes:
  • Dans Checkout AppRequest et Submit AppRequest, le Cart.extension.fulfillmentPreference: stocke les préférences de l'utilisateur (distribution ou retrait en magasin). Le prix est toujours égal à 0 lors de l'envoi de la demande de règlement.
  • Dans Checkout AppResponse, le paramètre ProposedOrder.extension.availableFulfillmentOptions: Définit une ou plusieurs options de diffusion (actuellement, une seule option est compatibles). Vous spécifiez l'option par défaut en tant que LineItem dans ProposedOrder.otherItems Les offerId de FulfillmentOption doit correspondre à l'identifiant LineItem spécifié dans ProposedOrder.otherItems.

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

Propriété Type Description
offerId String

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

fulfillmentInfo FulfillmentOptionInfo

Obligatoire.

expiresAt Code temporel ISO

Heure d'expiration de cette option de traitement.

price Money

Coût de cette option.

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

Exemple

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

FulfillmentOptionInfo

Définit les informations liées à FulfillmentInfo.

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

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

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

pickup Groupe 2 PickupInfo

S'il est présent, indique une commande à retirer.

Image

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

Propriété Type Description
sourceUrl String

Obligatoire.

URL de l'image. Elle doit faire au moins 72 x 72 pixels. Pour des résultats optimaux, utilisez une image d'au moins 216 x 216 pixels. La taille de l'image doit être inférieure à 6 Mo et à 64 mégapixels.

LineItem

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

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

Propriété Type Description
id String

Obligatoire lorsque 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 d'une commande ProposedOrder (ProposedOrder.otherItems[0].id), utilisé pour ajouter des éléments tels que les frais de livraison et les taxes, la valeur de l'identifiant est définie par le fournisseur. Par exemple, dans un chariot, il y a deux mêmes articles avec des instructions de préparation différentes (par exemple, deux pizzas de taille intermédiaire avec des garnitures différentes). Dans ce cas, les deux articles ont le même identifiant d'offre de base. Lorsque vous envoyez une demande de mise à jour de la commande pour indiquer qu'un article a été refusé, utilisez cet ID comme facteur d'ambiguïté. En d'autres termes, si l'une des pizzas est refusée en raison de l'absence d'une garniture particulière, l'identifiant aide Google à déterminer à quel article de l'ordre vous faites référence. Ce champ est obligatoire, sauf dans otherItems.

name String

Obligatoire.

Nom de l'élément de campagne. Il s'agit d'une chaîne visible par l'utilisateur qui doit, dans la mesure du possible, utiliser une majuscule en début de phrase (par exemple, "Frais de livraison", "Frais de service" ou "Taxe"). Ce champ est tronqué à 100 caractères pour les utilisateurs.

type LineItemType

Obligatoire.

quantity Entier

Obligatoire lorsque 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 de tous les modules complémentaires et multipliez-le par la quantité). Par exemple, si un article à 10 € contient une quantité de trois, le prix est de 30 €. Pour une pizza au prix de base de 5 $et une option supplémentaire de 1 $, le prix serait de 6 $. Pour deux pizzas (quantité = 2) au prix de base de 5 $et avec une offre complémentaire de 1 $chacune, le prix est de 12 $. Chaque élément de campagne doit être associé à un prix, même s'il est égal à "0". Si le type est "DISCOUNT", spécifiez la valeur en tant que valeur négative (par exemple, "-2").

subLines Liste<SublineNote>

Facultatif et valide uniquement si le type est "REGULAR". Une note spécifique à l'article de l'utilisateur peut être envoyée dans ce champ lors de la demande de paiement ou d'envoi de la commande. Assurez-vous que le marchand reçoit la note lorsqu'elle vous a été envoyée. Elle apparaîtra dans la requête en tant que subLines[0].note, qui est la seule valeur fournie dans ce champ lorsqu'il est présent dans une requête.

Ne doit pas contenir plus d'1 élément.

offerId String

Obligatoire lorsque type = "REGULAR"

ID d'offre de l'élément MenuItem pour l'élément. Non applicable à ProposedOrder.otherItems.

extension FoodItemExtension

Définit les modules complémentaires des aliments.

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

Exemple 1

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

Exemple 2

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

LineItemType

Le type LineItemType peut avoir les valeurs suivantes:

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

Lieu

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

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

Propriété Type Description
coordinates Coordinates
formattedAddress String

Adresse à afficher du lieu.

Exemple : 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 (codes d'entrée, par exemple). Il ne doit pas dépasser 500 caractères.

Exemple : Gate code is #111

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

Exemple

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

Marchand

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

Propriété Type Description
id String

ID du marchand. Si spécifié, correspond à l'identifiant Restaurant.@id du flux "Restaurant".

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

name String

Obligatoire.

Nom visible de l'utilisateur du marchand.

Exemple : Falafel Bite

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

Exemple

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

Valeur monétaire

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

Propriété Type Description
currencyCode String

Obligatoire.

Code de devise à trois lettres au format ISO 4217.

Exemple : USD

units String

Unités entières du montant. Par exemple, si le codecurrencyCode est "USD", alors "1" est d'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. Appliquez les règles suivantes: si les unités sont positives, les nano-unités doivent être positives ou nulles. Si les unités sont nulles, les nano-unités peuvent être positives, nulles ou négatives. Si les unités sont négatives, les nano-unités doivent être négatives ou nulles. Par exemple, -1,75 $ est représenté par les unités = -1 et nanos = -750 000 000.

Exemple : 730000000

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

Exemple 1

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

Exemple 2

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

Commande

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

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

Propriété Type Description
finalOrder ProposedOrder

Obligatoire.

Ordre proposé ayant généré l'ordre.

googleOrderId String

Obligatoire.

ID de commande attribué par Google. Cet identifiant doit rester identique pendant tout le cycle de vie d'une commande. Cet ID n'est pas visible par l'utilisateur final.

orderDate Code temporel ISO

Obligatoire.

Date et heure de création de la commande.

paymentInfo PaymentInfo

Obligatoire.

Informations de paiement correspondant au paiement de cette commande.

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

Exemple

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

OrderUpdate

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

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

Propriété Type Description
actionOrderId String

Obligatoire.

Identifiant unique de la commande dans le système de l'intégrateur, qui permet d'identifier la commande pour laquelle la mise à jour est envoyée. Si "Receipt.user_visible_order_id" n'est pas fourni au moins une fois dans "OrderUpdate" pour une valeur "CREATED" commande, cet ID sera l'ID visible par l'utilisateur saisi et affiché sur la fiche de commande Google.

orderState OrderState

Obligatoire.

Nouvel état de l'ordre.

lineItemUpdates Map<String, LineItemUpdate>
updateTime Code temporel ISO

Obligatoire.

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

orderManagementActions Liste<OrderManagementAction>

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

Doit contenir au moins 1 élément. six éléments maximum.

rejectionInfo RejectionInfo

Obligatoire lorsque orderState.state = "REJECTED"

cancellationInfo CancellationInfo

Obligatoire lorsque orderState.state = "CANCELLED"

inTransitInfo InTransitInfo

Ce champ est obsolète.

fulfillmentInfo FulfillmentInfo

Ce champ est obsolète.

receipt Receipt

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

Indiquez l'ID de commande (Order ID) visible par l'utilisateur dans un reçu.

totalPrice Price

Prix total de la commande.

infoExtension FoodOrderUpdateExtension

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

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

Exemple

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

PickupInfo

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

Propriété Type Description
pickupTimeIso8601 String

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

Exemple : PT90M

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

Exemple

{
  "pickupTimeIso8601": "PT90M"
}

PostalAddress

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

Propriété Type Description
regionCode String

Obligatoire.

Code pays à deux lettres.

Exemple : 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 Liste<Chaîne>

Une ou plusieurs lignes que vous pouvez utiliser pour spécifier l'adresse postale. Ce champ ne doit pas être modifié, car il peut contenir des localités peu claires.

Exemple : [ "1350 Charleston Road" ]

recipients Liste<Chaîne>

Liste des destinataires d'un ordre. Ce champ n'est disponible que dans billingAddress.

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

Exemple

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

Prix

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

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

Obligatoire.

Code promotionnel.

amount Money

Obligatoire.

Promotion

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

Propriété Type Description
coupon String

Obligatoire.

Code promotionnel.

ProposedOrder

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

Propriété Type Description
id String

ID facultatif de la commande proposée.

cart Cart

Obligatoire.

Éléments de l'utilisateur.

otherItems Liste<LineItem>

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

Ne doit pas contenir plus de 10 éléments.

image Image

Image associée à la commande proposée.

totalPrice Price

Obligatoire.

Prix total de la commande proposée.

extension FoodOrderExtension

Obligatoire.

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

disclaimers Liste<Disclaimer>

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

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

Exemple

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

SublineNote

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

Propriété Type Description
note String

Obligatoire.

Horodatage

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

TransactionDecisionValue

Contient le Order.

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

Propriété Type Description
order Order

Obligatoire.

Commande à passer avec les détails du paiement.

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

Exemple

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

Demande de traitement

AppRequest

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

Propriété Type Description
isInSandbox Valeur booléenne

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

conversation Conversation
inputs Liste<Input>

Obligatoire.

Contient les arguments attendus pour le règlement d'un panier.

Doit contenir exactement 1 élément.

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

Exemple 1

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

Exemple 2

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

CheckoutRequestMessage

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 Checkout et SubmitOrder actions simultanément si nécessaire.

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

Propriété Type Description
conversationId String

Obligatoire.

ID unique de la conversation.

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

Exemple

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

Entrée

Arguments attendus pour le règlement d'un panier.

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

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

Obligatoire.

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

arguments Liste<Argument>

Obligatoire.

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

Doit contenir exactement 1 élément.

Argument

Contient des détails sur les aliments que l'utilisateur souhaite vérifier. Pour le paiement, seule l'extension est applicable. Pour l'envoi de la commande, seule transactionDecisionValue est applicable

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

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

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

transactionDecisionValue Groupe 2 TransactionDecisionValue

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

Réponse de traitement

AppResponse

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

Propriété Type Description
expectUserResponse Const.

Défini sur "false".

Valeur : False

finalResponse FinalResponse

Obligatoire.

Contient votre réponse au paiement du panier.

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

Exemple 1

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

Exemple 2

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

Exemple 3

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

Exemple 4

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

CheckoutResponseMessage

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

SubmitOrderResponseMessage

Un SubmitOrderResponseMessage est un AppResponse avec un orderUpdate dans StructuredResponse.

FinalResponse

Votre réponse au paiement du panier ou à SubmitOrderRequestMessage.

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

Propriété Type Description
richResponse RichResponse

Obligatoire.

Contient votre réponse à CheckoutRequestMessage ou SubmitOrderRequestMessage.

CheckoutResponse

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

Propriété Type Description
proposedOrder ProposedOrder

Obligatoire.

Ordre proposé à utiliser pour la transaction.

paymentOptions PaymentOptions

Obligatoire.

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

additionalPaymentOptions Liste<PaymentOptions>

Autres options de paiement disponibles pour l'utilisateur.

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

Exemple

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

Élément

Contient votre réponse à un paiement du panier ou SubmitOrderRequestMessage.

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

Propriété Type Description
structuredResponse StructuredResponse

Obligatoire.

RichResponse

Contient votre réponse à un paiement du panier.

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

Propriété Type Description
items Liste<Item>

Obligatoire.

Doit contenir exactement 1 élément.

StructuredResponse

Pour "CheckoutResponseMessage", il peut s'agir de l'un des éléments suivants : "CheckoutResponse" indique que le règlement a bien été effectué. OR FoodErrorExtension: indique un échec lors du règlement. La réponse peut inclure des corrections ProposedOrder et PaymentOptions ou un message d'erreur sans PaymentOptions. Pour SubmitOrderResponseMessage, seul orderUpdate est applicable.

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

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

A validé les articles, plus les taxes et les remises.

error Groupe 2 FoodErrorExtension

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

orderUpdate Groupe 3 OrderUpdate

Mises à jour de commandes asynchrones

Cette section décrit les types de haut niveau qui composent les demandes et réponses d'une interaction typique d’action intégrée de commande de repas.

AsyncOrderUpdateRequestMessage

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

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

Propriété Type Description
isInSandbox Valeur booléenne

Indique que la commande pour laquelle cette mise à jour a été envoyée est un paiement en mode sandbox.

customPushMessage CustomPushMessage

Obligatoire.

Contient la mise à jour OrderUpdate de la requête.

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

Exemple

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

AsyncOrderUpdateResponseMessage

Lorsque vous envoyez un AsyncOrderUpdateRequestMessage, Google vous répond avec l'état HTTP 200 et un corps vide. Si la mise à jour échoue, Google vous explique pourquoi la mise à jour de la commande a échoué.

Types de mise à jour de commande

Bouton

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

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

Propriété Type Description
title String

Obligatoire.

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

Exemple : Contact us

openUrlAction OpenUrlAction

Obligatoire.

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

Exemple

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

CancellationInfo

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

Propriété Type Description
reason String

Obligatoire.

Motif du refus (texte à afficher) lorsque OrderState.state est défini sur "CANCELLED".

Exemple : Restaurant closed

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

Exemple

{
  "reason": "Insufficient inventory"
}

FoodOrderUpdateExtension

Ce type fournit à l'utilisateur une estimation de l'intervalle de la commande livrés ou prêts à être retirés. Envoyez cette extension dans une OrderUpdate chaque fois que les informations sont disponibles ou ont changé depuis leur dernier envoi.

Fournissez une estimation prudente de l'intervalle de traitement afin que l'utilisateur les attentes sont régulièrement satisfaites. Par exemple, si la commande est estimée à livré aujourd'hui à 13 h 00, vous devez lui envoyer un intervalle estimé correspondant aux variations dues aux conditions de circulation (aujourd'hui à 12h45, par exemple) à 13h15.

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

Un intervalle ISO 8601 correspond à l'intervalle compris entre le début et à la fin de l'intervalle.

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

Propriété Type Description
@type Const.

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

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

estimatedFulfillmentTimeIso8601 String

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

Exemple : 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 DenyionInfo.

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

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

Exemple 1

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

Exemple 2

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

FulfillmentInfo

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

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

Utilisation de l'heure estiméeFulfillmentTimeIso8601 dans le message FoodOrderingUpdateExtension

pickupTime Groupe 2 Code temporel ISO

Utilisation de l'heure estiméeFulfillmentTimeIso8601 dans le message FoodOrderingUpdateExtension

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

Exemple 1

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

Exemple 2

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

InTransitInfo

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

Propriété Type Description
updatedTime Code temporel ISO

Utilisation de l'heure estiméeFulfillmentTimeIso8601 dans le message FoodOrderingUpdateExtension

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

Exemple

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

LineItemUpdate

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

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

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

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

Exemple

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

OpenUrlAction

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

Propriété Type Description
url String

Obligatoire.

Action déclenchée par un clic ou une pression sur le bouton. La liste des préfixes applicables dépend de orderManagementActionType. "EMAIL" : le préfixe doit être "mailto". "CALL" : le préfixe doit être "tel". "CUSTOMER_SERVICE" : le préfixe doit être "mailto", "tel", "http" ou "https".

Exemple : https://www.google.com

OrderManagementAction

La gestion des commandes permet aux utilisateurs d'obtenir une assistance après commande et doit être envoyée chaque OrderUpdate dans la commande d'envoi AppResponse et chaque ligne suivante AsyncOrderUpdateRequestMessage Les actions de gestion des commandes envoyées pour une commande donnée peuvent varier en fonction de la de l'état.

Par exemple, dans la colonne "CREATED", état, CUSTOMER_SERVICE peut faire référence à votre le numéro de téléphone du service client. Ensuite, dans la partie "CONFIRMÉ", État, CUSTOMER_SERVICE vous pouvez utiliser le téléphone du restaurant si cela devient le meilleur moyen le contact du client. De même, une fois la commande passée à l'état "FULFILLED" l'état, CUSTOMER_SERVICE peut référencer vos adresses e-mail d'assistance.

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

Propriété Type Description
type OrderManagementActionType

Obligatoire.

button Button

Obligatoire.

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

Exemple 1

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

Exemple 2

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

OrderManagementActionType

Définit les types liés à OrderManagementAction.

Le type OrderManagementActionType peut avoir les valeurs suivantes:

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

OrderState

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

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

Propriété Type Description
state OrderStateEnum

Obligatoire.

label String

Obligatoire.

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

Exemple : Your order has been received

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

Exemple

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

OrderStateEnum

Définit les types liés à OrderState.

Le type OrderStateEnum peut avoir les valeurs suivantes:

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

Reçu

Envoyez ce type dans une commande d'envoi AppResponse. où OrderState correspond à "CONFIRMED", "FULFILLED" ou "IN_TRANSIT". Envoyer la confirmation à l'adresse l'heure à laquelle userVisibleOrderId devient disponible. Vous n'avez pas besoin de conserver l'envoi du reçu dans les mises à jour ultérieures.

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

Propriété Type Description
userVisibleOrderId String

Obligatoire.

Obligatoire si l'état de la commande est "CONFIRMED", "IN_TRANSIT" ou "FULFILLED". Ce champ correspond à l'identifiant unique de la commande, visible par l'utilisateur (généralement l'ID de commande du restaurant), affiché à la fois sur le reçu de l'intégrateur et sur la carte de commande Google. L'utilisateur doit pouvoir utiliser cet ID pour faire référence à sa commande auprès du fournisseur et de l'intégrateur. Vous ne devez fournir cet ID qu'une seule fois par commande OrderUpdate. Tant qu'il n'est pas fourni, actionOrderId correspond à userVisibleOrderId. Par exemple, vous ne pouvez pas avoir un userVisibleOrderId tant que la commande n'a pas été confirmée par le restaurant. Une fois la confirmation effectuée, vous devez envoyer un AsyncOrderUpdateRequestMessage avec un OrderUpdate et un Receipt.

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

Exemple

{
  "userVisibleOrderId": "userVisibleId1234"
}

RejectionInfo

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

Propriété Type Description
type RejectionType

Obligatoire.

reason String

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

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

Exemple

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

RejectionType

Le type RejectionType peut avoir les valeurs suivantes:

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

Types de paiements

Cette section décrit les types de paiements utilisés pour les commandes de repas. le traitement.

ActionProvidedPaymentOptions

Conditions requises pour un mode de paiement fourni par une action

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

Propriété Type Description
paymentType PaymentType

Obligatoire.

displayName String

Obligatoire.

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

Exemple : 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 les espèces ou les cartes sont acceptées pour le traitement des commandes.

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

Exemple

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

AllowedAuthMethods

Le type AllowedAuthMethods peut avoir les valeurs suivantes:

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

AllowedCardNetworks

Le type AllowedCardNetworks peut avoir les valeurs suivantes:

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

BillingAddressParameters

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

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

Propriété Type Description
format String

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

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

Exemple 1

{
  "format": "MIN"
}

Exemple 2

{
  "format": "FULL"
}

CardParameters

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

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

Propriété Type Description
allowedAuthMethods List<Const>

Obligatoire.

Champs pris en charge pour authentifier une transaction par carte.

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

allowedCardNetworks Liste<AllowedCardNetworks>

Obligatoire.

Un ou plusieurs réseaux de cartes que vous prenez en charge et qui sont également compatibles avec l'API Google Pay

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

billingAddressRequired Valeur booléenne

Défini sur "true" si vous avez besoin d'une adresse de facturation. Ne demandez une adresse de facturation que si elle est nécessaire au traitement de la transaction. Les demandes de données supplémentaires peuvent rendre le processus de paiement plus fluide et entraîner une diminution des taux de conversion.

billingAddressParameters BillingAddressParameters

Les champs attendus sont renvoyés si billingAddressRequired est défini sur "true".

cvcRequired Valeur booléenne

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

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

Exemple 1

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

Exemple 2

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

GoogleProvidedPaymentInstrument

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

Propriété Type Description
instrumentToken String

Obligatoire.

Chaîne encodée en base64 contenant le jeton de paiement permettant de facturer l'utilisateur auprès d'une société de traitement des paiements Google Pay participante, conformément aux options de paiement Google fournies précédemment.

billingAddress PostalAddress

Adresse de facturation pour le paiement.

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

Exemple

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

GoogleProvidedPaymentOptions

Conditions requises pour le mode de paiement fourni par Google

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

Propriété Type Description
facilitationSpecification String

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

supportedCardNetworks Liste<SupportedCardNetworks>

Utilisez plutôt facilitationSpecification. Type de réseaux de cartes pris en charge par l'agent.

Ce champ est obsolète.

prepaidCardDisallowed Valeur booléenne

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

Ce champ est obsolète.

billingAddressRequired Valeur booléenne

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

Ce champ est obsolète.

tokenizationParameters TokenizationParameters

Ce champ est obsolète.

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

Exemple 1

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

Exemple 2

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

Exemple 3

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

MerchantInfo

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

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

Propriété Type Description
merchantId String

Identifiant de marchand Google qui vous a été attribué par Google Pay.

merchantName String

Obligatoire.

Nom du marchand encodé au format UTF-8. Le nom du marchand apparaît dans la feuille de paiement.

OnFulfillmentPaymentData

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

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

Propriété Type Description
supportedPaymentOptions Liste<PaymentOptionsEnums>

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

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

Exemple

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

Paramètres

Définit les types liés à TokenizationParameters.

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

Propriété Type Description
gateway String

Obligatoire.

Exemple : braintree

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

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

Exemple 1

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

Exemple 2

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

PaymentDataRequest

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

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

Propriété Type Description
apiVersion Const.

Obligatoire.

Version majeure de l'API.

Valeur : 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 prise en charge d'un ou de plusieurs modes de paiement acceptés par l'API Google Pay.

transactionInfo TransactionInfo

Obligatoire.

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

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

Exemple

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

PaymentInfo

Informations relatives au paiement d'une commande.

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

Propriété Type Description
displayName String

Obligatoire.

Nom du mode de paiement visible par l'utilisateur, à afficher sur le reçu.

paymentType PaymentType

Obligatoire.

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

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

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

Exemple 1

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

Exemple 2

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

PaymentMethod

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

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

Propriété Type Description
type Const.

Obligatoire.

Identifiant court du mode de paiement accepté. Seule la carte CARD est actuellement acceptée.

Valeur : CARD

parameters CardParameters

Obligatoire.

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

tokenizationSpecification TokenizationSpecification

Obligatoire.

Configurez un compte ou un fournisseur de services de déchiffrement pour recevoir les informations de paiement. Cette propriété est requise pour le mode de paiement CARD.

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

Exemple

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

PaymentOptions

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

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

Exclusivité mutuelle avec actionProvidedOptions. Utilisez cette option pour les paiements en ligne via gPay.

actionProvidedOptions Groupe 2 ActionProvidedPaymentOptions

Mutuellement exclusif avec googleProvidedOptions. Utilisez cette option pour le paiement à la livraison ou "paiement à la commande".

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

Exemple 1

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

Exemple 2

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

Exemple 3

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

PaymentOptionsEnums

Le type PaymentOptionsEnums peut avoir les valeurs suivantes:

  • Cash
  • Card
  • UPI
  • Paytm

PaymentType

Le type PaymentType peut avoir les valeurs suivantes:

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

SupportedCardNetworks

Définit les types liés à GoogleProvidedPaymentOptions.

Le type SupportedCardNetworks peut avoir les valeurs suivantes:

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

TokenizationParameters

Définit les types liés à GoogleProvidedPaymentOptions.

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

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

Obligatoire.

Utilisez plutôt facilitationSpecification. Type de jeton accepté.

parameters Parameters

Utilisez plutôt facilitationSpecification.

TokenizationSpecification

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

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

Propriété Type Description
type Const.

Obligatoire.

parameters Parameters

Obligatoire.

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

Exemple 1

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

Exemple 2

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

TransactionInfo

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

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

Propriété Type Description
currencyCode String

Obligatoire.

Code de devise alphabétique ISO 4217.

transactionId String

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

totalPriceStatus Const.

Obligatoire.

Utiliser "ESTIMATED" par défaut. Le prix total peut être ajusté en fonction des détails de la réponse, tels que la taxe de vente perçue en fonction d'une adresse de facturation.

Valeur : ESTIMATED

totalPrice String

Obligatoire.

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

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

Exemple

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