Schema für Auftragsausführungsaktionen

Auf dieser Seite wird die Nutzlast des Auftragsausführungs-Webdienstes (Ordering End-to-End API) beschrieben, wenn Sie die integrierte Bestell-End-to-End-Aktion-API verwenden. Eine maschinenlesbare Version dieser Informationen können Sie als JSON-Schema herunterladen.

Basistypen

Einkaufswagen

Enthält Details zur Bestellung sowie Informationen dazu, ob es sich um eine Abholung oder Lieferung handelt. Ein Einkaufswagen enthält außerdem Lieferdetails, Trinkgeld und die Lieferadresse. Das Cart-Objekt ist in einer Checkout AppRequest-Datei definiert. Sie fügen eine Kopie des Einkaufswagens in Ihre Checkout AppResponse-Datei ein.

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

Attribut Typ Beschreibung
@type Const

Der Typ dieses Objekts. Lassen Sie dieses Feld aus, wenn das übergeordnete Einkaufswagenobjekt Teil von „ProposedOrder“ ist.

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

id String

Optionale ID des Einkaufswagens.

merchant Merchant

Händler, der mit diesem Einkaufswagen verknüpft ist.

lineItems List<LineItem>

Erforderlich.

Liste der Waren oder Dienstleistungen, die der Nutzer bestellt.

Es muss mindestens 1 Artikel enthalten.

promotions List<Promotion>

Angebot, das auf diesen Einkaufswagen angewendet wird. Derzeit wird nur ein Angebot unterstützt.

notes String

Hinweise zur Bestellung oder Lieferanweisungen.

extension FoodCartExtension

Hier werden Details zum Nutzer definiert, z. B. die Abwicklungseinstellungen.

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 Properties für den Typ Contact aufgeführt:

Attribut 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 entgegennimmt, 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 Properties für den Typ CustomPushMessage aufgeführt:

Attribut Typ Beschreibung
orderUpdate OrderUpdate

Erforderlich.

Aktualisierte Informationen zur Bestellung.

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 Properties für den Typ DeliveryInfo aufgeführt:

Attribut Typ Beschreibung
deliveryTimeIso8601 String

