Schema für Auftragsausführungsaktionen

Auf dieser Seite wird die Nutzlast des Webdiensts für die Auftragsausführung (Order with Google API) beschrieben, der bei der Arbeit mit der integrierten Action API von Order with Google zum Einsatz kommt. Für eine maschinenlesbare Version dieser Informationen können Sie das JSON-Schema herunterladen.

Basistypen

Sammlung

Enthält Angaben zur Bestellung und gibt an, ob die Bestellung zum Abholen oder Liefern angefordert wird. Ein Einkaufswagen enthält außerdem Lieferdetails, Trinkgeld und die Lieferadresse. Das Objekt Cart ist in einem Checkout AppRequest definiert. Sie fügen eine Kopie des Einkaufswagens in Ihre Checkout AppResponse ein.

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

Property Typ Beschreibung
@type Konst

Der Typ dieses Objekts. Lassen Sie dieses Feld weg, wenn das übergeordnete Einkaufswagen-Objekt Teil von ProposeOrder 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 Liste<LineItem>

Erforderlich.

Liste der Waren oder Dienstleistungen, die der Nutzer bestellt.

Darf nicht weniger als 1 Element enthalten.

promotions Liste<Promotion>

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

notes String

Hinweise zur Bestellung oder Lieferanleitung

extension FoodCartExtension

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

Das folgende Beispiel zeigt ein Cart-Element:

Beispiel 1

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

Beispiel 2

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

Kontakt

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

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

Property Typ Beschreibung
displayName String

Der Name des Empfängers der Bestellung, wie er angezeigt werden soll. Verwenden Sie dieses Feld, wenn „firstName“ und „lastName“ nicht angegeben sind.

Beispiel: Lovefood Ordering

email String

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

Beispiel: ilovefood@example.com

firstName String

Vorname der Person, die die Bestellung erhält.

Beispiel: Lovefood

lastName String

Nachname der Person, die die Bestellung erhält.

Beispiel: Ordering

phoneNumber String

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

Beispiel: +16501234567

emailVerified Boolesch

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

Das folgende Beispiel zeigt ein Contact-Element:

Beispiel

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

Benutzerdefinierte Push-Nachricht

Enthält die OrderUpdate für die Anfrage.

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

Property Typ Beschreibung
orderUpdate OrderUpdate

Erforderlich.

Aktualisierte Informationen für die 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"
    }
  }
}

Lieferinformationen

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

Property Typ Beschreibung
deliveryTimeIso8601 String

Geschätzte Lieferdauer im Format von ISO 8601-Zeitstempeln: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" oder Dauerformat: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Beispiel: PT90M stellt eine Dauer von 90 Minuten dar. Der Standardwert PT0M gibt an, dass die bevorzugte Lieferzeit so bald wie möglich ist. Referenz: https://de.wikipedia.org/wiki/ISO_8601#Kombiniertes_Datum und Uhrzeit Hiermit können Sie die geschätzte Lieferdauer während der Kasse aktualisieren.

Beispiel: PT90M

Das folgende Beispiel zeigt ein DeliveryInfo-Element:

Beispiel

{
  "deliveryTimeIso8601": "PT90M"
}

Haftungsausschluss

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

Property Typ Beschreibung
predefinedMessage PredefinedMessage

Erforderlich.

Beim Bezahlen werden im Haftungsausschluss vordefinierte Nachrichten angezeigt.

feeAmount Money

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

feeAmountRange FeeAmountRange

Der Partner berechnet dem Restaurant eine Gebühr in Höhe von N bis M.

feePercent Number

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

feePercentRange FeePercentRange

Der Partner berechnet dem Händler eine Gebühr in Höhe 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 Bestellzeitpunkt geschlossen.
  • NO_CAPACITY: Es steht keine Servicekapazität zur Verfügung (z. B. ein vorübergehender Ausfall aufgrund von Spitzenzeiten).
  • NO_COURIER_AVAILABLE: Die Bestellung kann aufgrund eines eingeschränkten Lieferpersonals nicht bearbeitet werden.
  • REQUIREMENTS_NOT_MET: Die Einschränkungen für die Annahme der Bestellung wurden nicht erfüllt (z. B. die Mindestgröße für den Warenkorb).
  • UNAVAILABLE_SLOT: Die Bestellung kann nicht zu der im Voraus angegebenen Lieferzeit abgewickelt werden.
  • OUT_OF_SERVICE_AREA: Die Bestellung kann nicht an die Adresse des Nutzers geliefert werden.
  • PROMO_EXPIRED: Die Werbeaktion konnte nicht angewendet werden, da das Angebot abgelaufen ist.
  • PROMO_NOT_APPLICABLE: Generischer Fehlercode, um alle Fälle zu vermeiden, in denen der Gutscheincode nicht angewendet werden kann, wenn keiner der anderen Gutscheincodes passt.
  • PROMO_NOT_RECOGNIZED: Der Gutscheincode wurde nicht erkannt.
  • PROMO_ORDER_INELIGIBLE: Für die aktuelle Bestellung ist dieser Gutschein nicht verfügbar.
  • 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 Gesamtpreisen.
  • INVALID: Eine Position, FulfillmentOption oder Werbeaktion enthält ungültige Daten.
  • NOT_FOUND: Eine Position, FulfillmentOption oder eine Werbeaktion wurde nicht gefunden.
  • PRICE_CHANGED: Der Preis eines Artikels hat sich geändert.

GebührsbetragBereich

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

Property Typ Beschreibung
minFeeAmount Money

Die Untergrenze für den Gebührenbetrag wurde in Rechnung gestellt.

maxFeeAmount Money

