Schema für Auftragsausführungsaktionen

Auf dieser Seite wird die Nutzlast des Auftragsausführungs-Webdienstes (Ordering End-to-End API) bei Verwendung der Ordering End-to-End built-in Action API beschrieben. Für eine maschinenlesbare Version dieser Informationen können Sie das JSON-Schema herunterladen.

Basistypen

Einkaufswagen

Enthält Details zur Bestellung und gibt an, ob eine Abholung oder Lieferung angefordert werden soll. Ein Einkaufswagen enthält auch Lieferdetails, Trinkgeld und die Lieferadresse. Das Cart-Objekt ist in einer Checkout AppRequest definiert. Sie fügen eine Kopie des Einkaufswagens in Ihre Checkout AppResponse ein.

In der folgenden Tabelle sind die Attribute für den Typ Cart aufgeführt:

Property Typ Beschreibung
@type Forts.

Der Typ dieses Objekts. Lassen Sie dieses Feld weg, wenn das übergeordnete Warenkorbobjekt Teil von SuggestdOrder ist.

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

id String

Optionale ID des Einkaufswagens.

merchant Merchant

Mit diesem Einkaufswagen verknüpfter Händler.

lineItems Liste<LineItem>

Erforderlich.

Liste der Waren oder Dienstleistungen, die der Nutzer bestellt.

Darf nicht weniger als 1 Element enthalten.

promotions Liste<Promotion>

Angebot, das in diesem Einkaufswagen angewendet wird. Derzeit wird nur ein Angebot unterstützt.

notes String

Hinweise zur Bestellung oder Lieferanweisungen.

extension FoodCartExtension

Definiert Details zum Nutzer, z. B. Einstellungen für die Auftragsausführung.

Das folgende Beispiel zeigt ein Cart-Element:

Beispiel 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"
    }
  }
}

Beispiel 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"
    }
  }
}

Kontakt

Gibt Details zur Person an, die die Bestellung erhält. Sie ist nur in AppResponse verfügbar.

In der folgenden Tabelle sind die Attribute für den Typ Contact aufgeführt:

Property Typ Beschreibung
displayName String

Name der Person, die die Bestellung erhält, wie er angezeigt werden soll. Verwenden Sie dieses Feld, wenn firstName und lastName nicht angegeben sind.

Beispiel: Lovefood Ordering

email String

E-Mail-Adresse der Person, die die Bestellung erhält.

Beispiel: ilovefood@example.com

firstName String

Vorname der Person, die die Bestellung erhält

Beispiel: Lovefood

lastName String

Nachname der Person, die die Bestellung erhält.

Beispiel: Ordering

phoneNumber String

Telefonnummer der Person, die die Bestellung erhält, einschließlich der Landesvorwahl

Beispiel: +16501234567

emailVerified Boolesch

Gibt an, ob die Person, die die Bestellung erhält, mit ihrem Google-Konto angemeldet ist.

Das folgende Beispiel zeigt ein Contact-Element:

Beispiel

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

CustomPushMessage

Enthält den OrderUpdate für die Anfrage.

In der folgenden Tabelle sind die Attribute für den Typ CustomPushMessage aufgeführt:

Property Typ Beschreibung
orderUpdate OrderUpdate

Erforderlich.

Die Informationen zur Bestellung wurden aktualisiert.

Das folgende Beispiel zeigt ein CustomPushMessage-Element:

Beispiel

{
  "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

In der folgenden Tabelle sind die Attribute für den Typ DeliveryInfo aufgeführt:

Property Typ Beschreibung
deliveryTimeIso8601 String

Voraussichtliche Lieferzeit im Zeitstempelformat nach ISO 8601: „{Jahr}-{Monat}–{Tag}T{Stunde}:{Min.}:{Sek}[.{frac_sec}]Z“ oder im Dauerformat „P(n)Y(n)M(n)DT(n)H(n)M(n)S“. PT90M steht beispielsweise für eine Dauer von 90 Minuten. Der Standardwert "PT0M" gibt an, dass die bevorzugte Lieferzeit so bald wie möglich ist. Referenz: https://de.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. Hiermit können Sie die voraussichtliche Lieferdauer während der Antwort an den Bezahlvorgang aktualisieren.

Beispiel: PT90M

Das folgende Beispiel zeigt ein DeliveryInfo-Element:

Beispiel

{
  "deliveryTimeIso8601": "PT90M"
}

Haftungsausschluss

In der folgenden Tabelle sind die Attribute für den Typ Disclaimer aufgeführt:

Property Typ Beschreibung
predefinedMessage PredefinedMessage

Erforderlich.

Zum Anzeigen vordefinierter Haftungsausschlüsse an der Kasse.

feeAmount Money

Der Partner berechnet dem Händler eine Gebühr (N-Betrag) für diese Bestellung.

feeAmountRange FeeAmountRange

Der Partner berechnet dem Restaurant eine Gebühr von N bis M pro Bestellung.

feePercent Number

Der Partner berechnet dem Händler eine Gebühr von N% für diese Bestellung.

feePercentRange FeePercentRange

Der Partner berechnet dem Händler eine Gebühr von N% bis M% pro Bestellung.

Das folgende Beispiel zeigt ein Disclaimer-Element:

Beispiel 1

{
  "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER"
}

Beispiel 2

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE"
}

Beispiel 3

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

Beispiel 4

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

Beispiel 5

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

Beispiel 6

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

Fehler

Der Typ Error hat folgende mögliche Werte:

  • CLOSED: Das Restaurant ist zur Bestellzeit geschlossen.
  • NO_CAPACITY: Es ist keine Dienstkapazität verfügbar (z. B. ein vorübergehender Ausfall aufgrund von Spitzenzeiten).
  • NO_COURIER_AVAILABLE: Die Bestellung kann aufgrund von begrenztem Lieferpersonal nicht bearbeitet werden.
  • REQUIREMENTS_NOT_MET: Einschränkungen für die Annahme der Bestellung wurden nicht erfüllt (z. B. die Mindestbestellmenge).
  • UNAVAILABLE_SLOT: Die Bestellung kann nicht zur im Voraus angegebenen Bestellung ausgeführt werden, die in DeliveryInfo oder PickupInfo angegeben ist.
  • OUT_OF_SERVICE_AREA: Die Bestellung kann nicht an die Adresse des Nutzers geliefert werden.
  • PROMO_EXPIRED: Das Angebot konnte nicht angewendet werden, da es abgelaufen ist.
  • PROMO_NOT_APPLICABLE: Allgemeiner Fehlercode, mit dem alle Fehler beim Anwenden des Gutscheincodes erkannt werden, falls keiner der anderen Fehler zutrifft.
  • PROMO_NOT_RECOGNIZED: Der Gutscheincode wurde nicht erkannt.
  • PROMO_ORDER_INELIGIBLE: Dieser Gutschein kann für die aktuelle Bestellung nicht verwendet werden.
  • PROMO_USER_INELIGIBLE: Der aktuelle Nutzer hat keinen Anspruch auf diesen Gutschein.
  • AVAILABILITY_CHANGED: Der Artikel ist nicht mehr verfügbar oder es sind nicht mehr genügend Artikel vorhanden, um die Anfrage auszuführen.
  • INCORRECT_PRICE: Preisfehler bei den Gebühren oder dem Gesamtbetrag.
  • INVALID: Eine Werbebuchung, eine Auftragsausführungsoption oder eine Werbeaktion enthält ungültige Daten.
  • NOT_FOUND: Eine Werbebuchung, eine Auftragsausführungsoption oder eine Werbeaktion wurde nicht gefunden.
  • PRICE_CHANGED: Der Preis eines Artikels hat sich geändert.

FeeAmountRange

In der folgenden Tabelle sind die Attribute für den Typ FeeAmountRange aufgeführt:

Property Typ Beschreibung
minFeeAmount Money

Untergrenze des berechneten Gebührenbetrags.

maxFeeAmount Money

Obergrenze des berechneten Gebührenbetrags.

FeePercentRange

In der folgenden Tabelle sind die Attribute für den Typ FeePercentRange aufgeführt:

Property Typ Beschreibung
minFeePercent Number

Untergrenze des berechneten Gebührenprozentsatzes.

maxFeePercent Number

Obergrenze für den berechneten Gebührenprozentsatz.

FoodCartExtension

Enthält Details zum Nutzer, z. B. Einstellungen für die Auftragsausführung.

In der folgenden Tabelle sind die Attribute für den Typ FoodCartExtension aufgeführt:

