Schéma des actions de traitement

Cette page décrit la charge utile du service Web de traitement (API Ordering End-to-End) lorsque vous utilisez l'API Ordering End-to-End Built-in Action. Pour obtenir une version lisible par machine de ces informations, vous pouvez télécharger le schéma JSON.

Types de base

Collection

Contient les détails de la commande, ainsi que si la demande concerne un retrait ou une livraison. Un panier contient également des informations de livraison, des cadeaux et l'adresse de livraison. L'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. Omettre ce champ si l'objet Cart parent fait partie de ProposedOrder.

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

id String

ID facultatif du panier.

merchant Merchant

Marchand associé à ce panier.

lineItems List<LineItem>

Obligatoire.

Liste des biens ou services que l'utilisateur commande.

Doit contenir au moins un élément.

promotions List<Promotion>

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

notes String

Remarques sur la commande ou les instructions de livraison.

extension FoodCartExtension

Définit des informations sur l'utilisateur, telles que ses préférences de traitement.

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

Exemple 1

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

Exemple 2

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

Contact

Spécifie les informations sur la personne qui reçoit la commande. Il n'est disponible qu'en AppResponse.

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

Propriété Type Description
displayName String

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

Exemple : Lovefood Ordering

email String

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

Exemple : ilovefood@example.com

firstName String

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

Exemple : Lovefood

lastName String

Nom de la personne qui reçoit 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 avec 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 de la requête.

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

Propriété Type Description
orderUpdate OrderUpdate

Obligatoire.

Informations mises à jour sur la commande.

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

Exemple

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

DeliveryInfo

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

Propriété Type Description
deliveryTimeIso8601 String

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

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

feeAmount Money

Le partenaire facturera au marchand un montant de N pour cette commande.

feeAmountRange FeeAmountRange

Le partenaire facturera au restaurant des frais de N à M € par commande.

feePercent Number

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

feePercentRange FeePercentRange

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

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

Exemple 1

{
  "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER"
}

Exemple 2

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE"
}

Exemple 3

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

Exemple 4

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

Exemple 5

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

Exemple 6

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

Erreur

Le type Error peut avoir les valeurs suivantes:

  • CLOSED: le restaurant est fermé au moment de la commande.
  • NO_CAPACITY: aucune capacité de service n'est disponible (par exemple, en cas d'indisponibilité temporaire en raison des heures de pointe).
  • NO_COURIER_AVAILABLE: Impossible de traiter la commande en raison du manque de personnel de livraison.
  • REQUIREMENTS_NOT_MET: les contraintes d'acceptation de la commande n'ont pas été respectées (par exemple, taille minimale du panier).
  • UNAVAILABLE_SLOT: la commande ne peut pas être traitée à l'heure de commande à l'avance spécifiée par DeliveryInfo ou PickupInfo.
  • OUT_OF_SERVICE_AREA: la commande ne peut pas être livrée à l'adresse de l'utilisateur.
  • PROMO_EXPIRED: impossible d'appliquer la promotion, car elle a expiré.
  • PROMO_NOT_APPLICABLE: code d'erreur générique permettant de détecter tous les cas d'échec de l'application du code promotionnel, si aucune des autres erreurs de code promotionnel ne s'applique.
  • PROMO_NOT_RECOGNIZED: le code promotionnel n'a pas été reconnu.
  • PROMO_ORDER_INELIGIBLE: le bon de réduction n'est pas valable pour la commande en cours.
  • PROMO_USER_INELIGIBLE: l'utilisateur actuel n'est pas éligible à ce bon de réduction.
  • AVAILABILITY_CHANGED: l'article n'est plus disponible ou il n'y en a pas assez pour répondre à la demande.
  • INCORRECT_PRICE: erreurs de prix dans les frais ou le total.
  • INVALID: un élément de ligne, une option de traitement ou une promotion contient des données non valides.
  • NOT_FOUND: un élément de ligne, une option de traitement ou une promotion ne sont pas trouvés.
  • PRICE_CHANGED: le prix d'un article a changé.

FeeAmountRange

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