Die Obergrenze für den Gebührenbetrag wurde in Rechnung gestellt.

Gebühr in Prozent

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

Property Typ Beschreibung
minFeePercent Number

Die Untergrenze des Gebührenprozentsatzes wurde berechnet.

maxFeePercent Number

Obergrenze für Gebühr in Prozent.

Lebensmitteleinkaufswagen-Erweiterung

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

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

Property Typ Beschreibung
@type Konst

Typ der 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.

Auftragsausführung der Nutzer.

location Location

In der CheckoutRequestMessage gibt dieses Feld die Lieferadresse an, die für die Lieferung erforderlich ist. 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"
  }
}

Lebensmittel-Fehlererweiterung

Kennzeichnet mindestens einen Fehler, der bei der Verarbeitung einer Anfrage aufgetreten ist. In der folgenden Tabelle werden die Felder des Typs FoodErrorExtension beschrieben. Fehler können in einem CheckoutResponse gesendet werden.

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

Property Typ Beschreibung
@type Konst

Erforderlich.

Typ der Erweiterung.

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

foodOrderErrors Liste<FoodOrderError>

Erforderlich.

Array von FoodOrderError-Objekten, die die aufgetretenen Fehler beschreiben Empfohlener Fehler pro Einkaufswagen oder Artikel.

Darf nicht weniger als 1 Element 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".

Ein neuer vorgeschlagener Auftrag mit Korrekturen. Gibt dieses Objekt zurück, wenn in der ursprünglichen ProposeOrder-Klasse wiederholbare Fehler enthalten sind. Beispielsweise ist eine Preisänderung für eine oder mehrere Positionen im Einkaufswagen ein behebbarer Fehler. Wiederherstellbare Fehler mit einem gültigen ProOrderOrder werden in die Bestätigungsphase eingespeist, sodass der Nutzer seinen Einkaufswagen nicht ü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".

Standard-Zahlungsoptionen für den Nutzer ausgewählt.

additionalPaymentOptions Liste<PaymentOptions>

Alternative Zahlungsoptionen für Nutzer

Das folgende Beispiel zeigt ein FoodErrorExtension-Element:

Beispiel

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

Lebensmittelerweiterung

Definiert Add-ons für Lebensmittel.

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

Property Typ Beschreibung
@type Konst

Erforderlich.

Typ der 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 Liste<FoodItemOption>

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

Das folgende Beispiel zeigt ein FoodItemExtension-Element:

Beispiel

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

Lebensmitteloption

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

Property Typ Beschreibung
id String

Eindeutige ID, die von Google zugewiesen wird. Verwenden Sie dieses Feld beim Senden eines FoodOrderError- oder AsyncOrderUpdateRequest-Felds zur Unterscheidung in Fällen, in denen ein Einkaufswagen mehrere Artikel mit derselben „offerId“ enthält.

Beispiel: 39231093

offerId String

Die Angebots-ID des Artikels.

Beispiel: 912835081

name String

Der Name der Option.

Beispiel: Honey Mustard

price Money
note String

Hinweis zur Option.

quantity Number

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

Beispiel: 3

subOptions Liste<FoodItemOption>

Unteroptionen für die Option, falls vorhanden.

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

Das folgende Beispiel zeigt ein FoodItemOption-Element:

Beispiel 1

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

Beispiel 2

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

Fehler bei Essensbestellung

Enthält Details zu Fehlern in einem CheckoutResponse.

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

Property Typ Beschreibung
error Error

Erforderlich.

id String

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

Dieses Feld ist für Fehler auf Artikelebene erforderlich. Das ist die von Google zugewiesene „LineItem.id“ für Menüelemente oder „FoodItemOption.id“ für Add-ons.

description String

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

updatedPrice Money

Erforderlich, wenn error = "PRICE_CHANGED".

Neuer Preis eines Artikels, der den Fehler verursacht hat Nur erforderlich, wenn der Fehler "PRICE_CHANGED" lautet.

availableQuantity Ganzzahl

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

Neue verfügbare Menge des Artikels, der den Fehler verursacht hat. 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 der Bestellung.

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

Property Typ Beschreibung
@type Konst

Typ der Erweiterung. Dieses Feld ist immer auf "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension" festgelegt.

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

availableFulfillmentOptions Liste<FulfillmentOption>

Stellt verfügbare Optionen für die Auftragsausführung für den Auftrag dar.

optinForRemarketing Boolesch

Nutzeranfrage zur Aktivierung Ihrer Marketingkanäle. Standardmäßig dürfen Sie keine Marketinginhalte ohne Nutzereinwilligung senden. Wenn „optForForRemarketing“ auf „true“ gesetzt ist, können Sie den Nutzer abonnieren. Wenn „optforForRemarketing“ auf „false“ gesetzt oder nicht vorhanden ist, müssen Sie den Abostatus in Ihrem System beibehalten. Nutzer können die Option nicht über Google deaktivieren, sondern nur über die entsprechende Abofunktion 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
}

Fulfillment-Option

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

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

Property Typ Beschreibung
offerId String

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

fulfillmentInfo FulfillmentOptionInfo

Erforderlich.

expiresAt ISO-Zeitstempel

Zeitpunkt, zu dem diese Auftragsausführungsoption abläuft.

price Money

Kosten dieser Option.

Das folgende Beispiel zeigt ein FulfillmentOption-Element:

Beispiel

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

Informationen zur Auftragsausführung

Definiert Informationen im Zusammenhang mit FulfillmentInfo.

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

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

Falls vorhanden, zeigt diese an.

pickup Gruppe 2 PickupInfo

Falls vorhanden, gibt das einen Abholauftrag an.

Bild

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

Property Typ Beschreibung
sourceUrl String