Geschätzte Zustellungszeit im Zeitstempelformat ISO 8601: „{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z“ oder im Format für die Dauer: „P(n)Y(n)M(n)DT(n)H(n)M(n)S“. So steht beispielsweise PT90M für eine Dauer von 90 Minuten. Der Standardwert „PT0M“ gibt an, dass die bevorzugte Zustellung so schnell wie möglich erfolgen soll. Referenz: https://de.wikipedia.org/wiki/ISO_8601#Kombinierte_Darstellung_von_Datum_und_Uhrzeit Hiermit können Sie die geschätzte Lieferzeit während der Antwort auf die Kasse aktualisieren.

Beispiel: PT90M

Das folgende Beispiel zeigt ein DeliveryInfo-Element:

Beispiel

{
  "deliveryTimeIso8601": "PT90M"
}

Haftungsausschluss

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

Attribut Typ Beschreibung
predefinedMessage PredefinedMessage

Erforderlich.

Sie können vordefinierte Haftungsausschlüsse an der Kasse anzeigen lassen.

feeAmount Money

Der Partner berechnet dem Händler eine Gebühr in Höhe von N € 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 zum Zeitpunkt der Bestellung geschlossen.
  • NO_CAPACITY: Es ist keine Dienstkapazität verfügbar (z. B. eine vorübergehende Störung aufgrund von Spitzenzeiten).
  • NO_COURIER_AVAILABLE: Die Bestellung kann aufgrund von Personalmangel nicht bearbeitet werden.
  • REQUIREMENTS_NOT_MET: Die Einschränkungen für die Annahme der Bestellung wurden nicht erfüllt (z. B. Mindestbestellwert).
  • UNAVAILABLE_SLOT: Die Bestellung kann nicht zum in DeliveryInfo oder PickupInfo angegebenen Zeitpunkt für die Vorbestellung ausgeführt werden.
  • 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: Generischer Fehlercode, der alle Fälle erfasst, in denen der Gutscheincode nicht angewendet werden kann, wenn keiner der anderen Gutscheincodefehler zutrifft.
  • PROMO_NOT_RECOGNIZED: Der Gutscheincode wurde nicht erkannt.
  • PROMO_ORDER_INELIGIBLE: Der aktuelle Gutschein kann nicht für diese Bestellung verwendet werden.
  • PROMO_USER_INELIGIBLE: Der aktuelle Nutzer ist nicht berechtigt, diesen Gutschein zu verwenden.
  • AVAILABILITY_CHANGED: Der Artikel ist nicht mehr verfügbar oder es sind nicht genügend Artikel vorhanden, um die Anfrage zu erfüllen.
  • INCORRECT_PRICE: Preisfehler bei Gebühren oder Gesamtpreis.
  • INVALID: Ein Artikel, eine Ausführungsoption oder ein Angebot enthält ungültige Daten.
  • NOT_FOUND: Die Position, die Ausführungsoption oder das Angebot konnte nicht gefunden werden.
  • PRICE_CHANGED: Der Preis eines Artikels hat sich geändert.

FeeAmountRange

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

Attribut Typ Beschreibung
minFeeAmount Money

Untergrenze des in Rechnung gestellten Gebührenbetrags.

maxFeeAmount Money

Obergrenze des in Rechnung gestellten Gebührenbetrags.

FeePercentRange

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

Attribut Typ Beschreibung
minFeePercent Number

Untergrenze des in Rechnung gestellten Gebührenprozentsatzes.

maxFeePercent Number

Obergrenze für den in Rechnung gestellten Gebührenprozentsatz.

FoodCartExtension

Enthält Details zum Nutzer, z. B. die bevorzugte Abwicklungsart.

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

Attribut Typ Beschreibung
@type Const

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 der Name, die Telefonnummer und die E-Mail-Adresse der Person.

fulfillmentPreference FulfillmentOption

Erforderlich.

Die Auftragsausführungseinstellung des Nutzers.

location Location

In der CheckoutRequestMessage gibt dieses Feld die Lieferadresse an, die erforderlich ist, wenn die Bestellung geliefert werden soll. Bei Bestellungen zum Mitnehmen oder zur Abholung 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

Hier werden mindestens ein oder mehrere Fehler angegeben, die bei der Verarbeitung einer Anfrage aufgetreten sind. In der folgenden Tabelle sind die Felder des Typs FoodErrorExtension beschrieben. Fehler können in einem CheckoutResponse gesendet werden.

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

Attribut Typ Beschreibung
@type Const

Erforderlich.

Der Typ dieser Erweiterung.

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

foodOrderErrors List<FoodOrderError>

Erforderlich.

Array von FoodOrderError-Objekten, die die aufgetretenen Fehler beschreiben. Wir empfehlen, pro Einkaufswagen oder pro Artikel einen Fehler anzugeben.

Es muss mindestens 1 Artikel enthalten.

correctedProposedOrder ProposedOrder

Erforderlich, wenn 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".

Eine neue „Vorgeschlagene Bestellung“ mit Korrekturen. Gib dieses Objekt zurück, wenn in der ursprünglichen ProposedOrder wiederherstellbare Fehler vorhanden sind. Ein Beispiel für einen korrigierbaren Fehler ist eine Preisänderung bei einer oder mehreren Werbebuchungen im Einkaufswagen. Korrigierbare Fehler mit einer gültigen ProposedOrder werden zur Bestätigungsphase fortgesetzt, anstatt dass der Nutzer seinen Einkaufswagen überprüfen muss.

paymentOptions PaymentOptions

Erforderlich, wenn 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 List<PaymentOptions>

Alternative Zahlungsoptionen, die dem Nutzer zur Verfügung stehen.

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 Zusätze für Lebensmittel.

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

Attribut Typ Beschreibung
@type Const

Erforderlich.

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

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

options List<FoodItemOption>

Eine Option kann ein Add-on-Artikel oder eine Add-on-Gruppe mit mehreren 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 Properties für den Typ FoodItemOption aufgeführt:

Attribut Typ Beschreibung
id String

Von Google zugewiesene eindeutige ID. Wenn Sie eine FoodOrderError- oder AsyncOrderUpdateRequest-Nachricht senden, können Sie mit diesem Feld 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 zur Option.

quantity Number

Bei Optionen, die Elemente sind, die Anzahl der Elemente.

Beispiel: 3

subOptions List<FoodItemOption>

Untergeordnete Optionen 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 Properties für den Typ FoodOrderError aufgeführt:

Attribut Typ Beschreibung
error Error

Erforderlich.

id String

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

Dieses Feld ist für Fehler auf Artikelebene erforderlich. Dies ist die von Google zugewiesene LineItem.id für Menüpunkte oder die FoodItemOption.id für Extras.

description String

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

updatedPrice Money

Erforderlich, wenn error = "PRICE_CHANGED".

Der neue Preis eines Artikels, der den Fehler verursacht hat. Dies ist nur erforderlich, wenn der Fehler „PRICE_CHANGED“ lautet.

availableQuantity Ganzzahl

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

Neue verfügbare Stückzahl des Artikels, der den Fehler verursacht hat. Diese Angabe ist nur erforderlich, wenn der Fehler „INVALID“ oder „NOT_FOUND“ lautet. Der Wert sollte für „INVALID“ und „NOT_FOUND“ 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.

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

Attribut Typ Beschreibung
@type Const

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 List<FulfillmentOption>

Stellt die verfügbaren Abwicklungsoptionen für die Bestellung dar.

optinForRemarketing Boolesch

Der Nutzer möchte Ihre Marketingkanäle aktivieren. Standardmäßig können Sie keine Marketinginhalte ohne Einwilligung der Nutzer senden. Wenn „optinForRemarketing“ auf „true“ gesetzt ist, kannst du den Nutzer abonnieren. Wenn „optinForRemarketing“ falsch ist oder nicht vorhanden ist, müssen Sie den Abostatus in Ihrem System unverändert lassen. Nutzer können sich nicht über Google abmelden, sondern nur über eine Funktion in Ihren 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

Sie können ein FulfillmentOption-Objekt auf folgende Arten verwenden:
  • In Checkout AppRequest und Submit AppRequest: Cart.extension.fulfillmentPreference: Hier wird die Einstellung des Nutzers (Lieferung oder Abholung) gespeichert. Der Preis ist immer 0, wenn die Zahlungsanfrage gesendet wird.
  • In Checkout AppResponse gibt das Zeichen ProposedOrder.extension.availableFulfillmentOptions eine oder mehrere Übermittlungsoptionen an (derzeit wird nur eine Option unterstützt). Sie geben die Standardoption als LineItem in ProposedOrder.otherItems an. Die offerId von FulfillmentOption muss mit der ID der LineItem übereinstimmen, die in ProposedOrder.otherItems angegeben ist.

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

Attribut Typ Beschreibung
offerId String

Eindeutige Kennung für diese Option zur Auftragsausführung, falls zutreffend.

fulfillmentInfo FulfillmentOptionInfo

Erforderlich.

expiresAt ISO-Zeitstempel

Der Zeitpunkt, zu dem diese Option für die Auftragsausführung abläuft.

price Money

Kosten für diese 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

Hier werden Informationen zu FulfillmentInfo definiert.

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

Attribut Typ Beschreibung
Es ist genau eine der folgenden Gruppen von Properties erforderlich.
delivery Gruppe 1 DeliveryInfo

Falls vorhanden, gibt dies den Lieferauftrag an.

pickup Gruppe 2 PickupInfo

Falls vorhanden, gibt dies einen Abholauftrag an.

Bild

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

Attribut Typ Beschreibung
sourceUrl String

Erforderlich.

URL für das Bild. Das Bild muss mindestens 72 × 72 Pixel groß sein. Für eine optimale Darstellung empfehlen wir, ein Bild mit mindestens 216 x 216 Pixeln hochzuladen. Das Bild darf maximal 6 MB und 64 Megapixel groß sein.

LineItem

Hiermit wird der Inhalt eines Einkaufswagens (Cart.lineItems) oder zusätzliche Kosten für eine Bestellung (ProposedOrder.otherItems) definiert.

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

Attribut Typ Beschreibung
id String

Erforderlich, wenn type = "REGULAR".

Bei einem Artikel in einem Einkaufswagen (ProposedOrder.cart.lineItems[0].id) ist dies die eindeutige ID, die von Google beim Erstellen der Bestellung erstellt wurde. Für eine Werbebuchung in einer vorgeschlagenen Bestellung (ProposedOrder.otherItems[0].id), mit der Artikel wie Versandkosten und Steuern hinzugefügt werden, wird der Wert von „id“ vom Anbieter definiert. Beispiel: Im Einkaufswagen befinden sich zwei Artikel mit derselben Bezeichnung, aber unterschiedlichen Zubereitungsanleitungen (z. B. zwei mittelgroße Pizzen mit unterschiedlichen Belägen). In diesem Fall haben beide Artikel dieselbe Basis-Angebots-ID. Wenn Sie eine Bestellaktualisierungsanfrage senden, um anzugeben, dass ein Artikel abgelehnt wurde, verwenden Sie diese ID als eindeutigen Bezeichner. Wenn also eine der Pizzen abgelehnt wird, weil ihr ein bestimmtes Topping fehlt, kann Google anhand der ID ermitteln, auf welchen Artikel in der Bestellung sich Ihre Beschwerde bezieht. Dieses Feld ist mit Ausnahme von „otherItems“ ein Pflichtfeld.

name String

Erforderlich.

Name der Werbebuchung. Dieser für Nutzer sichtbare String sollte nach Möglichkeit in Großbuchstaben geschrieben werden, z. B. „Liefergebühr“, „Servicegebühr“ oder „Steuern“. Dieses Feld wird für Nutzer auf 100 Zeichen gekürzt.

type LineItemType

Erforderlich.

quantity Ganzzahl

Erforderlich, wenn type = "REGULAR".

Anzahl der enthaltenen Artikel. Gilt nicht für ProposedOrder.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. Dazu werden die Kosten aller Add-ons addiert und mit der Stückzahl multipliziert. Beispiel: Wenn ein Artikel für 10 € in einer Menge von 3 Stücken angeboten wird, beträgt der Preis 30 €. Für eine Pizza mit einem Grundpreis von 5 € und einem Add-on von 1 € würde der Preis 6 € betragen. Für zwei Pizzen (Menge = 2) mit einem Grundpreis von 5 € und jeweils einem Zubehör von 1 € würde der Preis 12 € betragen. Jede Position muss einen Preis haben, auch wenn der Preis „0“ ist. Wenn der Typ „RABATT“ ist, geben Sie den Wert als negativ an (z. B. „-2“).

subLines List<SublineNote>

Optional und nur gültig, wenn „TYPE“ den Wert „REGULAR“ hat. In diesem Feld in der Zahlungsanfrage und der Anfrage zur Bestellungseingabe kann ein artikelspezifischer Hinweis vom Nutzer gesendet werden. Achten Sie darauf, dass der Händler die Notiz erhält, sobald sie verfügbar ist. Er wird in der Anfrage als „subLines[0].note“ angegeben. Dies ist der einzige Wert, der in diesem Feld angegeben wird, wenn er in einer Anfrage vorhanden ist.

Darf maximal 1 Element enthalten.

offerId String

Erforderlich, wenn type = "REGULAR".

Die Angebots-ID des Artikels für den Artikel. Gilt nicht für ProposedOrder.otherItems.

extension FoodItemExtension

Definiert Zusätze 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 kann folgende Werte haben:

  • REGULAR: Position für Waren. Gilt für „Cart.lineItems“.
  • TAX: Steuerposition Gilt für ProposedOrder.otherItems.
  • DISCOUNT: Position für Rabatt Der Preis sollte negativ sein. Gilt für ProposedOrder.otherItems.
  • GRATUITY: Position für Trinkgeld In der Regel für die SubmitOrderRequestMessage für ein vom Nutzer ausgewähltes Trinkgeld reserviert. Gilt für ProposedOrder.otherItems.
  • DELIVERY: Werbebuchung für die Auslieferung. Gilt für ProposedOrder.otherItems.
  • SUBTOTAL: Zwischensumme Gilt für ProposedOrder.otherItems.
  • FEE: Zusätzliche Werbebuchung, die nicht durch die anderen Typen abgedeckt wird. Gilt für ProposedOrder.otherItems.

Standort

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

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

Attribut Typ Beschreibung
coordinates Coordinates
formattedAddress String

Adresse des Standorts anzeigen

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 Standort, z. B. Torcodes Er darf maximal 500 Zeichen enthalten.

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 Properties für den Typ Merchant aufgeführt:

Attribut Typ Beschreibung
id String

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

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

name String

Erforderlich.

Der für Nutzer sichtbare Name des Händlers.

Beispiel: Falafel Bite

Das folgende Beispiel zeigt ein Merchant-Element:

Beispiel

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

Geld

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

Attribut Typ Beschreibung
currencyCode String

Erforderlich.

Ein dreistelliger Währungscode im ISO 4217-Format.

Beispiel: USD

units String

Die ganzen Einheiten des Betrags. Beispiel: Wenn für „currencyCode“ der Wert „USD“ angegeben ist, entspricht eine 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 die folgenden 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. -1,75 $ wird z. B. als „units“ = −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"
}