Propriété Type Description
minFeeAmount Money

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

maxFeeAmount Money

Limite supérieure du montant des frais facturés

FeePercentRange

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

Propriété Type Description
minFeePercent Number

Limite inférieure du pourcentage de frais facturés.

maxFeePercent Number

Limite supérieure du pourcentage de frais facturés.

FoodCartExtension

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

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

Propriété Type Description
@type Const

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

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

contact Contact

Coordonnées de la personne qui recevra la commande. Ces informations incluent le nom, le numéro de téléphone et l'adresse e-mail de la personne.

fulfillmentPreference FulfillmentOption

Obligatoire.

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

location Location

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

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

Exemple 1

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

Exemple 2

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

FoodErrorExtension

Identifie une ou plusieurs erreurs survenues lors du traitement d'une requête. Le tableau suivant décrit les champs du 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 List<FoodOrderError>

Obligatoire.

Tableau d'objets FoodOrderError qui décrivent les erreurs qui se sont produites. Nous vous recommandons de n'indiquer qu'une seule erreur par panier ou par article.

Doit contenir au moins un élément.

correctedProposedOrder ProposedOrder

Obligatoire lorsque 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 corrections. Renvoyez cet objet en cas d'erreurs récupérables dans l'ordre proposé d'origine. Par exemple, une modification du prix d'un ou de plusieurs articles du panier est une erreur récupérable. Les erreurs récupérables avec une commande proposée valide passent à l'étape de confirmation, au lieu de demander à l'utilisateur de vérifier son panier.

paymentOptions PaymentOptions

Obligatoire lorsque 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 List<PaymentOptions>

Autres options de paiement disponibles pour l'utilisateur.

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

Exemple

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

FoodItemExtension

Définit les compléments pour les aliments.

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

Propriété Type Description
@type Const

Obligatoire.

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

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

options List<FoodItemOption>

Une option peut être un élément de module complémentaire ou un groupe de modules complémentaires contenant un ensemble de modules complémentaires.

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

Exemple

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

FoodItemOption

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

Propriété Type Description
id String

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

Exemple : 39231093

offerId String

ID de l'offre pour l'article.

Exemple : 912835081

name String

Nom de l'option.

Exemple : Honey Mustard

price Money
note String

Remarque concernant l'option.

quantity Number

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

Exemple : 3

subOptions List<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 informations 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'identifiant LineItem.id attribué par Google pour les éléments de menu ou de l'identifiant FoodItemOption.id pour les compléments.

description String

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

updatedPrice Money

Obligatoire lorsque error = "PRICE_CHANGED".

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

availableQuantity Entier

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

Nouvelle quantité disponible de l'article à l'origine de l'erreur. Cet élément n'est obligatoire que lorsque l'erreur est "INVALID" ou "NOT_FOUND". La valeur doit être nulle pour "INVALID" et "NOT_FOUND".

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

Exemple 1

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

Exemple 2

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

FoodOrderExtension

Contient des informations sur le traitement de la commande.

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

Propriété Type Description
@type Const

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

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

availableFulfillmentOptions List<FulfillmentOption>

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

optinForRemarketing Valeur booléenne

Demande de l'utilisateur d'activer vos canaux marketing Par défaut, vous ne pouvez pas envoyer de contenu marketing sans l'autorisation de l'utilisateur. Si optinForRemarketing est défini sur "true", vous pouvez abonner l'utilisateur. Si optinForRemarketing est défini sur "false" ou n'est pas présent, vous devez conserver l'état de l'abonnement dans votre système tel quel. Les utilisateurs ne peuvent pas se désabonner via Google, mais uniquement via une fonction de désabonnement fournie dans vos canaux marketing. Cette option n'est présente que dans SubmitOrderRequestMessage.

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

Exemple 1

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

Exemple 2

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

FulfillmentOption