Erforderlich.

URL für das Bild. Das Bild muss mindestens 72 × 72 Pixel groß sein. Die besten Ergebnisse erzielen Sie mit Bildern, die mindestens 216 × 216 Pixel groß sind. Das Bild muss kleiner als 6 MB und 64 Megapixel sein.

LineItem

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

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

Property Typ Beschreibung
id String

Erforderlich, wenn type = "REGULAR".

Für eine Position in einem Einkaufswagen (ProposeOrder.cart.lineItems[0].id) ist dies die eindeutige ID, die von Google beim Erstellen des Auftrags erstellt wird. Der Wert der ID für eine Position in einem ProOrderOrder (ProprovidedOrder.otherItems[0].id), mit der Artikel wie Liefergebühren und Steuern hinzugefügt werden, wird vom Anbieter definiert. Beispiel: In einem Einkaufswagen befinden sich zwei identische Artikel mit unterschiedlichen Zubereitungsanleitungen, z. B. zwei mittelgroße Pizzen mit unterschiedlicher Garnierung. In diesem Fall haben beide Artikel dieselbe Basis-Angebots-ID. Wenn Sie eine Anfrage zur Bestellaktualisierung senden, um anzugeben, dass ein Artikel abgelehnt wurde, verwenden Sie diese ID als Unterscheidungsmerkmal. Das heißt, wenn eine der Pizzen abgelehnt wird, weil ein bestimmter Belag fehlt, kann die ID Google dabei helfen, den Artikel in der Reihenfolge zu ermitteln, auf die Sie sich beziehen. Dieses Feld ist mit Ausnahme von anderen Elementen erforderlich.

name String

Erforderlich.

Name der Position Dieser String ist für den Nutzer sichtbar und sollte nach Möglichkeit im Groß- und Kleinschreibung formuliert werden, z. B. „Liefergebühr“ und „Servicegebühr“. Dieses Feld wird bei Nutzern auf 100 Zeichen gekürzt.

type LineItemType

Erforderlich.

quantity Ganzzahl

Erforderlich, wenn type = "REGULAR".

Anzahl der enthaltenen Elemente. Nicht zutreffend für ProposeOrder.otherItems.

description String

Beschreibung des Artikels.

price Price

Erforderlich.

Der Preis des Artikels oder der Artikel. Dieser Wert stellt den Gesamtpreis aller Waren oder Dienstleistungen für diese Position dar. Addieren Sie also die Kosten aller Add-ons und multiplizieren Sie sie mit der Menge. Beispiel: Wenn ein Artikel für 10 € eine Menge von 3 hat, beträgt der Preis 30 €. Für eine Pizza mit einem Grundpreis von 5 $und einem Add-on für 1 $beträgt der Preis 6 $. Für zwei Pizzen (Menge = 2) mit einem Grundpreis von 5 $und jeweils mit einem Add-on für 1 $beträgt der Preis 12 $. Jede Position sollte einen Preis haben, auch wenn der Preis "0" ist. Wenn der Typ DISCOUNT ist, geben Sie den Wert als negativ an (z. B. "-2").

subLines Liste<SublineNote>

Optional und nur gültig, wenn der Typ "REGULAR" ist. In diesem Feld kann ein artikelspezifischer Hinweis des Nutzers in der Zahlungs- und Bestellanfrage enthalten sein. Achten Sie darauf, dass der Händler den Hinweis erhält, wenn er zur Verfügung gestellt wird. Es ist in der Anfrage als subLines[0].note enthalten. Dies ist der einzige Wert in diesem Feld, wenn er in einer Anfrage vorhanden ist.

Darf nicht mehr als 1 Element enthalten.

offerId String

Erforderlich, wenn type = "REGULAR".

Die Angebots-ID des MenuItems für den Artikel. Nicht zutreffend für ProposeOrder.otherItems.

extension FoodItemExtension

Definiert Add-ons für Lebensmittel.

Das folgende Beispiel zeigt ein LineItem-Element:

Beispiel 1

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

Beispiel 2

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

Werbebuchungstyp

Der Typ LineItemType hat folgende mögliche Werte:

  • REGULAR: Werbebuchung für Waren. Gilt für Cart.lineItems.
  • TAX: Steuerposition. Gilt für PropositionOrder.otherItems.
  • DISCOUNT: Werbebuchung mit Rabatt. Der Preis sollte negativ sein. Gilt für PropositionOrder.otherItems.
  • GRATUITY: Werbebuchung vom Typ „Schwerpunkt“. Dieser Wert ist im Allgemeinen für die vom Nutzer ausgewählte Tipp „SubmitOrderRequestMessage“ reserviert. Gilt für PropositionOrder.otherItems.
  • DELIVERY: Auslieferungswerbebuchung. Gilt für PropositionOrder.otherItems.
  • SUBTOTAL: Zwischensumme der Werbebuchung. Gilt für PropositionOrder.otherItems.
  • FEE: Zusätzliche Werbebuchung, die nicht von den anderen Typen abgedeckt wird. Gilt für PropositionOrder.otherItems.

Standort

Gibt eine Adresse für Essensbestellungen an. Der Typ Location wird in einem Cart verwendet, um das Ziel eines Lieferauftrags anzugeben. Der endgültige Standort ist auch in TransactionDecisionValue vorhanden, wenn der Nutzer die Bestellung aufgibt. Bei Bestellungen mit Abholoption wird ein Standort überhaupt nicht oder gar nicht angegeben.

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

Property Typ Beschreibung
coordinates Coordinates
formattedAddress String

Angezeigte Adresse des Standorts.

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

postalAddress PostalAddress
zipCode String

Beispiel: 90210