Property Typ Beschreibung
@type Forts.

Der Typ dieser Erweiterung. Dieses Feld ist immer auf „type.googleapis.com/google.actions.v2.orders.FoodCartExtension“ festgelegt.

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

contact Contact

Kontaktdaten der Person, die die Bestellung erhält. Dazu gehören Name, Telefonnummer und E-Mail-Adresse der Person.

fulfillmentPreference FulfillmentOption

Erforderlich.

Die Auftragsausführung des Nutzers.

location Location

In der CheckoutRequestMessage gibt dieses Feld die Lieferadresse an, die erforderlich ist, wenn die Bestellung zur Lieferung bestimmt wird. Bei Bestellungen zum Mitnehmen oder Abholen ist dieses Feld nicht in der Nachricht enthalten.

Das folgende Beispiel zeigt ein FoodCartExtension-Element:

Beispiel 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"
  }
}

Beispiel 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

Gibt einen oder mehrere Fehler an, die beim Verarbeiten einer Anfrage aufgetreten sind. In der folgenden Tabelle werden die Felder des Typs FoodErrorExtension beschrieben. Fehler können in einem CheckoutResponse gesendet werden.

In der folgenden Tabelle sind die Attribute für den Typ FoodErrorExtension aufgeführt:

Property Typ Beschreibung
@type Forts.

Erforderlich.

Der Typ dieser Erweiterung.

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

foodOrderErrors Liste<FoodOrderError>

Erforderlich.

Array von FoodOrderError-Objekten, die die aufgetretenen Fehler beschreiben. Pro Einkaufswagen bzw. Artikel wird ein Fehler empfohlen.

Darf nicht weniger als 1 Element enthalten.

correctedProposedOrder ProposedOrder

Erforderlich beim 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".

Ein neuer Vorschlag für den Auftrag mit Korrekturen. Dieses Objekt zurückgeben, wenn der ursprüngliche Vorgeschlagene Auftrag behebbare Fehler enthält. Beispielsweise ist eine Preisänderung bei einer oder mehreren Artikeln im Einkaufswagen ein behebbarer Fehler. Behebbare Fehler mit einer gültigen „Vorgeschlagenen Bestellung“ werden in die Bestätigungsphase übergehen, ohne dass der Nutzer seinen Einkaufswagen prüfen muss.

paymentOptions PaymentOptions

Erforderlich beim 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".

Für den Nutzer ausgewählte Standardzahlungsoptionen.

additionalPaymentOptions Liste<PaymentOptions>

Alternative Zahlungsoptionen für den Nutzer.

Das folgende Beispiel zeigt ein FoodErrorExtension-Element:

Beispiel