Auftrag

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 Properties für den Typ Order aufgeführt:

Attribut Typ Beschreibung
finalOrder ProposedOrder

Erforderlich.

Der vorgeschlagene Antrag, der zur Verfügungsverfügung geführt hat.

googleOrderId String

Erforderlich.

Von Google zugewiesene Bestell-ID. Diese ID sollte während des gesamten Lebenszyklus einer Bestellung unverändert bleiben. Diese ID ist für den Endnutzer nicht sichtbar.

orderDate ISO-Zeitstempel

Erforderlich.

Datum und Uhrzeit der Erstellung der Bestellung.

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, der in AppResponse enthalten ist.

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

Attribut Typ Beschreibung
actionOrderId String

Erforderlich.

Die eindeutige ID der Bestellung im System des Integrators, mit der die Bestellung identifiziert wird, für die die Aktualisierung gesendet wird. Wenn „receipt.user_visible_order_id“ für eine Bestellung mit dem Status „CREATED“ nicht mindestens einmal in „OrderUpdate“ angegeben ist, wird diese ID als eingegebene sichtbare Nutzer-ID auf der Google-Bestellkarte angezeigt.

orderState OrderState

Erforderlich.

Der neue Status der Bestellung.

lineItemUpdates Map<String, LineItemUpdate>
updateTime ISO-Zeitstempel