city String

Der Name der Stadt.

Beispiel: Los Angeles

notes String

Hinweise zum Standort, z. B. Gatecodes Sie darf maximal 500 Zeichen umfassen.

Beispiel: Gate code is #111

Das folgende Beispiel zeigt ein Location-Element:

Beispiel

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

Händler

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

Property Typ Beschreibung
id String

Die ID des Händlers. Wenn dieses Flag angegeben ist, wird es mit „Restaurant.@id“ im Restaurantfeed abgeglichen.

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

name String

Erforderlich.

Für den Nutzer sichtbarer 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"
}

Money

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

Property Typ Beschreibung
currencyCode String

Erforderlich.

Ein dreistelliger Währungscode im Format ISO 4217.

Beispiel: USD

units String

Die ganzen Einheiten des Betrags. Beispiel: Wenn currencyCode "USD" ist, dann ist "1" Einheit ein US-Dollar.

Beispiel: 36

nanos Ganzzahl

Anzahl der Nanoeinheiten (10^-9) des Betrags. Der Wert muss zwischen -999.999.999 und +999.999.999 liegen. Verwenden Sie die folgenden Regeln: Wenn die Einheiten positiv sind, müssen die Nanos positiv oder null sein. Wenn „units“ null ist, können die Nanoeinheiten positiv, null oder negativ sein. Wenn „units“ negativ ist, müssen die Nanos negativ oder null sein. Beispiel: -1,75 $ wird mit den Einheiten = -1 und Nanos = -750.000.000 dargestellt.

Beispiel: 730000000

Das folgende Beispiel zeigt ein Money-Element:

Beispiel 1

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

Beispiel 2

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

Bestellen

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

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

Property Typ Beschreibung
finalOrder ProposedOrder

Erforderlich.

Der vorgeschlagene Auftrag, der den Auftrag verursacht hat.

googleOrderId String

Erforderlich.

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

orderDate ISO-Zeitstempel

Erforderlich.

Datum und Uhrzeit der Auftragserstellung.

paymentInfo PaymentInfo

Erforderlich.

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

Das folgende Beispiel zeigt ein Order-Element:

Beispiel

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

Update zur Bestellung

In der folgenden Tabelle werden die Felder des OrderUpdate-Typs beschrieben, der in AppResponse enthalten ist.

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

Property Typ Beschreibung
actionOrderId String

Erforderlich.

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

orderState OrderState

Erforderlich.

Der neue Status der Bestellung.

lineItemUpdates Karte<String, LineItemUpdate>
updateTime ISO-Zeitstempel

Erforderlich.

Der Zeitpunkt, zu dem die Bestellung aktualisiert wurde.

orderManagementActions Liste<OrderManagementAction>

Nachbestellte Aktionen, z. B. Kontakt zum Support oder Aufrufen von Bestelldetails

Darf nicht weniger als 1 Element und höchstens 6 Elemente enthalten.

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 in einem Beleg an.

totalPrice Price

Gesamtpreis der Bestellung.

infoExtension FoodOrderUpdateExtension

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

Das folgende Beispiel zeigt ein OrderUpdate-Element:

Beispiel

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

Abholinformationen

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

Property Typ Beschreibung
pickupTimeIso8601 String

Geschätzte Abholzeit im ISO-8601-Zeitstempelformat: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" oder Dauerformat: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Beispiel: PT90M stellt eine Dauer von 90 Minuten dar. Der Standardwert PT0M gibt an, dass die bevorzugte Abholzeit schnellstmöglich ist. Referenz: https://de.wikipedia.org/wiki/ISO_8601#Kombiniertes_Datum und Uhrzeit Hiermit können Sie die geschätzte Abholzeit während der Kasse angeben.

Beispiel: PT90M

Das folgende Beispiel zeigt ein PickupInfo-Element:

Beispiel

{
  "pickupTimeIso8601": "PT90M"
}

PostalAddress

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

Property Typ Beschreibung
regionCode String

Erforderlich.

Ein zweistelliger Ländercode.

Beispiel: US

postalCode String

Die Postleitzahl.

Beispiel: 94043

administrativeArea String

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

Beispiel: CA

locality String

Die Stadt oder der Ort für diesen Ort. Geben Sie in Regionen der Welt, in denen Orte nicht genau definiert sind oder nicht dieser Struktur entsprechen, keinen Ort an. Verwenden Sie stattdessen das Feld "addressLines".

Beispiel: Mountain View

addressLines Liste<String>

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

Beispiel: [ "1350 Charleston Road" ]

recipients Liste<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 Attribute für den Typ Price aufgeführt:

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

Erforderlich.

Der Gutscheincode.

amount Money

Erforderlich.

Angebot

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

Property Typ Beschreibung
coupon String

Erforderlich.

Der Gutscheincode.

Vorgeschlagene Bestellung

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

Property Typ Beschreibung
id String

Optionale ID für den vorgeschlagenen Auftrag.

cart Cart

Erforderlich.

Elemente des Nutzers

otherItems Liste<LineItem>

Vom Anbieter hinzugefügte Artikel wie Liefergebühren, andere Gebühren und Steuern. otherItems können auch Trinkgeld und/oder Rabatt enthalten, der vom Nutzer hinzugefügt wurde.

Darf nicht mehr als 10 Elemente enthalten.

image Image

Mit dem vorgeschlagenen Auftrag verknüpftes Bild.

totalPrice Price

Erforderlich.

Gesamtpreis des vorgeschlagenen Auftrags.

extension FoodOrderExtension

Erforderlich.

Definiert Informationen zur Auftragsausführung für Essensbestellungen.

disclaimers Liste<Disclaimer>