Vous pouvez utiliser un objet FulfillmentOption de différentes manières :
  • Dans Checkout AppRequest et Submit AppRequest, Cart.extension.fulfillmentPreference: stocke la préférence de l'utilisateur (livraison ou retrait). Le prix est toujours égal à 0 lorsque la requête de paiement est envoyée.
  • Dans Checkout AppResponse, ProposedOrder.extension.availableFulfillmentOptions : définit une ou plusieurs options de diffusion (actuellement, une seule option est prise en charge). Vous spécifiez l'option par défaut en tant que LineItem dans ProposedOrder.otherItems. L'offerId de FulfillmentOption doit correspondre à l'ID de l'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 de cette option de traitement, le cas échéant.

fulfillmentInfo FulfillmentOptionInfo

Obligatoire.

expiresAt Code temporel ISO

Heure à laquelle cette option de traitement expire.

price Money

Coût de cette option.

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

Exemple

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

FulfillmentOptionInfo

Définit les informations associées à FulfillmentInfo.

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

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

Si présent, indique l'ordre de livraison.

pickup Groupe 2 PickupInfo

Si elle est présente, indique une commande de retrait.

Image

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

Propriété Type Description
sourceUrl String

Obligatoire.

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

LineItem

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

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

Propriété Type Description
id String

Obligatoire lorsque type = "REGULAR".

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

name String

Obligatoire.

Nom de l'élément de campagne. Il s'agit d'une chaîne visible par l'utilisateur. Elle doit être en majuscules lorsque cela est possible (par exemple, "Frais de livraison", "Frais de service", "Taxe"). Ce champ est limité à 100 caractères pour les utilisateurs.

type LineItemType

Obligatoire.

quantity Entier

Obligatoire lorsque type = "REGULAR".

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

description String

Description de l'article.

price Price

Obligatoire.

Prix de l'article ou des articles Cette valeur reflète le prix total de tous les biens ou services de cette ligne (en d'autres termes, ajoutez le coût des éventuels modules complémentaires et multipliez-le par la quantité). Par exemple, si un article à 10 $est vendu en trois exemplaires, le prix sera de 30 $. Pour une pizza dont le prix de base est de 5 $et un supplément de 1 $, le prix est de 6 $. Pour deux pizzas (quantité = 2) avec un prix de base de 5 $et un supplément de 1 $chacune, le prix est de 12 $. Chaque ligne de commande doit comporter un prix, même s'il est de "0". Lorsque le type est "DISCOUNT", spécifiez la valeur sous la forme d'un nombre négatif (par exemple, "-2").

subLines List<SublineNote>

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

Ne doit pas comporter plus d'un élément.

offerId String

Obligatoire lorsque type = "REGULAR".

ID de l'offre du MenuItem pour l'article. Non applicable à ProposedOrder.otherItems.

extension FoodItemExtension

Définit les compléments pour les aliments.

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

Exemple 1

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

Exemple 2

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

LineItemType

Le type LineItemType peut avoir les valeurs suivantes:

  • REGULAR: ligne de marchandises. Applicable à Cart.lineItems.
  • TAX: ligne de taxe. Applicable à ProposedOrder.otherItems.
  • DISCOUNT: ligne de remise. Notez que le prix doit être négatif. Applicable à ProposedOrder.otherItems.
  • GRATUITY: ligne de pourboire. Généralement réservé à SubmitOrderRequestMessage pour un pourboire sélectionné par l'utilisateur. Applicable à ProposedOrder.otherItems.
  • DELIVERY: élément de campagne de diffusion. Applicable à ProposedOrder.otherItems.
  • SUBTOTAL: ligne de sous-total. Applicable à ProposedOrder.otherItems.
  • FEE: élément de campagne supplémentaire qui ne correspond à aucun autre type. Applicable à ProposedOrder.otherItems.

Lieu

Spécifie une adresse pour la commande de repas. Le type Location est utilisé dans un Cart pour indiquer uniquement la destination d'une commande de livraison. La position finalisée est également présente dans TransactionDecisionValue si l'utilisateur passe la commande. Pour les commandes qui spécifient un retrait, aucun lieu n'est inclus (même pas un lieu vide).

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

Propriété Type Description
coordinates Coordinates
formattedAddress String

Afficher l'adresse du lieu

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

Informations sur l'emplacement, telles que les codes de portail 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 à Restaurant.@id dans le flux Restaurant.

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

