Typy baz
Koszyk
Zawiera szczegóły zamówienia oraz informacje o tym, czy prośba dotyczy odbioru lub dostawy. Koszyk zawiera również szczegóły dostawy, niepewność i adres dostawy. ObiektCart
jest definiowany w pliku Checkout AppRequest
.f.
Umieszczasz kopię koszyka w elemencie Checkout AppResponse
W tej tabeli podano właściwości typu Cart
:
Właściwość | Typ | Opis | |
---|---|---|---|
@type |
Const |
Typ tego obiektu. Pomiń to pole, jeśli obiekt nadrzędny koszyka jest częścią PropositionOrder. Wartość: |
|
id |
Ciąg |
Opcjonalny identyfikator koszyka. |
|
merchant |
Merchant |
Sprzedawca powiązany z tym koszykiem. |
|
lineItems |
ListaLineItem > |
Wymagany. Lista towarów lub usług zamówionych przez użytkownika. Musi mieć nie więcej niż 1 element. |
|
promotions |
ListaPromotion > |
Promocja zastosowana w tym koszyku. Aktualnie obsługiwana jest tylko jedna promocja. |
|
notes |
Ciąg |
Uwagi na temat zamówienia lub instrukcji dostawy. |
|
extension |
FoodCartExtension |
Określa szczegóły dotyczące użytkownika, na przykład preferencje realizacji zamówień. |
Ten przykład pokazuje element Cart
:
Przykład 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" } } }
Przykład 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
Określa szczegóły osoby odbierającej zamówienie. Jest ona dostępna tylko w interfejsieAppResponse
.
W tej tabeli podano właściwości typu Contact
:
Właściwość | Typ | Opis | |
---|---|---|---|
displayName |
Ciąg |
Imię i nazwisko osoby odbierającej zamówienie, która ma być wyświetlana. Użyj tego pola, jeśli nie określono właściwości firstName i LastName. Przykład: |
|
email |
Ciąg |
Adres e-mail osoby odbierającej zamówienie. Przykład: |
|
firstName |
Ciąg |
Imię osoby odbierającej zamówienie. Przykład: |
|
lastName |
Ciąg |
Imię i nazwisko osoby odbierającej zamówienie. Przykład: |
|
phoneNumber |
Ciąg |
Numer telefonu osoby odbierającej zamówienie, w tym kod kraju. Przykład: |
|
emailVerified |
Wartość logiczna |
Wskazuje, czy osoba, która otrzymała zamówienie, jest zalogowana przy użyciu swojego konta Google. |
Ten przykład pokazuje element Contact
:
Przykład
{ "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" }
Niestandardowa wiadomość push
Zawiera elementOrderUpdate
dla żądania.
W tej tabeli podano właściwości typu CustomPushMessage
:
Właściwość | Typ | Opis | |
---|---|---|---|
orderUpdate |
OrderUpdate |
Wymagany. Zaktualizowano informacje o zamówieniu. |
Ten przykład pokazuje element CustomPushMessage
:
Przykład
{ "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" } } }
Informacje o dostawie
W tej tabeli podano właściwości typu DeliveryInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
deliveryTimeIso8601 |
Ciąg |
Szacowany czas dostawy w formacie sygnatury czasowej ISO 8601: "{year}–{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" lub czas trwania: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Na przykład PT90M trwa 90 minut. Wartość domyślna ,"PT0M" wskazuje, że preferowany czas dostawy jest najwcześniejszy. Patrz: https://pl.wikipedia.org/wiki/ISO_8601#Połączona_data_i_czasowa_prezentacje. Służy do aktualizowania przewidywanego czasu dostawy w odpowiedzi na płatność. Przykład: |
Ten przykład pokazuje element DeliveryInfo
:
Przykład
{ "deliveryTimeIso8601": "PT90M" }
Wyłączenie odpowiedzialności
W tej tabeli podano właściwości typu Disclaimer
:
Właściwość | Typ | Opis | |
---|---|---|---|
predefinedMessage |
PredefinedMessage |
Wymagany. Aby wyświetlać wstępnie zdefiniowane komunikaty o wyłączeniu odpowiedzialności podczas płatności. |
|
feeAmount |
Money |
Partner obciąży sprzedawcę opłatą w wysokości N. Za to zamówienie. |
|
feeAmountRange |
FeeAmountRange |
Partner obciąży restaurację kwotą od N do M za zamówienie. |
|
feePercent |
Number |
Partner obciąży sprzedawcę opłatą w wysokości N% zamówienia. |
|
feePercentRange |
FeePercentRange |
Partner obciąży sprzedawcę opłatą od N% do M% za zamówienie. |
Ten przykład pokazuje element Disclaimer
:
Przykład 1
{ "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER" }
Przykład 2
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE" }
Przykład 3
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feePercent": 25 }
Przykład 4
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feePercentRange": { "minFeePercent": 20, "maxFeePercent": 30 } }
Przykład 5
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feeAmount": { "currencyCode": "AUD", "units": 2, "nanos": 500000000 } }
Przykład 6
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feeAmountRange": { "minFeeAmount": { "currencyCode": "AUD", "units": 2, "nanos": 500000000 }, "maxFeeAmount": { "currencyCode": "AUD", "units": 10, "nanos": 0 } } }
Błąd
Typ Error
może mieć następujące wartości:
CLOSED
: restauracja jest zamknięta w momencie zamawiania.NO_CAPACITY
: brak dostępnej usługi (np. przerwa w działaniu usługi z powodu szczytu czasu oczekiwania).NO_COURIER_AVAILABLE
: nie można przetworzyć zamówienia z powodu ograniczonego dostępu.REQUIREMENTS_NOT_MET
: nie zostały spełnione ograniczenia dotyczące przyjmowania zamówienia (np. minimalny rozmiar koszyka).UNAVAILABLE_SLOT
: zamówienie nie może zostać zrealizowane w późniejszym terminie określonym przez DeliveryInfo lub odbioru.OUT_OF_SERVICE_AREA
: zamówienia nie można dostarczyć na adres użytkownika.PROMO_EXPIRED
: nie można zastosować promocji, ponieważ wygasła.PROMO_NOT_APPLICABLE
: ogólny kod błędu służący do wyłapywania wszystkich przypadków niepowodzenia zastosowania kodu promocyjnego, jeśli nie pasuje do niego żaden inny kod promocyjny.PROMO_NOT_RECOGNIZED
: nie udało się rozpoznać kodu kuponu.PROMO_ORDER_INELIGIBLE
: bieżące zamówienie nie kwalifikuje się do tego kuponu.PROMO_USER_INELIGIBLE
: obecny użytkownik nie kwalifikuje się do tego kuponu.AVAILABILITY_CHANGED
: produkt nie jest już dostępny lub nie ma wystarczającej liczby elementów, aby zrealizować żądanie.INCORRECT_PRICE
: błędy w opłatach lub łączny koszt.INVALID
: element zamówienia, element FulfillmentOption lub promocja zawierają nieprawidłowe dane.NOT_FOUND
: nie można znaleźć elementu zamówienia, opcji realizacji ani promocji.PRICE_CHANGED
: cena produktu uległa zmianie.
ZakresOpłaty
W tej tabeli podano właściwości typu FeeAmountRange
:
Właściwość | Typ | Opis | |
---|---|---|---|
minFeeAmount |
Money |
Dolna granica opłaty została pobrana. |
|
maxFeeAmount |
Money |
Górna granica opłaty została pobrana. |
Zakreszakresuopłaty
W tej tabeli podano właściwości typu FeePercentRange
:
Właściwość | Typ | Opis | |
---|---|---|---|
minFeePercent |
Number |
Dolna granica procentowej opłaty. |
|
maxFeePercent |
Number |
Górna granica procentowej opłaty. |
Rozszerzenie koszyka
Zawiera informacje o użytkowniku, np. o sposobie realizacji zamówień.
W tej tabeli podano właściwości typu FoodCartExtension
:
Właściwość | Typ | Opis | |
---|---|---|---|
@type |
Const |
Typ tego rozszerzenia. To pole ma zawsze wartość „"type.googleapis.com/google.actions.v2.orders.FoodCartExtension"”. Wartość: |
|
contact |
Contact |
Dane kontaktowe osoby, która otrzymała zamówienie. Szczegóły obejmują imię i nazwisko osoby, numer telefonu oraz adres e-mail. |
|
fulfillmentPreference |
FulfillmentOption |
Wymagany. Preferencja realizacji zamówień przez użytkownika. |
|
location |
Location |
W polu CheckoutRequestMessage to pole określa adres dostawy. Jest on wymagany, jeśli zamówienie dotyczy dostawy. To zamówienie nie zawiera informacji o zamówieniach na wynos lub z odbiorem. |
Ten przykład pokazuje element FoodCartExtension
:
Przykład 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" } }
Przykład 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" } }
Rozszerzenie błędu jedzenia
Identyfikuje co najmniej 1 błąd, który wystąpił podczas przetwarzania żądania. W tabeli poniżej opisano pola typuFoodErrorExtension
.
Błędy można wysyłać w CheckoutResponse
.
W tej tabeli podano właściwości typu FoodErrorExtension
:
Właściwość | Typ | Opis | |
---|---|---|---|
@type |
Const | Wymagany. Typ tego rozszerzenia. Wartość: |
|
foodOrderErrors |
ListaFoodOrderError > |
Wymagany. Tablica obiektów FoodOrderError opisujących błędy. Zalecany jeden błąd na koszyk lub produkt. Musi mieć nie więcej niż 1 element. |
|
correctedProposedOrder |
ProposedOrder |
Wymagane, jeśli właściwość Nowe proponowane rozwiązanie z poprawkami. Zwraca ten obiekt, jeśli w pierwotnym proponowanym zamówieniu występują błędy, które można odzyskać. Błąd można na przykład zaobserwować w przypadku zmiany ceny co najmniej jednego elementu zamówienia w koszyku. Błędy, które można przywrócić w przypadku prawidłowego zamówienia w propozycjach, są zaawansowane na etapie potwierdzenia, zamiast wymagać od użytkownika sprawdzenia koszyka. |
|
paymentOptions |
PaymentOptions |
Wymagane, jeśli właściwość Domyślne opcje płatności wybrane dla użytkownika. |
|
additionalPaymentOptions |
ListaPaymentOptions > |
Alternatywne opcje płatności dostępne dla użytkownika. |
Ten przykład pokazuje element FoodErrorExtension
:
Przykład
{ "@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 } } }
Rozszerzenie FoodItem
Określa dodatki do produktów spożywczych.
W tej tabeli podano właściwości typu FoodItemExtension
:
Właściwość | Typ | Opis | |
---|---|---|---|
@type |
Const | Wymagany. Typ tego rozszerzenia. To pole ma zawsze wartość „"type.googleapis.com/google.actions.v2.orders.FoodItemExtension"”. Wartość: |
|
options |
ListaFoodItemOption > |
Może to być dodatek lub grupa dodatków zawierająca zestaw dodatków. |
Ten przykład pokazuje element FoodItemExtension
:
Przykład
{ "@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 } ] } ] }
Opcja jedzenia
W tej tabeli podano właściwości typu FoodItemOption
:
Właściwość | Typ | Opis | |
---|---|---|---|
id |
Ciąg |
Unikalny identyfikator przypisany przez Google. Gdy wysyłasz parametr FoodOrderError lub AsyncOrderUpdateRequest, użyj tego pola, aby rozróżnić, jeśli koszyk zawiera więcej niż jeden produkt o tym samym identyfikatorze „offerId”. Przykład: |
|
offerId |
Ciąg |
Identyfikator oferty. Przykład: |
|
name |
Ciąg |
Nazwa opcji. Przykład: |
|
price |
Money |
||
note |
Ciąg |
Uwaga dotycząca opcji. |
|
quantity |
Number |
Liczba opcji to „elementy”. Przykład: |
|
subOptions |
ListaFoodItemOption > |
Opcje podrzędne, jeśli istnieją. Przykład: |
Ten przykład pokazuje element FoodItemOption
:
Przykład 1
{ "id": "10293231", "offerId": "1918491", "name": "Honey Mustard", "price": { "currencyCode": "USD", "units": "1", "nanos": 250000000 }, "quantity": 5 }
Przykład 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 } ] }
Błąd zamówienia jedzenia
Zawiera szczegóły błędów wCheckoutResponse
.
W tej tabeli podano właściwości typu FoodOrderError
:
Właściwość | Typ | Opis | |
---|---|---|---|
error |
Error |
Wymagany. |
|
id |
Ciąg | Wymagane, jeśli właściwość To pole jest wymagane w przypadku błędów na poziomie produktu. Jest to przypisany do Google element zamówienia (ItemItem.id) w przypadku dań w menu oraz parametr FoodItemOption.id w przypadku dodatków. |
|
description |
Ciąg |
Opis błędu. Ten opis służy do wewnętrznego logowania i nie jest widoczny dla użytkowników. |
|
updatedPrice |
Money |
Wymagane, jeśli właściwość Nowa cena produktu, który spowodował błąd. Ta funkcja jest wymagana tylko wtedy, gdy błąd to "PRICE_CHANGED". |
|
availableQuantity |
Liczba całkowita | Wymagane, jeśli właściwość Nowa dostępna ilość produktu, która spowodowała wystąpienie błędu. Ta funkcja jest wymagana tylko wtedy, gdy błąd "INVALID" lub "NOT_FOUND". Wartość w przypadku parametrów "INVALID" i "NOT_FOUND" powinna wynosić zero. |
Ten przykład pokazuje element FoodOrderError
:
Przykład 1
{ "error": "CLOSED", "description": "This store is currently reachable. Please try again later." }
Przykład 2
{ "error": "PRICE_CHANGED", "id": "french_fries", "description": "The price has changed.", "updatedPrice": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }
Rozszerzenie zamawiania jedzenia
Zawiera informacje o realizacji zamówienia.
W tej tabeli podano właściwości typu FoodOrderExtension
:
Właściwość | Typ | Opis | |
---|---|---|---|
@type |
Const |
Typ tego rozszerzenia. To pole ma zawsze wartość „"type.googleapis.com/google.actions.v2.orders.FoodOrderExtension"”. Wartość: |
|
availableFulfillmentOptions |
ListaFulfillmentOption > |
Określa dostępne opcje realizacji zamówienia. |
|
optinForRemarketing |
Wartość logiczna |
Prośba użytkownika o włączenie kanałów marketingowych. Domyślnie nie możesz wysyłać treści marketingowych bez zgody użytkownika. Jeśli tak, możesz zasubskrybować konto użytkownika. Jeśli atrybut optinForRemarketing ma wartość fałsz lub jest nieobecny, musisz zachować stan subskrypcji w systemie w niezmienionej postaci. Użytkownicy nie mogą zrezygnować z usług Google za pomocą funkcji anulowania subskrypcji dostępnej w Twoich kanałach marketingowych. Ta flaga występuje tylko w funkcji SubmitOrderRequestMessage. |
Ten przykład pokazuje element FoodOrderExtension
:
Przykład 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] }
Przykład 2
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2020-08-20T11:41:00Z" } ], "optinForRemarketing": true }
Opcja realizacji
Możesz użyć obiektuFulfillmentOption
w następujący sposób:
-
W tagach
Checkout AppRequest
iSubmit AppRequest
właściwośćCart.extension.fulfillmentPreference
: przechowuje preferencje użytkownika (dostarczanie lub odbiór). Cena zawsze wynosi 0 w momencie wysłania prośby o płatność. -
W polu
Checkout AppResponse
właściwośćProposedOrder.extension.availableFulfillmentOptions
określa co najmniej 1 opcję dostawy (obecnie dostępna jest tylko 1 opcja). Opcję domyślną określa się jakoLineItem
wProposedOrder.otherItems
. PoleofferId
zFulfillmentOption
powinno być zgodne z identyfikatoremLineItem
określonym w poluProposedOrder.otherItems
.
W tej tabeli podano właściwości typu FulfillmentOption
:
Właściwość | Typ | Opis | |
---|---|---|---|
offerId |
Ciąg |
Unikalny identyfikator tej opcji realizacji (jeśli istnieje). |
|
fulfillmentInfo |
FulfillmentOptionInfo |
Wymagany. |
|
expiresAt |
Sygnatura czasowa ISO |
Czas, w którym opcja realizacji zamówień wygasa. |
|
price |
Money |
Koszt tej opcji. |
Ten przykład pokazuje element FulfillmentOption
:
Przykład
{ "offerId": "offer5", "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2019-05-02T00:00:00-07:00", "price": { "currencyCode": "USD", "units": "5", "nanos": 230000000 } }
FulfillmentOptionInfo
Określa informacje związane z:FulfillmentInfo
.
W tej tabeli podano właściwości typu FulfillmentOptionInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
Wymagana jest dokładnie jedna z tych grup usług. | |||
delivery |
Grupa 1 | DeliveryInfo |
Jeśli jest określony, wskazuje kolejność dostawy. |
pickup |
Grupa 2 | PickupInfo |
Jeśli występuje, wskazuje zamówienie z odbiorem. |
Obraz
W tej tabeli podano właściwości typu Image
:
Właściwość | Typ | Opis | |
---|---|---|---|
sourceUrl |
Ciąg | Wymagany. Adres URL obrazu. Minimalny rozmiar obrazu to 72 x 72 piksele. Najlepsze efekty daje obraz o rozmiarze co najmniej 216 x 216 pikseli. Obraz musi być mniejszy niż 6 MB i 64 megapiksele. |
Element zamówienia
Określa zawartość koszyka (Cart.lineItems
) lub dodatkowych opłat za zamówienie (ProposedOrder.otherItems
).
W tej tabeli podano właściwości typu LineItem
:
Właściwość | Typ | Opis | |
---|---|---|---|
id |
Ciąg | Wymagane, jeśli właściwość W przypadku elementu zamówienia w koszyku (PropositionOrder.cart.lineItems[0].id) jest to unikalny identyfikator utworzony przez Google podczas tworzenia zamówienia. W przypadku elementu zamówienia w ofercie pakietowej (propozycjaZamówienie.Inne_elementy[0].id), który służy do dodawania produktów takich jak opłaty za dostawę i podatki, wartość identyfikatora jest zdefiniowana przez dostawcę. Na przykład w koszyku znajdują się 2 takie same produkty z różnymi instrukcjami dotyczącymi przygotowania (np. 2 średnie pizze z różnymi zestawami dodatków). W tym przypadku oba elementy mają taki sam podstawowy identyfikator oferty. Gdy przesyłasz prośbę o aktualizację zamówienia, aby wskazać, że produkt został odrzucony, użyj tego identyfikatora jako identyfikatora. Innymi słowy, jeśli jedna z pizzy zostanie odrzucona z powodu braku jej dodatku, identyfikator pomoże Google określić, o które zamówienie chodzi. To pole jest wymagane oprócz innych elementów. |
|
name |
Ciąg | Wymagany. Nazwa elementu zamówienia. Jest to ciąg widoczny dla użytkownika i w miarę możliwości powinien być zapisany jak w zdaniu (np. "opłata za dostawę" "opłata za obsługę" &"Tax"). W przypadku użytkowników pole jest ograniczone do 100 znaków. |
|
type |
LineItemType |
Wymagany. |
|
quantity |
Liczba całkowita | Wymagane, jeśli właściwość Liczba uwzględnionych produktów. Nie dotyczy PropositionOrder.otherItems. |
|
description |
Ciąg |
Opis produktu. |
|
price |
Price |
Wymagany. Cena elementu. Ta wartość to łączna cena wszystkich towarów lub usług powiązanych z danym elementem zamówienia (czyli podaj koszt wszystkich dodatków i pomnóż ją przez liczbę sztuk). Na przykład: jeśli produkt o wartości 10 PLN ma liczbę 3, cena będzie wynosić 30 PLN. Cena wynosi 6 USD za jedną pizzę z ceną podstawową w wysokości 5 USD i dodatkiem 1 USD. Cena wynosi 12 USD za 2 pizze (ilość = 2) z ceną podstawową (5 zł) i z dodatkiem 1 zł. Każdy element zamówienia powinien zawierać cenę, nawet jeśli &"0". Gdy typ to DISCOUNT, podaj wartość jako ujemną (np. "-2"). |
|
subLines |
ListaSublineNote > |
Opcjonalne i tylko wtedy, gdy typ jest "REGULAR". W tym polu w żądaniach płatności i przesłania zamówienia można wysłać informację o produkcie od użytkownika. Upewnij się, że sprzedawca otrzymuje notatkę, gdy ją otrzyma. W żądaniu znajdzie się ona jako wiersz podrzędny[0].note, czyli jedyna wartość podana w tym polu, jeśli znajduje się ona w żądaniu. Musi mieć maksymalnie 1 element. |
|
offerId |
Ciąg | Wymagane, jeśli właściwość Identyfikator oferty w menu elementu. Nie dotyczy PropositionOrder.otherItems. |
|
extension |
FoodItemExtension |
Określa dodatki do produktów spożywczych. |
Ten przykład pokazuje element LineItem
:
Przykład 1
{ "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }
Przykład 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 } ] } }
Typ elementu zamówienia
Typ LineItemType
może mieć następujące wartości:
REGULAR
: element zamówienia towaru. Dotyczy Cart.lineItems.TAX
: element zamówienia podatkowego Dotyczy proponowanego zamówienia.inneelementy.DISCOUNT
: element zamówienia ze zniżką. Pamiętaj, że cena powinna być ujemna. Dotyczy proponowanego zamówienia.inneelementy.GRATUITY
: element zamówienia z nagrodą. Zasadniczo zarezerwowane dla elementu SubmitOrderRequestMessage przeznaczonego dla użytkownika. Dotyczy proponowanego zamówienia.inneelementy.DELIVERY
: element zamówienia do zrealizowania. Dotyczy proponowanego zamówienia.inneelementy.SUBTOTAL
: częściowy element zamówienia. Dotyczy proponowanego zamówienia.inneelementy.FEE
: dodatkowy element zamówienia nieobjęty innymi typami. Dotyczy proponowanego zamówienia.inneelementy.
Lokalizacja
Określa adres do zamawiania jedzenia. TypLocation
jest używany w Cart
do wskazywania tylko miejsca docelowego zamówienia dostawy.
Ostateczna lokalizacja występuje też w TransactionDecisionValue
, jeśli użytkownik złoży zamówienie. W przypadku zamówień z odbiorem lokalizacja nie jest brana pod uwagę (nawet jest pusta).
W tej tabeli podano właściwości typu Location
:
Właściwość | Typ | Opis | |
---|---|---|---|
coordinates |
Coordinates |
||
formattedAddress |
Ciąg |
Wyświetlany adres lokalizacji. Przykład: |
|
postalAddress |
PostalAddress |
||
zipCode |
Ciąg |
Przykład: |
|
city |
Ciąg |
Nazwa miasta. Przykład: |
|
notes |
Ciąg |
Uwagi o lokalizacji, np. kody do bram. Może mieć maksymalnie 500 znaków. Przykład: |
Ten przykład pokazuje element Location
:
Przykład
{ "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" }
Sprzedawca
W tej tabeli podano właściwości typu Merchant
:
Właściwość | Typ | Opis | |
---|---|---|---|
id |
Ciąg |
Identyfikator sprzedawcy. Jeśli jest określony, pasuje do pliku Restauracja.@id w pliku danych restauracji. Przykład: |
|
name |
Ciąg | Wymagany. Widoczna dla użytkownika nazwa sprzedawcy. Przykład: |
Ten przykład pokazuje element Merchant
:
Przykład
{ "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }
Pieniądze
W tej tabeli podano właściwości typu Money
:
Właściwość | Typ | Opis | |
---|---|---|---|
currencyCode |
Ciąg | Wymagany. Trzyliterowy kod waluty w formacie ISO 4217. Przykład: |
|
units |
Ciąg |
Całe jednostki. Na przykład: jeśli „currencyCode” to "USD", "1" jednostka to 1 USD. Przykład: |
|
nanos |
Liczba całkowita |
Liczba jednostek nano (10^–9) kwoty. Wartość musi zawierać się w zakresie od -999 999 999 do +999 999 999 włącznie. Zastosuj następujące reguły: jeśli jednostki są dodatnie, nanos muszą być dodatnie lub wynosić zero. Jeśli wartość wynosi zero, nanos może być liczbą dodatnią, zero lub ujemną. Jeśli jednostki są ujemne, nanos musi być dodatnie lub zero. Na przykład $-1.75 jest przedstawiane jako jednostki = -1, a nanos = -750 000 000. Przykład: |
Ten przykład pokazuje element Money
:
Przykład 1
{ "currencyCode": "USD", "units": "36", "nanos": 730000000 }
Przykład 2
{ "currencyCode": "EUR", "units": "10" }
Zamówienie
Zawiera ostateczne zamówienie, w tym podatki, opłaty i opłaty za dostawę, a także informacje o płatności. Ten obiekt otrzymuje Twoje działanie w:Submit AppRequest
.
W tej tabeli podano właściwości typu Order
:
Właściwość | Typ | Opis | |
---|---|---|---|
finalOrder |
ProposedOrder |
Wymagany. Proponowane zamówienie, które wygenerowało zamówienie. |
|
googleOrderId |
Ciąg | Wymagany. Identyfikator zamówienia przypisany przez Google. Ten identyfikator powinien być stały przez cały cykl życia zamówienia. Ten identyfikator nie jest widoczny dla użytkownika. |
|
orderDate |
Sygnatura czasowa ISO | Wymagany. Data i godzina utworzenia zamówienia. |
|
paymentInfo |
PaymentInfo |
Wymagany. Dane karty odpowiadające płatności za to zamówienie. |
Ten przykład pokazuje element Order
:
Przykład
{ "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" } }
Aktualizacja zamówienia
W poniższej tabeli opisano pola typu OrderUpdate zawartego wAppResponse
.
W tej tabeli podano właściwości typu OrderUpdate
:
Właściwość | Typ | Opis | |
---|---|---|---|
actionOrderId |
Ciąg | Wymagany. Unikalny identyfikator zamówienia w systemie integratora, który służy do identyfikowania kolejności wysyłania aktualizacji. Jeśli parametr order.user_visible_order_id nie zostanie podany co najmniej raz w polu OrderUpdate dla zamówienia &CREATED;CREATED" ten identyfikator będzie identyfikatorem wejściowym wyświetlanym na karcie zamówienia Google. |
|
orderState |
OrderState |
Wymagany. Nowy stan zamówienia. |
|
lineItemUpdates |
Mapa<ciąg, LineItemUpdate > |
||
updateTime |
Sygnatura czasowa ISO | Wymagany. Godzina aktualizacji zamówienia. |
|
orderManagementActions |
ListaOrderManagementAction > |
Działania po zamówieniu, takie jak kontakt z zespołem pomocy i wyświetlanie szczegółów zamówienia. Musi mieć nie więcej niż 1 element i nie więcej niż 6 elementów. |
|
rejectionInfo |
RejectionInfo |
Wymagane, jeśli właściwość |
|
cancellationInfo |
CancellationInfo |
Wymagane, jeśli właściwość |
|
inTransitInfo |
InTransitInfo |
To pole zostało wycofane. |
|
fulfillmentInfo |
FulfillmentInfo |
To pole zostało wycofane. |
|
receipt |
Receipt |
Wymagane, jeśli właściwość Podaj widoczny dla użytkownika identyfikator zamówienia w rachunku. |
|
totalPrice |
Price |
Łączna cena zamówienia. |
|
infoExtension |
FoodOrderUpdateExtension |
Określa więcej szczegółów dotyczących aktualizacji zamówienia, takich jak czas oczekiwania na szacowany czas dostawy lub odbioru. |
Ten przykład pokazuje element OrderUpdate
:
Przykład
{ "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" } }
Informacje o odbiorze
W tej tabeli podano właściwości typu PickupInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
pickupTimeIso8601 |
Ciąg |
Szacowany czas odbioru w formacie sygnatury czasowej ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" lub czas trwania: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Na przykład PT90M trwa 90 minut. Wartość domyślna ,"PT0M" wskazuje, że preferowany czas odbioru jest możliwy jak najszybciej. Patrz: https://pl.wikipedia.org/wiki/ISO_8601#Połączona_data_i_czasowa_prezentacje. Służy do aktualizowania szacowanego czasu odbioru w momencie płatności. Przykład: |
Ten przykład pokazuje element PickupInfo
:
Przykład
{ "pickupTimeIso8601": "PT90M" }
PostalAddress
W tej tabeli podano właściwości typu PostalAddress
:
Właściwość | Typ | Opis | |
---|---|---|---|
regionCode |
Ciąg | Wymagany. Dwuliterowy kod kraju. Przykład: |
|
postalCode |
Ciąg |
Kod pocztowy. Przykład: |
|
administrativeArea |
Ciąg |
Najwyższy podział administracyjny używany w przypadku adresów pocztowych w danym kraju lub regionie. Może to być stan, prowincja, obwód lub prefektura. Przykład: |
|
locality |
Ciąg |
Miasto (lub miejscowość). W regionach świata, w którym miasta nie są poprawnie zdefiniowane lub nie pasują do tej struktury, nie określaj lokalizacji i użyj pola addressLines (Wiersz adresu). Przykład: |
|
addressLines |
Lista<gt; |
Co najmniej jedna linia, której możesz użyć do określenia adresu ulicy. Nie należy modyfikować tego pola, ponieważ może ono zawierać nieznane miejsca. Przykład: |
|
recipients |
Lista<gt; |
Lista adresatów zamówienia. To pole jest dostępne tylko w adresie rozliczeniowym. |
Ten przykład pokazuje element PostalAddress
:
Przykład
{ "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }
Cena
W tej tabeli podano właściwości typu Price
:
Właściwość | Typ | Opis | |
---|---|---|---|
type |
Enum [
"ESTIMATE",
"ACTUAL"
] |
Wymagany. Kod kuponu promocyjnego. |
|
amount |
Money |
Wymagany. |
Promocja
W tej tabeli podano właściwości typu Promotion
:
Właściwość | Typ | Opis | |
---|---|---|---|
coupon |
Ciąg | Wymagany. Kod kuponu promocyjnego. |
Zaproponowane zamówienie
W tej tabeli podano właściwości typu ProposedOrder
:
Właściwość | Typ | Opis | |
---|---|---|---|
id |
Ciąg |
Opcjonalny identyfikator proponowanego zamówienia. |
|
cart |
Cart |
Wymagany. Elementy użytkownika. |
|
otherItems |
ListaLineItem > |
Produkty dodane przez dostawcę, takie jak opłaty za dostawę, inne opłaty i podatki. Inne elementy mogą też zawierać nieuzasadnione lub zniżki dodane przez użytkownika. Nie może mieć więcej niż 10 elementów. |
|
image |
Image |
Obraz powiązany z proponowanym zamówieniem. |
|
totalPrice |
Price |
Wymagany. Łączna cena proponowanego zamówienia. |
|
extension |
FoodOrderExtension |
Wymagany. Określa informacje o realizacji zamówień dotyczących jedzenia. |
|
disclaimers |
ListaDisclaimer > |
Odpowiada komunikatom o wyłączeniu odpowiedzialności, które są wyświetlane w interfejsie użytkownika przed złożeniem zamówienia. |
Ten przykład pokazuje element ProposedOrder
:
Przykład
{ "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" } ] } }
Notatka podrzędna
W tej tabeli podano właściwości typu SublineNote
:
Właściwość | Typ | Opis | |
---|---|---|---|
note |
Ciąg | Wymagany. |
Sygnatura czasowa
Data i godzina w następującym formacie:
"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
Wartość decyzji transakcji
ZawieraOrder
.
W tej tabeli podano właściwości typu TransactionDecisionValue
:
Właściwość | Typ | Opis | |
---|---|---|---|
order |
Order |
Wymagany. Zamówienie zostanie złożone ze szczegółami płatności. |
Ten przykład pokazuje element TransactionDecisionValue
:
Przykład
{ "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" } } }
Prośba o realizację
Żądanie aplikacji
W tej tabeli podano właściwości typu AppRequest
:
Właściwość | Typ | Opis | |
---|---|---|---|
isInSandbox |
Wartość logiczna |
Wskazuje, czy kolejne transakcje są realizowane w środowisku piaskownicy. |
|
conversation |
Conversation |
||
inputs |
ListaInput > |
Wymagany. Zawiera oczekiwane argumenty dotyczące sprawdzenia koszyka. Musi zawierać dokładnie 1 element. |
Ten przykład pokazuje element AppRequest
:
Przykład 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" } } } } ] } ] }
Przykład 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" } } } } ] } ] }
Komunikat prośby o płatność
CheckoutRequestMessage
to AppRequest
z intencją actions.foodordering.intent.CHECKOUT
.
Prześlij wiadomość z żądaniem
SubmitOrderRequestMessage
to AppRequest
z intencją actions.foodordering.intent.TRANSACTION_DECISION
.
Rozmowa
TypConversation
jest unikalny tylko dla jednej sesji. W razie potrzeby możesz połączyć wiele działań Checkout
i SubmitOrder
.
W tej tabeli podano właściwości typu Conversation
:
Właściwość | Typ | Opis | |
---|---|---|---|
conversationId |
Ciąg | Wymagany. Unikalny identyfikator rozmowy. |
Ten przykład pokazuje element Conversation
:
Przykład
{ "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ" }
Wprowadź tekst
Oczekiwane argumenty przy sprawdzaniu koszyka.
W tej tabeli podano właściwości typu Input
:
Właściwość | Typ | Opis | |
---|---|---|---|
intent |
Enum [
"actions.foodordering.intent.CHECKOUT",
"actions.intent.TRANSACTION_DECISION"
] |
Wymagany. Ustaw jako „"actions.foodordering.intent.CheckOUT"” w przypadku wiadomości z prośbą o dokonanie płatności LUB „"actions.intent.TRANSACTION_DECISION"”. |
|
arguments |
ListaArgument > |
Wymagany. Zawiera koszyk, który należy sprawdzić lub zamówienie Musi zawierać dokładnie 1 element. |
Argument
Zawiera szczegółowe informacje o produktach, które użytkownik chce kupić. W momencie płatności można użyć tylko rozszerzenia. W przypadku zamówienia obowiązuje tylko wartość „DeDesionsionValue”
W tej tabeli podano właściwości typu Argument
:
Właściwość | Typ | Opis | |
---|---|---|---|
Wymagana jest dokładnie jedna z tych grup usług. | |||
extension |
Grupa 1 | Cart |
Szczegółowe informacje o produktach, które użytkownik chce kupić. |
transactionDecisionValue |
Grupa 2 | TransactionDecisionValue |
Zawiera zamówienie, które należy złożyć, oraz szczegóły płatności. |
Odpowiedź dotycząca realizacji zamówienia
Odpowiedź aplikacji
W tej tabeli podano właściwości typu AppResponse
:
Właściwość | Typ | Opis | |
---|---|---|---|
expectUserResponse |
Const |
Ustaw wartość „false”. Wartość: |
|
finalResponse |
FinalResponse |
Wymagany. Zawiera Twoją odpowiedź na płatność. |
Ten przykład pokazuje element AppResponse
:
Przykład 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." } } ] } } } ] } } }
Przykład 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" } } } } ] } } }
Przykład 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." } ] } } } ] } } }
Przykład 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 } } } } } ] } } }
Komunikat odpowiedzi
CheckoutResponseMessage
to AppResponse
z checkoutResponse
lub error
w StructuredResponse
.
Prześlij wiadomość z odpowiedzią
SubmitOrderResponseMessage
to AppResponse
z orderUpdate
w StructuredResponse
.
Ostateczna odpowiedź
Twoja odpowiedź na płatność lub zawartość koszyka.
W tej tabeli podano właściwości typu FinalResponse
:
Właściwość | Typ | Opis | |
---|---|---|---|
richResponse |
RichResponse |
Wymagany. Zawiera Twoją odpowiedź na element CheckoutRequestMessage lub SubmitOrderRequestMessage. |
Odpowiedź na płatność
W tej tabeli podano właściwości typu CheckoutResponse
:
Właściwość | Typ | Opis | |
---|---|---|---|
proposedOrder |
ProposedOrder |
Wymagany. Proponowane zamówienie dla transakcji. |
|
paymentOptions |
PaymentOptions |
Wymagany. Domyślna opcja płatności wybrana dla użytkownika. |
|
additionalPaymentOptions |
ListaPaymentOptions > |
Alternatywne opcje płatności dostępne dla użytkownika. |
Ten przykład pokazuje element CheckoutResponse
:
Przykład
{ "proposedOrder": { "id": "sample_proposed_order_id_1", "otherItems": [ { "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }, { "name": "Delivery fee", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 500000000 } }, "type": "TAX" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "36", "nanos": 730000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }, "additionalPaymentOptions": [ { "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Cash on delivery." } } ] }
Element
Zawiera Twoją odpowiedź na płatność lub zawartość koszyka.
W tej tabeli podano właściwości typu Item
:
Właściwość | Typ | Opis | |
---|---|---|---|
structuredResponse |
StructuredResponse |
Wymagany. |
Odpowiedź multimedialna
Zawiera Twoją odpowiedź na płatność.
W tej tabeli podano właściwości typu RichResponse
:
Właściwość | Typ | Opis | |
---|---|---|---|
items |
ListaItem > |
Wymagany. Musi zawierać dokładnie 1 element. |
Uporządkowana odpowiedź
W przypadku elementu CheckoutResponseMessage możesz wybrać jedną z tych opcji: CheckoutResponse wskazuje udany proces płatności. LUB FoodErrorExtension: oznacza błąd podczas płatności. Odpowiedź może zawierać poprawione elementy PropositionOrder i PaymentOptions lub komunikat o błędzie bez PaymentOptions. W przypadku elementu SubmitOrderResponseMessage obowiązuje tylko orderorder.
W tej tabeli podano właściwości typu StructuredResponse
:
Właściwość | Typ | Opis | |
---|---|---|---|
Wymagana jest dokładnie jedna z tych grup usług. | |||
checkoutResponse |
Grupa 1 | CheckoutResponse |
Zaznaczono produkty oraz podatki i rabaty. |
error |
Grupa 2 | FoodErrorExtension |
Zaobserwowane błędy w koszykach. W zależności od rodzaju błędu ta właściwość może zawierać poprawione wartości PropositionOrder i PaymentOptions lub tylko komunikat o błędzie bez PaymentOptions. |
orderUpdate |
Grupa 3 | OrderUpdate |
Asynchroniczne aktualizacje zamówień
W tej sekcji opisujemy typy ogólne, które składają się na żądania i odpowiedzi typowej wbudowanej interakcji polegającej na zamawianiu jedzenia.ASyncOrderUpdateRequestMessage
Powiadamia użytkownika o zmianach po przesłaniu i potwierdzeniu zamówienia. Możesz na przykład poinformować użytkownika, że zamówienie jest w drodze, lub że cena się zmieniła. Więcej szczegółów wW tej tabeli podano właściwości typu AsyncOrderUpdateRequestMessage
:
Właściwość | Typ | Opis | |
---|---|---|---|
isInSandbox |
Wartość logiczna |
Oznacza, że zamówienie, do którego wysłano tę aktualizację, jest płatnością w piaskownicy. |
|
customPushMessage |
CustomPushMessage |
Wymagany. Zawiera element OrderUpdate dla żądania. |
Ten przykład pokazuje element AsyncOrderUpdateRequestMessage
:
Przykład
{ "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
Gdy uda Ci się wysłać żądanieAsyncOrderUpdateRequestMessage
, Google wyśle w odpowiedzi odpowiedź HTTP 200 i puste treści. Jeśli aktualizacja się nie powiedzie, otrzymasz odpowiedź od Google z informacjami, dlaczego tak się stało.
Rodzaje aktualizacji zamówień
Przycisk
Określa element interfejsu, który możesz dodać, aby zapewnić interakcję użytkownika.
W tej tabeli podano właściwości typu Button
:
Właściwość | Typ | Opis | |
---|---|---|---|
title |
Ciąg | Wymagany. Wyświetlaną etykietę. Aby zapewnić prawidłowe renderowanie, używaj wielkich liter po 30 znaków. Przykład: |
|
openUrlAction |
OpenUrlAction |
Wymagany. |
Ten przykład pokazuje element Button
:
Przykład
{ "title": "Send us feedback", "openUrlAction": { "url": "mailto:person@example.com" } }
Informacje o anulowaniu
W tej tabeli podano właściwości typu CancellationInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
reason |
Ciąg | Wymagany. Wyświetlany tekst powodu odrzucenia, gdy OrderState.state to "CANCELLED". Przykład: |
Ten przykład pokazuje element CancellationInfo
:
Przykład
{ "reason": "Insufficient inventory" }
Rozszerzenie zamawiania jedzenia
Ten typ określa użytkownika szacowanego czasu, w którym zamówienie zostanie dostarczone lub gotowe do odbioru. Wyślij to rozszerzenie w pliku OrderUpdate
, gdy informacje są dostępne lub uległy zmianie od czasu ostatniego wysłania.
Zachowaj ostrożne szacunki dla okresu realizacji, aby oczekiwania użytkowników były spójne. Jeśli np. szacowana data dostawy zamówienia to 13:00, wyślij szacowany przedział czasowy, który odpowiada wahaniom związanym z natężeniem ruchu (np. dzisiaj o 12:45 i 13:15).
Czas trwania lub sygnatura czasowa ISO 8601 jest interpretowana jako odstęp czasu od updateTime
w OrderUpdate
(w skrócie &"now") do updateTime
plus duration
.
Nie używaj tego formatu, chyba że „oczekiwano” i „oczekiwano”
Przedział ISO 8601 oznacza interwał od początku do końca przedziału czasu.
W tej tabeli podano właściwości typu FoodOrderUpdateExtension
:
Właściwość | Typ | Opis | |
---|---|---|---|
@type |
Const |
Typ tego rozszerzenia. To pole ma zawsze wartość „"type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension"”. Wartość: |
|
estimatedFulfillmentTimeIso8601 |
Ciąg |
Szacunkowy czas, w którym zamówienie zostanie dostarczone lub gotowe do odbioru. Ciąg musi mieć format ISO 8601 i musi odpowiadać przedziałowi, a nie pojedynczemu czasowi stałemu. Akceptowane konwencje: przedziały czasu, czasy trwania oraz daty i godziny. To pole można wysłać w funkcji SubmitOrderResponseMessage lub AsyncOrderUpdateRequestMessage, gdy informacje są dostępne lub zaczyna się zmiana, np. w trakcie wcześniejszego lub opóźnionego przyjazdu. Przykład: |
|
foodOrderErrors |
ListaFoodOrderError > |
Opisuje błędy, które wystąpiły po zamówieniu. Zalecany jeden błąd na koszyk lub produkt. W przypadku błędów, których nie dotyczy odrzucenie informacji, użyj FoodOrderUpdateExtension.FoodOrderErrors. Musi mieć nie więcej niż 1 element. |
Ten przykład pokazuje element FoodOrderUpdateExtension
:
Przykład 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" }
Przykład 2
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "foodOrderErrors": [ { "error": "NO_CAPACITY", "description": "Sorry, the restaurant cannot take your order right now." } ] }
Informacje o realizacji
W tej tabeli podano właściwości typu FulfillmentInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
Wymagana jest dokładnie jedna z tych grup usług. | |||
deliveryTime |
Grupa 1 | Sygnatura czasowa ISO |
Użyj wartości szacunkowychFulfillmentTimeIso8601 w FoodFoodingUpdateExtension |
pickupTime |
Grupa 2 | Sygnatura czasowa ISO |
Użyj wartości szacunkowychFulfillmentTimeIso8601 w FoodFoodingUpdateExtension |
Ten przykład pokazuje element FulfillmentInfo
:
Przykład 1
{ "deliveryTime": "2017-05-10T02:36:38.803Z" }
Przykład 2
{ "pickupTime": "2019-12-26T07:24:27.803Z" }
Informacje o transporcie publicznym
W tej tabeli podano właściwości typu InTransitInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
updatedTime |
Sygnatura czasowa ISO |
Użyj wartości szacunkowychFulfillmentTimeIso8601 w FoodFoodingUpdateExtension |
Ten przykład pokazuje element InTransitInfo
:
Przykład
{ "updatedTime": "2017-05-10T02:36:38.803Z" }
Aktualizacja elementu
W tej tabeli podano właściwości typu LineItemUpdate
:
Właściwość | Typ | Opis | |
---|---|---|---|
orderState |
OrderState |
||
price |
Price |
||
reason |
Ciąg |
Powód zmiany. Wymagany w przypadku zmian cen. |
Ten przykład pokazuje element LineItemUpdate
:
Przykład
{ "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "5", "nanos": 500000000 } }, "reason": "Menu updated prices." }
Działanie typu OpenUrl
W tej tabeli podano właściwości typu OpenUrlAction
:
Właściwość | Typ | Opis | |
---|---|---|---|
url |
Ciąg | Wymagany. Działanie polegające na kliknięciu przycisku. Lista odpowiednich prefiksów zależy od typu orderManagementActionType. "EMAIL": prefiks musi mieć postać "mailto". "CALL": prefiksem musi być "tel". "CUSTOMER_SERVICE": Prefiks musi mieć postać "mailto", "tel", "http" lub "https". Przykład: |
Działanie zarządzania zamówieniem
Zarządzanie zamówieniami pozwala użytkownikom korzystać z pomocy po otrzymaniu zamówienia. Powinny być wysyłane do każdego OrderUpdate
w ramach zamówienia złożonego w AppResponse
oraz do kolejnych AsyncOrderUpdateRequestMessage
działań związanych z zarządzaniem zamówieniami wysyłanych w przypadku konkretnego zamówienia mogą się różnić w zależności od stanu.
Na przykład w stanie „CREATED"” CUSTOMER_SERVICE
może odwoływać się do Twojego numeru telefonu do obsługi klienta. Następnie, w stanie „POTWIERDŹ”, CUSTOMER_SERVICE
może zmienić się w numer telefonu do restauracji, jeśli będzie to najlepszy punkt kontaktu dla klienta. Podobnie, gdy zamówienie jest w stanie „"FULFILLED"”, CUSTOMER_SERVICE
może podać Twoje adresy e-mail pomocy.
W tej tabeli podano właściwości typu OrderManagementAction
:
Właściwość | Typ | Opis | |
---|---|---|---|
type |
OrderManagementActionType |
Wymagany. |
|
button |
Button |
Wymagany. |
Ten przykład pokazuje element OrderManagementAction
:
Przykład 1
{ "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }
Przykład 2
{ "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }
Typ czynności zarządzania
Określa typy powiązane zOrderManagementAction
.
Typ OrderManagementActionType
może mieć następujące wartości:
CUSTOMER_SERVICE
: numer e-mail lub numer kontaktowy obsługi klienta wyświetlany na stronie potwierdzenia zamówienia. To jest wymagane. Prefiks openUrlAction.url musi mieć format "mailto", "tel", "http" lub "https".EMAIL
: działanie e-maila dotyczy tylko strony szczegółów zamówienia. Prefiks openUrlAction.url musi zawierać "mailto".CALL_DRIVER
: działanie wywołania tylko na stronie szczegółów zamówienia. Prefiks openUrlAction.url musi być "tel".CALL_RESTAURANT
: działanie wywołania tylko na stronie szczegółów zamówienia. Prefiks openUrlAction.url musi być "tel".
Stan zamówienia
Obecny stan zamówienia. Każda wartość state
w polu OrderState
odpowiada też stanowi zakupu na myaccount.google.com.
W tej tabeli podano właściwości typu OrderState
:
Właściwość | Typ | Opis | |
---|---|---|---|
state |
OrderStateEnum |
Wymagany. |
|
label |
Ciąg | Wymagany. Widoczny dla użytkownika ciąg znaków reprezentujący stan. Stosuje się w nim wielkości liter jak w zdaniu. Przykład: |
Ten przykład pokazuje element OrderState
:
Przykład
{ "state": "CONFIRMED", "label": "Provider confirmed" }
OrderStateEnum,
Określa typy powiązane zOrderState
.
Typ OrderStateEnum
może mieć następujące wartości:
CREATED
: zamówienie zostało utworzone przez integratora i oczekuje na potwierdzenie przez dostawcę. Odpowiada &zamówieniu i stanie zakupu.CONFIRMED
: zamówienie potwierdzone przez dostawcę i aktywne. Odpowiada stanowi „Zaakceptowano” i „Zakup”.REJECTED
: zamówienie zostało odrzucone przez integratora lub dostawcę. Odpowiada stanowi „Odrzucono i odrzucono”.CANCELLED
: użytkownik anulował zamówienie. Odpowiada &kupionemu i stanowi zakupu.IN_PREPARATION
: przygotowujemy jedzenie. Odpowiada &stanowi nieznany stan zakupu.READY_FOR_PICKUP
: jedzenie jest gotowe do odbioru. Odpowiada &stanowi „Gotowy do odbioru”.IN_TRANSIT
: przesyłka jest dostarczana. Odpowiada statusowi „W toku” i „Zakup”.FULFILLED
: użytkownik otrzymał to, co zostało zamówione. Odpowiada &kupionemu i stanie zakupu.
Rachunek
Wyślij ten typ w przesłanym zamówieniuAppResponse
, gdzie OrderState
to „"CONFIRMED", "FULFILLED" lub "IN_TRANSIT". Wyślij rachunek, gdy userVisibleOrderId
będzie dostępny. Nie będzie trzeba
wysyłać rachunku za każdym razem.
W tej tabeli podano właściwości typu Receipt
:
Właściwość | Typ | Opis | |
---|---|---|---|
userVisibleOrderId |
Ciąg | Wymagany. Wymagane, jeśli zamówienie to "CONFIRMED", "IN_TRANSIT" lub "FULFILLED". To pole zawiera pojedynczy identyfikator zamówienia widoczny dla użytkownika (zazwyczaj jest to identyfikator zamówienia restauracji) wyświetlany zarówno na rachunku integratora, jak i na karcie zamówienia Google. Użytkownik musi mieć możliwość korzystania z tego identyfikatora w celu odwołania się do zamówienia klienta od dostawcy i integratora. Wystarczy, że podasz ten identyfikator tylko raz w danej aktualizacji zamówienia. Dopóki nie zostanie podany, actionactionId to uservisibleOrderId. Na przykład identyfikator użytkownika widoczny dla użytkowników może nie być widoczny do momentu potwierdzenia zamówienia przez restaurację. Po potwierdzeniu wyślij wiadomość AsyncOrderUpdateRequestMessage z zamówieniem zamówienia i potwierdzeniem. |
Ten przykład pokazuje element Receipt
:
Przykład
{ "userVisibleOrderId": "userVisibleId1234" }
Informacje o odrzuceniu
W tej tabeli podano właściwości typu RejectionInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
type |
RejectionType |
Wymagany. |
|
reason |
Ciąg |
Powód odrzucenia używany do logowania wewnętrznego. To pole nie jest widoczne dla użytkowników. |
Ten przykład pokazuje element RejectionInfo
:
Przykład
{ "type": "PAYMENT_DECLINED", "reason": "There is an issue with payment processing." }
Typ odrzucenia
Typ RejectionType
może mieć następujące wartości:
INELIGIBLE
: użytkownik nie może korzystać z tej usługi z powodu wątpliwości dotyczących zasad lub ryzyka.PAYMENT_DECLINED
: wystąpił problem z przetwarzaniem płatności.UNAVAILABLE_SLOT
: zamówienie nie może zostać zrealizowane w późniejszym terminie określonym przez DeliveryInfo lub odbioru.PROMO_NOT_APPLICABLE
: wystąpił problem z promocją.UNKNOWN
: dowolny inny powód.
Rodzaje związane z płatnościami
W tej sekcji opisujemy typy płatności związane z zamawianiem jedzenia.ActionProvidedPaymentOptions
Wymagania dotyczące formy płatności opartej na działaniu.
W tej tabeli podano właściwości typu ActionProvidedPaymentOptions
:
Właściwość | Typ | Opis | |
---|---|---|---|
paymentType |
PaymentType |
Wymagany. |
|
displayName |
Ciąg | Wymagany. Nazwa instrumentu płatniczego widoczna na rachunku. Przykład: |
|
onFulfillmentPaymentData |
OnFulfillmentPaymentData |
Dodatkowe dane dla typu płatności "ON_FULFILLMENT". W tym polu możesz na przykład określić, czy w przypadku realizacji transakcji gotówka lub karta mają być obsługiwane. |
Ten przykład pokazuje element ActionProvidedPaymentOptions
:
Przykład
{ "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } }
AllowedAuthMethods
Typ AllowedAuthMethods
może mieć następujące wartości:
PAN_ONLY
: metoda uwierzytelniania powiązana z kartami płatniczymi zapisanymi na koncie Google użytkownika. Dane o zwróconej płatności obejmują numer konta osobistego (PAN) z miesiącem wygaśnięcia i datą ważności.
AllowedCardNetworks.
Typ AllowedCardNetworks
może mieć następujące wartości:
AMEX
DISCOVER
INTERAC
JCB
MASTERCARD
VISA
Parametry karty
Wykorzystaj ten obiekt, aby skonfigurować obsługę Google Pay API w swojej witrynie.
W tej tabeli podano właściwości typu CardParameters
:
Właściwość | Typ | Opis | |
---|---|---|---|
allowedAuthMethods |
Lista> | Wymagany. Pola obsługiwane przy uwierzytelnianiu transakcji kartą. Musi mieć nie więcej niż 1 element. |
|
allowedCardNetworks |
ListaAllowedCardNetworks > |
Wymagany. co najmniej jedną sieć kart, która jest też obsługiwana przez Google Pay API. Musi mieć nie więcej niż 1 element. |
|
billingAddressRequired |
Wartość logiczna |
Ustaw jako prawda, jeśli wymagasz adresu rozliczeniowego. Adres rozliczeniowy należy wysyłać tylko wtedy, gdy jest to konieczne do przetworzenia transakcji. Dodatkowe żądania danych mogą utrudniać proces płatności i obniżać współczynniki konwersji. |
|
cvcRequired |
Wartość logiczna |
Ustaw wartość „true”, jeśli korzystasz z TimeofMoney, czyli „false” w przypadku wszystkich innych firm obsługujących płatności. |
Ten przykład pokazuje element CardParameters
:
Przykład
{ "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "AMEX", "DISCOVER" ], "billingAddressRequired": false, "cvcRequired": false }
GoogleProvidedPaymentInstrument.
W tej tabeli podano właściwości typu GoogleProvidedPaymentInstrument
:
Właściwość | Typ | Opis | |
---|---|---|---|
instrumentToken |
Ciąg | Wymagany. Podstawowy zakodowany ciąg 64 zawierający token płatności służący do obciążania użytkownika płatnością za pomocą firmy obsługującej płatności Google Pay zgodnie z wcześniej opisanymi kryteriami GoogleProvidedPaymentOptions. |
|
billingAddress |
PostalAddress |
Adres rozliczeniowy na potrzeby płatności. |
Ten przykład pokazuje element GoogleProvidedPaymentInstrument
:
Przykład
{ "instrumentToken": "abcd", "billingAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] } }
Opcje GoogleProvidedPaymentOptions
Wymagania dotyczące formy płatności udostępnionej przez Google.
W tej tabeli podano właściwości typu GoogleProvidedPaymentOptions
:
Właściwość | Typ | Opis | |
---|---|---|---|
facilitationSpecification |
Ciąg |
Ciąg JSON RequestRequest jako ciąg znaków. Wykorzystaj ten obiekt, aby skonfigurować obsługę Google Pay API w swojej witrynie. |
|
supportedCardNetworks |
ListaSupportedCardNetworks > |
Zamiast tego użyj metody facicytionSpecification. Typ sieci kart obsługiwanych przez agenta. To pole zostało wycofane. |
|
prepaidCardDisallowed |
Wartość logiczna |
Zamiast tego użyj metody facicytionSpecification. Określa, czy karta przedpłacona może być używana jako forma płatności. To pole zostało wycofane. |
|
billingAddressRequired |
Wartość logiczna |
Zamiast tego użyj metody facicytionSpecification. Określa, czy adres rozliczeniowy jest wymagany. To pole zostało wycofane. |
|
tokenizationParameters |
TokenizationParameters |
To pole zostało wycofane. |
Ten przykład pokazuje element GoogleProvidedPaymentOptions
:
Przykład 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\"}}" }
Przykład 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 }
Przykład 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 }
Informacje o sprzedawcy
Wykorzystaj ten obiekt, aby skonfigurować obsługę Google Pay API w swojej witrynie.
W tej tabeli podano właściwości typu MerchantInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
merchantId |
Ciąg |
Identyfikator sprzedawcy Google wydany przez Google Pay. |
|
merchantName |
Ciąg | Wymagany. Nazwa sprzedawcy w formacie UTF-8. Nazwa sprzedawcy jest wyświetlana w arkuszu płatności. |
BigtableFulfillment
Za pomocą tego obiektu możesz przesłać dodatkowe dane dla elementu PaymentType &ONTFONFILLMENT".
W tej tabeli podano właściwości typu OnFulfillmentPaymentData
:
Właściwość | Typ | Opis | |
---|---|---|---|
supportedPaymentOptions |
ListaPaymentOptionsEnums > |
Lista opcji płatności dostępnych dla użytkownika w momencie realizacji zamówienia. |
Ten przykład pokazuje element OnFulfillmentPaymentData
:
Przykład
{ "supportedPaymentOptions": [ "Cash", "Card" ] }
Parametry
Określa typy powiązane z TokenizationParameters
.
W tej tabeli podano właściwości typu Parameters
:
Właściwość | Typ | Opis | |
---|---|---|---|
gateway |
Ciąg | Wymagany. Przykład: |
|
gatewayMerchantId |
Ciąg | ||
[additionalKey: string] |
Ciąg | Dodatkowe pary klucz-wartość |
Ten przykład pokazuje element Parameters
:
Przykład 1
{ "gatewayMerchantId": "90412491", "gateway": "olo" }
Przykład 2
{ "gateway": "braintree", "braintree:apiVersion": "v1", "braintree:sdkVersion": "1.4.0", "braintree:merchantId": "YOUR_MERCHANT_ID", "braintree:clientKey": "YOUR_BRAINTREE_SANDVOX_OR_PRODUCTION_KEY" }
Żądanie GTM
Wykorzystaj ten obiekt, aby skonfigurować obsługę Google Pay API w swojej witrynie.
W tej tabeli podano właściwości typu PaymentDataRequest
:
Właściwość | Typ | Opis | |
---|---|---|---|
apiVersion |
Const | Wymagany. Główna wersja interfejsu API. Wartość: |
|
apiVersionMinor |
Const | Wymagany. Drobna wersja interfejsu API. Wartość: |
|
merchantInfo |
MerchantInfo |
Wymagany. (Identyfikator sprzedawcy w Google Pay) Informacje o sprzedawcy, który wysłał żądanie płatności. |
|
allowedPaymentMethods |
ListaPaymentMethod > |
Wymagany. Określa obsługę co najmniej jednej formy płatności obsługiwanej przez Google Pay API. |
|
transactionInfo |
TransactionInfo |
Wymagany. Szczegółowe informacje o autoryzacji transakcji na podstawie tego, czy użytkownik ją zaakceptuje. To pole zawiera łączną cenę i stan ceny. |
Ten przykład pokazuje element PaymentDataRequest
:
Przykład
{ "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" } }
Dane karty
Informacje o płatności dotyczące zamówienia.
W tej tabeli podano właściwości typu PaymentInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
displayName |
Ciąg | Wymagany. Nazwa instrumentu płatniczego widoczna dla użytkownika widoczna na rachunku. |
|
paymentType |
PaymentType |
Wymagany. |
|
googleProvidedPaymentInstrument |
GoogleProvidedPaymentInstrument |
Token, którego można użyć przez działanie. Określ to tylko wtedy, gdy w usłudze CheckoutResponseMessage została podana opcja GoogleProvidedPaymentOptions. |
Ten przykład pokazuje element PaymentInfo
:
Przykład 1
{ "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd" }, "paymentType": "PAYMENT_CARD" }
Przykład 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" }
Forma płatności
Wykorzystaj ten obiekt, aby skonfigurować obsługę Google Pay API w swojej witrynie.
W tej tabeli podano właściwości typu PaymentMethod
:
Właściwość | Typ | Opis | |
---|---|---|---|
type |
Const | Wymagany. Krótki identyfikator obsługiwanej formy płatności. Obecnie obsługiwana jest tylko karta CARD. Wartość: |
|
parameters |
CardParameters |
Wymagany. Parametry wymagane do skonfigurowania podanej formy płatności. |
|
tokenizationSpecification |
TokenizationSpecification |
Wymagany. Skonfiguruj dostawcę konta lub odszyfrowywania, aby otrzymywać dane karty. Właściwość ta jest wymagana dla formy płatności CARD. |
Ten przykład pokazuje element PaymentMethod
:
Przykład
{ "type": "CARD", "parameters": { "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "VISA", "AMEX", "MASTERCARD" ], "billingAddressRequired": false }, "tokenizationSpecification": { "type": "PAYMENT_GATEWAY", "parameters": { "gatewayMerchantId": "90412491", "gateway": "olo" } } }
Opcje płatności
W tej tabeli podano właściwości typu PaymentOptions
:
Właściwość | Typ | Opis | |
---|---|---|---|
Wymagana jest dokładnie jedna z tych grup usług. | |||
googleProvidedOptions |
Grupa 1 | GoogleProvidedPaymentOptions |
Wzajemnie wykluczające się z akcją actionProvidedOptions. Użyj jej do płatności online za pomocą gPay. |
actionProvidedOptions |
Grupa 2 | ActionProvidedPaymentOptions |
Wzajemnie wykluczające się z metodą googleProvidedOptions. Użyj go, aby otrzymać kwotę „gotówka na dostawę” lub „zapłać za realizację”. |
Ten przykład pokazuje element PaymentOptions
:
Przykład 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\"}}" } }
Przykład 2
{ "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } } }
Opcje płatności
Typ PaymentOptionsEnums
może mieć następujące wartości:
Cash
Card
UPI
Paytm
Typ płatności
Typ PaymentType
może mieć następujące wartości:
PAYMENT_CARD
: w przypadku GoogleProvidedPaymentOptions.ON_FULFILLMENT
: opcja ActionProvidedPaymentOptions.
ObsługiwaneKartyKarty
Określa typy powiązane zGoogleProvidedPaymentOptions
.
Typ SupportedCardNetworks
może mieć następujące wartości:
UNSPECIFIED_CARD_NETWORK
AMEX
DISCOVER
JCB
MASTERCARD
VISA
Parametry tokenizacji
Określa typy związane zGoogleProvidedPaymentOptions
.
W tej tabeli podano właściwości typu TokenizationParameters
:
Właściwość | Typ | Opis | |
---|---|---|---|
tokenizationType |
Enum [
"UNSPECIFIED_TOKENIZATION_TYPE",
"PAYMENT_GATEWAY"
] |
Wymagany. Zamiast tego użyj metody facicytionSpecification. Dozwolony jest typ tokenów. |
|
parameters |
Parameters |
Zamiast tego użyj metody facicytionSpecification. |
Specyfikacja tokenizacji
Ten obiekt umożliwia skonfigurowanie konta, na które mają być wysyłane informacje o płatnościach.
W tej tabeli podano właściwości typu TokenizationSpecification
:
Właściwość | Typ | Opis | |
---|---|---|---|
type |
Const | Wymagany. |
|
parameters |
Parameters |
Wymagany. |
Ten przykład pokazuje element TokenizationSpecification
:
Przykład 1
{ "type": "PAYMENT_GATEWAY", "parameters": { "gatewayMerchantId": "1247192", "gateway": "cybersource" } }
Przykład 2
{ "type": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:version": "2018-10-31", "stripe:publishableKey": "12378127" } }
Informacje o transakcjach
Ten obiekt opisuje transakcję, która określa zdolność płatnika. Jest on używany do wyświetlenia okna autoryzacji płatności.
W tej tabeli podano właściwości typu TransactionInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
currencyCode |
Ciąg | Wymagany. Kod waluty wyrażony literami według normy ISO 4217. |
|
transactionId |
Ciąg |
Unikalny identyfikator próby transakcji. Sprzedawcy mogą używać istniejących identyfikatorów lub generować określony identyfikator na potrzeby prób dokonania transakcji w Google Pay. To pole jest wymagane, gdy wywołania zwrotne są wysyłane do interfejsu API transakcji Google. |
|
totalPriceStatus |
Const | Wymagany. Użyj wartości &ESTT Łączna cena może zostać dostosowana na podstawie szczegółów odpowiedzi, takich jak podatek od sprzedaży obliczany na podstawie adresu rozliczeniowego. Wartość: |
|
totalPrice |
Ciąg | Wymagany. Łączna wartość pieniężna transakcji z opcjonalną dokładnością dziesiętną z dwoma miejscami po przecinku. To pole powinno mieć taką samą wartość jak koszyka.totalPrice. |
Ten przykład pokazuje element TransactionInfo
:
Przykład
{ "totalPriceStatus": "ESTIMATED", "totalPrice": "12.34", "currencyCode": "USD" }