Korrespondiert mit Haftungsausschlüssen, die vor der Aufgabe 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"
      }
    ]
  }
}

Unterüberschrift

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

Property Typ Beschreibung
note String

Erforderlich.

Zeitstempel

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

Transaktionsentscheidwert

Enthält die Order.

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

Property Typ Beschreibung
order Order

Erforderlich.

Bestellung mit Zahlungsdetails senden.

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

Anfrage zur Auftragsausführung

App-Anfrage

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

Property Typ Beschreibung
isInSandbox Boolesch

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

conversation Conversation
inputs Liste<Input>

Erforderlich.

Enthält die erwarteten Argumente für den Bezahlvorgang mit Einkaufswagen.

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

Nachricht zur Zahlungsanforderung

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

Nachricht zur Bestellanforderung

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

Unterhaltung

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

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

Property Typ Beschreibung
conversationId String

Erforderlich.

Eindeutige ID für die Unterhaltung.

Das folgende Beispiel zeigt ein Conversation-Element:

Beispiel

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

Eingabe

Die erwarteten Argumente für den Bezahlvorgang mit Einkaufswagen.

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

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

Erforderlich.

Auf "actions.foodordering.intent.CHECKOUT" für Zahlungsanforderung ODER "actions.intent.TRANSACTION_DECISION" für Nachricht zur Anforderung der Bestellung gesetzt.

arguments Liste<Argument>

Erforderlich.

Enthält den zu bezahlenden Einkaufswagen oder die Bestellung, die aufgegeben werden soll

Muss genau 1 Element enthalten.

Argument

Enthält Details zu den Speisen, die der Nutzer sich ansehen möchte. Beim Bezahlen gilt nur die Erweiterung. Beim Einreichen einer Bestellung ist nur „transactionEntscheidungValue“ zulässig

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

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

Gibt die Lebensmittel an, die der Nutzer ansehen möchte.

transactionDecisionValue Gruppe 2 TransactionDecisionValue

Enthält die Bestellung, die zusammen mit den Zahlungsdetails aufgegeben werden soll.

Antwort zur Auftragsausführung

AppResponse

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

Property Typ Beschreibung
expectUserResponse Konst

Wird auf „false“ gesetzt.

Wert: False

finalResponse FinalResponse

Erforderlich.

Enthält Ihre Antwort auf den Warenkorb

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

Antwort zur Kasse

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

OrderOrderResponseMessage

Ein SubmitOrderResponseMessage ist ein AppResponse mit einem orderUpdate in der StructuredResponse.

Endgültige Antwort

Ihre Antwort auf den Einkaufswagen oder „SubmitOrderRequestMessage“.

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

Property Typ Beschreibung
richResponse RichResponse

Erforderlich.

Enthält Ihre Antwort auf "CheckoutRequestMessage" oder "SubmitOrderRequestMessage"

Antwort zur Kasse

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

Property Typ Beschreibung
proposedOrder ProposedOrder

Erforderlich.

Vorgeschlagener Auftrag für die Transaktion.

paymentOptions PaymentOptions

Erforderlich.

Standard-Zahlungsoption für den Nutzer ausgewählt.

additionalPaymentOptions Liste<PaymentOptions>

Alternative Zahlungsoptionen für Nutzer

Das folgende Beispiel zeigt ein CheckoutResponse-Element:

Beispiel

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

Artikel

Enthält Ihre Antwort auf einen Einkaufswagen oder „SubmitOrderRequestMessage“

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

Property Typ Beschreibung
structuredResponse StructuredResponse

Erforderlich.

RichResponse

Enthält Ihre Antwort auf einen Kaufabschluss im Einkaufswagen.

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

Property Typ Beschreibung
items Liste<Item>

Erforderlich.

Muss genau 1 Element enthalten.

Strukturierte Antwort

Für CheckoutResponseMessage kann es sich um einen der folgenden Werte handeln: CheckoutResponse Zeigt an, dass der Kaufvorgang erfolgreich war. ODER FoodErrorExtension: Gibt an, dass beim Bezahlen ein Fehler aufgetreten ist. Die Antwort kann einen korrigierten PropositionOrder und PaymentOptions oder eine Fehlermeldung ohne PaymentOptions enthalten. Für „SubmitOrderResponseMessage“ ist nur „orderUpdate“ verfügbar.

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

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

Artikel mit Kassengebühren sowie Steuern und Rabatte.

error Gruppe 2 FoodErrorExtension

In den Einkaufswagen-Artikeln sind Fehler aufgetreten. Je nach Art des Fehlers kann diese Property einen korrigierten ProOrderOrder und PaymentOptions oder eine Fehlermeldung ohne PaymentOptions enthalten.

orderUpdate Gruppe 3 OrderUpdate

Asynchrone Bestellaktualisierungen

In diesem Abschnitt werden die allgemeinen Typen beschrieben, aus denen die Anfragen und Antworten einer typischen Interaktion mit Essensbestellungen bestehen.

AsyncOrderUpdateRequestMessage

Der Nutzer wird über Änderungen informiert, nachdem eine Bestellung eingereicht und bestätigt wurde. Beispielsweise können Sie den Nutzer darüber informieren, dass die Bestellung unterwegs ist oder sich der Preis geändert hat. Weitere Informationen erhalten Sie unter:

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

Property Typ Beschreibung
isInSandbox Boolesch

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

customPushMessage CustomPushMessage

Erforderlich.

Enthält das OrderUpdate für die 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 du AsyncOrderUpdateRequestMessage gesendet hast, antwortet Google mit dem HTTP 200-Status und mit einem leeren Textkörper. Wenn die Aktualisierung fehlgeschlagen ist, gibt Google an, warum die Bestellaktualisierung fehlgeschlagen ist.