name String

Obligatoire.

Nom visible par 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 currencyCode est "USD", une unité correspond à un dollar américain.

Exemple : 36

nanos Entier

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

Exemple : 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, les frais et les frais de livraison, 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é à l'origine de la commande.

googleOrderId String

Obligatoire.

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

orderDate Code temporel ISO

Obligatoire.

Date et heure de création de la commande.

paymentInfo PaymentInfo

Obligatoire.

Informations de paiement correspondant au paiement de cette commande.

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

Exemple

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

OrderUpdate

Le tableau suivant décrit les champs du type OrderUpdate, qui est inclus 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, utilisé pour identifier la commande pour laquelle la mise à jour est envoyée. Si receipt.user_visible_order_id n'est pas fourni au moins une fois dans OrderUpdate pour une commande "CRÉÉÉE", il s'agira de l'ID visible par l'utilisateur saisi et affiché dans la fiche de commande Google.

orderState OrderState

Obligatoire.

Nouvel état de la commande.

lineItemUpdates Map<String, LineItemUpdate>
updateTime Code temporel ISO

Obligatoire.

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

orderManagementActions List<OrderManagementAction>

Actions post-commande, comme contacter l'assistance et consulter les détails de la commande

Doit comporter au moins un élément et pas plus de six éléments.

rejectionInfo RejectionInfo

Obligatoire lorsque 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 visible par l'utilisateur sur le reçu.

totalPrice Price

Prix total de la commande.

infoExtension FoodOrderUpdateExtension

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

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

Exemple

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

PickupInfo

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

Propriété Type Description
pickupTimeIso8601 String

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

Exemple : 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 établissement. Dans les régions du monde où les localités ne sont pas bien définies ou ne s'intègrent pas bien dans cette structure, ne spécifiez pas de localité et utilisez plutôt le champ "addressLines".

Exemple : Mountain View

addressLines List<String>

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

Exemple : [ "1350 Charleston Road" ]

recipients List<String>

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

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

Exemple

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

Prix

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

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

Obligatoire.

Code du bon de réduction promotionnel.

amount Money

Obligatoire.

Promotion

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

Propriété Type Description
coupon String

Obligatoire.

Code du bon de réduction promotionnel.

ProposedOrder

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

Propriété Type Description
id String

ID facultatif de la commande proposée.

cart Cart

Obligatoire.

Articles de l'utilisateur

otherItems List<LineItem>

Éléments ajoutés par le fournisseur, tels que les frais de port, les autres frais et les taxes. Les autres éléments peuvent également contenir un pourboire et/ou une remise ajoutés par l'utilisateur.

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

image Image

Image associée à la commande proposée.

totalPrice Price

Obligatoire.

Prix total de la commande proposée.

extension FoodOrderExtension

Obligatoire.

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

disclaimers List<Disclaimer>

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

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

Exemple

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

SublineNote

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

Propriété Type Description
note String

Obligatoire.

Horodatage

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

TransactionDecisionValue

Contient Order.

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

Propriété Type Description
order Order

Obligatoire.

Commande à passer avec les informations de paiement.

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

Exemple

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

Demande de traitement

AppRequest

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

Propriété Type Description
isInSandbox Valeur booléenne

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

conversation Conversation
inputs List<Input>

Obligatoire.

Contient les arguments attendus pour payer un panier.

Doit contenir exactement un élément.

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

Exemple 1

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

Exemple 2

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

CheckoutRequestMessage

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 unique à une session donnée. Vous pouvez l'utiliser pour associer plusieurs actions Checkout et SubmitOrder si nécessaire.

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

Propriété Type Description
conversationId String

Obligatoire.

Identifiant unique de la conversation.

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

Exemple

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

Entrée

Arguments attendus pour payer un panier.

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

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

Obligatoire.

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

arguments List<Argument>

Obligatoire.

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

Doit contenir exactement un élément.

Argument

Contient des informations sur les plats que l'utilisateur souhaite payer. Pour le règlement, seule la prolongation est applicable. Pour l'envoi de la commande, seule la valeur transactionDecisionValue est applicable.

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

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