Erforderlich.

Die Uhrzeit, zu der die Bestellung aktualisiert wurde.

orderManagementActions List<OrderManagementAction>

Aktionen nach der Bestellung, z. B. Kontakt mit dem Support und Aufruf von Bestelldetails

Es müssen mindestens 1 Artikel und maximal 6 Artikel enthalten sein.

rejectionInfo RejectionInfo

Erforderlich, wenn orderState.state = "REJECTED".

cancellationInfo CancellationInfo

Erforderlich, wenn orderState.state = "CANCELLED".

inTransitInfo InTransitInfo

Dieses Feld wurde eingestellt.

fulfillmentInfo FulfillmentInfo

Dieses Feld wurde eingestellt.

receipt Receipt

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

Geben Sie die für den Nutzer sichtbare Bestell-ID auf dem Beleg an.

totalPrice Price

Gesamtpreis der Bestellung.

infoExtension FoodOrderUpdateExtension

Hier werden weitere Details zur Auftragsaktualisierung definiert, 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 Properties für den Typ PickupInfo aufgeführt:

Attribut Typ Beschreibung
pickupTimeIso8601 String

Geschätzte Abholzeit im Zeitstempelformat ISO 8601: „{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z“ oder im Format für die Dauer: „P(n)Y(n)M(n)DT(n)H(n)M(n)S“. So steht beispielsweise PT90M für eine Dauer von 90 Minuten. Der Standardwert „PT0M“ gibt an, dass die bevorzugte Abholzeit so schnell wie möglich ist. Referenz: https://de.wikipedia.org/wiki/ISO_8601#Kombinierte_Darstellung_von_Datum_und_Uhrzeit Verwenden Sie diesen Parameter, um die geschätzte Abholzeit während der Antwort auf die Kasse zu aktualisieren.

Beispiel: PT90M

Das folgende Beispiel zeigt ein PickupInfo-Element:

Beispiel

{
  "pickupTimeIso8601": "PT90M"
}

PostalAddress

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

Attribut Typ Beschreibung
regionCode String

Erforderlich.

Ein Ländercode mit zwei Buchstaben.

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 beispielsweise ein Bundesland, eine Provinz, eine Oblast oder eine Präfektur sein.

Beispiel: CA

locality String

Die Stadt für diesen Standort. Lassen Sie in Regionen der Welt, in denen Postorte nicht hinreichend definiert sind oder nicht dieser Struktur entsprechen, diese Angabe leer und verwenden Sie stattdessen das Feld „addressLines“.

Beispiel: Mountain View

addressLines List<String>

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

Beispiel: [ "1350 Charleston Road" ]

recipients List<String>

Liste der Empfänger einer Bestellung. Dieses Feld ist nur in „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 Properties für den Typ Price aufgeführt:

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

Erforderlich.

Der Gutscheincode der Aktion.

amount Money

Erforderlich.

Angebot

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

Attribut Typ Beschreibung
coupon String

Erforderlich.

Der Gutscheincode der Aktion.

ProposedOrder

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

Attribut Typ Beschreibung
id String

Optionale ID für den vorgeschlagenen Antrag.

cart Cart

Erforderlich.

Die Artikel des Nutzers.

otherItems List<LineItem>

Vom Anbieter hinzugefügte Artikel, z. B. Versandkosten, andere Gebühren und Steuern. „otherItems“ kann auch Trinkgeld und/oder Rabatt enthalten, die vom Nutzer hinzugefügt wurden.

Darf maximal 10 Elemente enthalten.

image Image

Bild, das mit der vorgeschlagenen Verfügung verknüpft ist.

totalPrice Price

Erforderlich.

Gesamtpreis der vorgeschlagenen Bestellung.

extension FoodOrderExtension

Erforderlich.

Hier werden Informationen zur Auftragsausführung für Essensbestellungen definiert.

disclaimers List<Disclaimer>

Entspricht den Haftungsausschlüssen, 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 Properties für den Typ SublineNote aufgeführt:

Attribut 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 die Order.

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

Attribut Typ Beschreibung
order Order

Erforderlich.

Bestellung mit Zahlungsdetails.

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

Auftragsausführung beantragen

AppRequest

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

Attribut Typ Beschreibung
isInSandbox Boolesch

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

conversation Conversation
inputs List<Input>

Erforderlich.

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

Es 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 verknüpfen.

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

Attribut 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 den Bezahlvorgang eines Einkaufswagens.

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

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

Erforderlich.

Legen Sie „actions.foodordering.intent.CHECKOUT“ für die Zahlungsanfragenachricht ODER „actions.intent.TRANSACTION_DECISION“ für die Bestellanfragenachricht fest.

arguments List<Argument>

Erforderlich.

Enthält den Einkaufswagen, der bezahlt werden soll, oder die Bestellung, die aufgegeben werden soll

Es muss genau 1 Element enthalten.

Argument

Enthält Details zu den Lebensmitteln, die der Nutzer kaufen möchte. Für den Bezahlvorgang gilt nur die Verlängerung. Für die Bestellung ist nur „transactionDecisionValue“ zulässig.

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

Attribut Typ Beschreibung
Es ist genau eine der folgenden Gruppen von Properties erforderlich.
extension Gruppe 1 Cart

Details zu den Lebensmitteln, die der Nutzer kaufen möchte.

transactionDecisionValue Gruppe 2 TransactionDecisionValue

Enthält die Bestellung, die aufgegeben werden soll, sowie Zahlungsdetails.

Auftragsausführungsantwort

AppResponse

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

Attribut Typ Beschreibung
expectUserResponse Const

Legen Sie „false“ fest.

Wert: False

finalResponse FinalResponse

Erforderlich.

Enthält Ihre Antwort auf die Kasse im Einkaufswagen.

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

Eine CheckoutResponseMessage ist eine AppResponse mit einer checkoutResponse oder error in der StructuredResponse.

SubmitOrderResponseMessage

Eine SubmitOrderResponseMessage ist eine AppResponse mit einer orderUpdate in der StructuredResponse.

FinalResponse

Ihre Antwort auf die Direktkauf-URL oder SubmitOrderRequestMessage.

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

Attribut Typ Beschreibung
richResponse RichResponse

Erforderlich.

Enthält Ihre Antwort auf die CheckoutRequestMessage oder SubmitOrderRequestMessage.

CheckoutResponse

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

Attribut Typ Beschreibung
proposedOrder ProposedOrder

Erforderlich.

Vorgeschlagene Reihenfolge für die Transaktion.

paymentOptions PaymentOptions

Erforderlich.

Die für den Nutzer ausgewählte Standardzahlungsoption.

additionalPaymentOptions List<PaymentOptions>

Alternative Zahlungsoptionen, die dem Nutzer zur Verfügung stehen.

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 die Kasse im Einkaufswagen oder die Nachricht „SubmitOrderRequestMessage“.

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

Attribut Typ Beschreibung
structuredResponse StructuredResponse

Erforderlich.

RichResponse

Enthält Ihre Antwort auf die Zahlung im Einkaufswagen.

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

Attribut Typ Beschreibung
items List<Item>

Erforderlich.

Es muss genau 1 Element enthalten.

StructuredResponse

Für „CheckoutResponseMessage“ kann dies eine der folgenden Optionen sein: ODER FoodErrorExtension: Gibt einen Fehler an der Kasse an. Die Antwort kann eine korrigierte ProposedOrder und PaymentOptions oder eine Fehlermeldung ohne PaymentOptions enthalten. Für „SubmitOrderResponseMessage“ ist nur „orderUpdate“ zulässig.

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

Attribut Typ Beschreibung
Es ist genau eine der folgenden Gruppen von Properties erforderlich.
checkoutResponse Gruppe 1 CheckoutResponse

Ausgecheckte Artikel zuzüglich Steuern und Rabatte.

error Gruppe 2 FoodErrorExtension

Bei den Artikeln im Einkaufswagen wurden Fehler festgestellt. Je nach Art des Fehlers kann diese Property eine korrigierte „ProposedOrder“ und „PaymentOptions“ oder nur eine Fehlermeldung ohne „PaymentOptions“ enthalten.

orderUpdate Gruppe 3 OrderUpdate

Asynchrone Bestellupdates

In diesem Abschnitt werden die allgemeinen Typen beschrieben, aus denen die Anfragen und Antworten einer typischen integrierten Aktionsinteraktion für die Bestellung von Essen bestehen.

AsyncOrderUpdateRequestMessage

Der Nutzer wird über Änderungen informiert, nachdem eine Bestellung gesendet und bestätigt wurde. Sie können den Nutzer beispielsweise darüber informieren, dass die Bestellung auf dem Weg ist oder dass sich der Preis geändert hat. Weitere Informationen finden Sie unter

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

Attribut Typ Beschreibung
isInSandbox Boolesch

Gibt an, dass es sich bei der Bestellung, für die dieses Update gesendet wurde, um eine Sandbox-Zahlung handelt.

customPushMessage CustomPushMessage

Erforderlich.

Enthält die Bestellaktualisierung für die Anfrage.

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 einen AsyncOrderUpdateRequestMessage gesendet haben, antwortet Google mit dem HTTP-Status 200 und einem leeren Textkörper. Wenn die Aktualisierung nicht erfolgreich war, antwortet Google mit Details dazu, warum die Aktualisierung des Auftrags fehlgeschlagen ist.

Arten von Bestellaktualisierungen

Schaltfläche

Hiermit wird ein Benutzeroberflächenelement definiert, das Sie hinzufügen können, um eine Nutzerinteraktion zu ermöglichen.

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

Attribut Typ Beschreibung
title String

Erforderlich.

Das Anzeigelabel. Verwenden Sie die Groß- und Kleinschreibung mit maximal 30 Zeichen, damit die Texte korrekt dargestellt werden.

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 Properties für den Typ CancellationInfo aufgeführt:

Attribut Typ Beschreibung
reason String

Erforderlich.

Der angezeigte Text für den Ablehnungsgrund, wenn OrderState.state „CANCELLED“ ist.

Beispiel: Restaurant closed

Das folgende Beispiel zeigt ein CancellationInfo-Element:

Beispiel

{
  "reason": "Insufficient inventory"
}

FoodOrderUpdateExtension

Bei diesem Typ wird dem Nutzer ein geschätzter Zeitraum angegeben, in dem die Bestellung geliefert oder abgeholt werden kann. Senden Sie diese Erweiterung in einer 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 Erfüllungsintervall an, damit die Erwartungen der Nutzer immer erfüllt werden. Wenn die Bestellung beispielsweise voraussichtlich heute um 13:00 Uhr geliefert wird, sollten Sie ein geschätztes Intervall senden, das den Schwankungen aufgrund der Verkehrslage entspricht, z. B. heute von 12:45 Uhr bis 13:15 Uhr.

Eine ISO 8601-Dauer oder ein ISO 8601-Zeitstempel bezieht sich auf das Intervall vom updateTime des OrderUpdate (im Grunde „jetzt“) bis zum updateTime plus duration. Verwenden Sie dieses Format nur, wenn „jetzt“ tatsächlich eine angemessene Erwartung ist.

Ein ISO 8601-Intervall bezieht sich auf das Intervall vom Anfang bis zum Ende.

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

Attribut Typ Beschreibung
@type Const

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 geschätzte Zeit, zu der die Bestellung geliefert oder zur Abholung bereitsteht. Der String muss im ISO 8601-Format angegeben sein und einem Intervall statt einer einzelnen festen Uhrzeit entsprechen. Zulässige Konventionen sind Intervalle, Zeiträume und Datumsangaben/Uhrzeiten. Dieses Feld kann in SubmitOrderResponseMessage oder AsyncOrderUpdateRequestMessage gesendet werden, wenn die Informationen verfügbar sind oder es eine Änderung gibt, z. B. eine frühere oder spätere Ankunft.

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

foodOrderErrors List<FoodOrderError>

Hier werden die Fehler beschrieben, die nach der Bestellung aufgetreten sind. Wir empfehlen, pro Einkaufswagen oder pro Artikel einen Fehler anzugeben. Verwenden Sie „FoodOrderUpdateExtension.FoodOrderErrors“ für alle Fehler, die nicht von „RejectionInfo“ abgedeckt werden.

Es muss mindestens 1 Artikel 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 Properties für den Typ FulfillmentInfo aufgeführt:

Attribut Typ Beschreibung
Es ist genau eine der folgenden Gruppen von Properties erforderlich.
deliveryTime Gruppe 1 ISO-Zeitstempel

Verwenden Sie „estimatedFulfillmentTimeIso8601“ in der Nachricht vom Typ „FoodOrderingUpdateExtension“.

pickupTime Gruppe 2 ISO-Zeitstempel

Verwenden Sie „estimatedFulfillmentTimeIso8601“ in der Nachricht „FoodOrderingUpdateExtension“.

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 Properties für den Typ InTransitInfo aufgeführt:

Attribut Typ Beschreibung
updatedTime ISO-Zeitstempel

Verwenden Sie „estimatedFulfillmentTimeIso8601“ in der Nachricht „FoodOrderingUpdateExtension“.

Das folgende Beispiel zeigt ein InTransitInfo-Element:

Beispiel

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

LineItemUpdate

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

Attribut 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 Properties für den Typ OpenUrlAction aufgeführt:

Attribut Typ Beschreibung
url String

Erforderlich.

Die Aktion, die durch Klicken oder Berühren der Schaltfläche ausgelöst wird. Die Liste der gültigen 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“ sein.

Beispiel: https://www.google.com

OrderManagementAction

Über die Bestellverwaltung können Nutzer nach der Bestellung Support erhalten. Sie sollte in jeder OrderUpdate innerhalb der Bestellung AppResponse und in jeder nachfolgenden AsyncOrderUpdateRequestMessage gesendet werden. Die für eine bestimmte Bestellung gesendeten Bestellverwaltungsaktionen können je nach Status variieren.

Im Status „CREATED“ (ERSTELLT) kann CUSTOMER_SERVICE beispielsweise auf die Telefonnummer deines Kundensupports verweisen. Im Status „BEStätigt“ kann CUSTOMER_SERVICE dann zur Telefonnummer des Restaurants wechseln, wenn dies die beste Kontaktmöglichkeit für den Kunden ist. Sobald der Bestellstatus „ABGESCHLOSSEN“ ist, kann CUSTOMER_SERVICE auch auf deine Support-E-Mail-Adresse verweisen.

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

Attribut 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

Hier werden Typen für OrderManagementAction definiert.

Der Typ OrderManagementActionType hat folgende mögliche Werte:

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

OrderState

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

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

Attribut Typ Beschreibung
state OrderStateEnum

Erforderlich.

label String

Erforderlich.

Der für den Nutzer sichtbare Anzeigestring für den Status. Achten Sie auf korrekte Groß- und Kleinschreibung.

Beispiel: Your order has been received

Das folgende Beispiel zeigt ein OrderState-Element:

Beispiel

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

OrderStateEnum

Hier werden Typen für OrderState definiert.

Der Typ OrderStateEnum hat folgende mögliche Werte:

  • CREATED: Bestellung wurde vom Integrationspartner erstellt und wartet auf Bestätigung durch den Anbieter. Entspricht dem Kaufstatus „Bestellt“.
  • CONFIRMED: Die Bestellung wurde vom Anbieter bestätigt und ist aktiv. Entspricht dem Kaufstatus „Akzeptiert“.
  • REJECTED: Bestellung wurde vom Integrator oder Anbieter abgelehnt. Entspricht dem Kaufstatus „Abgelehnt“.
  • CANCELLED: Der Nutzer hat die Bestellung storniert. Entspricht dem Kaufstatus „Storniert“.
  • IN_PREPARATION: Die Bestellung wird vorbereitet. Entspricht dem Kaufstatus „Status unbekannt“.
  • READY_FOR_PICKUP: Das Essen kann abgeholt werden. Entspricht dem Kaufstatus „Bereit zur Abholung“.
  • IN_TRANSIT: Die Bestellung wird geliefert. Entspricht dem Kaufstatus „In Bearbeitung“.
  • FULFILLED: Der Nutzer hat das erhalten, was er bestellt hat. Entspricht dem Kaufstatus „Abgeholt“.

Beleg

Senden Sie diesen Typ in einer Bestellung vom Typ „Senden“ AppResponse, wobei OrderState „CONFIRMED“, „FULFILLED“ oder „IN_TRANSIT“ ist. Senden Sie den Beleg, sobald die userVisibleOrderId verfügbar ist. Sie müssen den Beleg bei nachfolgenden Aktualisierungen nicht noch einmal einreichen.

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

Attribut Typ Beschreibung
userVisibleOrderId String

Erforderlich.

Erforderlich, wenn der Status der Bestellung „CONFIRMED“, „IN_TRANSIT“ oder „FULFILLED“ ist. Dieses Feld ist die einzige für Nutzer sichtbare ID für diese Bestellung (in der Regel die Bestell-ID des Restaurants), die sowohl auf dem Beleg des Integrators als auch auf der Google-Bestellkarte angezeigt wird. Der Nutzer muss diese ID verwenden können, um sich beim Kundenservice des Anbieters und Integrators auf seine Bestellung zu beziehen. Sie müssen diese ID nur einmal in einer OrderUpdate-Anfrage angeben. Bis dahin ist die „actionOrderId“ die „userVisibleOrderId“. Möglicherweise ist die „userVisibleOrderId“ erst verfügbar, 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 Properties für den Typ RejectionInfo aufgeführt:

Attribut Typ Beschreibung
type RejectionType

Erforderlich.

reason String

Grund für die Ablehnung, der für die interne Protokollierung 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 kann folgende Werte haben:

  • INELIGIBLE: Der Nutzer ist aufgrund von Richtlinienverstößen oder aus Risikogründen nicht berechtigt.
  • PAYMENT_DECLINED: Es gibt ein Problem mit der Zahlungsabwicklung.
  • UNAVAILABLE_SLOT: Die Bestellung kann nicht zum in DeliveryInfo oder PickupInfo angegebenen Zeitpunkt für die Vorbestellung ausgeführt werden.
  • PROMO_NOT_APPLICABLE: Es gibt ein Problem mit dem Angebot.
  • UNKNOWN: Sonstige Gründe

Zahlungsbezogene Typen

In diesem Abschnitt werden die zahlungsbezogenen Typen beschrieben, die für die Auftragsausführung bei der Bestellung von Essen verwendet werden.

ActionProvidedPaymentOptions

Anforderungen an eine vom Nutzer bereitgestellte Zahlungsmethode

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

Attribut Typ Beschreibung
paymentType PaymentType

Erforderlich.

displayName String

Erforderlich.

Name des Zahlungsmittels, das auf dem Beleg angezeigt wird.

Beispiel: Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

Zusätzliche Daten für den Zahlungstyp „ON_FULFILLMENT“. In diesem Feld können Sie beispielsweise angeben, ob bei der Abwicklung Bargeld oder Kartenzahlung unterstützt werden.

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 Zahlungskarten verknüpft ist, die im Google-Konto des Nutzers gespeichert sind. Die zurückgegebenen Zahlungsdaten umfassen die persönliche Kontonummer (PAN) mit dem Ablaufmonat und dem 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 für eine angeforderte Rechnungsadresse festlegen.

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

Attribut Typ Beschreibung
format String

Das Format der Rechnungsadresse ist erforderlich, um die Transaktion abzuschließen. MIN: Name, Ländercode und Postleitzahl. VOLLSTÄNDIG: 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 der Google Pay API für Ihre Website konfigurieren.

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

Attribut Typ Beschreibung
allowedAuthMethods List<Const>

Erforderlich.

Felder, die zur Authentifizierung einer Kartentransaktion unterstützt werden.

Es muss mindestens 1 Artikel enthalten.

allowedCardNetworks List<AllowedCardNetworks>

Erforderlich.

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

Es muss mindestens 1 Artikel enthalten.

billingAddressRequired Boolesch

Legen Sie „wahr“ fest, wenn eine Rechnungsadresse erforderlich ist. Fordern Sie eine Rechnungsadresse nur dann an, wenn dies zur Bearbeitung der Transaktion erforderlich ist. Zusätzliche Datenanfragen können den Bezahlvorgang erschweren und zu niedrigeren Conversion-Raten führen.

billingAddressParameters BillingAddressParameters

Die erwarteten Felder, die zurückgegeben werden, wenn „billingAddressRequired“ auf „true“ festgelegt ist.

cvcRequired Boolesch

Legen Sie „wahr“ fest, wenn Sie TimesofMoney verwenden, und „falsch“ 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 Properties für den Typ GoogleProvidedPaymentInstrument aufgeführt:

Attribut Typ Beschreibung
instrumentToken String

Erforderlich.

Base64-codierter String, der das Zahlungstoken für die Abrechnung des Nutzers über einen teilnehmenden Google Pay-Abwickler enthält, gemäß den zuvor angegebenen GoogleProvidedPaymentOptions.

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 an die von Google bereitgestellte Zahlungsmethode

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

Attribut Typ Beschreibung
facilitationSpecification String

Ein JSON-Objekt vom Typ „PaymentDataRequest“ als String. Mit diesem Objekt können Sie die Unterstützung der Google Pay API für Ihre Website konfigurieren.

supportedCardNetworks List<SupportedCardNetworks>

Verwenden Sie stattdessen „facilitationSpecification“. Art der vom Kundenservicemitarbeiter unterstützten Kartennetzwerke.

Dieses Feld wurde eingestellt.

prepaidCardDisallowed Boolesch

Verwenden Sie stattdessen „facilitationSpecification“. Gibt an, ob eine Prepaidkarte als Zahlungsmittel 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 der Google Pay API für Ihre Website konfigurieren.

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

Attribut Typ Beschreibung
merchantId String

Die von Google Pay vergebene Google-Händler-ID.

merchantName String

Erforderlich.

Der Name des Händlers, codiert als UTF-8. Der Name des Händlers wird auf der Zahlungsseite angezeigt.

OnFulfillmentPaymentData

Verwende dieses Objekt, um zusätzliche Daten für den Zahlungstyp „ON_FULFILLMENT“ zu senden.

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

Attribut Typ Beschreibung
supportedPaymentOptions List<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

Hier werden Typen für TokenizationParameters definiert.

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

Attribut 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 der Google Pay API für Ihre Website konfigurieren.

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

Attribut Typ Beschreibung
apiVersion Const

Erforderlich.

Hauptversion der API.

Wert: 2

apiVersionMinor Const

Erforderlich.

Nebenversion der API.

Wert: 0

merchantInfo MerchantInfo

Erforderlich.

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

allowedPaymentMethods List<PaymentMethod>

Erforderlich.

Gibt die Unterstützung für eine oder mehrere von der Google Pay API unterstützte Zahlungsmethoden an.

transactionInfo TransactionInfo

Erforderlich.

Details zur Autorisierung der Transaktion, je nachdem, 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 für eine Bestellung.

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

Attribut Typ Beschreibung
displayName String

Erforderlich.

Der für Nutzer sichtbare Name des Zahlungsmittels, der auf dem Beleg angezeigt werden soll.

paymentType PaymentType

Erforderlich.

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

Token, das von der Aktion verwendet werden kann. Geben Sie diesen Wert nur an, wenn Sie in der CheckoutResponseMessage „GoogleProvidedPaymentOptions“ als Zahlungsoption 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"
}