Arten von Bestellaktualisierungen

Schaltfläche

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

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

Property Typ Beschreibung
title String

Erforderlich.

Das Displaylabel. Verwenden Sie die korrekte Groß- und Kleinschreibung von 30 Zeichen oder weniger, um ein korrektes Rendering zu gewährleisten.

Beispiel: Contact us

openUrlAction OpenUrlAction

Erforderlich.

Das folgende Beispiel zeigt ein Button-Element:

Beispiel

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

Stornierungsinformationen

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

Property Typ Beschreibung
reason String

Erforderlich.

Angezeigter Textgrund für die Ablehnung, wenn OrderState.state "CANCELLED" ist.

Beispiel: Restaurant closed

Das folgende Beispiel zeigt ein CancellationInfo-Element:

Beispiel

{
  "reason": "Insufficient inventory"
}

FoodOrderUpdate-Erweiterung

Bei diesem Typ stellt der Nutzer ein geschätztes Intervall für die Lieferung oder Abholung bereit. 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 Auftragsausführungsintervall an, damit die Nutzererwartungen konstant erfüllt werden. Beispiel: Wenn die Bestellung voraussichtlich heute um 13:00 Uhr ausgeliefert wird, sollten Sie ein geschätztes Intervall senden, das den Abweichungen aufgrund der Verkehrslage entspricht, z. B. heute um 12:45 Uhr bis 13:15 Uhr.

Eine ISO 8601-Dauer oder ein Zeitstempel wird als Intervall von updateTime des OrderUpdate (im Wesentlichen "now") zur updateTime plus duration interpretiert. Verwenden Sie dieses Format nur, wenn „nicht“ tatsächlich eine angemessene Erwartung ist.

Ein Intervall nach ISO 8601 ist definiert als das Intervall vom Beginn bis zum Ende des Intervalls.

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

Property Typ Beschreibung
@type Konst

Typ der 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 wird oder abgeholt werden kann. Der String muss im ISO-8601-Format vorliegen und muss einem Intervall und nicht einer festen Zeit entsprechen. Zulässige Konventionen sind Intervalle, Dauer und Daten/Uhrzeiten. Dieses Feld kann in „SubmitOrderResponseMessage“ oder „AsyncOrderUpdateRequestMessage“ gesendet werden, wenn die Informationen verfügbar sind oder sich eine Änderung ergibt, z. B. frühzeitige oder verspätete Lieferungen.

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

foodOrderErrors Liste<FoodOrderError>

Beschreibt die Fehler, die nach der Reihenfolge aufgetreten sind. Empfohlener Fehler pro Einkaufswagen oder Artikel. Verwenden Sie FoodOrderUpdateExtension.FoodOrderErrors für Fehler, die nicht von RejectedionInfo abgedeckt werden.

Darf nicht weniger als 1 Element enthalten.

Das folgende Beispiel zeigt ein FoodOrderUpdateExtension-Element:

Beispiel 1

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

Beispiel 2

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

FulfillmentInfo

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

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

GeschätzteAuftragsausführungZeitIso8601 in FoodOrderingUpdateExtension-Nachricht verwenden

pickupTime Gruppe 2 ISO-Zeitstempel

GeschätzteAuftragsausführungZeitIso8601 in FoodOrderingUpdateExtension-Nachricht verwenden

Das folgende Beispiel zeigt ein FulfillmentInfo-Element:

Beispiel 1

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

Beispiel 2

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

Informationen zu öffentlichen Verkehrsmitteln

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

Property Typ Beschreibung
updatedTime ISO-Zeitstempel

GeschätzteAuftragsausführungZeitIso8601 in FoodOrderingUpdateExtension-Nachricht verwenden

Das folgende Beispiel zeigt ein InTransitInfo-Element:

Beispiel

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

Position aktualisieren

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

Property Typ Beschreibung
orderState OrderState
price Price
reason String

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

Das folgende Beispiel zeigt ein LineItemUpdate-Element:

Beispiel

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

OpenUrlAction

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

Property Typ Beschreibung
url String

Erforderlich.

Die Aktion, die durch Klicken oder Tippen auf die Schaltfläche ausgelöst wird Die Liste der anwendbaren Präfixe hängt von orderManagementActionType ab. "EMAIL": Das Präfix muss "mailto" lauten. "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

Mit der Bestellverwaltung können Nutzer Support nach der Bestellung erhalten. Sie sollten in jeder OrderUpdate innerhalb der Bestellreihenfolge AppResponse und jeder nachfolgenden AsyncOrderUpdateRequestMessage-Bestellverwaltungsaktion für eine bestimmte Bestellung gesendet werden, die je nach Status variieren kann.

Beispielsweise kann CUSTOMER_SERVICE im Status „CREATED“ auf Ihr Kundensupport-Telefon verweisen. Im Status „BESTÄTIGT“ kann dann CUSTOMER_SERVICE zum Telefon des Restaurants geändert werden, wenn dies der beste Ansprechpartner für den Kunden ist. Sobald die Bestellung den Status „FULFILLED“ hat, kann CUSTOMER_SERVICE auch auf Ihre Support-E-Mail-Adressen verweisen.

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

Property Typ Beschreibung
type OrderManagementActionType

Erforderlich.

button Button

Erforderlich.

Das folgende Beispiel zeigt ein OrderManagementAction-Element:

Beispiel 1

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

Beispiel 2

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

OrderManagementActionType

Definiert Typen im Zusammenhang mit OrderManagementAction.

Der Typ OrderManagementActionType hat folgende mögliche Werte:

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

OrderState

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

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