Détail des aliments que l'utilisateur souhaite payer.

transactionDecisionValue Groupe 2 TransactionDecisionValue

Inclut la commande à passer ainsi que les informations de paiement.

Réponse de traitement

AppResponse

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

Propriété Type Description
expectUserResponse Const

Défini sur "false".

Valeur : False

finalResponse FinalResponse

Obligatoire.

Inclut votre réponse à la page de paiement du panier.

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

Exemple 1

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

Exemple 2

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

Exemple 3

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

Exemple 4

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

CheckoutResponseMessage

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

SubmitOrderResponseMessage

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

FinalResponse

Votre réponse à la page de paiement du panier ou à SubmitOrderRequestMessage.

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

Propriété Type Description
richResponse RichResponse

Obligatoire.

Inclut votre réponse au message CheckoutRequestMessage ou SubmitOrderRequestMessage.

CheckoutResponse

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

Propriété Type Description
proposedOrder ProposedOrder

Obligatoire.

Ordre proposé à utiliser pour la transaction.

paymentOptions PaymentOptions

Obligatoire.

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

additionalPaymentOptions List<PaymentOptions>

Autres options de paiement disponibles pour l'utilisateur.

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

Exemple

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

Élément

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

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

Propriété Type Description
structuredResponse StructuredResponse

Obligatoire.

RichResponse

Inclut votre réponse à un paiement par panier.

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

Propriété Type Description
items List<Item>

Obligatoire.

Doit contenir exactement un élément.

StructuredResponse

Pour CheckoutResponseMessage, il peut s'agir de l'un des éléments suivants: CheckoutResponse Indique qu'un paiement a bien été effectué. OU FoodErrorExtension: indique un échec lors du règlement. La réponse peut inclure une proposition de commande et des options de paiement corrigées, ou un message d'erreur sans options de paiement. Pour SubmitOrderResponseMessage, seul orderUpdate est applicable.

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

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

Articles achetés, taxes et remises

error Groupe 2 FoodErrorExtension

Des erreurs ont été détectées dans les articles du panier. Selon la nature de l'erreur, cette propriété peut inclure une proposition de commande et des options de paiement corrigées, ou simplement un message d'erreur sans options de paiement.

orderUpdate Groupe 3 OrderUpdate

Notifications asynchrones sur les commandes

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

AsyncOrderUpdateRequestMessage

Informe l'utilisateur des modifications apportées une fois la commande envoyée et confirmée. Par exemple, vous pouvez informer l'utilisateur que la commande est en cours de livraison ou que le prix a changé. Pour en savoir plus, consultez

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 dans l'environnement bac à sable.

customPushMessage CustomPushMessage

Obligatoire.

Inclut l'ordre de mise à jour pour la requête.

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

Exemple

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

AsyncOrderUpdateResponseMessage

Une fois que vous avez envoyé un AsyncOrderUpdateRequestMessage, Google répond avec un état HTTP 200 et un corps vide. Si la mise à jour échoue, Google répond en indiquant pourquoi la mise à jour de la commande a échoué.

Types de mises à jour de commandes

Bouton

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

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

Propriété Type Description
title String

Obligatoire.

Libellé à afficher. Utilisez la casse de début de phrase avec 30 caractères maximum pour garantir un rendu correct.

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.

Raison du refus affichée lorsque OrderState.state est "CANCELLED".

Exemple : Restaurant closed

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

Exemple

{
  "reason": "Insufficient inventory"
}

FoodOrderUpdateExtension

Ce type fournit à l'utilisateur un intervalle estimé pour la livraison ou le retrait de la commande. Envoyez cette extension dans un OrderUpdate chaque fois que les informations sont disponibles ou ont changé depuis leur dernier envoi.

Fournissez une estimation prudente de l'intervalle de traitement afin que les attentes des utilisateurs soient systématiquement satisfaites. Par exemple, si la livraison de la commande est estimée aujourd'hui à 13h00, vous devez envoyer un intervalle estimé qui correspond aux variations dues aux conditions de circulation, par exemple entre 12h45 et 13h15.