Zahlungsmethode

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

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

Attribut Typ Beschreibung
type Const

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 Zahlungsmitteltyps erforderlich sind.

tokenizationSpecification TokenizationSpecification

Erforderlich.

Konfigurieren Sie ein Konto oder einen Entschlüsselungsanbieter, um Zahlungsinformationen zu erhalten. Diese Property 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 Properties für den Typ PaymentOptions aufgeführt:

Attribut Typ Beschreibung
Es ist genau eine der folgenden Gruppen von Properties erforderlich.
googleProvidedOptions Gruppe 1 GoogleProvidedPaymentOptions

Schließt sich mit „actionProvidedOptions“ aus. Verwenden Sie diese für Onlinezahlungen mit gPay.

actionProvidedOptions Gruppe 2 ActionProvidedPaymentOptions

Schließt sich gegenseitig mit „googleProvidedOptions“ aus. Verwenden Sie diese Option für „Barzahlung bei Lieferung“ oder „Zahlung bei Lieferung“.

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 kann folgende Werte haben:

  • Cash
  • Card
  • UPI
  • Paytm

PaymentType

Der Typ PaymentType hat folgende mögliche Werte:

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

SupportedCardNetworks

Hier werden Typen für GoogleProvidedPaymentOptions definiert.

Der Typ SupportedCardNetworks hat folgende mögliche Werte:

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