Property Typ Beschreibung
state OrderStateEnum

Erforderlich.

label String

Erforderlich.

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

Beispiel: Your order has been received

Das folgende Beispiel zeigt ein OrderState-Element:

Beispiel

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

OrderStateEnum

Definiert Typen im Zusammenhang mit OrderState.

Der Typ OrderStateEnum hat folgende mögliche Werte:

  • CREATED: Bestellung wurde vom Integrator erstellt und wartet auf Bestätigung 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: Das Essen wird vorbereitet. Entspricht dem Kaufstatus "Unbekannt".
  • READY_FOR_PICKUP: Das Essen ist zur Abholung bereit. Entspricht dem Kaufstatus „Bereit zur Abholung“.
  • IN_TRANSIT: Die Bestellung wird geliefert. Entspricht dem Kaufstatus „In Bearbeitung“.
  • FULFILLED: Der Nutzer hat erhalten, was bestellt wurde. Entspricht dem Kaufstatus „Abgeholt“.

Beleg

Senden Sie diesen Typ in einem Übermittlungsauftrag AppResponse, wobei OrderState den Wert "CONFIRMED", "FULFILLED" oder "IN_TRANSIT" enthält. Senden Sie den Beleg, sobald userVisibleOrderId verfügbar ist. Sie müssen den Beleg in nachfolgenden Updates nicht mehr senden.

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

Property Typ Beschreibung
userVisibleOrderId String

Erforderlich.

Erforderlich, wenn die Bestellung "CONFIRMED", "IN_TRANSIT" oder "FULFILLED" ist. Dieses Feld enthält die Nutzer-ID dieser Bestellung (in der Regel die Bestell-ID des Restaurants), die sowohl auf dem Beleg als auch auf der Google-Bestellkarte angezeigt wird. Der Nutzer muss diese ID verwenden können, um beim Kundenservicemitarbeiter auf die Bestellung des Dienstleisters zu verweisen. Sie müssen diese ID in einem beliebigen OrderUpdate nur einmal angeben. Bis zu diesem Zeitpunkt ist „actionOrderId“ die „userVisibleOrderId“. Es kann beispielsweise vorkommen, dass eine „userVisibleOrderId“ erst vorhanden ist, wenn die Bestellung vom Restaurant bestätigt wurde. Nach der Bestätigung müssen Sie eine AsyncOrderUpdateRequestMessage mit einem OrderUpdate und einem Beleg senden.

Das folgende Beispiel zeigt ein Receipt-Element:

Beispiel

{
  "userVisibleOrderId": "userVisibleId1234"
}

Ablehnungsinformationen

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

Property Typ Beschreibung
type RejectionType

Erforderlich.

reason String

Grund für die Ablehnung des internen Loggings. 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."
}

Ablehnungstyp

Der Typ RejectionType hat folgende mögliche Werte:

  • INELIGIBLE: Der Nutzer ist aufgrund von Richtlinien- oder risikobezogenen Bedenken nicht berechtigt.
  • PAYMENT_DECLINED: Bei der Zahlungsabwicklung ist ein Problem aufgetreten.
  • UNAVAILABLE_SLOT: Die Bestellung kann nicht zu der im Voraus angegebenen Lieferzeit abgewickelt werden.
  • PROMO_NOT_APPLICABLE: Es gibt ein Problem mit dem Angebot.
  • UNKNOWN: Sonstige Gründe.

Zahlungsarten

In diesem Abschnitt werden die zahlungsbezogenen Typen beschrieben, die für die Auftragsausführung von Lebensmitteln verwendet werden.

AktionBereitgestellte Zahlungsoptionen

Anforderungen an eine bereitgestellte Zahlungsmethode.

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

Property Typ Beschreibung
paymentType PaymentType

Erforderlich.

displayName String

Erforderlich.

Name des Zahlungsmittels, das auf dem Beleg angegeben ist.

Beispiel: Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

Zusätzliche Daten für „paymentType“ ON_FULFILLMENT" Mit diesem Feld können Sie beispielsweise angeben, ob Bargeld oder Karte bei der Auftragsausführung 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"
    ]
  }
}

Zulässige Authentifizierungsmethoden

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 enthalten die persönliche Kontonummer (PAN) mit dem Ablaufmonat und dem Ablaufjahr.

Zulässige Kartennetzwerke

Der Typ AllowedCardNetworks hat folgende mögliche Werte:

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

Kartenparameter

Verwenden Sie dieses Objekt, um die Unterstützung Ihrer Website für die Google Pay API zu konfigurieren.

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

Property Typ Beschreibung
allowedAuthMethods Liste<

Erforderlich.

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

Darf nicht weniger als 1 Element enthalten.

allowedCardNetworks Liste<AllowedCardNetworks>

Erforderlich.

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

Darf nicht weniger als 1 Element enthalten.

billingAddressRequired Boolesch

Geben Sie „wahr“ an, wenn Sie eine Rechnungsadresse benötigen. Fordern Sie eine Rechnungsadresse nur an, wenn sie zur Verarbeitung der Transaktion erforderlich ist. Zusätzliche Datenanfragen können den Bezahlvorgang vereinfachen und zu niedrigeren Conversion-Raten führen.

cvcRequired Boolesch

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

Das folgende Beispiel zeigt ein CardParameters-Element:

Beispiel

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

Von Google bereitgestelltes Zahlungsmittel

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

Property Typ Beschreibung
instrumentToken String

Erforderlich.

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

billingAddress PostalAddress

Rechnungsadresse für die Zahlung.

Das folgende Beispiel zeigt ein GoogleProvidedPaymentInstrument-Element:

Beispiel

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

Bereitgestellte Zahlungsoptionen