{
  "@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

Definiert Add-ons für Lebensmittel.

In der folgenden Tabelle sind die Attribute für den Typ FoodItemExtension aufgeführt:

Property Typ Beschreibung
@type Forts.

Erforderlich.

Der Typ dieser Erweiterung. Dieses Feld ist immer auf „type.googleapis.com/google.actions.v2.orders.FoodItemExtension“ gesetzt.

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

options Liste<FoodItemOption>

Eine Option kann ein Add-on-Element oder eine Add-on-Gruppe mit einer Reihe von Add-ons sein.

Das folgende Beispiel zeigt ein FoodItemExtension-Element:

Beispiel

{
  "@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

In der folgenden Tabelle sind die Attribute für den Typ FoodItemOption aufgeführt:

Property Typ Beschreibung
id String

Eindeutige ID, die von Google zugewiesen wurde. Wenn Sie einen FoodOrderError oder AsyncOrderUpdateRequest senden, verwenden Sie dieses Feld, um zu unterscheiden, ob ein Einkaufswagen mehr als einen Artikel mit derselben Angebots-ID enthält.

Beispiel: 39231093

offerId String

Die Angebots-ID für den Artikel.

Beispiel: 912835081

name String

Der Name der Option.

Beispiel: Honey Mustard

price Money
note String

Hinweis zu der Option.

quantity Number

Bei Optionen, bei denen es sich um Elemente handelt, die Anzahl der Elemente.

Beispiel: 3

subOptions Liste<FoodItemOption>

Unteroptionen für die Option, falls vorhanden.

Beispiel: [ { "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 } ]

Das folgende Beispiel zeigt ein FoodItemOption-Element:

Beispiel 1

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

Beispiel 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

Enthält Details zu Fehlern in einem CheckoutResponse.

In der folgenden Tabelle sind die Attribute für den Typ FoodOrderError aufgeführt:

Property Typ Beschreibung
error Error

Erforderlich.

id String

Erforderlich beim error = "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "PRICE_CHANGED", "INVALID", or "NOT_FOUND".

Dieses Feld ist für Fehler auf Artikelebene erforderlich. Dabei handelt es sich um die von Google zugewiesene „LineItem.id“ für Artikel auf der Speisekarte oder die „FoodItemOption.id“ für Add-ons.

description String

Beschreibung des Fehlers. Diese Beschreibung dient zur internen Protokollierung und ist für Nutzer nicht sichtbar.

updatedPrice Money

Erforderlich beim error = "PRICE_CHANGED".

Neuer Preis eines Artikels, der den Fehler verursacht hat. Dies ist nur erforderlich, wenn der Fehler "PRICE_CHANGED" ist.

availableQuantity Ganzzahl

Erforderlich beim error = "INVALID", or "NOT_FOUND".

Neue verfügbare Menge des Artikels, der den Fehler verursacht hat. Dies ist nur erforderlich, wenn der Fehler „INVALID“ oder „NOT_FOUND“ lautet. Der Wert für „INVALID“ und „NOT_FOUND“ sollte null sein.

Das folgende Beispiel zeigt ein FoodOrderError-Element:

Beispiel 1

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

Beispiel 2

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

FoodOrderExtension

Enthält Informationen zur Auftragsausführung zur Bestellung.

In der folgenden Tabelle sind die Attribute für den Typ FoodOrderExtension aufgeführt:

Property Typ Beschreibung
@type Forts.

Der Typ dieser Erweiterung. Dieses Feld ist immer auf „type.googleapis.com/google.actions.v2.orders.FoodOrderExtension“ festgelegt.

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

availableFulfillmentOptions Liste<FulfillmentOption>

Verfügbare Auftragsausführungsoptionen für die Bestellung.

optinForRemarketing Boolesch

Nutzeranfrage zum Aktivieren Ihrer Marketingkanäle. Standardmäßig dürfen Sie Marketinginhalte nicht ohne die Zustimmung des Nutzers senden. Wenn optinForRemarketing wahr ist, können Sie den Nutzer abonnieren. Wenn „optinForRemarketing“ auf „false“ gesetzt ist oder nicht vorhanden ist, muss der Abostatus in deinem System unverändert bleiben. Nutzer können die Funktion nicht über Google deaktivieren, sondern nur über eine Kündigungsfunktion in deinen Marketingkanälen. Dieses Flag ist nur in „SubmitOrderRequestMessage“ vorhanden.

Das folgende Beispiel zeigt ein FoodOrderExtension-Element:

Beispiel 1

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

Beispiel 2

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

FulfillmentOption

Ein FulfillmentOption-Objekt kann so verwendet werden:
  • In Checkout AppRequest und Submit AppRequest wird im Cart.extension.fulfillmentPreference die Einstellung des Nutzers (Lieferung oder Abholung) gespeichert. Der Preis ist immer 0, wenn die Zahlungsanforderung gesendet wird.
  • In Checkout AppResponse definiert ProposedOrder.extension.availableFulfillmentOptions: Definiert eine oder mehrere Auslieferungsoptionen (derzeit wird nur eine Option unterstützt). Die Standardoption wird als LineItem in ProposedOrder.otherItems angegeben. Die offerId von FulfillmentOption sollte mit der ID des LineItem in ProposedOrder.otherItems übereinstimmen.

In der folgenden Tabelle sind die Attribute für den Typ FulfillmentOption aufgeführt:

Property Typ Beschreibung
offerId String

Eindeutige Kennung für diese Auftragsausführungsoption, falls vorhanden.

fulfillmentInfo FulfillmentOptionInfo

Erforderlich.

expiresAt ISO-Zeitstempel

Zeit, zu der diese Auftragsausführungsoption abläuft.

price Money

Kosten dieser Option.

Das folgende Beispiel zeigt ein FulfillmentOption-Element:

Beispiel

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

FulfillmentOptionInfo

Definiert Informationen zu FulfillmentInfo.

In der folgenden Tabelle sind die Attribute für den Typ FulfillmentOptionInfo aufgeführt:

Property Typ Beschreibung
Genau eine der folgenden Property-Gruppen ist erforderlich.
delivery Gruppe 1 DeliveryInfo

Falls vorhanden, gibt dies den Lieferauftrag an.

pickup Gruppe 2 PickupInfo

Falls vorhanden, steht für eine Bestellung zur Abholung.

Bild

In der folgenden Tabelle sind die Attribute für den Typ Image aufgeführt:

Property Typ Beschreibung
sourceUrl String

Erforderlich.

URL für das Bild. Das Bild sollte mindestens 72 x 72 Pixel groß sein. Die besten Ergebnisse erzielen Sie, wenn Sie ein Bild mit mindestens 216 x 216 Pixeln verwenden. Das Bild muss kleiner als 6 MB und 64 Megapixel sein.

LineItem

Definiert den Inhalt eines Einkaufswagens (Cart.lineItems) oder zusätzliche Gebühren für eine Bestellung (ProposedOrder.otherItems).

In der folgenden Tabelle sind die Attribute für den Typ LineItem aufgeführt:

Property Typ Beschreibung
id String

Erforderlich beim type = "REGULAR".

Für eine Position in einem Einkaufswagen (VorgeschlagenedOrder.cart.lineItems[0].id) ist dies die eindeutige ID, die Google beim Erstellen des Auftrags erstellt. Der Wert der ID wird für eine Position in einem Angebot des Typs SuggestdOrder (SuggestdOrder.otherItems[0].id), die zum Hinzufügen von Artikeln wie Liefergebühren und Steuern verwendet wird, vom Anbieter definiert. In einem Warenkorb befinden sich beispielsweise zwei identische Artikel mit unterschiedlichen Zubereitungsanleitungen (z. B. zwei mittelgroße Pizzen mit unterschiedlichen Belägen). In diesem Fall haben beide Artikel dieselbe Basis-offerId. Wenn Sie eine Anfrage zur Aktualisierung einer Bestellung senden, um anzugeben, dass ein Artikel abgelehnt wurde, verwenden Sie diese ID zur Unterscheidung. Wenn also eine der Pizzen abgelehnt wird, weil sie keinen bestimmten Belag hat, kann Google anhand der ID feststellen, auf welchen Artikel in der Reihenfolge Sie sich beziehen. Dieses Feld ist nur in otherItems erforderlich.

name String

Erforderlich.

Name der Position Dieser String ist für den Nutzer sichtbar und sollte nach Möglichkeit immer in Großbuchstaben geschrieben werden (z. B. „Versandgebühr“, „Servicegebühr“ oder „Steuern“). Dieses Feld wird für Nutzer auf 100 Zeichen abgeschnitten.

type LineItemType

Erforderlich.

quantity Ganzzahl

Erforderlich beim type = "REGULAR".

Anzahl der enthaltenen Elemente. Gilt nicht für VorgeschlagenedOrder.otherItems.

description String

Beschreibung des Artikels

price Price

Erforderlich.

Der Preis des Artikels oder der Artikel. Dieser Wert entspricht dem Gesamtpreis aller Waren oder Dienstleistungen für diese Position. Sie können also die Kosten der Add-ons addieren und mit der Menge multiplizieren. Beispiel: Wenn ein Artikel für 10 € eine Menge von 3 hat, beträgt der Preis 30 €. Für eine Pizza mit einem Grundpreis von 5 € und zusätzlich 1 € kostet er 6 €. Für zwei Pizzen (Menge = 2) mit einem Grundpreis von 5 € und jeweils 1 € zusätzlich würde der Preis 12 € betragen. Jede Werbebuchung sollte einen Preis haben, auch wenn der Preis „0“ ist. Wenn der Typ DISCOUNT ist, geben Sie den Wert als negativ an (z. B. „-2“).

subLines Liste<SublineNote>

Optional und nur gültig, wenn der Typ „REGULAR“ ist. In diesem Feld kann in der Checkout-Anfrage und der Anfrage zum Senden der Bestellung ein artikelspezifischer Hinweis des Nutzers gesendet werden. Achten Sie darauf, dass der Händler die Notiz erhält, sobald sie bereitgestellt wird. Er wird in der Anfrage als subLines[0].note angezeigt. Dies ist der einzige Wert, der in diesem Feld angegeben wird, wenn er in einer Anfrage vorhanden ist.

Darf nicht mehr als 1 Element enthalten.

offerId String

Erforderlich beim type = "REGULAR".

Die Angebots-ID des MenuItems für den Artikel. Gilt nicht für VorgeschlagenedOrder.otherItems.

extension FoodItemExtension

Definiert Add-ons für Lebensmittel.

Das folgende Beispiel zeigt ein LineItem-Element:

Beispiel 1

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

Beispiel 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

Der Typ LineItemType hat folgende mögliche Werte:

  • REGULAR: Werbebuchung für Waren Gilt für Cart.lineItems.
  • TAX: Position „Steuern“. Gilt für VorgeschlagenedOrder.otherItems.
  • DISCOUNT: Werbebuchung „Rabatt“. Der Preis muss negativ sein. Gilt für VorgeschlagenedOrder.otherItems.
  • GRATUITY: Werbebuchung für das Gratuity. In der Regel reserviert für „SubmitOrderRequestMessage“ für einen vom Nutzer ausgewählten Tipp. Gilt für VorgeschlagenedOrder.otherItems.
  • DELIVERY: Werbebuchung für die Auslieferung. Gilt für VorgeschlagenedOrder.otherItems.
  • SUBTOTAL: Position mit Zwischensumme. Gilt für VorgeschlagenedOrder.otherItems.
  • FEE: Zusätzliche Werbebuchung, die von den anderen Typen nicht abgedeckt wird. Gilt für VorgeschlagenedOrder.otherItems.

Standort

Gibt eine Adresse für Essensbestellungen an. Der Typ Location wird in einem Cart verwendet, um nur das Ziel eines Lieferauftrags anzugeben. Der endgültige Standort ist auch in TransactionDecisionValue vorhanden, wenn der Nutzer die Bestellung aufgibt. Bei Bestellungen mit Abholung wird kein Standort angegeben (auch kein leerer Standort).

In der folgenden Tabelle sind die Attribute für den Typ Location aufgeführt:

Property Typ Beschreibung
coordinates Coordinates
formattedAddress String

Angezeigte Adresse des Standorts

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

postalAddress PostalAddress
zipCode String

Beispiel: 90210

city String

Der Name der Stadt.

Beispiel: Los Angeles

notes String

Hinweise zum Ort, z. B. Zugangscodes. Er darf maximal 500 Zeichen umfassen.

Beispiel: Gate code is #111

Das folgende Beispiel zeigt ein Location-Element:

Beispiel

{
  "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"
}

Händler

In der folgenden Tabelle sind die Attribute für den Typ Merchant aufgeführt:

Property Typ Beschreibung
id String

Die ID des Händlers. Falls angegeben, stimmt mit der Restaurant.@id im Restaurant-Feed überein.

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

name String

Erforderlich.

Für den Nutzer sichtbarer Händlername.

Beispiel: Falafel Bite

Das folgende Beispiel zeigt ein Merchant-Element:

Beispiel

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

Geldbetrag

In der folgenden Tabelle sind die Attribute für den Typ Money aufgeführt:

Property Typ Beschreibung
currencyCode String

Erforderlich.

Ein dreistelliger Währungscode im ISO 4217-Format.

Beispiel: USD

units String

Die ganzen Einheiten des Betrags. Wenn für „currencyCode“ beispielsweise „USD“ angegeben ist, entspricht die Einheit „1“ einem US-Dollar.

Beispiel: 36

nanos Ganzzahl

Anzahl der Nanoeinheiten (10^-9) des Betrags. Der Wert muss im Bereich von -999.999.999 bis +999.999.999 liegen. Beachten Sie folgende Regeln: Wenn „units“ positiv ist, müssen die Nanoeinheiten positiv oder null sein. Wenn „units“ null ist, können die Nanoeinheiten positiv, null oder negativ sein. Wenn „units“ negativ ist, müssen die Nanoeinheiten negativ oder null sein. Beispiel: -1,75 $ wird als Einheiten = -1 und Nanos = -750.000.000 dargestellt.

Beispiel: 730000000

Das folgende Beispiel zeigt ein Money-Element:

Beispiel 1

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

Beispiel 2

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

Bestellen

Enthält die endgültige Bestellung, einschließlich Steuern, Gebühren und Versandkosten sowie Zahlungsinformationen. Dieses Objekt wird von Ihrer Aktion in einem Submit AppRequest empfangen.

In der folgenden Tabelle sind die Attribute für den Typ Order aufgeführt:

Property Typ Beschreibung
finalOrder ProposedOrder

Erforderlich.

Die vorgeschlagene Bestellung, die zur Bestellung geführt hat.

googleOrderId String

Erforderlich.

Von Google zugewiesene Bestell-ID. Diese ID sollte für den gesamten Lebenszyklus eines Auftrags gleich bleiben. Diese ID ist für den Endnutzer nicht sichtbar.

orderDate ISO-Zeitstempel

Erforderlich.

Datum und Uhrzeit der Auftragserstellung.

paymentInfo PaymentInfo

Erforderlich.

Zahlungsinformationen, die der Zahlung für diese Bestellung entsprechen.

Das folgende Beispiel zeigt ein Order-Element:

Beispiel

{
  "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

In der folgenden Tabelle werden die Felder des Typs „OrderUpdate“ beschrieben, die in AppResponse enthalten sind.

In der folgenden Tabelle sind die Attribute für den Typ OrderUpdate aufgeführt:

Property Typ Beschreibung
actionOrderId String

Erforderlich.

Eindeutige ID des Auftrags im System des Integrationspartners, mit der der Auftrag identifiziert wird, für den das Update gesendet wird. Wenn für eine Bestellung des Typs „CREATED“ nicht mindestens einmal „quitt.user_visible_order_id“ in OrderUpdate angegeben ist, ist diese ID die für den Nutzer sichtbare ID, die auf der Google-Bestellkarte angezeigt wird.

orderState OrderState

Erforderlich.

Der neue Status der Bestellung.

lineItemUpdates Map<String, LineItemUpdate>
updateTime ISO-Zeitstempel

Erforderlich.

Der Zeitpunkt, zu dem der Auftrag aktualisiert wurde.

orderManagementActions Liste<OrderManagementAction>

Aktionen nach der Bestellung, z. B. Support kontaktieren und Bestelldetails ansehen

Darf nicht weniger als 1 Element und nicht mehr als 6 Elemente enthalten.

rejectionInfo RejectionInfo

Erforderlich beim orderState.state = "REJECTED".

cancellationInfo CancellationInfo

Erforderlich beim orderState.state = "CANCELLED".

inTransitInfo InTransitInfo

Dieses Feld wurde eingestellt.

fulfillmentInfo FulfillmentInfo

Dieses Feld wurde eingestellt.

receipt Receipt

Erforderlich beim orderState.state = "CONFIRMED", "IN_PREPARATION", or "READY_FOR_PICKUP".

Geben Sie die für den Nutzer sichtbare Bestell-ID in einem Beleg an.

totalPrice Price

Gesamtpreis der Bestellung.

infoExtension FoodOrderUpdateExtension

Definiert weitere Details der Bestellaktualisierung, z. B. das Intervall für die voraussichtliche Lieferung oder Abholung.

Das folgende Beispiel zeigt ein OrderUpdate-Element:

Beispiel

{
  "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

In der folgenden Tabelle sind die Attribute für den Typ PickupInfo aufgeführt:

Property Typ Beschreibung
pickupTimeIso8601 String

Geschätzte Abholzeit im ISO 8601-Zeitstempelformat: „{year}-{Monat}-{Tag}T{Stunde}:{Min.}:{Sek}[.{frac_sec}]Z“ oder im Dauerformat „P(n)Y(n)M(n)DT(n)H(n)M(n)S“. PT90M steht beispielsweise für eine Dauer von 90 Minuten. Der Standardwert "PT0M" gibt an, dass die bevorzugte Abholzeit so bald wie möglich ist. Referenz: https://de.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. Hiermit können Sie die voraussichtliche Abholzeit während der Antwort an den Bezahlvorgang aktualisieren.

Beispiel: PT90M

Das folgende Beispiel zeigt ein PickupInfo-Element:

Beispiel

{
  "pickupTimeIso8601": "PT90M"
}

PostalAddress

In der folgenden Tabelle sind die Attribute für den Typ PostalAddress aufgeführt:

Property Typ Beschreibung
regionCode String

Erforderlich.

Ein aus zwei Buchstaben bestehender Ländercode.

Beispiel: US

postalCode String

Die Postleitzahl.

Beispiel: 94043

administrativeArea String

Höchste administrative Untergliederung, die für Postadressen eines Landes oder einer Region verwendet wird. Dies kann ein Bundesland, eine Provinz, eine Oblast oder eine Präfektur sein.

Beispiel: CA

locality String

Stadt oder Ort dieses Standorts Geben Sie in Regionen der Welt, in denen Orte nicht hinreichend definiert sind oder nicht in diese Struktur passen, diesen Ort nicht an und verwenden Sie stattdessen das Feld „addressLines“.

Beispiel: Mountain View

addressLines List<String>

Eine oder mehrere Zeilen, in denen Sie die Adresse angeben können. Dieses Feld sollte nicht geändert werden, da es unklare Ortsteile enthalten kann.

Beispiel: [ "1350 Charleston Road" ]

recipients List<String>

Liste der Empfänger einer Bestellung. Dieses Feld ist nur unter billingAddress verfügbar.

Das folgende Beispiel zeigt ein PostalAddress-Element:

Beispiel

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

Preis

In der folgenden Tabelle sind die Attribute für den Typ Price aufgeführt:

Property Typ Beschreibung
type Enum [ "ESTIMATE", "ACTUAL" ]

Erforderlich.

Der Gutscheincode des Angebots.

amount Money

Erforderlich.

Werbung

In der folgenden Tabelle sind die Attribute für den Typ Promotion aufgeführt:

Property Typ Beschreibung
coupon String

Erforderlich.

Der Gutscheincode des Angebots.

ProposedOrder

In der folgenden Tabelle sind die Attribute für den Typ ProposedOrder aufgeführt:

Property Typ Beschreibung
id String

Optionale ID für die vorgeschlagene Bestellung.

cart Cart

Erforderlich.

Elemente des Nutzers.

otherItems Liste<LineItem>

Vom Anbieter hinzugefügte Artikel, z. B. Versandkosten, sonstige Gebühren und Steuern. otherItems können auch Trinkgeld und/oder Rabatt enthalten, die vom Nutzer hinzugefügt wurden.

Darf nicht mehr als 10 Elemente enthalten.

image Image

Bild, das mit der vorgeschlagenen Bestellung verknüpft ist.

totalPrice Price

Erforderlich.

Gesamtpreis der vorgeschlagenen Bestellung.

extension FoodOrderExtension

Erforderlich.

Definiert Informationen zur Auftragsausführung für Essensbestellungen.

disclaimers Liste<Disclaimer>

Entspricht Hinweisen zum Haftungsausschluss, die vor der Bestellung auf der Benutzeroberfläche angezeigt werden.

Das folgende Beispiel zeigt ein ProposedOrder-Element:

Beispiel

{
  "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

In der folgenden Tabelle sind die Attribute für den Typ SublineNote aufgeführt:

Property Typ Beschreibung
note String

Erforderlich.

Zeitstempel

Datum und Uhrzeit im folgenden Format: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"

TransactionDecisionValue

Enthält das Order.

In der folgenden Tabelle sind die Attribute für den Typ TransactionDecisionValue aufgeführt:

Property Typ Beschreibung
order Order

Erforderlich.

Die Bestellung wird mit den Zahlungsdetails aufgegeben.

Das folgende Beispiel zeigt ein TransactionDecisionValue-Element:

Beispiel

{
  "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"
    }
  }
}

Ausführungsanfrage

AppRequest

In der folgenden Tabelle sind die Attribute für den Typ AppRequest aufgeführt:

Property Typ Beschreibung
isInSandbox Boolesch

Gibt an, ob die nachfolgenden Transaktionen in einer Sandbox-Umgebung ausgeführt werden.

conversation Conversation
inputs Liste<Input>

Erforderlich.

Enthält die erwarteten Argumente für die Bezahlung eines Einkaufswagens.

Muss genau 1 Element enthalten.

Das folgende Beispiel zeigt ein AppRequest-Element:

Beispiel 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"
              }
            }
          }
        }
      ]
    }
  ]
}