Une durée ou un code temporel ISO 8601 est interprété comme l'intervalle entre le updateTime de l'OrderUpdate (en substance, "maintenant") et le updateTime plus duration. N'utilisez pas ce format, sauf si "maintenant" est une attente raisonnable.

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

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

Propriété Type Description
@type Const

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

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

estimatedFulfillmentTimeIso8601 String

Heure estimée à laquelle la commande sera livrée ou prête à être retirée. La chaîne doit être au format ISO 8601 et correspondre à un intervalle plutôt qu'à une heure fixe. Les conventions acceptables sont les suivantes: intervalles, durées et dates/heures. Ce champ peut être envoyé dans SubmitOrderResponseMessage ou AsyncOrderUpdateRequestMessage lorsque les informations sont disponibles ou qu'il y a un changement, comme un départ anticipé ou un retard.

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

foodOrderErrors List<FoodOrderError>

Décrit les erreurs qui se sont produites après la commande. Nous vous recommandons de ne signaler qu'une seule erreur par panier ou par article. Utilisez FoodOrderUpdateExtension.FoodOrderErrors pour toutes les erreurs non couvertes par RejectionInfo.

Doit contenir au moins un élément.

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

Exemple 1

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

Exemple 2

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

FulfillmentInfo

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

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

Utiliser estimatedFulfillmentTimeIso8601 dans le message FoodOrderingUpdateExtension

pickupTime Groupe 2 Code temporel ISO

Utiliser estimatedFulfillmentTimeIso8601 dans le message FoodOrderingUpdateExtension

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

Exemple 1

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

Exemple 2

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

InTransitInfo

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

Propriété Type Description
updatedTime Code temporel ISO

Utiliser estimatedFulfillmentTimeIso8601 dans le message FoodOrderingUpdateExtension

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

Exemple

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

LineItemUpdate

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

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

Raison du changement. Obligatoire pour les changements de prix.

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

Exemple

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

OpenUrlAction

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

Propriété Type Description
url String

Obligatoire.

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

Exemple : https://www.google.com

OrderManagementAction

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

Par exemple, dans l'état "CREATED" (CRÉÉ), CUSTOMER_SERVICE peut faire référence au numéro de téléphone de votre service client. Ensuite, à l'état"CONFIRMED", CUSTOMER_SERVICE peut remplacer le numéro de téléphone du restaurant par celui du client si celui-ci devient le meilleur point de contact pour le client. De même, une fois la commande passée à l'état "LIVRÉE", CUSTOMER_SERVICE peut faire référence à vos adresses e-mail d'assistance.

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

Propriété Type Description
type OrderManagementActionType

Obligatoire.

button Button

Obligatoire.

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

Exemple 1

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

Exemple 2

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

OrderManagementActionType

Définit les types associés à OrderManagementAction.

Le type OrderManagementActionType peut avoir les valeurs suivantes:

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

OrderState

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

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

Propriété Type Description
state OrderStateEnum

Obligatoire.

label String

Obligatoire.

Chaîne d'affichage visible par l'utilisateur pour l'état. Seule la première lettre du titre doit être en majuscule.

Exemple : Your order has been received

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

Exemple

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

OrderStateEnum

Définit les types associés à OrderState.

Le type OrderStateEnum peut avoir les valeurs suivantes:

  • CREATED: commande créée par l'intégrateur et en attente de confirmation par le fournisseur. Correspond à l'état d'achat "Commandé".
  • CONFIRMED: la commande a été confirmée par le fournisseur et est active. Correspond à l'état d'achat "Accepté".
  • REJECTED: Commande refusée par l'intégrateur ou le fournisseur. Correspond à l'état d'achat "Refusé".
  • CANCELLED: l'utilisateur a annulé la commande. Correspond à l'état d'achat "Annulé".
  • IN_PREPARATION: la nourriture est en cours de préparation. Correspond à l'état d'achat "État inconnu".
  • READY_FOR_PICKUP: la nourriture est prête à être retirée. Correspond à l'état d'achat "Prêt à être retiré".
  • IN_TRANSIT: la commande est en cours de livraison. Correspond à l'état d'achat "En cours".
  • FULFILLED: l'utilisateur a reçu ce qu'il a commandé. Correspond à l'état d'achat "Récupéré".