Anforderungen an die von Google angegebene Zahlungsmethode

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

Property Typ Beschreibung
facilitationSpecification String

Eine PaymentDataRequest-JSON als String. Verwenden Sie dieses Objekt, um die Unterstützung Ihrer Website für die Google Pay API zu konfigurieren.

supportedCardNetworks Liste<SupportedCardNetworks>

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

Dieses Feld wurde eingestellt.

prepaidCardDisallowed Boolesch

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

Dieses Feld wurde eingestellt.

billingAddressRequired Boolesch

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

Dieses Feld wurde eingestellt.

tokenizationParameters TokenizationParameters

Dieses Feld wurde eingestellt.

Das folgende Beispiel zeigt ein GoogleProvidedPaymentOptions-Element:

Beispiel 1

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

Beispiel 2

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

Beispiel 3

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

Händlerinfo

Verwenden Sie dieses Objekt, um die Unterstützung Ihrer Website für die Google Pay API zu konfigurieren.

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

Property Typ Beschreibung
merchantId String

Eine von Google Pay ausgestellte Google-Händler-ID.

merchantName String

Erforderlich.

Händlername, codiert als UTF-8. Der Händlername wird im Zahlungsformular gerendert.

OnFulfillmentPaymentDaten

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

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

Property Typ Beschreibung
supportedPaymentOptions Liste<PaymentOptionsEnums>

Liste der Zahlungsoptionen, die dem Nutzer zum Zeitpunkt der Auftragserfüllung zur Verfügung stehen.

Das folgende Beispiel zeigt ein OnFulfillmentPaymentData-Element:

Beispiel

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

Parameter

Definiert Typen im Zusammenhang mit TokenizationParameters.

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

Property Typ Beschreibung
gateway String

Erforderlich.

Beispiel: braintree

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

Das folgende Beispiel zeigt ein Parameters-Element:

Beispiel 1

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

Beispiel 2

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

Zahlungsanfrage

Verwenden Sie dieses Objekt, um die Unterstützung Ihrer Website für die Google Pay API zu konfigurieren.

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

Property Typ Beschreibung
apiVersion Konst

Erforderlich.

Haupt-API-Version.

Wert: 2

apiVersionMinor Konst

Erforderlich.

Nebenversion.

Wert: 0

merchantInfo MerchantInfo

Erforderlich.

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

allowedPaymentMethods Liste<PaymentMethod>

Erforderlich.

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

transactionInfo TransactionInfo

Erforderlich.

Details zur Autorisierung der Transaktion basierend darauf, 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,
        "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"
  }
}

Zahlungsinformationen

Zahlungsbezogene Informationen für eine Bestellung.

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

Property Typ Beschreibung
displayName String

Erforderlich.

Für Nutzer sichtbarer Name des Zahlungsmittels, das auf dem Beleg angezeigt werden soll.

paymentType PaymentType

Erforderlich.

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

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

Das folgende Beispiel zeigt ein PaymentInfo-Element:

Beispiel 1

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

Beispiel 2

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

Zahlungsmethode

Verwenden Sie dieses Objekt, um die Unterstützung Ihrer Website für die Google Pay API zu konfigurieren.

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

Property Typ Beschreibung
type Konst

Erforderlich.

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

Wert: CARD

parameters CardParameters

Erforderlich.

Parameter, die zum Konfigurieren des angegebenen Zahlungsmethodentyps 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"
    }
  }
}

Zahlungsoptionen

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

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

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

actionProvidedOptions Gruppe 2 ActionProvidedPaymentOptions

Schließt sich mit googleProvidedOptions gegenseitig aus. Verwenden Sie dies für die Barzahlung bei der Lieferung oder für die Auftragsausführung.

Das folgende Beispiel zeigt ein PaymentOptions-Element:

Beispiel 1

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

Beispiel 2

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

Zahlungsoptionen

Der Typ PaymentOptionsEnums hat folgende mögliche Werte:

  • Cash
  • Card
  • UPI
  • Paytm

PaymentType

Der Typ PaymentType hat folgende mögliche Werte:

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

Unterstützte Kartennetzwerke

Definiert Typen im Zusammenhang mit GoogleProvidedPaymentOptions.

Der Typ SupportedCardNetworks hat folgende mögliche Werte:

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

Tokenisierungsparameter

Definiert Typen, die sich auf GoogleProvidedPaymentOptions beziehen.

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

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

Erforderlich.

Verwenden Sie stattdessen „facilitationSpecification“. Tokentyp zulässig.

parameters Parameters

Verwenden Sie stattdessen „facilitationSpecification“.

Spezifikation der Tokenisierung

Mit diesem Objekt können Sie ein Konto konfigurieren, um zahlungspflichtige Zahlungsinformationen zu erhalten.

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

Property Typ Beschreibung
type Konst

Erforderlich.

parameters Parameters

Erforderlich.

Das folgende Beispiel zeigt ein TokenizationSpecification-Element:

Beispiel 1

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

Beispiel 2

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

TransactionInfo

Dieses Objekt beschreibt eine Transaktion, die die Zahlungsfunktion eines Zahlenden bestimmt. Hiermit wird ein Dialogfeld für die Zahlungsautorisierung angezeigt.

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

Property 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 Callbacks an die Google Transaction Events API senden.

totalPriceStatus Konst

Erforderlich.

Als Standard „ESTIMATED“ verwenden Der Gesamtpreis kann je nach Details der Antwort angepasst werden, z. B. anhand der Rechnungsadresse.

Wert: ESTIMATED

totalPrice String

Erforderlich.

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

Das folgende Beispiel zeigt ein TransactionInfo-Element:

Beispiel

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