Beispiel 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

Ein CheckoutRequestMessage ist ein AppRequest mit dem Intent actions.foodordering.intent.CHECKOUT.

SubmitOrderRequestMessage

Ein SubmitOrderRequestMessage ist ein AppRequest mit dem Intent actions.foodordering.intent.TRANSACTION_DECISION.

Unterhaltung

Ein Conversation ist nur für eine Sitzung eindeutig. Sie können damit bei Bedarf mehrere Checkout- und SubmitOrder-Aktionen miteinander verknüpfen.

In der folgenden Tabelle sind die Attribute für den Typ Conversation aufgeführt:

Property Typ Beschreibung
conversationId String

Erforderlich.

Eindeutige ID für die Unterhaltung.

Das folgende Beispiel zeigt ein Conversation-Element:

Beispiel

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

Eingabe

Die erwarteten Argumente für die Bezahlung eines Einkaufswagens.

In der folgenden Tabelle sind die Attribute für den Typ Input aufgeführt:

Property Typ Beschreibung
intent Enum [ "actions.foodordering.intent.CHECKOUT", "actions.intent.TRANSACTION_DECISION" ]

Erforderlich.

Legen Sie dieses Feld auf „actions.foodordering.intent.CHECKOUT“ für die Anfragenachricht für den Bezahlvorgang ODER auf „actions.intent.TRANSACTION_DECISION“ für die Anfragenachricht zum Senden einer Bestellung fest.

