Typy podstawowe
Koszyk
Zawiera szczegóły zamówienia oraz informację, czy prośba dotyczy odbioru czy dostawy. Koszyk zawiera też szczegóły dostawy, napiwek i adres dostawy. ObiektCart
jest zdefiniowany w pliku Checkout AppRequest
.f.
W pliku Checkout AppResponse
znajduje się kopia koszyka.
W tabeli poniżej podano właściwości typu Cart
:
Właściwość | Typ | Opis | |
---|---|---|---|
@type |
Const |
Typ tego obiektu. Pomiń to pole, jeśli nadrzędny obiekt Cart jest częścią ProposedOrder. Wartość: |
|
id |
String |
Opcjonalny identyfikator koszyka. |
|
merchant |
Merchant |
Sprzedawca powiązany z tym koszykiem. |
|
lineItems |
Lista<LineItem > |
Wymagane. Lista towarów lub usług, które użytkownik zamawia. W menu musi być co najmniej 1 pozycja. |
|
promotions |
Lista<Promotion > |
Promocja zastosowana w tym koszyku. Obecnie obsługiwana jest tylko 1 promocja. |
|
notes |
String |
Uwagi dotyczące zamówienia lub instrukcji dostawy. |
|
extension |
FoodCartExtension |
Określa szczegóły dotyczące użytkownika, np. preferencje dotyczące realizacji. |
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, która odbiera zamówienie. Jest ona dostępna tylko wAppResponse
.
W tabeli poniżej podano właściwości typu Contact
:
Właściwość | Typ | Opis | |
---|---|---|---|
displayName |
String |
Imię i nazwisko osoby odbierającej zamówienie, które ma być wyświetlane. Użyj tego pola, jeśli nie podasz atrybutów firstName i lastName. Przykład: |
|
email |
String |
Adres e-mail osoby, która odbiera zamówienie. Przykład: |
|
firstName |
String |
Imię osoby, która odbiera zamówienie. Przykład: |
|
lastName |
String |
Nazwisko osoby, która otrzymuje zamówienie. Przykład: |
|
phoneNumber |
String |
Numer telefonu osoby odbierającej zamówienie, z kodem kraju. Przykład: |
|
emailVerified |
Wartość logiczna |
Wskazuje, czy osoba otrzymująca zamówienie jest zalogowana na swoim koncie Google. |
Ten przykład pokazuje element Contact
:
Przykład
{ "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" }
CustomPushMessage
ZawieraOrderUpdate
żądania.
W tabeli poniżej podano właściwości typu CustomPushMessage
:
Właściwość | Typ | Opis | |
---|---|---|---|
orderUpdate |
OrderUpdate |
Wymagane. Zaktualizowano informacje o zamówieniu. |
Ten przykład przedstawia 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" } } }
DeliveryInfo
Poniższa tabela zawiera właściwości typu DeliveryInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
deliveryTimeIso8601 |
String |
Przewidywany czas dostawy w formacie sygnatury czasowej ISO 8601: „{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z” lub formacie czasu trwania: „P(n)Y(n)M(n)DT(n)H(n)M(n)S”. Na przykład PT90M oznacza 90 minut. Wartość domyślna „PT0M” wskazuje, że preferowany czas dostawy to jak najszybciej. Źródło: https://pl.wikipedia.org/wiki/ISO_8601#Połączone_odzwierciedlenie_daty_i_czasu. Użyj tego, aby zaktualizować szacowany czas dostawy w odpowiedzi na proces płatności. Przykład: |
Ten przykład przedstawia element DeliveryInfo
:
Przykład
{ "deliveryTimeIso8601": "PT90M" }
Wyłączenie odpowiedzialności
W tabeli poniżej podano właściwości typu Disclaimer
:
Właściwość | Typ | Opis | |
---|---|---|---|
predefinedMessage |
PredefinedMessage |
Wymagane. Aby podczas procesu płatności wyświetlać wstępnie zdefiniowane komunikaty o wyłączeniu odpowiedzialności. |
|
feeAmount |
Money |
Partner obciąży sprzedawcę opłatą w wysokości N za to zamówienie. |
|
feeAmountRange |
FeeAmountRange |
Partner obciąży restaurację opłatą w wysokości od N do M za każde zamówienie. |
|
feePercent |
Number |
Partner obciąży sprzedawcę opłatą w wysokości N% za to zamówienie. |
|
feePercentRange |
FeePercentRange |
Partner obciąży sprzedawcę opłatą w wysokości N–M% za każde zamówienie. |
Ten przykład przedstawia 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 zawierać te wartości:
CLOSED
: restauracja jest zamknięta w momencie składania zamówienia.NO_CAPACITY
: brak dostępnej pojemności usługi (np. tymczasowa przerwa z powodu godzin szczytu).NO_COURIER_AVAILABLE
: nie udało się przetworzyć zamówienia ze względu na ograniczoną liczbę dostawców.REQUIREMENTS_NOT_MET
: nie zostały spełnione ograniczenia dotyczące przyjęcia zamówienia (np. minimalna wielkość koszyka).UNAVAILABLE_SLOT
: zamówienie nie może zostać zrealizowane w czasie określonym w danych DeliveryInfo lub PickupInfo.OUT_OF_SERVICE_AREA
: zamówienia nie można dostarczyć na adres użytkownika.PROMO_EXPIRED
: nie udało się zastosować rabatu, ponieważ promocja wygasła.PROMO_NOT_APPLICABLE
: ogólny kod błędu, który obejmuje wszystkie przypadki nieudanego zastosowania kodu promocyjnego, jeśli żaden z innych kodów błędów kodu promocyjnego nie pasuje.PROMO_NOT_RECOGNIZED
: kod kuponu nie został rozpoznany.PROMO_ORDER_INELIGIBLE
: bieżące zamówienie nie kwalifikuje się do wykorzystania tego kuponu.PROMO_USER_INELIGIBLE
: obecny użytkownik nie kwalifikuje się do korzystania z tego kuponu.AVAILABILITY_CHANGED
: produkt nie jest już dostępny lub jest zbyt mała liczba produktów, aby spełnić żądanie.INCORRECT_PRICE
: błędy dotyczące cen opłat lub łącznej kwoty.INVALID
: element zamówienia, opcja realizacji lub promocja zawierają nieprawidłowe dane.NOT_FOUND
: nie można znaleźć elementu lineItem, opcji realizacji zamówienia lub promocji.PRICE_CHANGED
: cena produktu uległa zmianie.
FeeAmountRange
W tabeli poniżej podano właściwości typu FeeAmountRange
:
Właściwość | Typ | Opis | |
---|---|---|---|
minFeeAmount |
Money |
Dolna granica kwoty opłaty. |
|
maxFeeAmount |
Money |
Górna granica kwoty opłaty. |
FeePercentRange
Poniższa tabela zawiera właściwości typu FeePercentRange
:
Właściwość | Typ | Opis | |
---|---|---|---|
minFeePercent |
Number |
Dolna granica procentu naliczonej opłaty. |
|
maxFeePercent |
Number |
Górna granica odsetka opłaty. |
FoodCartExtension
Zawiera informacje o użytkowniku, np. preferencje dotyczące realizacji.
Poniższa tabela zawiera właściwości typu FoodCartExtension
:
Właściwość | Typ | Opis | |
---|---|---|---|
@type |
Const |
Typ tego rozszerzenia. To pole jest zawsze ustawione na „type.googleapis.com/google.actions.v2.orders.FoodCartExtension”. Wartość: |
|
contact |
Contact |
Dane kontaktowe osoby, która otrzyma zamówienie. Szczegóły obejmują imię i nazwisko, numer telefonu i adres e-mail. |
|
fulfillmentPreference |
FulfillmentOption |
Wymagane. Preferencja użytkownika dotycząca realizacji. |
|
location |
Location |
W polu CheckoutRequestMessage to pole określa adres dostawy, który jest wymagany, jeśli zamówienie ma być dostarczone. W przypadku zamówień na wynos lub do odbioru to pole nie jest uwzględniane w wiadomości. |
Ten przykład przedstawia 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" } }
FoodErrorExtension
Identyfikuje co najmniej 1 błąd, który wystąpił podczas przetwarzania żądania. W tej tabeli opisujemy pola typuFoodErrorExtension
.
Błędy można wysyłać w ramach CheckoutResponse
.
W tabeli poniżej podano właściwości typu FoodErrorExtension
:
Właściwość | Typ | Opis | |
---|---|---|---|
@type |
Konst | Wymagane. Typ tego rozszerzenia. Wartość: |
|
foodOrderErrors |
List<FoodOrderError > |
Wymagane. Tablica obiektów FoodOrderError, które opisują występujące błędy. Zalecamy 1 błąd na koszyk lub produkt. W menu musi być co najmniej 1 pozycja. |
|
correctedProposedOrder |
ProposedOrder |
Wymagane, jeśli nowe ProposedOrder z poprawkami; Zwróć ten obiekt, jeśli w oryginalnym zamówieniu ProposedOrder występują błędy, które można naprawić. Na przykład zmiana ceny co najmniej jednego elementu zamówienia w koszyku jest błędem, który można naprawić. Odwracalne błędy z ważnym elementem ProposedOrder są przesyłane do etapu potwierdzenia zamiast wymagać od użytkownika sprawdzenia koszyka. |
|
paymentOptions |
PaymentOptions |
Wymagane, jeśli Domyślne opcje płatności wybrane dla użytkownika. |
|
additionalPaymentOptions |
List<PaymentOptions > |
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 } } }
FoodItemExtension
Określa dodatki do produktów spożywczych.
W tabeli poniżej podano właściwości typu FoodItemExtension
:
Właściwość | Typ | Opis | |
---|---|---|---|
@type |
Konst | Wymagane. Typ tego rozszerzenia. To pole zawsze jest ustawione na „type.googleapis.com/google.actions.v2.orders.FoodItemExtension”. Wartość: |
|
options |
List<FoodItemOption > |
Opcja może być elementem dodatkowym lub grupą dodatków zawierającą zestaw dodatków. |
Ten przykład przedstawia 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 } ] } ] }
FoodItemOption
W tabeli poniżej podano właściwości typu FoodItemOption
:
Właściwość | Typ | Opis | |
---|---|---|---|
id |
String |
Unikalny identyfikator przypisany przez Google. Gdy wysyłasz FoodOrderError lub AsyncOrderUpdateRequest, użyj tego pola, aby rozróżnić przypadki, gdy koszyk zawiera więcej niż 1 element o tej samej wartości offerId. Przykład: |
|
offerId |
String |
Identyfikator oferty produktu. Przykład: |
|
name |
String |
Nazwa opcji. Przykład: |
|
price |
Money |
||
note |
String |
Uwaga dotycząca opcji. |
|
quantity |
Number |
W przypadku opcji, które są elementami, jest to liczba elementów. Przykład: |
|
subOptions |
List<FoodItemOption > |
Opcje podrzędne, jeśli występują. Przykład: |
Ten przykład przedstawia 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 } ] }
FoodOrderError
Zawiera szczegółowe informacje o błędach w plikachCheckoutResponse
.
W tabeli poniżej podano właściwości typu FoodOrderError
:
Właściwość | Typ | Opis | |
---|---|---|---|
error |
Error |
Wymagane. |
|
id |
String | Wymagane, jeśli To pole jest wymagane w przypadku błędów na poziomie produktu. Jest to identyfikator przypisany przez Google do pozycji menu lub opcji produktu spożywczego. |
|
description |
String |
Opis błędu. Ten opis służy do wewnętrznego rejestrowania danych i nie jest widoczny dla użytkowników. |
|
updatedPrice |
Money |
Wymagany, gdy Nowa cena produktu, który spowodował błąd. Jest to wymagane tylko wtedy, gdy błąd to „PRICE_CHANGED”. |
|
availableQuantity |
Liczba całkowita | Wymagane, jeśli Nowa dostępna liczba produktów, które spowodowały błąd. Jest to wymagane tylko wtedy, gdy błąd to „INVALID” lub „NOT_FOUND”. Wartość powinna być równa 0 w przypadku wartości „INVALID” i „NOT_FOUND”. |
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 } }
FoodOrderExtension
Zawiera informacje o wypełnieniu zamówienia.
W tabeli poniżej podano właściwości typu FoodOrderExtension
:
Właściwość | Typ | Opis | |
---|---|---|---|
@type |
Const |
Typ tego rozszerzenia. To pole zawsze jest ustawione na „type.googleapis.com/google.actions.v2.orders.FoodOrderExtension”. Wartość: |
|
availableFulfillmentOptions |
Lista<FulfillmentOption > |
Przedstawia dostępne opcje realizacji zamówienia. |
|
optinForRemarketing |
Wartość logiczna |
prośba użytkownika o dołączenie do kanałów marketingowych, Domyślnie nie możesz wysyłać treści marketingowych bez zgody użytkownika. Jeśli optinForRemarketing ma wartość prawda, możesz zasubskrybować użytkownika. Jeśli opcja optinForRemarketing ma wartość false lub nie występuje, musisz zachować stan subskrypcji w swoim systemie. Użytkownicy nie mogą zrezygnować z remarketingu przez Google, tylko za pomocą funkcji anulowania subskrypcji dostępnej w Twoich kanałach marketingowych. Ta flaga jest obecna tylko w 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 }
FulfillmentOption
ObiektuFulfillmentOption
możesz używać na te sposoby:
-
W elementach
Checkout AppRequest
iSubmit AppRequest
:Cart.extension.fulfillmentPreference
: przechowuje preferencje użytkownika (dostawę lub odbiór). Podczas wysyłania żądania płatności cena zawsze wynosi 0. -
W elementach
Checkout AppResponse
:ProposedOrder.extension.availableFulfillmentOptions
: określa co najmniej 1 opcję dostawy (obecnie obsługiwana jest tylko 1 opcja). Opcja domyślna jest określana jakoLineItem
wProposedOrder.otherItems
.offerId
obiektuFulfillmentOption
powinien być zgodny z identyfikatoremLineItem
określonym wProposedOrder.otherItems
.
W tabeli poniżej podano właściwości typu FulfillmentOption
:
Właściwość | Typ | Opis | |
---|---|---|---|
offerId |
String |
Unikalny identyfikator tej opcji realizacji, jeśli występuje. |
|
fulfillmentInfo |
FulfillmentOptionInfo |
Wymagane. |
|
expiresAt |
Sygnatura czasowa ISO |
Czas, w którym ta opcja realizacji wygasa. |
|
price |
Money |
Koszt tej opcji. |
Ten przykład przedstawia 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 zFulfillmentInfo
.
W tabeli poniżej podano właściwości typu FulfillmentOptionInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
Wymagana jest dokładnie 1 z tych grup właściwości. | |||
delivery |
Grupa 1 | DeliveryInfo |
W przypadku, gdy jest obecny, wskazuje zamówienie z dostawą. |
pickup |
Grupa 2 | PickupInfo |
Wskazanie zamówienia na odbiór. |
Obraz
W tabeli poniżej podano właściwości typu Image
:
Właściwość | Typ | Opis | |
---|---|---|---|
sourceUrl |
String | Wymagane. Adres URL obrazu. Obraz powinien mieć co najmniej 72 x 72 piksele. Aby osiągnąć najlepsze rezultaty, użyj obrazu, który ma wielkość co najmniej 216 x 216 pikseli. Rozmiar obrazu nie może przekraczać 6 MB i 64 megapikseli. |
LineItem
Określa zawartość koszyka (Cart.lineItems
) lub dodatkowe opłaty za zamówienie (ProposedOrder.otherItems
).
Poniższa tabela zawiera właściwości typu LineItem
:
Właściwość | Typ | Opis | |
---|---|---|---|
id |
String | Wymagane, jeśli W przypadku elementu zamówienia w koszyku (ProposedOrder.cart.lineItems[0].id) jest to unikalny identyfikator utworzony przez Google podczas tworzenia zamówienia. W przypadku elementu zamówienia w usłudze ProposedOrder (ProposedOrder.otherItems[0].id), która służy do dodawania elementów takich jak opłaty za dostawę i podatki, wartość atrybutu id jest definiowana przez dostawcę. Na przykład w koszyku znajdują się 2 te same produkty z różnymi instrukcjami przygotowania (np. 2 średnie pizze z różnymi dodatkami). W tym przypadku oba produkty mają ten sam identyfikator oferty podstawowej. Jeśli wysyłasz prośbę o aktualizację zamówienia, aby wskazać, że produkt został odrzucony, użyj tego identyfikatora do zidentyfikowania produktów. Innymi słowy, jeśli jedna z pizz zostanie odrzucona, ponieważ brakuje na niej określonego dodatku, identyfikator pomoże Google określić, który produkt w zamówieniu jest objęty reklamacją. To pole jest wymagane z wyjątkiem innych elementów. |
|
name |
String | Wymagane. Nazwa elementu zamówienia. Jest to widoczny dla użytkownika ciąg tekstowy, który w miarę możliwości powinien być zapisany wielkimi literami (np. „Opłata za dostawę”, „Opłata za usługę”, „Podatek”). W przypadku użytkowników pole to zostało obcięte do 100 znaków. |
|
type |
LineItemType |
Wymagane. |
|
quantity |
Liczba całkowita | Wymagane, jeśli Liczba uwzględnionych elementów. Nie dotyczy ProposedOrder.otherItems. |
|
description |
String |
Opis produktu. |
|
price |
Price |
Wymagane. Cena produktu lub produktów. Ta wartość odzwierciedla łączną cenę wszystkich towarów lub usług w danym elemencie zamówienia (czyli dodaj koszt wszystkich dodatków i pomnóż przez liczbę). Przykład: jeśli produkt o wartości 10 PLN ma ilość 3, cena wyniesie 30 PLN. Cena jednej pizzy o cenie podstawowej 5 USD i dodatku 1 USD wynosi 6 USD. W przypadku 2 pizzy (ilość = 2) o cenie podstawowej 5 zł i dodatku 1 zł za każdą pizzę cena wynosi 12 zł. Każdy element zamówienia powinien mieć cenę, nawet jeśli wynosi ona „0”. Jeśli typ to DISCOUNT, podaj wartość jako liczbę ujemną (np. „-2”). |
|
subLines |
List<SublineNote > |
Opcjonalny i ważny tylko wtedy, gdy typ to „REGULAR”. W tym polu w prośbie o płatność i przesłanie zamówienia może on zostać wysłany w tym polu. Upewnij się, że sprzedawca otrzyma notatę. Będzie ono widoczne w żądaniu jako subLines[0].note, czyli jedyna wartość podana w tym polu, jeśli jest obecna w żądaniu. Może mieć nie więcej niż 1 element. |
|
offerId |
String | Wymagane, jeśli Identyfikator oferty elementu MenuItem. Nie dotyczy ProposedOrder.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 } ] } }
LineItemType
Typ LineItemType
może mieć te wartości:
REGULAR
: element zamówienia „Towary”. Dotyczy Cart.lineItems.TAX
: element pozycji podatku. Dotyczy ProposedOrder.otherItems.DISCOUNT
: element zamówienia z rabatem. Pamiętaj, że cena powinna być ujemna. Dotyczy ProposedOrder.otherItems.GRATUITY
: element zamówienia z napiwkiem. Zazwyczaj zarezerwowane dla SubmitOrderRequestMessage w przypadku napiwku wybranego przez użytkownika. Dotyczy ProposedOrder.otherItems.DELIVERY
: element zamówienia dostawy. Dotyczy ProposedOrder.otherItems.SUBTOTAL
: element zamówienia z sumą częściową. Dotyczy ProposedOrder.otherItems.FEE
: dodatkowy element zamówienia, którego nie obsługują inne typy. Dotyczy ProposedOrder.otherItems.
Lokalizacja
Określa adres do zamawiania jedzenia. TypLocation
jest używany w Cart
, aby wskazać tylko miejsce docelowe zamówienia dostawy.
Zatwierdzona lokalizacja jest też widoczna w TransactionDecisionValue
, jeśli użytkownik złoży zamówienie. W przypadku zamówień, które obejmują odbiór osobisty, lokalizacja nie jest w ogóle uwzględniana (nawet pusta).
Poniższa tabela zawiera właściwości typu Location
:
Właściwość | Typ | Opis | |
---|---|---|---|
coordinates |
Coordinates |
||
formattedAddress |
String |
Wyświetl adres lokalizacji. Przykład: |
|
postalAddress |
PostalAddress |
||
zipCode |
String |
Przykład: |
|
city |
String |
Nazwa miasta. Przykład: |
|
notes |
String |
notatki dotyczące lokalizacji, takie jak kody bramy; Nazwa może mieć maksymalnie 500 znaków. Przykład: |
Ten przykład przedstawia 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 tabeli poniżej podano właściwości typu Merchant
:
Właściwość | Typ | Opis | |
---|---|---|---|
id |
String |
Identyfikator sprzedawcy. Jeśli określisz wartość, odpowiada ona ciągowi Restaurant.@id w pliku danych restauracji. Przykład: |
|
name |
String | Wymagane. Nazwa sprzedawcy widoczna dla użytkowników. Przykład: |
Ten przykład przedstawia element Merchant
:
Przykład
{ "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }
Pieniądze
W tabeli poniżej podano właściwości typu Money
:
Właściwość | Typ | Opis | |
---|---|---|---|
currencyCode |
String | Wymagane. Trzyliterowy kod waluty w formacie ISO 4217. Przykład: |
|
units |
String |
Całkowita kwota. Jeśli np. kod waluty to „PLN”, to jednostka „1” to 1 złoty. Przykład: |
|
nanos |
Liczba całkowita |
Liczba nano (10^-9) jednostek kwoty. Wartość musi mieścić się w przedziale od -999 999 999 do +999 999 999 (włącznie). Stosuj te reguły: jeśli jednostki są dodatnie, nanos muszą być dodatnie lub równe 0. Jeśli liczba jednostek wynosi 0, nanos mogą być dodatnie, zerowe lub ujemne. Jeśli jednostki są ujemne, nanos musi być ujemny lub równy zero. Na przykład wartość -1,75 USD jest reprezentowana jako units = -1 i nanos = -750 000 000. Przykład: |
Ten przykład przedstawia 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 koszty dostawy, a także informacje o płatności. Ten obiekt jest odbierany przez Twoje działanie w ramachSubmit AppRequest
.
W tabeli poniżej podano właściwości typu Order
:
Właściwość | Typ | Opis | |
---|---|---|---|
finalOrder |
ProposedOrder |
Wymagane. Proponowane zamówienie, w związku z którym zostało ono wydane. |
|
googleOrderId |
String | Wymagane. Identyfikator zamówienia przypisany przez Google. Ten identyfikator powinien być stabilny przez cały cykl życia zamówienia. Ten identyfikator nie jest widoczny dla użytkownika. |
|
orderDate |
Sygnatura czasowa ISO | Wymagane. Data i godzina utworzenia zamówienia. |
|
paymentInfo |
PaymentInfo |
Wymagane. Informacje o płatności odpowiadające płatności za to zamówienie. |
Ten przykład przedstawia 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" } }
OrderUpdate
W tabeli poniżej opisano pola typu OrderUpdate, które są uwzględniane wAppResponse
.
W tabeli poniżej podano właściwości typu OrderUpdate
:
Właściwość | Typ | Opis | |
---|---|---|---|
actionOrderId |
String | Wymagane. Unikalny identyfikator zamówienia w systemie integratora używany do identyfikowania zamówienia, dla którego wysyłana jest aktualizacja. Jeśli depozyt.user_visible_order_id nie zostanie podany co najmniej raz w zamówieniu OrderUpdate w przypadku zamówienia typu „CREATED”, będzie to identyfikator podany przez użytkownika widoczny na karcie zamówienia Google. |
|
orderState |
OrderState |
Wymagane. Nowy stan zamówienia. |
|
lineItemUpdates |
Map<String, LineItemUpdate > |
||
updateTime |
Sygnatura czasowa ISO | Wymagane. Czas zaktualizowania zamówienia. |
|
orderManagementActions |
List<OrderManagementAction > |
działania po zamówieniu, takie jak kontakt z zespołem pomocy i wyświetlanie szczegółów zamówienia; Może zawierać nie mniej niż 1 element i nie więcej niż 6 elementów. |
|
rejectionInfo |
RejectionInfo |
Wymagane, jeśli |
|
cancellationInfo |
CancellationInfo |
Wymagane, jeśli |
|
inTransitInfo |
InTransitInfo |
To pole zostało wycofane. |
|
fulfillmentInfo |
FulfillmentInfo |
To pole zostało wycofane. |
|
receipt |
Receipt |
Wymagane, jeśli W potwierdzeniu podaj widoczny dla użytkownika identyfikator zamówienia. |
|
totalPrice |
Price |
Łączna cena zamówienia. |
|
infoExtension |
FoodOrderUpdateExtension |
Podaje więcej szczegółów na temat aktualizacji zamówienia, takich jak przewidywany czas dostawy lub odbioru. |
Ten przykład przedstawia 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" } }
PickupInfo
W tabeli poniżej podano właściwości typu PickupInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
pickupTimeIso8601 |
String |
Przewidywany czas odbioru w formacie sygnatury czasowej ISO 8601: „{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z” lub formacie czasu trwania: „P(n)Y(n)M(n)DT(n)H(n)M(n)S”. Na przykład PT90M oznacza 90 minut. Wartość domyślna „PT0M” wskazuje, że preferowany czas odbioru to najbliższy możliwy czas. Więcej informacji: https://pl.wikipedia.org/wiki/ISO_8601#Attachd_date_and_time_representations. Służy do aktualizowania szacowanego czasu odbioru w momencie płatności. Przykład: |
Ten przykład przedstawia element PickupInfo
:
Przykład
{ "pickupTimeIso8601": "PT90M" }
PostalAddress
W tabeli poniżej podano właściwości typu PostalAddress
:
Właściwość | Typ | Opis | |
---|---|---|---|
regionCode |
String | Wymagane. Dwuliterowy kod kraju. Przykład: |
|
postalCode |
String |
Kod pocztowy. Przykład: |
|
administrativeArea |
String |
Najwyższy podział administracyjny stosowany w przypadku adresów pocztowych kraju lub regionu. Może to być stan, prowincja, obwód lub prefektura. Przykład: |
|
locality |
String |
Miasto odpowiadające tej lokalizacji. W regionach świata, w których miejscowości nie są dobrze zdefiniowane lub nie pasują do tej struktury, nie określaj miejscowości, a zamiast tego użyj pola addressLines. Przykład: |
|
addressLines |
List<String> |
Co najmniej 1 wiersz, za pomocą którego możesz określić adres ulicy. Tego pola nie należy modyfikować, ponieważ może ono zawierać niejasne rejony. Przykład: |
|
recipients |
List<String> |
Lista odbiorców zamówienia. To pole jest dostępne tylko w polu billingAddress. |
Ten przykład przedstawia element PostalAddress
:
Przykład
{ "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }
Cena
W tabeli poniżej podano właściwości typu Price
:
Właściwość | Typ | Opis | |
---|---|---|---|
type |
Enum [
"ESTIMATE",
"ACTUAL"
] |
Wymagane. Kod kuponu promocyjnego. |
|
amount |
Money |
Wymagane. |
Promocja
Poniższa tabela zawiera właściwości typu Promotion
:
Właściwość | Typ | Opis | |
---|---|---|---|
coupon |
String | Wymagane. Kod kuponu promocyjnego. |
ProposedOrder
W tabeli poniżej podano właściwości typu ProposedOrder
:
Właściwość | Typ | Opis | |
---|---|---|---|
id |
String |
Opcjonalny identyfikator proponowanego zamówienia. |
|
cart |
Cart |
Wymagane. Produkty użytkownika. |
|
otherItems |
List<LineItem > |
Elementy dodane przez dostawcę, takie jak opłaty za dostawę, inne opłaty i podatki. Elementy te mogą też zawierać napiwek lub rabat dodany przez użytkownika. Nie może zawierać więcej niż 10 elementów. |
|
image |
Image |
Obraz powiązany z zaproponowanym zamówieniem. |
|
totalPrice |
Price |
Wymagane. Łączna cena proponowanego zamówienia. |
|
extension |
FoodOrderExtension |
Wymagane. Określa informacje o realizacji zamówień na jedzenie. |
|
disclaimers |
List<Disclaimer > |
Odpowiadają komunikatom z wyłączeniem odpowiedzialności, które będą wyświetlane w interfejsie przed złożeniem zamówienia. |
Ten przykład przedstawia 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" } ] } }
SublineNote
Poniższa tabela zawiera właściwości typu SublineNote
:
Właściwość | Typ | Opis | |
---|---|---|---|
note |
String | Wymagane. |
Sygnatura czasowa
Data i godzina w tym formacie:
"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
TransactionDecisionValue
ZawieraOrder
.
Poniższa tabela zawiera właściwości typu TransactionDecisionValue
:
Właściwość | Typ | Opis | |
---|---|---|---|
order |
Order |
Wymagane. zamówienie z danymi do 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ę
AppRequest
W tabeli poniżej 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 |
Lista<Input > |
Wymagane. Zawiera oczekiwane argumenty do zapłaty za koszyk. Musi zawierać dokładnie 1 element. |
Ten przykład przedstawia 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" } } } } ] } ] }
CheckoutRequestMessage
CheckoutRequestMessage
to AppRequest
z intencją actions.foodordering.intent.CHECKOUT
.
SubmitOrderRequestMessage
SubmitOrderRequestMessage
to AppRequest
z zamiarem actions.foodordering.intent.TRANSACTION_DECISION
.
Rozmowa
Conversation
jest unikalny tylko dla jednej sesji. W razie potrzeby możesz użyć tej funkcji do połączenia ze sobą wielu działań Checkout
i SubmitOrder
.
Poniższa tabela zawiera właściwości typu Conversation
:
Właściwość | Typ | Opis | |
---|---|---|---|
conversationId |
String | Wymagane. Unikalny identyfikator rozmowy. |
Ten przykład pokazuje element Conversation
:
Przykład
{ "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ" }
Dane wejściowe
Oczekiwane argumenty realizacji transakcji w koszyku.
Poniższa tabela zawiera właściwości typu Input
:
Właściwość | Typ | Opis | |
---|---|---|---|
intent |
Enum [
"actions.foodordering.intent.CHECKOUT",
"actions.intent.TRANSACTION_DECISION"
] |
Wymagane. Ustaw wartość „actions.foodordering.intent.CHECKOUT” w przypadku wiadomości z prośbą o płatność LUB „actions.intent.TRANSACTION_DECISION” w przypadku wiadomości z prośbą o złożenie zamówienia. |
|
arguments |
List<Argument > |
Wymagane. Zawiera koszyk, który ma zostać opłacony, lub zamówienie, które ma zostać złożone Musi zawierać dokładnie 1 element. |
Argument
Zawiera szczegółowe informacje o produktach spożywczych, które użytkownik chce kupić. W przypadku płatności liczy się tylko rozszerzenie. W przypadku przesyłania zamówienia liczy się tylko wartość transactionDecisionValue.
W tabeli poniżej podano właściwości typu Argument
:
Właściwość | Typ | Opis | |
---|---|---|---|
Wymagana jest dokładnie 1 z tych grup właściwości. | |||
extension |
Grupa 1 | Cart |
Szczegóły produktów spożywczych, które użytkownik chce sprawdzić. |
transactionDecisionValue |
Grupa 2 | TransactionDecisionValue |
Zawiera zamówienie do złożenia wraz ze szczegółami płatności. |
Odpowiedź na realizację zamówienia
AppResponse
Poniższa tabela zawiera właściwości typu AppResponse
:
Właściwość | Typ | Opis | |
---|---|---|---|
expectUserResponse |
Const |
Ustaw wartość na fałsz. Wartość: |
|
finalResponse |
FinalResponse |
Wymagane. Zawiera Twoją odpowiedź na proces płatności koszyka. |
Ten przykład przedstawia 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 } } } } } ] } } }
CheckoutResponseMessage
CheckoutResponseMessage
to AppResponse
z elementem checkoutResponse
lub error
w StructuredResponse
.
SubmitOrderResponseMessage
SubmitOrderResponseMessage
to AppResponse
z orderUpdate
w StructuredResponse
.
FinalResponse
Twoja odpowiedź na proces płatności w koszyku lub wiadomość SubmitOrderRequestMessage.
W tabeli poniżej podano właściwości typu FinalResponse
:
Właściwość | Typ | Opis | |
---|---|---|---|
richResponse |
RichResponse |
Wymagane. Zawiera odpowiedź na wiadomość CheckoutRequestMessage lub SubmitOrderRequestMessage. |
CheckoutResponse
W tabeli poniżej podano właściwości typu CheckoutResponse
:
Właściwość | Typ | Opis | |
---|---|---|---|
proposedOrder |
ProposedOrder |
Wymagane. Proponowane zamówienie do wykorzystania na potrzeby transakcji. |
|
paymentOptions |
PaymentOptions |
Wymagane. Wybrano domyślną opcję płatności dla użytkownika. |
|
additionalPaymentOptions |
List<PaymentOptions > |
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 proces płatności w koszyku lub wiadomość SubmitOrderRequestMessage.
W tabeli poniżej podano właściwości typu Item
:
Właściwość | Typ | Opis | |
---|---|---|---|
structuredResponse |
StructuredResponse |
Wymagane. |
RichResponse
Zawiera Twoją odpowiedź na proces płatności koszyka.
Poniższa tabela zawiera właściwości typu RichResponse
:
Właściwość | Typ | Opis | |
---|---|---|---|
items |
List<Item > |
Wymagane. Musi zawierać dokładnie 1 element. |
StructuredResponse
W przypadku CheckoutResponseMessage może to być jedna z tych wartości: CheckoutResponse oznacza, że proces płatności został zakończony. LUB FoodErrorExtension: wskazuje błąd podczas płatności. Odpowiedź może zawierać poprawione ProposedOrder i PaymentOptions lub komunikat o błędzie bez opcji płatności. W przypadku elementu SubmitOrderResponseMessage prawidłowy jest tylko element orderUpdate.
Poniższa tabela zawiera właściwości typu StructuredResponse
:
Właściwość | Typ | Opis | |
---|---|---|---|
Wymagana jest dokładnie 1 z tych grup właściwości. | |||
checkoutResponse |
Grupa 1 | CheckoutResponse |
Wypłacone produkty plus podatki i rabaty. |
error |
Grupa 2 | FoodErrorExtension |
W elementach koszyka występują błędy. W zależności od rodzaju błędu ta właściwość może zawierać poprawione wartości ProposedOrder i PaymentOptions lub tylko komunikat o błędzie bez wartości PaymentOptions. |
orderUpdate |
Grupa 3 | OrderUpdate |
Asynchroniczne aktualizacje zamówień
W tej sekcji opisano typy ogólne, które stanowią prośby i odpowiedzi w ramach typowej interakcji z wbudowanym działaniem polegającym na zamawianiu jedzenia.AsyncOrderUpdateRequestMessage
powiadamia użytkownika o zmianach po przesłaniu i potwierdzeniu zamówienia. Możesz na przykład powiadomić użytkownika, że zamówienie jest w drodze lub że zmieniła się cena. Więcej informacji znajdziesz w:W tabeli poniżej podano właściwości typu AsyncOrderUpdateRequestMessage
:
Właściwość | Typ | Opis | |
---|---|---|---|
isInSandbox |
Wartość logiczna |
Wskazuje, że zamówienie, którego dotyczyła ta aktualizacja, to płatność w piaskownicy. |
|
customPushMessage |
CustomPushMessage |
Wymagane. Zawiera informacje o zmianie zamówienia. |
Ten przykład przedstawia 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
Po przesłaniu żądaniaAsyncOrderUpdateRequestMessage
Google odpowie z kodem stanu HTTP 200 i pustym ciałem. Jeśli nie uda się zaktualizować zamówienia, Google odpowie, dlaczego nie udało się tego zrobić.
Typy aktualizacji zamówień
Przycisk
Definiuje element interfejsu, który możesz dodać, aby umożliwić interakcję użytkownika.
Poniższa tabela zawiera właściwości typu Button
:
Właściwość | Typ | Opis | |
---|---|---|---|
title |
String | Wymagane. Wyświetlana etykieta. Aby zapewnić prawidłowe renderowanie, użyj małych liter w 30 znakach lub mniej. Przykład: |
|
openUrlAction |
OpenUrlAction |
Wymagane. |
Ten przykład pokazuje element Button
:
Przykład
{ "title": "Send us feedback", "openUrlAction": { "url": "mailto:person@example.com" } }
CancellationInfo
W tabeli poniżej podano właściwości typu CancellationInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
reason |
String | Wymagane. Wyświetlany tekst wyjaśniający przyczynę odrzucenia, gdy stan OrderState.state to „CANCELLED”. Przykład: |
Ten przykład przedstawia element CancellationInfo
:
Przykład
{ "reason": "Insufficient inventory" }
FoodOrderUpdateExtension
Ten typ zapewnia użytkownikowi przybliżony przedział czasu, w którym zamówienie zostanie dostarczone lub będzie gotowe do odbioru. Wysyłaj to rozszerzenie w ramach OrderUpdate
, gdy tylko informacje są dostępne lub zmieniły się od ostatniego wysłania.
Podaj ostrożne oszacowanie przedziału czasu realizacji, aby stale spełniać oczekiwania użytkowników. Jeśli na przykład przewidywany czas dostawy zamówienia to 13:00, należy przesłać przewidywany przedział czasu, który uwzględnia wahania spowodowane natężeniem ruchu drogowego, np. 12:45–13:15.
Czas trwania lub sygnatura czasowa w formacie ISO 8601 jest interpretowana jako przedział czasu od
updateTime
OrderUpdate
(czyli „teraz”) do updateTime
plus duration
.
Nie używaj tego formatu, chyba że „teraz” jest rzeczywiście rozsądnym oczekiwaniem.
Przedział ISO 8601 jest interpretowany jako przedział od początku do końca.
Poniższa tabela zawiera właściwości typu FoodOrderUpdateExtension
:
Właściwość | Typ | Opis | |
---|---|---|---|
@type |
Const |
Typ tego rozszerzenia. To pole zawsze jest ustawione na „type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension”. Wartość: |
|
estimatedFulfillmentTimeIso8601 |
String |
Przewidywany czas dostawy lub gotowości do odbioru zamówienia. Ciąg znaków musi być w formacie ISO 8601 i odpowiadać intervalom, a nie pojedynczym stałym momentom. Akceptowane konwencje to: Interwały, Czasy trwania oraz Daty/godziny. To pole może być wysyłane w ramach wiadomości SubmitOrderResponseMessage lub AsyncOrderUpdateRequestMessage, gdy informacje staną się dostępne lub nastąpi zmiana, np. wcześniejszy lub późniejszy przyjazd. Przykład: |
|
foodOrderErrors |
List<FoodOrderError > |
Opisuje błędy, które wystąpiły po złożeniu zamówienia. Zalecamy 1 błąd na koszyk lub produkt. Użyj rozszerzenia FoodOrderUpdateExtension.FoodOrderErrors w przypadku błędów nieobjętych tagiem RejectionInfo. W menu musi być co najmniej 1 pozycja. |
Ten przykład przedstawia 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." } ] }
FulfillmentInfo
W tabeli poniżej podano właściwości typu FulfillmentInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
Wymagana jest dokładnie 1 z tych grup właściwości. | |||
deliveryTime |
Grupa 1 | Sygnatura czasowa ISO |
Używanie atrybutu estimatedFulfillmentTimeIso8601 w wiadomości rozszerzenia FoodOrderingUpdate |
pickupTime |
Grupa 2 | Sygnatura czasowa ISO |
Używanie atrybutu estimatedFulfillmentTimeIso8601 w wiadomości rozszerzenia FoodOrderingUpdate |
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" }
InTransitInfo
Poniższa tabela zawiera właściwości typu InTransitInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
updatedTime |
Sygnatura czasowa ISO |
Używanie atrybutu estimatedFulfillmentTimeIso8601 w wiadomości rozszerzenia FoodOrderingUpdate |
Ten przykład przedstawia element InTransitInfo
:
Przykład
{ "updatedTime": "2017-05-10T02:36:38.803Z" }
LineItemUpdate
W tabeli poniżej podano właściwości typu LineItemUpdate
:
Właściwość | Typ | Opis | |
---|---|---|---|
orderState |
OrderState |
||
price |
Price |
||
reason |
String |
Powód zmiany. Wymagane w przypadku zmian cen. |
Ten przykład przedstawia element LineItemUpdate
:
Przykład
{ "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "5", "nanos": 500000000 } }, "reason": "Menu updated prices." }
OpenUrlAction
W tabeli poniżej podano właściwości typu OpenUrlAction
:
Właściwość | Typ | Opis | |
---|---|---|---|
url |
String | Wymagane. Działanie wywoływane przez kliknięcie lub dotknięcie przycisku. Lista odpowiednich prefiksów zależy od wartości atrybutu orderManagementActionType. „EMAIL”: prefiks musi mieć postać „mailto”. „CALL”: prefiks musi być „tel”. „CUSTOMER_SERVICE”: prefiks musi być „mailto”, „tel”, „http” lub „https”. Przykład: |
OrderManagementAction
Zarządzanie zamówieniem umożliwia użytkownikom uzyskanie pomocy po złożeniu zamówienia i powinno być wysyłane w każdym OrderUpdate
w ramach procesu przesyłania zamówienia AppResponse
i w każdym kolejnym AsyncOrderUpdateRequestMessage
. Działania związane z zarządzaniem zamówieniem wysyłane 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 wskazywać numer telefonu do obsługi klienta. Następnie w stanie „POTWIERDZONO” CUSTOMER_SERVICE
może zmienić się na numer telefonu restauracji, jeśli jest to najlepszy sposób na kontakt z klientem. Podobnie, gdy zamówienie ma stan „WYPEŁNIONE”, CUSTOMER_SERVICE
może sprawdzić Twój adres e-mail pomocy.
W tabeli poniżej podano właściwości typu OrderManagementAction
:
Właściwość | Typ | Opis | |
---|---|---|---|
type |
OrderManagementActionType |
Wymagane. |
|
button |
Button |
Wymagane. |
Ten przykład przedstawia 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" } } }
OrderManagementActionType
Określa typy powiązane z:OrderManagementAction
.
Typ OrderManagementActionType
może mieć te wartości:
CUSTOMER_SERVICE
: adres e-mail lub numer kontaktowy do obsługi klienta wyświetlany na stronie potwierdzenia zamówienia. Jest to wymagane. Prefiks openUrlAction.url musi mieć prefiks „mailto”, „tel”, „http” lub „https”.EMAIL
: działanie e-mail tylko na stronie szczegółów zamówienia. Prefiks openUrlAction.url musi mieć wartość „mailto”.CALL_DRIVER
: wywołanie akcji tylko na stronie z informacjami o zamówieniu. Prefiks openUrlAction.url musi być „tel”.CALL_RESTAURANT
: wywołanie akcji tylko na stronie z informacjami o zamówieniu. Prefiks openUrlAction.url musi być „tel”.
OrderState
Bieżący stan zamówienia. Każda wartość state
w OrderState
odpowiada też stanowi zakupu na stronie myaccount.google.com.
W tabeli poniżej podano właściwości typu OrderState
:
Właściwość | Typ | Opis | |
---|---|---|---|
state |
OrderStateEnum |
Wymagane. |
|
label |
String | Wymagane. Wyświetlany przez użytkownika ciąg znaków reprezentujący stan. Stosuje się w nim wielkości liter jak w zdaniu. Przykład: |
Ten przykład przedstawia element OrderState
:
Przykład
{ "state": "CONFIRMED", "label": "Provider confirmed" }
OrderStateEnum
Definiuje typy związane zOrderState
.
Typ OrderStateEnum
może mieć te wartości:
CREATED
: zamówienie utworzone przez integratora i oczekujące na potwierdzenie przez dostawcę. Odpowiada zamówieniu o stanie „Zamówione”.CONFIRMED
: zamówienie zostało potwierdzone przez dostawcę i jest aktywne. Odpowiada stanowi „Zaakceptowano” zakup.REJECTED
: zamówienie zostało odrzucone przez integratora lub dostawcę. Oznacza to, że zakup ma stan „Odrzucono”.CANCELLED
: użytkownik anulował zamówienie. To odpowiednik stanu zakupu „Anulowany”.IN_PREPARATION
: jedzenie jest przygotowywane. Odpowiada stanowi zakupu „Stan nieznany”.READY_FOR_PICKUP
: jedzenie jest gotowe do odbioru. Odpowiada statusowi zakupu „Gotowy do odbioru”.IN_TRANSIT
: zamówienie jest dostarczane. Odpowiada stanowi zakupu „W toku”.FULFILLED
: użytkownik otrzymał zamówienie. Odpowiada statusowi zakupu „Odebrano”.
Rachunek
Wyślij ten typ w zamówieniuAppResponse
, w którym OrderState
to „CONFIRMED”, „FULFILLED” lub „IN_TRANSIT”. Wyślij potwierdzenie w momencie udostępnienia userVisibleOrderId
. Nie musisz wysyłać rachunku w kolejnych aktualizacjach.
W tabeli poniżej podano właściwości typu Receipt
:
Właściwość | Typ | Opis | |
---|---|---|---|
userVisibleOrderId |
String | Wymagane. Wymagany, jeśli zamówienie ma stan „CONFIRMED”, „IN_TRANSIT” lub „FULFILLED”. To pole zawiera pojedynczy identyfikator tego zamówienia widoczny dla użytkownika (zwykle identyfikator zamówienia restauracji), który jest widoczny zarówno na potwierdzeniu integratora, jak i na karcie zamówienia Google. Użytkownik musi mieć możliwość użycia tego identyfikatora, aby przesłać zamówienie na obsługę klienta u dostawcy i integratora. Ten identyfikator musisz podać tylko raz w ramach danego wywołania metody OrderUpdate. Dopóki nie zostanie podany, actionOrderId ma wartość userVisibleOrderId. Na przykład możesz nie mieć userVisibleOrderId, dopóki zamówienie nie zostanie potwierdzone przez restaurację. Po potwierdzeniu musisz wysłać żądanie AsyncOrderUpdateRequestMessage z parametrem OrderUpdate i potwierdzeniem. |
Ten przykład przedstawia element Receipt
:
Przykład
{ "userVisibleOrderId": "userVisibleId1234" }
RejectionInfo
W tabeli poniżej podano właściwości typu RejectionInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
type |
RejectionType |
Wymagane. |
|
reason |
String |
Powód odrzucenia używany do rejestrowania wewnętrznego. To pole nie jest widoczne dla użytkowników. |
Ten przykład przedstawia element RejectionInfo
:
Przykład
{ "type": "PAYMENT_DECLINED", "reason": "There is an issue with payment processing." }
RejectionType
Typ RejectionType
może zawierać te wartości:
INELIGIBLE
: użytkownik nie kwalifikuje się ze względu na kwestie związane z zasadami lub ryzykiem.PAYMENT_DECLINED
: wystąpił problem z przetwarzaniem płatności.UNAVAILABLE_SLOT
: zamówienie nie może zostać zrealizowane w czasie określonym w danych DeliveryInfo lub PickupInfo.PROMO_NOT_APPLICABLE
: wystąpił problem z promocją.UNKNOWN
: dowolny inny powód.
Typy związane z płatnościami
W tej sekcji opisano typy związane z płatnościami, które są używane do realizacji zamówień jedzenia.ActionProvidedPaymentOptions
Wymagania dotyczące formy płatności powiązanej z działaniem.
W tabeli poniżej podano właściwości typu ActionProvidedPaymentOptions
:
Właściwość | Typ | Opis | |
---|---|---|---|
paymentType |
PaymentType |
Wymagane. |
|
displayName |
String | Wymagane. Nazwa instrumentu płatniczego widoczna na rachunku. Przykład: |
|
onFulfillmentPaymentData |
OnFulfillmentPaymentData |
Dodatkowe dane dla typu płatności „ON_FULFILLMENT”. Możesz na przykład użyć tego pola, aby określić, czy realizacja zamówienia jest obsługiwana za gotówkę czy kartą. |
Ten przykład przedstawia element ActionProvidedPaymentOptions
:
Przykład
{ "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } }
AllowedAuthMethods
Typ AllowedAuthMethods
może mieć te wartości:
PAN_ONLY
: metoda uwierzytelniania przypisana do kart płatniczych, które są zapisane na koncie Google użytkownika. Zwracane dane płatności zawierają numer rachunku bankowego (PAN) oraz miesiąc i rok ważności.
AllowedCardNetworks
Typ AllowedCardNetworks
może zawierać te wartości:
AMEX
DISCOVER
INTERAC
JCB
MASTERCARD
VISA
BillingAddressParameters
Ten obiekt umożliwia ustawienie dodatkowych pól żądanego adresu rozliczeniowego, które mają być zwracane.
W tabeli poniżej podano właściwości typu BillingAddressParameters
:
Właściwość | Typ | Opis | |
---|---|---|---|
format |
String |
Format adresu rozliczeniowego niezbędny do zrealizowania transakcji. MIN: imię i nazwisko, kod kraju, kod pocztowy. PEŁNY: imię i nazwisko, ulica i numer domu, miejscowość, region, kod kraju, kod pocztowy. |
Ten przykład pokazuje element BillingAddressParameters
:
Przykład 1
{ "format": "MIN" }
Przykład 2
{ "format": "FULL" }
CardParameters
Wykorzystaj ten obiekt, aby skonfigurować obsługę Google Pay API w swojej witrynie.
W tabeli poniżej podano właściwości typu CardParameters
:
Właściwość | Typ | Opis | |
---|---|---|---|
allowedAuthMethods |
List<Const> | Wymagane. Pola obsługiwane podczas uwierzytelniania transakcji kartą. Nie może mieć mniej niż 1 element. |
|
allowedCardNetworks |
List<AllowedCardNetworks > |
Wymagane. Sieci kart, które obsługujesz, i które również są obsługiwane przez Google Pay API. W menu musi być co najmniej 1 pozycja. |
|
billingAddressRequired |
Wartość logiczna |
Ustaw jako true, jeśli wymagasz adresu rozliczeniowego. Poproś o adres rozliczeniowy tylko wtedy, gdy jest on wymagany do przetworzenia transakcji. Dodatkowe żądania danych mogą powodować błędy w procesie płatności i obniżenie współczynników konwersji. |
|
billingAddressParameters |
BillingAddressParameters |
Pola, które mają zostać zwrócone, jeśli billingAddressRequired ma wartość true. |
|
cvcRequired |
Wartość logiczna |
Ustaw wartość true, jeśli korzystasz z TimesofMoney, a wartość Fałsz w przypadku pozostałych firm obsługujących płatności. |
Ten przykład przedstawia element CardParameters
:
Przykład 1
{ "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "AMEX", "DISCOVER" ], "billingAddressRequired": false, "cvcRequired": false }
Przykład 2
{ "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "AMEX", "DISCOVER" ], "billingAddressRequired": true, "billingAddressParameters": { "format": "MIN" }, "cvcRequired": false }
GoogleProvidedPaymentInstrument
W tabeli poniżej podano właściwości typu GoogleProvidedPaymentInstrument
:
Właściwość | Typ | Opis | |
---|---|---|---|
instrumentToken |
String | Wymagane. Ciąg znaków zakodowany w standardzie Base64 zawierający token płatności służący do obciążania użytkownika opłatą przez firmę obsługującą Google Pay, zgodnie z wcześniej określonym parametrem GoogleProvidedPaymentOptions. |
|
billingAddress |
PostalAddress |
Adres rozliczeniowy na potrzeby płatności. |
Ten przykład przedstawia element GoogleProvidedPaymentInstrument
:
Przykład
{ "instrumentToken": "abcd", "billingAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] } }
GoogleProvidedPaymentOptions
Wymagania dotyczące formy płatności udostępnionej przez Google.
W tabeli poniżej podano właściwości typu GoogleProvidedPaymentOptions
:
Właściwość | Typ | Opis | |
---|---|---|---|
facilitationSpecification |
String |
Obiekt JSON PaymentDataRequest w postaci ciągu znaków. Wykorzystaj ten obiekt, aby skonfigurować obsługę Google Pay API w swojej witrynie. |
|
supportedCardNetworks |
List<SupportedCardNetworks > |
Zamiast tego użyj facilitationSpecification. Typ sieci kart obsługiwanych przez agenta. To pole zostało wycofane. |
|
prepaidCardDisallowed |
Wartość logiczna |
Zamiast tego użyj atrybutu facilitationSpecification. Określa, czy karta przedpłacona jest dozwolona jako forma płatności. To pole zostało wycofane. |
|
billingAddressRequired |
Wartość logiczna |
Zamiast tego użyj facilitationSpecification. Określa, czy jest wymagany adres rozliczeniowy. To pole zostało wycofane. |
|
tokenizationParameters |
TokenizationParameters |
To pole zostało wycofane. |
Ten przykład przedstawia 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 }
MerchantInfo
Wykorzystaj ten obiekt, aby skonfigurować obsługę Google Pay API w swojej witrynie.
Poniższa tabela zawiera właściwości typu MerchantInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
merchantId |
String |
Identyfikator sprzedawcy w Google wystawiany przez Google Pay. |
|
merchantName |
String | Wymagane. Nazwa sprzedawcy w formacie UTF-8. Nazwa sprzedawcy jest wyświetlana w arkuszu płatności. |
OnFulfillmentPaymentData
Użyj tego obiektu, aby wysłać dodatkowe dane dla typu płatności „ON_FULFILLMENT”.
W tabeli poniżej podano właściwości typu OnFulfillmentPaymentData
:
Właściwość | Typ | Opis | |
---|---|---|---|
supportedPaymentOptions |
List<PaymentOptionsEnums > |
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
Definiuje typy związane z TokenizationParameters
.
Poniższa tabela zawiera właściwości typu Parameters
:
Właściwość | Typ | Opis | |
---|---|---|---|
gateway |
String | Wymagane. Przykład: |
|
gatewayMerchantId |
String | ||
[additionalKey: string] |
String | 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" }
PaymentDataRequest
Wykorzystaj ten obiekt, aby skonfigurować obsługę Google Pay API w swojej witrynie.
W tabeli poniżej podano właściwości typu PaymentDataRequest
:
Właściwość | Typ | Opis | |
---|---|---|---|
apiVersion |
Konst | Wymagane. Główna wersja interfejsu API. Wartość: |
|
apiVersionMinor |
Konst | Wymagane. Pomocnicza wersja interfejsu API. Wartość: |
|
merchantInfo |
MerchantInfo |
Wymagane. (Google Pay merchant ID) Informacje o sprzedawcy, który wysłał żądanie danych płatności. |
|
allowedPaymentMethods |
List<PaymentMethod > |
Wymagane. Określa, które formy płatności obsługiwane przez Google Pay API mają być dostępne. |
|
transactionInfo |
TransactionInfo |
Wymagane. Szczegóły autoryzacji transakcji na podstawie tego, czy użytkownik zgodził się na transakcję. To pole zawiera cenę całkowitą i stan ceny. |
Ten przykład przedstawia 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, "billingAddressParameters": { "format": "FULL" }, "cvcRequired": false }, "tokenizationSpecification": { "type": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:version": "2019-05-16", "stripe:publishableKey": "pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA" } } } ], "transactionInfo": { "currencyCode": "INR", "totalPriceStatus": "ESTIMATED", "totalPrice": "185.00" } }
PaymentInfo
Informacje o płatnościach za zamówienie.
Poniższa tabela zawiera właściwości typu PaymentInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
displayName |
String | Wymagane. Widoczna dla użytkownika nazwa instrumentu płatniczego do wyświetlenia na rachunku. |
|
paymentType |
PaymentType |
Wymagane. |
|
googleProvidedPaymentInstrument |
GoogleProvidedPaymentInstrument |
Token, którego może użyć działanie. Określ tę wartość tylko wtedy, gdy w CheckoutResponseMessage jako opcję płatności podano GoogleProvidedPaymentOptions. |
Ten przykład przedstawia 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" }
PaymentMethod
Wykorzystaj ten obiekt, aby skonfigurować obsługę Google Pay API w swojej witrynie.
Poniższa tabela zawiera właściwości typu PaymentMethod
:
Właściwość | Typ | Opis | |
---|---|---|---|
type |
Konst | Wymagane. Krótki identyfikator obsługiwanej formy płatności. Obecnie obsługiwana jest tylko karta CARD. Wartość: |
|
parameters |
CardParameters |
Wymagane. Parametry wymagane do skonfigurowania podanej formy płatności. |
|
tokenizationSpecification |
TokenizationSpecification |
Wymagane. Skonfiguruj konto lub dostawcę usług odszyfrowywania, który ma otrzymywać dane karty. Ta właściwość jest wymagana w przypadku formy płatności KARTA. |
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" } } }
PaymentOptions
W tabeli poniżej podano właściwości typu PaymentOptions
:
Właściwość | Typ | Opis | |
---|---|---|---|
Wymagana jest dokładnie 1 z tych grup właściwości. | |||
googleProvidedOptions |
Grupa 1 | GoogleProvidedPaymentOptions |
Wzajemnie się wyklucza z opcją actionProvidedOptions. Używaj go do płatności online za pomocą Google Pay. |
actionProvidedOptions |
Grupa 2 | ActionProvidedPaymentOptions |
Wzajemnie wyklucza się z użyciem obiektu googleProvidedOptions. Użyj tego w przypadku „zapłaty przy odbiorze” lub „zapłaty po zrealizowaniu zamówienia”. |
Ten przykład przedstawia 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
{ "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\":true, \"billingAddressParameters\": { \"format\":\"MIN\" } }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }
Przykład 3
{ "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } } }
PaymentOptionsEnums
Typ PaymentOptionsEnums
może mieć te wartości:
Cash
Card
UPI
Paytm
PaymentType
Typ PaymentType
może zawierać te wartości:
PAYMENT_CARD
: w przypadku GoogleProvidedPaymentOptions.ON_FULFILLMENT
: w przypadku ActionProvidedPaymentOptions.
SupportedCardNetworks
Definiuje typy związane zGoogleProvidedPaymentOptions
.
Typ SupportedCardNetworks
może mieć te wartości:
UNSPECIFIED_CARD_NETWORK
AMEX
DISCOVER
JCB
MASTERCARD
VISA
TokenizationParameters
Określa typy związane zGoogleProvidedPaymentOptions
.
W tabeli poniżej podano właściwości typu TokenizationParameters
:
Właściwość | Typ | Opis | |
---|---|---|---|
tokenizationType |
Enum [
"UNSPECIFIED_TOKENIZATION_TYPE",
"PAYMENT_GATEWAY"
] |
Wymagane. Zamiast tego użyj atrybutu facilitationSpecification. Dopuszczalny typ tokenów. |
|
parameters |
Parameters |
Zamiast tego użyj facilitationSpecification. |
TokenizationSpecification
Ten obiekt umożliwia skonfigurowanie konta, które ma odbierać dane karty do obciążenia.
Poniższa tabela zawiera właściwości typu TokenizationSpecification
:
Właściwość | Typ | Opis | |
---|---|---|---|
type |
Konst | Wymagane. |
|
parameters |
Parameters |
Wymagane. |
Ten przykład przedstawia 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" } }
TransactionInfo
Ten obiekt opisuje transakcję, która określa możliwość zapłaty przez płatnika. Jest wykorzystywany do wyświetlania okna autoryzacji płatności.
W tabeli poniżej podano właściwości typu TransactionInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
currencyCode |
String | Wymagane. Kod waluty wyrażony literami według normy ISO 4217. |
|
transactionId |
String |
Unikalny identyfikator, po którym można rozpoznać próbę dokonania transakcji. Sprzedawcy mogą używać istniejących identyfikatorów lub generować konkretne identyfikatory prób dokonania transakcji w Google Pay. To pole jest wymagane, gdy wysyłasz wywołania zwrotne do interfejsu Google Transaction Events API. |
|
totalPriceStatus |
Const | Wymagane. Jako domyślny typ użyj wartości „ESTIMATED” (Szacowany). Łączna cena może zostać dostosowana na podstawie szczegółów odpowiedzi, takich jak podatek od sprzedaży określany na podstawie adresu rozliczeniowego. Wartość: |
|
totalPrice |
String | Wymagane. Łączna wartość pieniężna transakcji z opcjonalną możliwością określenia do 2 miejsc po przecinku. To pole powinno mieć taką samą wartość jak cart.totalPrice. |
Ten przykład przedstawia element TransactionInfo
:
Przykład
{ "totalPriceStatus": "ESTIMATED", "totalPrice": "12.34", "currencyCode": "USD" }