Reçu

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

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

Propriété Type Description
userVisibleOrderId String

Obligatoire.

Obligatoire si la commande est "CONFIRMED", "IN_TRANSIT" ou "FULFILLED". Ce champ correspond à l'identifiant unique visible par l'utilisateur pour cette commande (généralement l'ID de commande du restaurant). Il s'affiche à la fois sur le reçu de l'intégrateur et sur la fiche de commande Google. L'utilisateur doit pouvoir utiliser cet ID pour référencer sa commande auprès du service client du fournisseur et de l'intégrateur. Vous n'avez besoin de fournir cet ID qu'une seule fois dans une commande. Tant qu'il n'est pas fourni, l'actionOrderId est l'userVisibleOrderId. Par exemple, vous ne disposez peut-être pas d'un userVisibleOrderId tant que la commande n'a pas été confirmée par le restaurant. Une fois la confirmation reçue, vous devez envoyer un message AsyncOrderUpdateRequestMessage avec un OrderUpdate et un reçu.

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

Exemple

{
  "userVisibleOrderId": "userVisibleId1234"
}

RejectionInfo

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

Propriété Type Description
type RejectionType

Obligatoire.

reason String

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

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

Exemple

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

RejectionType

Le type RejectionType peut avoir les valeurs suivantes:

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

Types liés aux paiements

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

ActionProvidedPaymentOptions

Conditions requises pour un mode de paiement fourni par une action.

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

Propriété Type Description
paymentType PaymentType

Obligatoire.

displayName String

Obligatoire.

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

Exemple : Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

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

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

Exemple

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

AllowedAuthMethods

Le type AllowedAuthMethods peut avoir les valeurs suivantes:

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

AllowedCardNetworks

Le type AllowedCardNetworks peut avoir les valeurs suivantes:

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

BillingAddressParameters

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

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

Propriété Type Description
format String

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

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

Exemple 1

{
  "format": "MIN"
}

Exemple 2

{
  "format": "FULL"
}

CardParameters

Utilisez cet objet pour configurer la prise en charge de l'API Google Pay sur votre site.

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

Propriété Type Description
allowedAuthMethods List<Const>

Obligatoire.

Champs acceptés pour authentifier une transaction par carte.

Doit contenir au moins un élément.

allowedCardNetworks List<AllowedCardNetworks>

Obligatoire.

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

Doit contenir au moins un élément.

billingAddressRequired Valeur booléenne

Définissez cette valeur sur "true" si vous avez besoin d'une adresse de facturation. Ne demandez une adresse de facturation que si elle est nécessaire au traitement de la transaction. Les demandes de données supplémentaires peuvent augmenter les frictions lors du processus de paiement et entraîner une baisse des taux de conversion.

billingAddressParameters BillingAddressParameters

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

cvcRequired Valeur booléenne

Définissez cette valeur sur "true" si vous utilisez TimesofMoney, et sur "false" pour tous les autres systèmes de traitement des paiements.

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

Exemple 1

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

Exemple 2

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

GoogleProvidedPaymentInstrument

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

Propriété Type Description
instrumentToken String

Obligatoire.

Chaîne encodée en base64 contenant le jeton de paiement permettant de facturer l'utilisateur à l'aide d'un processeur Google Pay participant, conformément aux GoogleProvidedPaymentOptions spécifiées précédemment.

billingAddress PostalAddress

Adresse de facturation du paiement.

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

Exemple

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

GoogleProvidedPaymentOptions

Conditions requises pour le mode de paiement fourni par Google

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

Propriété Type Description
facilitationSpecification String

Chaîne JSON PaymentDataRequest. Utilisez cet objet pour configurer la prise en charge de l'API Google Pay sur votre site.

supportedCardNetworks List<SupportedCardNetworks>

Utilisez plutôt facilitationSpecification. Type de réseaux de cartes acceptés par l'agent.

Ce champ est obsolète.

prepaidCardDisallowed Valeur booléenne

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

Ce champ est obsolète.

billingAddressRequired Valeur booléenne

Utilisez plutôt facilitationSpecification. Indique si une adresse de facturation est obligatoire ou non.

Ce champ est obsolète.

tokenizationParameters TokenizationParameters

Ce champ est obsolète.

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

Exemple 1

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

Exemple 2

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

Exemple 3

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

MerchantInfo

Utilisez cet objet pour configurer la prise en charge de l'API Google Pay sur votre site.

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

Propriété Type Description
merchantId String

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

merchantName String

Obligatoire.

Nom du marchand encodé en UTF-8. Le nom du marchand s'affiche dans la fiche de paiement.

OnFulfillmentPaymentData

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

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

Propriété Type Description
supportedPaymentOptions List<PaymentOptionsEnums>

Liste des options de paiement disponibles pour l'utilisateur au moment de l'exécution de la commande.

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

Exemple

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

Paramètres

Définit les types associés à TokenizationParameters.

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

Propriété Type Description
gateway String

Obligatoire.

Exemple : 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 prise en charge de l'API Google Pay sur votre site.

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

Propriété Type Description
apiVersion Const

Obligatoire.

Version majeure de l'API.

Valeur : 2

apiVersionMinor Const

Obligatoire.

Version mineure de l'API.

Valeur : 0

merchantInfo MerchantInfo

Obligatoire.

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

allowedPaymentMethods List<PaymentMethod>

Obligatoire.

Spécifie la prise en charge d'un ou de plusieurs modes de paiement acceptés par l'API Google Pay.

transactionInfo TransactionInfo

Obligatoire.

Informations sur l'autorisation de la transaction en fonction de l'acceptation ou du refus de l'utilisateur. Ce champ inclut le prix total et l'état du prix.

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

Exemple

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

PaymentInfo

Informations de paiement pour une commande.

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

Propriété Type Description
displayName String

Obligatoire.

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

paymentType PaymentType

Obligatoire.

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

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

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

Exemple 1

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

Exemple 2

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

PaymentMethod

Utilisez cet objet pour configurer la prise en charge de l'API Google Pay sur votre site.

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

Propriété Type Description
type Const

Obligatoire.

Identifiant court du mode de paiement accepté. Seul le format CARTE est actuellement accepté.

Valeur : 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 déchiffrement pour recevoir les informations de paiement. Cette propriété est obligatoire pour le mode de paiement CARTE.

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

Exemple

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

PaymentOptions

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

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

S'exclut mutuellement avec actionProvidedOptions. Utilisez-le pour payer en ligne avec gPay.

actionProvidedOptions Groupe 2 ActionProvidedPaymentOptions

S'exclut mutuellement avec googleProvidedOptions. Utilisez-le pour "Paiement à la livraison" ou "Paiement à la livraison".

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

Exemple 1

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

Exemple 2

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

Exemple 3

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

PaymentOptionsEnums

Le type PaymentOptionsEnums peut avoir les valeurs suivantes:

  • Cash
  • Card
  • UPI
  • Paytm

PaymentType

Le type PaymentType peut avoir les valeurs suivantes:

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

SupportedCardNetworks

Définit les types associés à GoogleProvidedPaymentOptions.

Le type SupportedCardNetworks peut avoir les valeurs suivantes:

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

TokenizationParameters

Définit les types liés à GoogleProvidedPaymentOptions.

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

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

Obligatoire.

Utilisez plutôt facilitationSpecification. Type de jetons acceptés.

parameters Parameters

Utilisez plutôt facilitationSpecification.

TokenizationSpecification

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

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

Propriété Type Description
type Const

Obligatoire.

parameters Parameters

Obligatoire.

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

Exemple 1

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

Exemple 2

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

TransactionInfo

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

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

Propriété Type Description
currencyCode String

Obligatoire.

Code alphabétique de devise ISO 4217.

transactionId String

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

totalPriceStatus Const

Obligatoire.

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

Valeur : 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"
}