arguments Liste<Argument>

Erforderlich.

Enthält den Warenkorb, der ausgecheckt werden soll, oder die Bestellung, die aufgegeben werden soll

Muss genau 1 Element enthalten.

Argument

Enthält Details zu den Lebensmitteln, die die Nutzenden bestellen möchten. Für den Bezahlvorgang ist nur eine Verlängerung möglich. Für die Auftragsübermittlung ist nur "transactionDecisionValue" anwendbar

In der folgenden Tabelle sind die Attribute für den Typ Argument aufgeführt:

Property Typ Beschreibung
Genau eine der folgenden Property-Gruppen ist erforderlich.
extension Gruppe 1 Cart

Beschreibt die Lebensmittel, die die Nutzenden bestellen möchten.

transactionDecisionValue Gruppe 2 TransactionDecisionValue

Enthält die aufzugebende Bestellung und die Zahlungsdetails.

Antwort auf Auftragsausführung

AppResponse

In der folgenden Tabelle sind die Attribute für den Typ AppResponse aufgeführt:

Property Typ Beschreibung
expectUserResponse Forts.

Auf „false“ setzen.

Wert: False

finalResponse FinalResponse

Erforderlich.

Enthält Ihre Antwort auf den Bezahlvorgang.

Das folgende Beispiel zeigt ein AppResponse-Element:

Beispiel 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."
                  }
                }
              ]
            }
          }
        }
      ]
    }
  }
}

Beispiel 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"
              }
            }
          }
        }
      ]
    }
  }
}

Beispiel 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."
                }
              ]
            }
          }
        }
      ]
    }
  }
}

Beispiel 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

Ein CheckoutResponseMessage ist ein AppResponse mit einer checkoutResponse oder error in der StructuredResponse.

SubmitOrderResponseMessage

Ein SubmitOrderResponseMessage ist ein AppResponse mit einer orderUpdate im StructuredResponse.

FinalResponse

Ihre Antwort auf die Bezahlseite für den Einkaufswagen oder auf „SubmitOrderRequestMessage“.

In der folgenden Tabelle sind die Attribute für den Typ FinalResponse aufgeführt:

Property Typ Beschreibung
richResponse RichResponse

Erforderlich.

Enthält Ihre Antwort auf die CheckoutRequestMessage oder die GiveOrderRequestMessage.

CheckoutResponse

In der folgenden Tabelle sind die Attribute für den Typ CheckoutResponse aufgeführt:

Property Typ Beschreibung
proposedOrder ProposedOrder

Erforderlich.

Vorgeschlagene Bestellung, die für die Transaktion verwendet werden soll.

paymentOptions PaymentOptions

Erforderlich.

Für den Nutzer ausgewählte Standardzahlungsoption.

additionalPaymentOptions Liste<PaymentOptions>

Alternative Zahlungsoptionen für den Nutzer.

Das folgende Beispiel zeigt ein CheckoutResponse-Element:

Beispiel

{
  "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."
      }
    }
  ]
}

Element

Enthält Ihre Antwort auf den Bezahlvorgang im Einkaufswagen oder auf „SubmitOrderRequestMessage“.

In der folgenden Tabelle sind die Attribute für den Typ Item aufgeführt:

Property Typ Beschreibung
structuredResponse StructuredResponse

Erforderlich.

RichResponse

Enthält Ihre Antwort auf den Bezahlvorgang im Einkaufswagen.

In der folgenden Tabelle sind die Attribute für den Typ RichResponse aufgeführt:

Property Typ Beschreibung
items Liste<Item>

Erforderlich.

Muss genau 1 Element enthalten.

StructuredResponse

Für CheckoutResponseMessage kann dies einer der folgenden Werte sein: CheckoutResponse Gibt einen erfolgreichen Bezahlvorgang an. ODER FoodErrorExtension: Weist auf einen Fehler beim Bezahlvorgang hin. Die Antwort kann einen korrigierten Wert für „VorgeschlagenedOrder“ und „PaymentOptions“ oder eine Fehlermeldung ohne „PaymentOptions“ enthalten. Für "SubmitOrderResponseMessage" ist nur "orderUpdate" anwendbar.

In der folgenden Tabelle sind die Attribute für den Typ StructuredResponse aufgeführt:

Property Typ Beschreibung
Genau eine der folgenden Property-Gruppen ist erforderlich.
checkoutResponse Gruppe 1 CheckoutResponse

Artikel zzgl. Steuern und Rabatten bezahlt.

error Gruppe 2 FoodErrorExtension

Es wurden Fehler bei den Warenkorbartikeln festgestellt. Je nach Art des Fehlers kann dieses Attribut einen korrigierten Wert für „ „SuggestdOrder“ und „PaymentOptions“ oder nur eine Fehlermeldung ohne „PaymentOptions“ enthalten.

orderUpdate Gruppe 3 OrderUpdate

Asynchrone Bestellaktualisierungen

In diesem Abschnitt werden die übergeordneten Typen beschrieben, aus denen die Anfragen und Antworten einer typischen Interaktion mit integrierten Aktionen zur Essensbestellung bestehen.

AsyncOrderUpdateRequestMessage

Informiert den Nutzer über Änderungen, nachdem eine Bestellung aufgegeben und bestätigt wurde. Du kannst den Nutzer beispielsweise darüber informieren, dass die Bestellung unterwegs ist oder sich der Preis geändert hat. Weitere Informationen erhalten Sie unter:

In der folgenden Tabelle sind die Attribute für den Typ AsyncOrderUpdateRequestMessage aufgeführt:

Property Typ Beschreibung
isInSandbox Boolesch

Gibt an, dass die Bestellung, für die dieses Update gesendet wurde, eine Sandbox-Zahlung ist.

customPushMessage CustomPushMessage

Erforderlich.

Enthält das OrderUpdate für die Anforderung.

Das folgende Beispiel zeigt ein AsyncOrderUpdateRequestMessage-Element:

Beispiel