TokenizationParameters

Definiert Typen im Zusammenhang mit GoogleProvidedPaymentOptions.

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

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

Erforderlich.

Verwenden Sie stattdessen „facilitationSpecification“. Zulässige Tokentypen

parameters Parameters

Verwenden Sie stattdessen „facilitationSpecification“.

TokenizationSpecification

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

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

Attribut Typ Beschreibung
type Const

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, mit der die Zahlungsfähigkeit eines Zahlungspflichtigen bestimmt wird. Damit wird ein Dialogfeld für die Zahlungsautorisierung angezeigt.

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

Attribut Typ Beschreibung
currencyCode String

Erforderlich.

Alphabetischer Währungscode gemäß ISO 4217.

transactionId String

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

totalPriceStatus Const

Erforderlich.

Verwenden Sie „ESTIMATED“ (GESCHÄTZT) als Standard. Der Gesamtpreis kann sich je nach den Details der Antwort ändern, z. B. aufgrund der Mehrwertsteuer, die anhand einer Rechnungsadresse erhoben wird.

Wert: ESTIMATED

totalPrice String

Erforderlich.

Der Geldwert der Transaktion mit einer optionalen Dezimalgenauigkeit von zwei Dezimalstellen. Dieses Feld sollte denselben Wert wie „cart.totalPrice“ haben.

Das folgende Beispiel zeigt ein TransactionInfo-Element:

Beispiel

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