{
  "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

Nachdem Sie eine AsyncOrderUpdateRequestMessage gesendet haben, antwortet Google mit dem HTTP 200-Status und einem leeren Textkörper. Wenn die Aktualisierung fehlgeschlagen ist, antwortet Google mit Details dazu, warum die Aktualisierung der Bestellung fehlgeschlagen ist.

Arten der Bestellaktualisierung

Schaltfläche

Definiert ein Benutzeroberflächenelement, das Sie hinzufügen können, um eine Benutzerinteraktion bereitzustellen.

In der folgenden Tabelle sind die Attribute für den Typ Button aufgeführt:

Property Typ Beschreibung
title String

Erforderlich.

Anzeige Verwenden Sie die im Deutschen übliche Groß- und Kleinschreibung, damit das Rendering wie gewünscht funktioniert.

Beispiel: Contact us

openUrlAction OpenUrlAction

Erforderlich.

Das folgende Beispiel zeigt ein Button-Element:

Beispiel

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

CancellationInfo

In der folgenden Tabelle sind die Attribute für den Typ CancellationInfo aufgeführt:

Property Typ Beschreibung
reason String

Erforderlich.

Anzeigbarer Textgrund für die Ablehnung, wenn OrderState.state „ABBRECHEN“ lautet.

Beispiel: Restaurant closed

Das folgende Beispiel zeigt ein CancellationInfo-Element:

Beispiel

{
  "reason": "Insufficient inventory"
}

FoodOrderUpdateExtension

Bei diesem Typ wird dem Nutzer ein geschätztes Intervall für die Lieferung der Bestellung oder die Abholung zur Verfügung gestellt. Sende diese Erweiterung in einem OrderUpdate, wenn die Informationen verfügbar sind oder sich seit dem letzten Senden geändert haben.

Geben Sie eine konservative Schätzung für das Auftragsausführungsintervall an, damit die Nutzererwartungen kontinuierlich erfüllt werden. Wenn die Bestellung beispielsweise voraussichtlich heute um 13:00 Uhr geliefert wird, sollten Sie ein geschätztes Intervall senden, das mit den Schwankungen aufgrund der Verkehrslage übereinstimmt, z. B. heute von 12:45 bis 13:15 Uhr.

Eine Dauer oder ein Zeitstempel gemäß ISO 8601 wird als Intervall vom updateTime des OrderUpdate (im Wesentlichen „jetzt“) bis zu updateTime plus duration interpretiert. Verwenden Sie dieses Format nur, wenn „jetzt“ tatsächlich eine realistische Erwartung ist.

Ein Intervall nach ISO 8601 wird als Intervall vom Start bis zum Ende des Intervalls interpretiert.

In der folgenden Tabelle sind die Attribute für den Typ FoodOrderUpdateExtension aufgeführt:

Property Typ Beschreibung
@type Forts.

Der Typ dieser Erweiterung. Dieses Feld ist immer auf „type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension“ festgelegt.

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

estimatedFulfillmentTimeIso8601 String

Die voraussichtliche Zeit, zu der die Bestellung geliefert wird oder zur Abholung bereitsteht. Der String muss im ISO 8601-Format vorliegen und nicht einer einzelnen festen Zeit, sondern einem Intervall entsprechen. Zulässige Konventionen sind: Intervalle, Dauer und Datum/Uhrzeit. Dieses Feld kann in „SubmitOrderResponseMessage“ oder „AsyncOrderUpdateRequestMessage“ gesendet werden, wenn die Informationen verfügbar sind oder sich eine Änderung ergibt (z. B. früher oder verspätet eintreffen).

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

foodOrderErrors Liste<FoodOrderError>

Beschreibt die Fehler, die nach der Bestellung aufgetreten sind. Pro Einkaufswagen bzw. Artikel wird ein Fehler empfohlen. Verwende FoodOrderUpdateExtension.FoodOrderErrors für alle Fehler, die nicht von RejectionInfo abgedeckt sind.

Darf nicht weniger als 1 Element enthalten.

Das folgende Beispiel zeigt ein FoodOrderUpdateExtension-Element:

Beispiel 1

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

Beispiel 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

In der folgenden Tabelle sind die Attribute für den Typ FulfillmentInfo aufgeführt:

Property Typ Beschreibung
Genau eine der folgenden Property-Gruppen ist erforderlich.
deliveryTime Gruppe 1 ISO-Zeitstempel

„estimatedFulfillmentTimeIso8601“ in der Nachricht „FoodOrderingUpdateExtension“ verwenden

pickupTime Gruppe 2 ISO-Zeitstempel

„estimatedFulfillmentTimeIso8601“ in der Nachricht „FoodOrderingUpdateExtension“ verwenden

Das folgende Beispiel zeigt ein FulfillmentInfo-Element:

Beispiel 1

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

Beispiel 2

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

InTransitInfo

In der folgenden Tabelle sind die Attribute für den Typ InTransitInfo aufgeführt:

Property Typ Beschreibung
updatedTime ISO-Zeitstempel

„estimatedFulfillmentTimeIso8601“ in der Nachricht „FoodOrderingUpdateExtension“ verwenden

Das folgende Beispiel zeigt ein InTransitInfo-Element:

Beispiel

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

LineItemUpdate

In der folgenden Tabelle sind die Attribute für den Typ LineItemUpdate aufgeführt:

Property Typ Beschreibung
orderState OrderState
price Price
reason String

Grund für die Änderung Erforderlich für Preisänderungen.

Das folgende Beispiel zeigt ein LineItemUpdate-Element:

Beispiel

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

OpenUrlAction

In der folgenden Tabelle sind die Attribute für den Typ OpenUrlAction aufgeführt:

Property Typ Beschreibung
url String

Erforderlich.

Die durch das Klicken oder Berühren der Schaltfläche ausgelöste Aktion. Die Liste der anwendbaren Präfixe hängt von orderManagementActionType ab. "EMAIL": Das Präfix muss "mailto" sein. „CALL“: Das Präfix muss „tel“ sein. "CUSTOMER_SERVICE": Das Präfix muss "mailto", "tel", "http" oder "https" lauten.

Beispiel: https://www.google.com

OrderManagementAction

Die Bestellverwaltung ermöglicht Nutzern, Unterstützung bei der Bestellung zu erhalten. Dieser sollte in jeder OrderUpdate der Bestellung AppResponse gesendet werden. Jede weitere AsyncOrderUpdateRequestMessage Bestellverwaltungsaktion, die für eine bestimmte Bestellung gesendet wird, kann je nach Status variieren.

Im Status „CREATED“ kann CUSTOMER_SERVICE beispielsweise auf Ihr Telefonsupport verweisen. Im Status „BESTÄTIGT“ kann CUSTOMER_SERVICE dann zum Telefon des Restaurants wechseln, wenn diese zum besten Ansprechpartner für den Kunden wird. Sobald die Bestellung den Status „FULFILLED“ hat, kann CUSTOMER_SERVICE auf Ihre Support-E-Mail-Adressen verweisen.

In der folgenden Tabelle sind die Attribute für den Typ OrderManagementAction aufgeführt:

Property Typ Beschreibung
type OrderManagementActionType

Erforderlich.

button Button

Erforderlich.

Das folgende Beispiel zeigt ein OrderManagementAction-Element:

Beispiel 1

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

Beispiel 2

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

OrderManagementActionType

Definiert Typen im Zusammenhang mit OrderManagementAction.

Der Typ OrderManagementActionType hat folgende mögliche Werte:

  • CUSTOMER_SERVICE: E-Mail-Adresse und/oder Kontaktnummer des Kundenservice, die auf der Bestellbestätigungsseite angezeigt werden sollen. Dies ist erforderlich. Das Präfix "openUrlAction.url" muss "mailto", "tel", "http" oder "https" sein.
  • EMAIL: E-Mail-Aktion nur auf der Seite mit den Bestelldetails. Das Präfix "openUrlAction.url" muss "mailto" sein.
  • CALL_DRIVER: Die Call-Aktion nur auf der Seite mit den Bestelldetails. Das Präfix „openUrlAction.url“ muss „tel“ sein.
  • CALL_RESTAURANT: Die Call-Aktion nur auf der Seite mit den Bestelldetails. Das Präfix „openUrlAction.url“ muss „tel“ sein.

OrderState

Der aktuelle Status der Bestellung. Jeder state-Wert von OrderState entspricht auch einem Kaufstatus auf myaccount.google.com.

In der folgenden Tabelle sind die Attribute für den Typ OrderState aufgeführt:

Property Typ Beschreibung
state OrderStateEnum

Erforderlich.

label String

Erforderlich.

Der für den Nutzer sichtbare Anzeigestring für den Bundesstaat. Verwenden Sie die im Deutschen am Satzanfang übliche Groß- und Kleinschreibung.

Beispiel: Your order has been received

Das folgende Beispiel zeigt ein OrderState-Element:

Beispiel

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

OrderStateEnum

Definiert Typen im Zusammenhang mit OrderState.

Der Typ OrderStateEnum hat folgende mögliche Werte:

  • CREATED: Bestellung wurde vom Integrator erstellt und wartet auf Bestätigung vom Anbieter. Entspricht dem Kaufstatus "Bestellt".
  • CONFIRMED: Die Bestellung wurde vom Anbieter bestätigt und ist aktiv. Entspricht dem Kaufstatus „Akzeptiert“.
  • REJECTED: Bestellung vom Integrator oder Anbieter abgelehnt. Entspricht dem Kaufstatus „Abgelehnt“.
  • CANCELLED: Der Nutzer hat die Bestellung storniert. Entspricht dem Kaufstatus „Storniert“.
  • IN_PREPARATION: Essen wird vorbereitet. Entspricht dem Kaufstatus „Status unbekannt“.
  • READY_FOR_PICKUP: Essen steht zur Abholung bereit. Entspricht dem Kaufstatus „Zur Abholung bereit“.
  • IN_TRANSIT: Die Bestellung wird zugestellt. Entspricht dem Kaufstatus „In Bearbeitung“.
  • FULFILLED: Der Nutzer hat die bestellte Ware erhalten. Entspricht dem Kaufstatus „Abgeholt“.

Beleg

Senden Sie diesen Typ in einem Übermittlungsauftrag AppResponse, wobei OrderState den Wert „confirmED“, „FULFILLED“ oder „IN_TRANSIT“ hat. Senden Sie den Beleg zu dem Zeitpunkt, an dem die userVisibleOrderId verfügbar ist. Sie müssen den Beleg bei nachfolgenden Aktualisierungen nicht mehr senden.

In der folgenden Tabelle sind die Attribute für den Typ Receipt aufgeführt:

Property Typ Beschreibung
userVisibleOrderId String

Erforderlich.

Erforderlich, wenn der Auftrag den Status „confirmED“, „IN_TRANSIT“ oder „FULFILLED“ hat. Dieses Feld ist die einzelne nutzerseitige ID für diese Bestellung (normalerweise die Bestell-ID des Restaurants), die sowohl auf dem Beleg des Integrationspartners als auch auf der Google-Bestellkarte angezeigt wird. Der Nutzer muss diese ID verwenden können, um auf seine Bestellung für den Kundenservice beim Dienstleister und Integrator zu verweisen. Diese ID musst du bei einem OrderUpdate nur einmal angeben. Bis zur Bereitstellung ist die actionOrderId die userVisibleOrderId. So kann es beispielsweise sein, dass Sie erst dann eine userVisibleOrderId haben, wenn die Bestellung vom Restaurant bestätigt wurde. Nach der Bestätigung musst du eine AsyncOrderUpdateRequestMessage mit einem OrderUpdate und einem Beleg senden.

Das folgende Beispiel zeigt ein Receipt-Element:

Beispiel

{
  "userVisibleOrderId": "userVisibleId1234"
}

RejectionInfo

In der folgenden Tabelle sind die Attribute für den Typ RejectionInfo aufgeführt:

Property Typ Beschreibung
type RejectionType

Erforderlich.

reason String

Grund für die Ablehnung, der für das interne Logging verwendet wird. Dieses Feld ist für Nutzer nicht sichtbar.

Das folgende Beispiel zeigt ein RejectionInfo-Element:

Beispiel

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

RejectionType

Der Typ RejectionType hat folgende mögliche Werte:

  • INELIGIBLE: Der Nutzer ist aufgrund von Richtlinien- oder risikobezogenen Bedenken nicht teilnahmeberechtigt.
  • PAYMENT_DECLINED: Bei der Zahlungsabwicklung ist ein Problem aufgetreten.
  • UNAVAILABLE_SLOT: Die Bestellung kann nicht zur im Voraus angegebenen Bestellung ausgeführt werden, die in DeliveryInfo oder PickupInfo angegeben ist.
  • PROMO_NOT_APPLICABLE: Es gibt ein Problem mit der Werbeaktion.
  • UNKNOWN: Sonstiger Grund.

Zahlungsbezogene Typen

In diesem Abschnitt werden die zahlungsbezogenen Typen beschrieben, die für die Abwicklung von Essensbestellungen verwendet werden.

ActionProvidedPaymentOptions

Anforderungen an eine Zahlungsmethode, die über eine Aktion bereitgestellt wird.

In der folgenden Tabelle sind die Attribute für den Typ ActionProvidedPaymentOptions aufgeführt:

Property Typ Beschreibung
paymentType PaymentType

Erforderlich.

displayName String

Erforderlich.

Name des Zahlungsmittels, das auf dem Beleg angegeben ist

Beispiel: Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

Zusätzliche Daten für den paymentType „ON_FULFILLMENT“. Sie können dieses Feld beispielsweise verwenden, um anzugeben, ob Bargeld oder Karte bei der Auftragsausführung unterstützt wird.

Das folgende Beispiel zeigt ein ActionProvidedPaymentOptions-Element:

Beispiel

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

AllowedAuthMethods

Der Typ AllowedAuthMethods hat folgende mögliche Werte:

  • PAN_ONLY: Authentifizierungsmethode, die mit den im Google-Konto des Nutzers gespeicherten Zahlungskarten verknüpft ist. Die zurückgegebenen Zahlungsdaten enthalten die persönliche Kontonummer (PAN) mit Ablaufmonat und Ablaufjahr.

AllowedCardNetworks

Der Typ AllowedCardNetworks hat folgende mögliche Werte:

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

BillingAddressParameters

Mit diesem Objekt können Sie zusätzliche Felder festlegen, die für eine angeforderte Rechnungsadresse zurückgegeben werden sollen.

In der folgenden Tabelle sind die Attribute für den Typ BillingAddressParameters aufgeführt:

Property Typ Beschreibung
format String

Das Format der Rechnungsadresse ist erforderlich, um die Transaktion abzuschließen. MIN: Name, Ländercode und Postleitzahl. FULL: Name, Adresse, Ort, Region, Ländercode und Postleitzahl.

Das folgende Beispiel zeigt ein BillingAddressParameters-Element:

Beispiel 1

{
  "format": "MIN"
}

Beispiel 2

{
  "format": "FULL"
}

CardParameters

Mit diesem Objekt können Sie die Unterstützung Ihrer Website für die Google Pay API konfigurieren.

In der folgenden Tabelle sind die Attribute für den Typ CardParameters aufgeführt:

Property Typ Beschreibung
allowedAuthMethods List<Const>

Erforderlich.

Felder, die zur Authentifizierung einer Kartentransaktion unterstützt werden

Darf nicht weniger als 1 Element enthalten.

allowedCardNetworks Liste<AllowedCardNetworks>

Erforderlich.

Ein oder mehrere von dir unterstützte Kartennetzwerke, die auch von der Google Pay API unterstützt werden.

Darf nicht weniger als 1 Element enthalten.

billingAddressRequired Boolesch

Legen Sie den Wert auf "true" fest, wenn Sie eine Rechnungsadresse benötigen. Fordern Sie nur dann eine Rechnungsadresse an, wenn diese für die Verarbeitung der Transaktion erforderlich ist. Zusätzliche Datenanfragen können den Bezahlvorgang beeinträchtigen und zu niedrigeren Conversion-Raten führen.

billingAddressParameters BillingAddressParameters

Die erwarteten Felder werden zurückgegeben, wenn billingAddressRequired auf "true" gesetzt ist.

cvcRequired Boolesch

Setzen Sie den Wert auf „true“, wenn Sie TimesofMoney verwenden, und auf „false“ für alle anderen Zahlungsabwickler.

Das folgende Beispiel zeigt ein CardParameters-Element:

Beispiel 1

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

Beispiel 2

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

GoogleProvidedPaymentInstrument

In der folgenden Tabelle sind die Attribute für den Typ GoogleProvidedPaymentInstrument aufgeführt:

Property Typ Beschreibung
instrumentToken String

Erforderlich.

Base64-codierter String, der das Zahlungstoken für die Belastung des Nutzers bei einem teilnehmenden Google Pay-Prozessor gemäß den zuvor angegebenen GoogleProvidedPaymentOptions enthält.

billingAddress PostalAddress

Rechnungsadresse für die Zahlung.

Das folgende Beispiel zeigt ein GoogleProvidedPaymentInstrument-Element:

Beispiel

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

GoogleProvidedPaymentOptions

Anforderungen für die von Google bereitgestellte Zahlungsmethode

In der folgenden Tabelle sind die Attribute für den Typ GoogleProvidedPaymentOptions aufgeführt:

Property Typ Beschreibung
facilitationSpecification String

PaymentDataRequest-JSON als String. Mit diesem Objekt können Sie die Unterstützung Ihrer Website für die Google Pay API konfigurieren.

supportedCardNetworks Liste<SupportedCardNetworks>

Verwenden Sie stattdessen facilitationSpecification. Der Typ der vom Agent unterstützten Kartennetzwerke.

Dieses Feld wurde eingestellt.

prepaidCardDisallowed Boolesch

Verwenden Sie stattdessen facilitationSpecification. Gibt an, ob eine Prepaidkarte als Zahlungsart zulässig ist.

Dieses Feld wurde eingestellt.

billingAddressRequired Boolesch

Verwenden Sie stattdessen facilitationSpecification. Gibt an, ob eine Rechnungsadresse erforderlich ist.

Dieses Feld wurde eingestellt.

tokenizationParameters TokenizationParameters

Dieses Feld wurde eingestellt.

Das folgende Beispiel zeigt ein GoogleProvidedPaymentOptions-Element:

Beispiel 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\"}}"
}

Beispiel 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
}

Beispiel 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

Mit diesem Objekt können Sie die Unterstützung Ihrer Website für die Google Pay API konfigurieren.

In der folgenden Tabelle sind die Attribute für den Typ MerchantInfo aufgeführt:

Property Typ Beschreibung
merchantId String

Google-Händler-ID, die Sie von Google Pay erhalten haben.

merchantName String

Erforderlich.

Händlername in UTF-8-Codierung. Der Händlername wird im Zahlungsformular angezeigt.

OnFulfillmentPaymentData

Verwenden Sie dieses Objekt, um zusätzliche Daten für den PaymentType "ON_FULFILLMENT" zu senden.

In der folgenden Tabelle sind die Attribute für den Typ OnFulfillmentPaymentData aufgeführt:

Property Typ Beschreibung
supportedPaymentOptions Liste<PaymentOptionsEnums>

Liste der Zahlungsoptionen, die dem Nutzer zum Zeitpunkt der Auftragsausführung zur Verfügung stehen.

Das folgende Beispiel zeigt ein OnFulfillmentPaymentData-Element:

Beispiel

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

Parameter

Definiert Typen im Zusammenhang mit TokenizationParameters.

In der folgenden Tabelle sind die Attribute für den Typ Parameters aufgeführt:

Property Typ Beschreibung
gateway String

Erforderlich.

Beispiel: braintree

gatewayMerchantId String
[additionalKey: string] String Zusätzliche Schlüssel/Wert-Paare

Das folgende Beispiel zeigt ein Parameters-Element:

Beispiel 1

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

Beispiel 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

Mit diesem Objekt können Sie die Unterstützung Ihrer Website für die Google Pay API konfigurieren.

In der folgenden Tabelle sind die Attribute für den Typ PaymentDataRequest aufgeführt:

Property Typ Beschreibung
apiVersion Forts.

Erforderlich.

API-Hauptversion.

Wert: 2

apiVersionMinor Forts.

Erforderlich.

API-Nebenversion.

Wert: 0

merchantInfo MerchantInfo

Erforderlich.

(Google Pay-Händler-ID) Informationen zu dem Händler, der Zahlungsdaten anfordert.

allowedPaymentMethods Liste<PaymentMethod>

Erforderlich.

Gibt an, dass eine oder mehrere Zahlungsmethoden unterstützt werden, die von der Google Pay API unterstützt werden.

transactionInfo TransactionInfo

Erforderlich.

Details zur Autorisierung der Transaktion, abhängig davon, ob der Nutzer der Transaktion zustimmt oder nicht. Dieses Feld enthält den Gesamtpreis und den Preisstatus.

Das folgende Beispiel zeigt ein PaymentDataRequest-Element:

Beispiel

{
  "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

Zahlungsinformationen zu einer Bestellung.

In der folgenden Tabelle sind die Attribute für den Typ PaymentInfo aufgeführt:

Property Typ Beschreibung
displayName String

Erforderlich.

Für den Nutzer sichtbarer Name des Zahlungsmittels, der auf dem Beleg angezeigt wird.

paymentType PaymentType

Erforderlich.

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

Token, das von der Aktion verwendet werden kann. Geben Sie dies nur an, wenn Sie GoogleProvidedPaymentOptions als Zahlungsoption in der CheckoutResponseMessage angegeben haben.

Das folgende Beispiel zeigt ein PaymentInfo-Element:

Beispiel 1

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

Beispiel 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

Mit diesem Objekt können Sie die Unterstützung Ihrer Website für die Google Pay API konfigurieren.

In der folgenden Tabelle sind die Attribute für den Typ PaymentMethod aufgeführt:

Property Typ Beschreibung
type Forts.

Erforderlich.

Kurze Kennung für die unterstützte Zahlungsmethode. Derzeit wird nur CARD unterstützt.

Wert: CARD

parameters CardParameters

Erforderlich.

Parameter, die zum Konfigurieren des angegebenen Zahlungsmethodetyps erforderlich sind.

tokenizationSpecification TokenizationSpecification

Erforderlich.

Konfigurieren Sie ein Konto oder einen Entschlüsselungsanbieter, um Zahlungsinformationen zu erhalten. Diese Eigenschaft ist für die Zahlungsmethode CARD erforderlich.

Das folgende Beispiel zeigt ein PaymentMethod-Element:

Beispiel

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

PaymentOptions

In der folgenden Tabelle sind die Attribute für den Typ PaymentOptions aufgeführt:

Property Typ Beschreibung
Genau eine der folgenden Property-Gruppen ist erforderlich.
googleProvidedOptions Gruppe 1 GoogleProvidedPaymentOptions

Schließt sich mit actionProvidedOptions gegenseitig aus. Nutze sie für Onlinezahlungen mit gPay.

actionProvidedOptions Gruppe 2 ActionProvidedPaymentOptions

Schließt sich mit "googleProvidedOptions" gegenseitig aus. Verwenden Sie diesen Typ für Nachnahme oder Auftragsausführung.

Das folgende Beispiel zeigt ein PaymentOptions-Element:

Beispiel 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\"}}"
  }
}

Beispiel 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\"}}"
  }
}

Beispiel 3

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

PaymentOptionsEnums

Der Typ PaymentOptionsEnums hat folgende mögliche Werte:

  • Cash
  • Card
  • UPI
  • Paytm

PaymentType

Der Typ PaymentType hat folgende mögliche Werte:

  • PAYMENT_CARD: Für GoogleProvidedPaymentOptions.
  • ON_FULFILLMENT: Für ActionProvidedPaymentOptions.

SupportedCardNetworks

Definiert Typen im Zusammenhang mit GoogleProvidedPaymentOptions.

Der Typ SupportedCardNetworks hat folgende mögliche Werte:

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

TokenizationParameters

Definiert Typen in Bezug auf GoogleProvidedPaymentOptions.

In der folgenden Tabelle sind die Attribute für den Typ TokenizationParameters aufgeführt:

Property Typ Beschreibung
tokenizationType Enum [ "UNSPECIFIED_TOKENIZATION_TYPE", "PAYMENT_GATEWAY" ]

Erforderlich.

Verwenden Sie stattdessen facilitationSpecification. Zulässige Token-Typen.

parameters Parameters

Verwenden Sie stattdessen facilitationSpecification.

TokenizationSpecification

Mit diesem Objekt können Sie ein Konto für den Empfang kostenpflichtiger Zahlungsinformationen konfigurieren.

In der folgenden Tabelle sind die Attribute für den Typ TokenizationSpecification aufgeführt:

Property Typ Beschreibung
type Forts.

Erforderlich.

parameters Parameters

Erforderlich.

Das folgende Beispiel zeigt ein TokenizationSpecification-Element:

Beispiel 1

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

Beispiel 2

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

TransactionInfo

Dieses Objekt beschreibt eine Transaktion, die bestimmt, ob ein Zahlender bezahlen kann. Sie wird verwendet, um ein Dialogfeld zur Zahlungsautorisierung anzuzeigen.

In der folgenden Tabelle sind die Attribute für den Typ TransactionInfo aufgeführt:

Property Typ Beschreibung
currencyCode String

Erforderlich.

Alphabetischer Währungscode nach ISO 4217.

transactionId String

Eindeutige ID, die einen Transaktionsversuch identifiziert. Händler können für Google Pay-Transaktionsversuche eine vorhandene ID verwenden oder eine spezifische erstellen. Dieses Feld ist erforderlich, wenn Sie Callbacks an die Google Transaction Events API senden.

totalPriceStatus Forts.

Erforderlich.

Verwenden Sie als Standardeinstellung „ESTIMATED“. Der Gesamtpreis kann sich je nach den in der Antwort angegebenen Details anpassen, z. B. die Umsatzsteuer, die basierend auf einer Rechnungsadresse erhoben wird.

Wert: ESTIMATED

totalPrice String

Erforderlich.

Der monetäre Gesamtwert der Transaktion mit einer optionalen Dezimalstellen von zwei Dezimalstellen. Dieses Feld muss denselben Wert wie „cart.totalPrice“ haben.

Das folgende Beispiel zeigt ein TransactionInfo-Element:

Beispiel

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