Typy podstawowe
Koszyk
Zawiera szczegóły zamówienia, a także informację, czy prośba dotyczy odbioru czy dostawy. Koszyk zawiera też szczegóły dostawy, należność i adres dostawy. ObiektCart
jest zdefiniowany w pliku Checkout AppRequest
.f
Kopię koszyka dołączasz do Checkout AppResponse
W tej tabeli podano właściwości typu Cart
:
Właściwość | Typ | Opis | |
---|---|---|---|
@type |
Stała |
Typ tego obiektu. Pomiń to pole, jeśli nadrzędny obiekt koszyka jest częścią elementu ProposedOrder. Wartość: |
|
id |
String |
Opcjonalny identyfikator koszyka. |
|
merchant |
Merchant |
Sprzedawca powiązany z tym koszykiem. |
|
lineItems |
Lista<LineItem > |
To pole jest wymagane. Lista towarów lub usług zamawianych przez użytkownika. Może zawierać nie mniej niż 1 element. |
|
promotions |
Lista<Promotion > |
Promocja zastosowana w tym koszyku. Obecnie obsługiwana jest tylko jedna promocja. |
|
notes |
String |
Uwagi dotyczące zamówienia lub instrukcji dostawy. |
|
extension |
FoodCartExtension |
Określa szczegóły dotyczące użytkownika, np. preferencje realizacji zamówień. |
Oto przykład elementu 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" } } }
Nawiązanie kontaktu
Określa szczegółowe informacje na temat osoby otrzymującej zamówienie. Jest dostępny tylko wAppResponse
.
W tej tabeli podano właściwości typu Contact
:
Właściwość | Typ | Opis | |
---|---|---|---|
displayName |
String |
Imię i nazwisko osoby odbierającej zamówienie, w takiej postaci, w jakiej ma być wyświetlane. Użyj tego pola, jeśli nie podano firstName ani lastName. Przykład: |
|
email |
String |
Adres e-mail osoby odbierającej zamówienie. Przykład: |
|
firstName |
String |
Imię osoby odbierającej zamówienie. Przykład: |
|
lastName |
String |
Nazwisko osoby odbierającej zamówienie. Przykład: |
|
phoneNumber |
String |
Numer telefonu osoby odbierającej zamówienie, w tym kod kraju. Przykład: |
|
emailVerified |
Wartość logiczna |
Wskazuje, czy osoba otrzymująca zamówienie jest zalogowana na swoim koncie Google. |
Oto przykład elementu Contact
:
Przykład
{ "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" }
CustomPushMessage
ZawieraOrderUpdate
żądania.
W tej tabeli podano właściwości typu CustomPushMessage
:
Właściwość | Typ | Opis | |
---|---|---|---|
orderUpdate |
OrderUpdate |
To pole jest wymagane. Zaktualizowano informacje o zamówieniu. |
Oto przykład elementu 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
W tej tabeli podano właściwości typu DeliveryInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
deliveryTimeIso8601 |
String |
Szacowany czas dostawy w formacie znacznika czasu ISO 8601: „{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z” lub format czasu trwania: „P(n)Y(n)M(n)DT(n)H(n)M(n)S”. Na przykład PT90M oznacza czas trwania wynoszący 90 minut. Wartość domyślna „PT0M” wskazuje, że preferowany czas dostawy jest jak najszybciej. Więcej informacji: https://pl.wikipedia.org/wiki/ISO_8601#Connectedd_date_and_time_representations Użyj tych informacji, aby zaktualizować szacowany czas dostawy w odpowiedzi na prośbę o płatność. Przykład: |
Oto przykład elementu DeliveryInfo
:
Przykład
{ "deliveryTimeIso8601": "PT90M" }
Wyłączenie odpowiedzialności
W tej tabeli podano właściwości typu Disclaimer
:
Właściwość | Typ | Opis | |
---|---|---|---|
predefinedMessage |
PredefinedMessage |
To pole jest wymagane. Aby wyświetlać wstępnie zdefiniowane informacje o wyłączeniu odpowiedzialności podczas procesu płatności. |
|
feeAmount |
Money |
Partner obciąży sprzedawcę kwotą N opłaty za to zamówienie. |
|
feeAmountRange |
FeeAmountRange |
Partner obciąży restaurację kwotą 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 sprzedawcy opłatę N%–M% za każde zamówienie. |
Oto przykład elementu 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
ma te możliwe wartości:
CLOSED
: restauracja jest zamknięta w momencie składania zamówień.NO_CAPACITY
: brak dostępnych możliwości usługi (na przykład z powodu tymczasowej przerwy w działaniu z powodu szczytu sezonu).NO_COURIER_AVAILABLE
: nie można przetworzyć zamówienia ze względu na ograniczoną liczbę pracowników.REQUIREMENTS_NOT_MET
: nie zostały spełnione ograniczenia dotyczące akceptowania zamówienia (np. minimalny rozmiar koszyka).UNAVAILABLE_SLOT
: zamówienia nie można zrealizować przy zamówieniu z wyprzedzeniem określonym przez DeliveryInfo lub PickupInfo.OUT_OF_SERVICE_AREA
: nie można dostarczyć zamówienia na adres użytkownika.PROMO_EXPIRED
: nie udało się zastosować, ponieważ promocja wygasła.PROMO_NOT_APPLICABLE
: ogólny kod błędu wykrywający wszystkie przypadki nieudanego zastosowania kodu promocyjnego, gdy żaden inny błąd nie pasuje.PROMO_NOT_RECOGNIZED
: kod kuponu nie został rozpoznany.PROMO_ORDER_INELIGIBLE
: aktualne zamówienie nie kwalifikuje się do wykorzystania tego kuponu.PROMO_USER_INELIGIBLE
: bieżący użytkownik nie kwalifikuje się do skorzystania z tego kuponu.AVAILABILITY_CHANGED
: produkt jest już niedostępny lub jest ich za mało, by zrealizować żądanie.INCORRECT_PRICE
: błędy dotyczące ceny w opłatach lub łącznej kwocie.INVALID
: element zamówienia, element FulfillmentOption lub Promocja zawiera nieprawidłowe dane.NOT_FOUND
: nie można znaleźć elementu zamówienia, elementu FulfillmentOption ani promocji.PRICE_CHANGED
: cena produktu uległa zmianie.
FeeAmountRange
W tej tabeli 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
W tej tabeli podano właściwości typu FeePercentRange
:
Właściwość | Typ | Opis | |
---|---|---|---|
minFeePercent |
Number |
Dolna granica odsetka pobranej opłaty. |
|
maxFeePercent |
Number |
Górna granica odsetka pobranej opłaty. |
FoodCartExtension
Zawiera informacje o użytkowniku, np. preferencje realizacji zamówień.
W tej tabeli podano właściwości typu FoodCartExtension
:
Właściwość | Typ | Opis | |
---|---|---|---|
@type |
Stała |
Typ tego rozszerzenia. To pole zawsze ma wartość „type.googleapis.com/google.actions.v2.orders.FoodCartExtension”. Wartość: |
|
contact |
Contact |
Dane kontaktowe osoby odbierającej zamówienie. Obejmują one imię i nazwisko osoby, jej numer telefonu oraz adres e-mail. |
|
fulfillmentPreference |
FulfillmentOption |
To pole jest wymagane. Preferencje użytkownika dotyczące realizacji zamówień. |
|
location |
Location |
To pole w usłudze CheckoutRequestMessage określa adres dostawy, który jest wymagany, jeśli zamówienie ma zostać dostarczone. W przypadku zamówień na wynos lub z odbiorem to pole nie jest zawarte w wiadomości. |
Oto przykład elementu 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 jeden błąd, który wystąpił podczas przetwarzania żądania. W tabeli poniżej opisujemy pola typuFoodErrorExtension
.
Błędy można wysłać w CheckoutResponse
.
W tej tabeli podano właściwości typu FoodErrorExtension
:
Właściwość | Typ | Opis | |
---|---|---|---|
@type |
Stała | To pole jest wymagane. Typ tego rozszerzenia. Wartość: |
|
foodOrderErrors |
Lista<FoodOrderError > |
To pole jest wymagane. Tablica obiektów FoodOrderError, które opisują wykryte błędy. Zalecany jest jeden błąd na koszyk lub produkt. Może zawierać nie mniej niż 1 element. |
|
correctedProposedOrder |
ProposedOrder |
Wymagane, gdy Nowe zamówienie proponowane z poprawkami. Zwróć ten obiekt, jeśli w oryginalnej ofercie pakietowej występują błędy możliwe do odzyskania. Na przykład zmiana ceny co najmniej jednej pozycji w koszyku jest błędem, który można naprawić. Błędy możliwe do naprawienia z prawidłowym zamówieniem ProposedOrder są przesuwane do etapu potwierdzenia i nie wymagają od użytkownika sprawdzenia koszyka. |
|
paymentOptions |
PaymentOptions |
Wymagane, gdy Wybrano domyślne opcje płatności dla użytkownika. |
|
additionalPaymentOptions |
Lista<PaymentOptions > |
Alternatywne opcje płatności dostępne dla użytkownika. |
Oto przykład elementu 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
Definiuje dodatki do produktów spożywczych.
W tej tabeli podano właściwości typu FoodItemExtension
:
Właściwość | Typ | Opis | |
---|---|---|---|
@type |
Stała | To pole jest wymagane. Typ tego rozszerzenia. To pole zawsze ma wartość „type.googleapis.com/google.actions.v2.orders.FoodItemExtension”. Wartość: |
|
options |
Lista<FoodItemOption > |
Opcja może być elementem dodatku lub grupą dodatków zawierającą zestaw dodatków. |
Oto przykład elementu 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 tej tabeli podano właściwości typu FoodItemOption
:
Właściwość | Typ | Opis | |
---|---|---|---|
id |
String |
Unikalny identyfikator przypisany przez Google. Gdy wysyłasz element FoodOrderError lub AsyncOrderUpdateRequest, używaj tego pola, aby rozróżniać sytuacje, gdy koszyk zawiera więcej niż jeden produkt z tym samym identyfikatorem oferty. Przykład: |
|
offerId |
String |
Identyfikator oferty elementu. 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 |
Lista<FoodItemOption > |
Opcje podrzędne danej opcji (jeśli są dostępne). Przykład: |
Oto przykład elementu 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 elemencieCheckoutResponse
.
W tej tabeli podano właściwości typu FoodOrderError
:
Właściwość | Typ | Opis | |
---|---|---|---|
error |
Error |
To pole jest wymagane. |
|
id |
String | Wymagane, gdy To pole jest wymagane w przypadku błędów na poziomie produktu. Jest to przypisany przez Google identyfikator LineItem.id w przypadku pozycji w menu i identyfikator FoodItemOption.id w przypadku dodatków. |
|
description |
String |
Opis błędu. Ten opis jest przeznaczony do logowania wewnętrznego i nie jest widoczny dla użytkowników. |
|
updatedPrice |
Money |
Wymagane, gdy Nowa cena produktu, który spowodował błąd. Jest to wymagane tylko wtedy, gdy błąd ma wartość „PRICE_CHANGED”. |
|
availableQuantity |
Liczba całkowita | Wymagane, gdy Nowa dostępna liczba produktów, które spowodowały błąd. To pole jest wymagane tylko wtedy, gdy błąd ma wartość „INVALID” lub „NOT_FOUND”. W przypadku pól „INVALID” i „NOT_FOUND” wartość powinna wynosić 0. |
Oto przykład elementu 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 realizacji zamówienia.
W tej tabeli podano właściwości typu FoodOrderExtension
:
Właściwość | Typ | Opis | |
---|---|---|---|
@type |
Stała |
Typ tego rozszerzenia. To pole zawsze ma wartość „type.googleapis.com/google.actions.v2.orders.FoodOrderExtension”. Wartość: |
|
availableFulfillmentOptions |
Lista<FulfillmentOption > |
Reprezentuje dostępne opcje realizacji zamówienia. |
|
optinForRemarketing |
Wartość logiczna |
Prośba użytkownika o zgodę na Twoje kanały marketingowe. Domyślnie nie można wysyłać treści marketingowych bez zgody użytkownika. Jeśli parametr optinForRemarketing ma wartość prawda, możesz subskrybować użytkownika. Jeśli parametr optinForRemarketing ma wartość false (fałsz) lub nie występuje, musisz zachować w systemie stan subskrypcji. Użytkownicy nie mogą zrezygnować z subskrypcji za pośrednictwem Google wyłącznie za pomocą funkcji anulowania subskrypcji dostępnej w Twoich kanałach marketingowych. Ta flaga występuje tylko w elemencie SubmitOrderRequestMessage. |
Oto przykład elementu 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
Checkout AppRequest
iSubmit AppRequest
Cart.extension.fulfillmentPreference
: zapisuje preferencje użytkownika (dostawa lub odbiór). W momencie wysyłania żądania płatności cena wynosi zawsze 0. -
W
Checkout AppResponse
właściwośćProposedOrder.extension.availableFulfillmentOptions
: definiuje co najmniej 1 opcję wyświetlania (obecnie obsługiwana jest tylko jedna opcja). Określasz opcję domyślną jakoLineItem
wProposedOrder.otherItems
. WartośćofferId
w kolumnieFulfillmentOption
powinna być zgodna z identyfikatorem obiektuLineItem
określonym wProposedOrder.otherItems
.
W tej tabeli podano właściwości typu FulfillmentOption
:
Właściwość | Typ | Opis | |
---|---|---|---|
offerId |
String |
Unikalny identyfikator tej opcji realizacji zamówienia (jeśli istnieje). |
|
fulfillmentInfo |
FulfillmentOptionInfo |
To pole jest wymagane. |
|
expiresAt |
Sygnatura czasowa ISO |
Godzina wygaśnięcia tej opcji realizacji zamówienia. |
|
price |
Money |
Koszt tej opcji. |
Oto przykład elementu 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
Definiuje informacje powiązane zFulfillmentInfo
.
W tej tabeli podano właściwości typu FulfillmentOptionInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
Wymagana jest dokładnie jedna z tych grup właściwości. | |||
delivery |
Grupa 1 | DeliveryInfo |
Jeśli ten parametr jest widoczny, wskazuje zamówienie dostawy. |
pickup |
Grupa 2 | PickupInfo |
Jeśli ten atrybut jest dostępny, wskazuje zamówienie z odbiorem. |
Obraz
W tej tabeli podano właściwości typu Image
:
Właściwość | Typ | Opis | |
---|---|---|---|
sourceUrl |
String | To pole jest wymagane. Adres URL obrazu. Minimalny rozmiar obrazu to 72 x 72 piksele. Aby uzyskać najlepszy efekt, użyj obrazu, który ma co najmniej 216 x 216 pikseli. Obraz musi mieć mniej niż 6 MB i 64 megapiksele. |
LineItem
Określa zawartość koszyka (Cart.lineItems
) lub dodatkowe opłaty za zamówienie (ProposedOrder.otherItems
).
W tej tabeli podano właściwości typu LineItem
:
Właściwość | Typ | Opis | |
---|---|---|---|
id |
String | Wymagane, gdy W przypadku elementu zamówienia w koszyku (ProposedOrder.cart.lineItems[0].id) jest to unikalny identyfikator utworzony przez Google podczas tworzenia zamówienia. Wartość identyfikatora jest określana przez dostawcę w przypadku elementu zamówienia w elemencie ProposedOrder (ProposedOrder.otherItems[0].id), który służy do dodawania elementów takich jak opłaty za dostawę i podatki. Na przykład w koszyku znajdują się 2 identyczne produkty z różnymi instrukcjami przygotowania (np. 2 średnia pizza z różnymi dodatkami). W tym przypadku oba produkty mają ten sam podstawowy identyfikator oferty. Gdy wysyłasz żądanie aktualizacji zamówienia, aby wskazać, że produkt został odrzucony, użyj tego identyfikatora jako elementu odróżniającego. Inaczej mówiąc, jeśli jedna z pizzy zostanie odrzucona, ponieważ nie ma określonej dodatku, identyfikator pomoże Google określić, do której pozycji w kolejności się odnosi. To pole jest wymagane, ale nie w innych elementach. |
|
name |
String | To pole jest wymagane. Nazwa elementu zamówienia. Jest to ciąg widoczny dla użytkowników. Jeśli to możliwe, powinien być jak w zdaniu (np. „Opłata za dostawę”, „Opłata za obsługę” czy „Podatek”). Pole jest ograniczone do 100 znaków dla użytkowników. |
|
type |
LineItemType |
To pole jest wymagane. |
|
quantity |
Liczba całkowita | Wymagane, gdy Uwzględniona liczba produktów. Nie dotyczy elementu ProposedOrder.otherItems. |
|
description |
String |
Opis produktu. |
|
price |
Price |
To pole jest wymagane. Cena produktu lub elementów. Ta wartość odzwierciedla łączną cenę wszystkich towarów lub usług w przypadku danego elementu zamówienia (czyli dodaj koszt dodatków i pomnóż przez ilość). Przykład: jeśli produkt za 10 zł ma liczbę 3, cena wyniesie 30 zł. Cena jednej pizzy w cenie podstawowej 5 PLN i za dopłatą to 6 PLN. W przypadku 2 piz (ilość = 2) w cenie podstawowej wynoszącej 5 zł i z dodatkiem w wysokości 1 zł, cena wyniesie 12 zł. Każdy element zamówienia powinien mieć cenę, nawet jeśli wynosi „0”. Gdy typem jest DISCOUNT, określ wartość jako ujemną (np. „-2”). |
|
subLines |
Lista<SublineNote > |
Opcjonalny i prawidłowy tylko wtedy, gdy typ to „REGULAR” (REGULARNE). W tym polu w prośbach o dokonanie płatności i przesłanie zamówienia może pojawić się uwagi użytkownika dotyczące konkretnego produktu. Upewnij się, że sprzedawca otrzyma notatkę, gdy zostanie ona podana. Będzie on widoczny w żądaniu jako subLines[0].note, który jest jedyną wartością podaną w tym polu, jeśli znajduje się ona w żądaniu. Może zawierać nie więcej niż 1 element. |
|
offerId |
String | Wymagane, gdy Identyfikator oferty elementu MenuItem dla tego produktu. Nie dotyczy elementu ProposedOrder.otherItems. |
|
extension |
FoodItemExtension |
Definiuje dodatki do produktów spożywczych. |
Oto przykład elementu 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
ma te możliwe wartości:
REGULAR
: element zamówienia dotyczący towarów. Dotyczy Cart.lineItems.TAX
: element zamówienia podatku. Dotyczy elementu ProposedOrder.otherItems.DISCOUNT
: element zamówienia z rabatem. Pamiętaj, że cena powinna być ujemna. Dotyczy elementu ProposedOrder.otherItems.GRATUITY
: element zamówienia z opłatami. Powszechnie zarezerwowane dla metody SubmitOrderRequestMessage (na wskazówkę wybraną przez użytkownika). Dotyczy elementu ProposedOrder.otherItems.DELIVERY
: element zamówienia do zrealizowania. Dotyczy elementu ProposedOrder.otherItems.SUBTOTAL
: element zamówienia zawierający sumę częściową. Dotyczy elementu ProposedOrder.otherItems.FEE
: dodatkowy element zamówienia, którego nie da się sklasyfikować jako inny typ. Dotyczy elementu ProposedOrder.otherItems.
Lokalizacja
Określa adres do zamawiania jedzenia. TypLocation
jest używany w Cart
tylko do wskazywania miejsca docelowego zamówienia dostawy.
Ostateczna lokalizacja jest też widoczna w elemencie TransactionDecisionValue
, jeśli użytkownik złoży zamówienie. W przypadku zamówień z opcją odbioru lokalizacja w ogóle nie jest podana (nawet pusta).
W tej tabeli podano właściwości typu Location
:
Właściwość | Typ | Opis | |
---|---|---|---|
coordinates |
Coordinates |
||
formattedAddress |
String |
Wyświetlany adres lokalizacji. Przykład: |
|
postalAddress |
PostalAddress |
||
zipCode |
String |
Przykład: |
|
city |
String |
Nazwa miasta. Przykład: |
|
notes |
String |
uwagi o lokalizacji, np. kody do bramy. Nazwa powinna mieć maksymalnie 500 znaków. Przykład: |
Oto przykład elementu Location
:
Przykład
{ "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" }
Sprzedawca
W tej tabeli podano właściwości typu Merchant
:
Właściwość | Typ | Opis | |
---|---|---|---|
id |
String |
Identyfikator sprzedawcy. Jeśli zostanie określony, pasuje do identyfikatora Restaurant.@id w pliku danych restauracji. Przykład: |
|
name |
String | To pole jest wymagane. Nazwa sprzedawcy widoczna dla użytkownika. Przykład: |
Oto przykład elementu Merchant
:
Przykład
{ "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }
Pieniądze
W tej tabeli podano właściwości typu Money
:
Właściwość | Typ | Opis | |
---|---|---|---|
currencyCode |
String | To pole jest wymagane. Trzyliterowy kod waluty w formacie ISO 4217. Przykład: |
|
units |
String |
Całkowite jednostki kwoty. Jeśli np. kod waluty to „PLN”, jednostka „1” to 1 dolar amerykański. Przykład: |
|
nanos |
Liczba całkowita |
Liczba nano (10^-9) jednostek ilości. Wartość musi mieścić się w przedziale od -999 999 999 do +999 999 999 włącznie. Zastosuj następujące reguły: jeśli liczba jednostek jest dodatnia, nano wartość musi być dodatnia lub wynosić zero. Jeśli jednostka wynosi 0, wartość nano może być liczbą dodatnią, 0 lub ujemną. Jeśli jednostka jest ujemna, nanos musi być liczbą ujemną lub zerem. Na przykład -1,75 USD jest przedstawione jako jednostki = -1,a nanos = -750 000 000. Przykład: |
Oto przykład elementu Money
:
Przykład 1
{ "currencyCode": "USD", "units": "36", "nanos": 730000000 }
Przykład 2
{ "currencyCode": "EUR", "units": "10" }
Zamów
Zawiera ostateczne zamówienie z podatkami, opłatami i kosztami dostawy oraz dane karty. Ten obiekt jest odbierany przez Twoje działanie w:Submit AppRequest
.
W tej tabeli podano właściwości typu Order
:
Właściwość | Typ | Opis | |
---|---|---|---|
finalOrder |
ProposedOrder |
To pole jest wymagane. Proponowana kolejność, która spowodowała to zamówienie. |
|
googleOrderId |
String | To pole jest wymagane. Identyfikator zamówienia przypisany przez Google. Ten identyfikator powinien być stały przez cały cykl życia zamówienia. Nie jest on widoczny dla użytkownika. |
|
orderDate |
Sygnatura czasowa ISO | To pole jest wymagane. Data i godzina utworzenia zamówienia. |
|
paymentInfo |
PaymentInfo |
To pole jest wymagane. Dane karty odpowiadające płatności za to zamówienie. |
Oto przykład elementu 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 opisujemy pola typu OrderUpdate, które występują w poluAppResponse
.
W tej tabeli podano właściwości typu OrderUpdate
:
Właściwość | Typ | Opis | |
---|---|---|---|
actionOrderId |
String | To pole jest wymagane. Unikalny identyfikator zamówienia w systemie integratora używany do identyfikowania zamówienia, dla którego wysyłana jest aktualizacja. Jeśli nie podasz parametru billing.user_visible_order_id w elemencie OrderUpdate dla zamówienia typu „CREATED”, tym identyfikatorem będzie wpisany identyfikator widoczny użytkownika na karcie zamówienia Google. |
|
orderState |
OrderState |
To pole jest wymagane. Nowy stan zamówienia. |
|
lineItemUpdates |
Map<ciąg znaków, LineItemUpdate > |
||
updateTime |
Sygnatura czasowa ISO | To pole jest wymagane. Godzina aktualizacji zamówienia. |
|
orderManagementActions |
Lista<OrderManagementAction > |
Działania po zamówieniu, np. kontakt z zespołem pomocy i wyświetlanie szczegółów zamówienia. Może zawierać nie mniej niż 1 element i maksymalnie 6 elementów. |
|
rejectionInfo |
RejectionInfo |
Wymagane, gdy |
|
cancellationInfo |
CancellationInfo |
Wymagane, gdy |
|
inTransitInfo |
InTransitInfo |
To pole zostało wycofane. |
|
fulfillmentInfo |
FulfillmentInfo |
To pole zostało wycofane. |
|
receipt |
Receipt |
Wymagane, gdy Podaj identyfikator zamówienia widoczny dla użytkownika na potwierdzeniu. |
|
totalPrice |
Price |
Łączna cena zamówienia. |
|
infoExtension |
FoodOrderUpdateExtension |
Definiuje dodatkowe szczegóły aktualizacji zamówienia, takie jak odstęp między szacowanym czasem dostawy lub odbioru. |
Oto przykład elementu 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 tej tabeli podano właściwości typu PickupInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
pickupTimeIso8601 |
String |
Szacowany czas odbioru w formacie sygnatury czasowej ISO 8601: „{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z” lub format czasu trwania: „P(n)Y(n)M(n)DT(n)H(n)M(n)S”. Na przykład PT90M oznacza czas trwania wynoszący 90 minut. Wartość domyślna „PT0M” wskazuje, że preferowany czas odbioru jest jak najwcześniejszy. Więcej informacji: https://pl.wikipedia.org/wiki/ISO_8601#Connectedd_date_and_time_representations Użyj tych wartości, aby zaktualizować szacowany czas odbioru w momencie płatności. Przykład: |
Oto przykład elementu PickupInfo
:
Przykład
{ "pickupTimeIso8601": "PT90M" }
PostalAddress
W tej tabeli podano właściwości typu PostalAddress
:
Właściwość | Typ | Opis | |
---|---|---|---|
regionCode |
String | To pole jest wymagane. Dwuliterowy kod kraju. Przykład: |
|
postalCode |
String |
Kod pocztowy. Przykład: |
|
administrativeArea |
String |
Najwyższy podział administracyjny używany w adresach pocztowych kraju lub regionu. Może to być stan, prowincja, obwód lub prefektura. Przykład: |
|
locality |
String |
Miasto lub miejscowość w tej lokalizacji. W regionach świata, w których miejscowości nie są dobrze zdefiniowane lub nie mieszczą się w tej strukturze, nie określaj ich, tylko użyj pola addressLines. Przykład: |
|
addressLines |
List<String> |
Jeden lub kilka wierszy, których można użyć do określenia adresu. To pole nie powinno być modyfikowane, ponieważ może zawierać niejasne lokalizacje. Przykład: |
|
recipients |
List<String> |
Lista odbiorców zamówienia. To pole jest dostępne tylko w elemencie billingAddress. |
Oto przykład elementu PostalAddress
:
Przykład
{ "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }
Cena
W tej tabeli podano właściwości typu Price
:
Właściwość | Typ | Opis | |
---|---|---|---|
type |
Enum [
"ESTIMATE",
"ACTUAL"
] |
To pole jest wymagane. Kod kuponu promocyjnego. |
|
amount |
Money |
To pole jest wymagane. |
Promocja
W tej tabeli podano właściwości typu Promotion
:
Właściwość | Typ | Opis | |
---|---|---|---|
coupon |
String | To pole jest wymagane. Kod kuponu promocyjnego. |
ProposedOrder
W tej tabeli podano właściwości typu ProposedOrder
:
Właściwość | Typ | Opis | |
---|---|---|---|
id |
String |
Opcjonalny identyfikator proponowanego zamówienia. |
|
cart |
Cart |
To pole jest wymagane. Elementy użytkownika. |
|
otherItems |
Lista<LineItem > |
Produkty dodane przez dostawcę, takie jak opłaty za dostawę, inne opłaty i podatki. Inne produkty mogą też zawierać napiwki lub rabaty dodane przez użytkownika. Maksymalna liczba elementów to 10. |
|
image |
Image |
Obraz powiązany z proponowanym zamówieniem. |
|
totalPrice |
Price |
To pole jest wymagane. Łączna cena proponowanego zamówienia. |
|
extension |
FoodOrderExtension |
To pole jest wymagane. Definiuje informacje o realizacji zamówień jedzenia. |
|
disclaimers |
Lista<Disclaimer > |
Odpowiada komunikatom o wyłączeniu odpowiedzialności, które będą wyświetlane w interfejsie przed złożeniem zamówienia. |
Oto przykład elementu 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
W tej tabeli podano właściwości typu SublineNote
:
Właściwość | Typ | Opis | |
---|---|---|---|
note |
String | To pole jest wymagane. |
Sygnatura czasowa
Data i godzina w tym formacie:
"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
TransactionDecisionValue
ZawieraOrder
.
W tej tabeli podano właściwości typu TransactionDecisionValue
:
Właściwość | Typ | Opis | |
---|---|---|---|
order |
Order |
To pole jest wymagane. Zamówienie do złożenia ze szczegółami płatności. |
Oto przykład elementu 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 tej tabeli podano właściwości typu AppRequest
:
Właściwość | Typ | Opis | |
---|---|---|---|
isInSandbox |
Wartość logiczna |
Wskazuje, czy kolejne transakcje są realizowane w środowisku piaskownicy. |
|
conversation |
Conversation |
||
inputs |
Lista<Input > |
To pole jest wymagane. Zawiera oczekiwane argumenty umożliwiające płatność za koszyk. Musi zawierać dokładnie 1 produkt. |
Oto przykład elementu 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 obiekt AppRequest
z intencją actions.foodordering.intent.CHECKOUT
.
SubmitOrderRequestMessage
SubmitOrderRequestMessage
to obiekt AppRequest
z intencją actions.foodordering.intent.TRANSACTION_DECISION
.
Rozmowa
ElementConversation
występuje tylko w jednej sesji. W razie potrzeby możesz w niej połączyć kilka działań Checkout
i SubmitOrder
.
W tej tabeli podano właściwości typu Conversation
:
Właściwość | Typ | Opis | |
---|---|---|---|
conversationId |
String | To pole jest wymagane. Unikalny identyfikator rozmowy. |
Oto przykład elementu Conversation
:
Przykład
{ "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ" }
Dane wejściowe
Oczekiwane argumenty realizacji koszyka.
W tej tabeli podano właściwości typu Input
:
Właściwość | Typ | Opis | |
---|---|---|---|
intent |
Enum [
"actions.foodordering.intent.CHECKOUT",
"actions.intent.TRANSACTION_DECISION"
] |
To pole jest wymagane. Ustaw „actions.foodordering.intent.CheckOUT” w przypadku wiadomości z prośbą o zamówienie lub „actions.intent.TRANSACTION_DECISION” w przypadku wiadomości z prośbą o zamówienie. |
|
arguments |
Lista<Argument > |
To pole jest wymagane. Zawiera koszyk na zakupy lub zamówienie do złożenia Musi zawierać dokładnie 1 produkt. |
Argument
Zawiera szczegółowe informacje na temat produktów spożywczych, które użytkownik chce wypróbować. W przypadku płatności można użyć tylko rozszerzenia. Przy składaniu zamówienia można wykorzystać tylko wartość transactionDecisionValue
W tej tabeli podano właściwości typu Argument
:
Właściwość | Typ | Opis | |
---|---|---|---|
Wymagana jest dokładnie jedna z tych grup właściwości. | |||
extension |
Grupa 1 | Cart |
Szczegółowe informacje o produktach spożywczych, które użytkownik chce kupić. |
transactionDecisionValue |
Grupa 2 | TransactionDecisionValue |
Zawiera zamówienie do złożenia oraz dane do płatności. |
Odpowiedź dotycząca realizacji zamówienia
AppResponse
W tej tabeli podano właściwości typu AppResponse
:
Właściwość | Typ | Opis | |
---|---|---|---|
expectUserResponse |
Stała |
Ustaw na „false” (fałsz). Wartość: |
|
finalResponse |
FinalResponse |
To pole jest wymagane. Zawiera Twoją odpowiedź na płatność koszyka. |
Oto przykład elementu 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 checkoutResponse
lub error
w StructuredResponse
.
SubmitOrderResponseMessage
SubmitOrderResponseMessage
to AppResponse
z orderUpdate
w StructuredResponse
.
FinalResponse
Twoja odpowiedź na prośbę o płatność koszyka lub wiadomość SubmitOrderRequestMessage.
W tej tabeli podano właściwości typu FinalResponse
:
Właściwość | Typ | Opis | |
---|---|---|---|
richResponse |
RichResponse |
To pole jest wymagane. Zawiera Twoją odpowiedź na wiadomość CheckoutRequestMessage lub SubmitOrderRequestMessage. |
CheckoutResponse
W tej tabeli podano właściwości typu CheckoutResponse
:
Właściwość | Typ | Opis | |
---|---|---|---|
proposedOrder |
ProposedOrder |
To pole jest wymagane. Proponowane zamówienie do użycia w ramach transakcji. |
|
paymentOptions |
PaymentOptions |
To pole jest wymagane. Domyślna opcja płatności wybrana dla użytkownika. |
|
additionalPaymentOptions |
Lista<PaymentOptions > |
Alternatywne opcje płatności dostępne dla użytkownika. |
Oto przykład elementu 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 prośbę o płatność koszyka lub wiadomość SubmitOrderRequestMessage.
W tej tabeli podano właściwości typu Item
:
Właściwość | Typ | Opis | |
---|---|---|---|
structuredResponse |
StructuredResponse |
To pole jest wymagane. |
RichResponse
Zawiera Twoją odpowiedź na płatność koszyka.
W tej tabeli podano właściwości typu RichResponse
:
Właściwość | Typ | Opis | |
---|---|---|---|
items |
Lista<Item > |
To pole jest wymagane. Musi zawierać dokładnie 1 produkt. |
StructuredResponse
W przypadku wiadomości CheckoutResponseMessage może to być jedna z następujących wartości: CheckoutResponse Wskazuje pomyślną transakcję. LUB FoodErrorExtension: oznacza błąd podczas płatności. Odpowiedź może zawierać poprawione elementy ProposedOrder i PaymentOptions lub komunikat o błędzie bez PaymentOptions. W przypadku elementu SubmitOrderResponseMessage dostępna jest tylko wartość orderUpdate.
W tej tabeli podano właściwości typu StructuredResponse
:
Właściwość | Typ | Opis | |
---|---|---|---|
Wymagana jest dokładnie jedna z tych grup właściwości. | |||
checkoutResponse |
Grupa 1 | CheckoutResponse |
Zakupione produkty plus podatki i rabaty. |
error |
Grupa 2 | FoodErrorExtension |
Błędy zaobserwowane w produktach w koszyku. W zależności od charakteru błędu ta właściwość może zawierać poprawione elementy ProposedOrder i PaymentOptions lub po prostu komunikat o błędzie bez PaymentOptions. |
orderUpdate |
Grupa 3 | OrderUpdate |
Aktualizacje zamówień asynchronicznych
W tej sekcji opisujemy ogólne typy, które składają się na żądania i odpowiedzi związane z typową interakcją wbudowaną w funkcje zamawiania jedzenia.AsyncOrderUpdateRequestMessage
Powiadamia użytkownika o zmianach po złożeniu i potwierdzeniu zamówienia. Możesz na przykład powiadomić użytkownika, że zamówienie jest w trakcie transportu lub że zmieniła się cena. Więcej szczegółów wW tej tabeli podano właściwości typu AsyncOrderUpdateRequestMessage
:
Właściwość | Typ | Opis | |
---|---|---|---|
isInSandbox |
Wartość logiczna |
Wskazuje, że zamówienie, w którego przypadku wysłano tę aktualizację, jest płatnością w trybie piaskownicy. |
|
customPushMessage |
CustomPushMessage |
To pole jest wymagane. Zawiera wartość OrderUpdate dla żądania. |
Oto przykład elementu AsyncOrderUpdateRequestMessage
:
Przykład
{ "isInSandbox": true, "customPushMessage": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "IN_TRANSIT", "label": "Order is on the way" }, "inTransitInfo": { "updatedTime": "2017-07-17T12:00:00Z" }, "updateTime": "2017-07-17T12:00:00Z", "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } } }
AsyncOrderUpdateResponseMessage
Gdy wyślesz żądanieAsyncOrderUpdateRequestMessage
, Google w odpowiedzi ze stanem HTTP 200 i pustą treścią. W przypadku niepowodzenia aktualizacji Google poinformuje Cię o przyczynach niepowodzenia aktualizacji.
Rodzaje aktualizacji zamówień
Przycisk
Definiuje element interfejsu, który możesz dodać, aby umożliwić użytkownikowi interakcję.
W tej tabeli podano właściwości typu Button
:
Właściwość | Typ | Opis | |
---|---|---|---|
title |
String | To pole jest wymagane. Etykieta wyświetlana. Aby reklamy były prawidłowo renderowane, używaj wielkości liter o długości do 30 znaków. Przykład: |
|
openUrlAction |
OpenUrlAction |
To pole jest wymagane. |
Oto przykład elementu Button
:
Przykład
{ "title": "Send us feedback", "openUrlAction": { "url": "mailto:person@example.com" } }
CancellationInfo
W tej tabeli podano właściwości typu CancellationInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
reason |
String | To pole jest wymagane. Możliwa do wyświetlenia przyczyna odrzucenia, gdy element OrderState.state ma wartość „CANCELLED”. Przykład: |
Oto przykład elementu CancellationInfo
:
Przykład
{ "reason": "Insufficient inventory" }
FoodOrderUpdateExtension
Ten typ podaje użytkownikowi szacowany czas, po którym zamówienie zostanie dostarczone lub będzie gotowe do odbioru. Wysyłaj to rozszerzenie w polu OrderUpdate
, jeśli informacje są dostępne lub ulegną zmianie od czasu ostatniego wysłania.
Podaj ostrożne szacunki dla przedziału czasu realizacji, aby konsekwentnie spełniać oczekiwania użytkowników. Jeśli np. zamówienie ma zostać dostarczone dziś o 13:00, musisz przesłać szacowany odstęp czasu zgodny ze zmianami wynikającymi z warunków na drodze, np. dzisiaj, od 12:45 do 13:15.
Czas trwania lub sygnatura czasowa zgodnego z normą ISO 8601 jest interpretowana jako odstęp czasu od updateTime
elementu OrderUpdate
(w zasadzie „teraz”) do updateTime
plus duration
.
Nie używaj tego formatu, chyba że „teraz” jest uzasadnione.
Odstęp w standardzie ISO 8601 oznacza odstęp czasu od początku do końca przedziału czasu.
W tej tabeli podano właściwości typu FoodOrderUpdateExtension
:
Właściwość | Typ | Opis | |
---|---|---|---|
@type |
Stała |
Typ tego rozszerzenia. To pole zawsze ma wartość „type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension”. Wartość: |
|
estimatedFulfillmentTimeIso8601 |
String |
Szacowany czas, kiedy zamówienie zostanie dostarczone lub będzie gotowe do odbioru. Ciąg musi być w formacie ISO 8601 i musi odpowiadać interwałowi, a nie pojedynczemu stałemu czasowi. Dopuszczalne konwencje to: Interwały, Czasy trwania i Daty/godziny. To pole można wysłać w elemencie SubmitOrderResponseMessage lub AsyncOrderUpdateRequestMessage, gdy te informacje staną się dostępne lub gdy nastąpi zmiana, np. wcześniejsze lub opóźnione przyloty. Przykład: |
|
foodOrderErrors |
Lista<FoodOrderError > |
Opisuje błędy, które wystąpiły po złożeniu zamówienia. Zalecany jest jeden błąd na koszyk lub produkt. Użyj FoodOrderUpdateExtension.FoodOrderErrors w przypadku błędów, których nie da się zdefiniować w informacjach o odrzuceniu. Może zawierać nie mniej niż 1 element. |
Oto przykład elementu 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 tej tabeli podano właściwości typu FulfillmentInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
Wymagana jest dokładnie jedna z tych grup właściwości. | |||
deliveryTime |
Grupa 1 | Sygnatura czasowa ISO |
Użyj wartości szacunkowaFulfillmentTimeIso8601 w komunikacie FoodOrderingUpdateExtension |
pickupTime |
Grupa 2 | Sygnatura czasowa ISO |
Użyj wartości szacunkowaFulfillmentTimeIso8601 w komunikacie FoodOrderingUpdateExtension |
Oto przykład elementu FulfillmentInfo
:
Przykład 1
{ "deliveryTime": "2017-05-10T02:36:38.803Z" }
Przykład 2
{ "pickupTime": "2019-12-26T07:24:27.803Z" }
InTransitInfo
W tej tabeli podano właściwości typu InTransitInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
updatedTime |
Sygnatura czasowa ISO |
Użyj wartości szacunkowaFulfillmentTimeIso8601 w komunikacie FoodOrderingUpdateExtension |
Oto przykład elementu InTransitInfo
:
Przykład
{ "updatedTime": "2017-05-10T02:36:38.803Z" }
LineItemUpdate
W tej tabeli 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. |
Oto przykład elementu 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 tej tabeli podano właściwości typu OpenUrlAction
:
Właściwość | Typ | Opis | |
---|---|---|---|
url |
String | To pole jest wymagane. Działanie wywołane przez kliknięcie lub dotknięcie przycisku. Lista odpowiednich prefiksów zależy od parametru orderManagementActionType. „EMAIL”: przedrostek musi mieć postać „mailto”. „CALL”: przedrostek musi mieć postać „tel”. „CUSTOMER_SERVICE”: prefiks musi mieć postać „mailto”, „tel”, „http” lub „https”. Przykład: |
OrderManagementAction
Funkcja zarządzania zamówieniami umożliwia użytkownikom korzystanie z pomocy posprzedażowej. Należy ją wysyłać na adres OrderUpdate
w złożonym zamówieniu AppResponse
. Kolejne działania związane z zarządzaniem zamówieniami (AsyncOrderUpdateRequestMessage
) wysyłane w przypadku konkretnego zamówienia mogą być różne w zależności od stanu.
Na przykład w stanie „UTWORZONO” ciąg CUSTOMER_SERVICE
może wskazywać Twój numer telefonu do obsługi klienta. Następnie w stanie „POTWIERDZONO” CUSTOMER_SERVICE
może zmienić numer telefonu na numer restauracji, jeśli będzie to najlepszy punkt kontaktu dla klienta. Podobnie gdy zamówienie będzie miało stan „SPEŁNIONE”, CUSTOMER_SERVICE
może podać Ci adres e-mail do kontaktu z zespołem pomocy.
W tej tabeli podano właściwości typu OrderManagementAction
:
Właściwość | Typ | Opis | |
---|---|---|---|
type |
OrderManagementActionType |
To pole jest wymagane. |
|
button |
Button |
To pole jest wymagane. |
Oto przykład elementu 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
Definiuje typy powiązane zOrderManagementAction
.
Typ OrderManagementActionType
ma te możliwe wartości:
CUSTOMER_SERVICE
: adres e-mail lub numer kontaktowy obsługi klienta, który będzie wyświetlany na stronie potwierdzenia zamówienia. To pole jest wymagane. Prefiks openUrlAction.url musi mieć wartość „mailto”, „tel”, „http” lub „https”.EMAIL
: działanie e-maila tylko na stronie szczegółów zamówienia. Prefiks openUrlAction.url musi mieć wartość „mailto”.CALL_DRIVER
: wywołanie działania tylko na stronie szczegółów zamówienia. Prefiks openUrlAction.url musi mieć postać „tel”.CALL_RESTAURANT
: wywołanie działania tylko na stronie szczegółów zamówienia. Prefiks openUrlAction.url musi mieć postać „tel”.
OrderState
Obecny stan zamówienia. Każda wartość state
w kolumnie OrderState
odpowiada też stanowi zakupu na stronie myaccount.google.com.
W tej tabeli podano właściwości typu OrderState
:
Właściwość | Typ | Opis | |
---|---|---|---|
state |
OrderStateEnum |
To pole jest wymagane. |
|
label |
String | To pole jest wymagane. Widoczny dla użytkowników ciąg znaków wyświetlany w konkretnym stanie. Stosuj wielkość liter jak w zdaniu. Przykład: |
Oto przykład elementu OrderState
:
Przykład
{ "state": "CONFIRMED", "label": "Provider confirmed" }
OrderStateEnum
Definiuje typy powiązane zOrderState
.
Typ OrderStateEnum
ma te możliwe wartości:
CREATED
: zamówienie utworzone przez integratora i oczekiwanie na potwierdzenie przez usługodawcę. Odpowiada on stanowi zakupu „Zamówione”.CONFIRMED
: zamówienie potwierdzone przez dostawcę i aktywne. Odpowiada to stanowi zakupu „Zaakceptowano”.REJECTED
: zamówienie odrzucone przez integratora lub dostawcę. Odpowiada to stanowi „Odrzucony”.CANCELLED
: użytkownik anulował zamówienie. Odpowiada on stanowi zakupu „Anulowany”.IN_PREPARATION
: jedzenie jest przygotowywane. Odpowiada to stanowi zakupu „Nieznany stan”.READY_FOR_PICKUP
: jedzenie jest gotowe do odbioru. Odpowiada to stanowi zakupu „Gotowe do odbioru”.IN_TRANSIT
: zamówienie jest dostarczane. Odpowiada to stanowi zakupu „W toku”.FULFILLED
: użytkownik otrzymał zamówienie. Odpowiada to stanowi zakupu „Odebrany”.
Rachunek
Wyślij ten typ w zleceniuAppResponse
, gdzie OrderState
to „POTWIERDZONO”, „FULFILLED” lub „IN_TRANSIT”. Wyślij potwierdzenie, gdy userVisibleOrderId
będzie dostępny. Nie musisz wysyłać potwierdzenia za każdym razem.
W tej tabeli podano właściwości typu Receipt
:
Właściwość | Typ | Opis | |
---|---|---|---|
userVisibleOrderId |
String | To pole jest wymagane. Wymagane, jeśli zamówienie ma stan „CONFIRMED”, „IN_TRANSIT” lub „FULFILLED”. To pole to identyfikator tego zamówienia (zwykle identyfikator zamówienia w restauracji) widoczny zarówno na rachunku integratora, jak i na karcie zamówienia Google. Użytkownik musi mieć możliwość użycia tego identyfikatora do odwołania się do zamówienia na obsługę klienta u dostawcy i integratora. Wystarczy, że podasz ten identyfikator tylko raz dla danego elementu OrderUpdate. Dopóki nie zostanie podany, parametr actionOrderId to parametr userVisibleOrderId. Na przykład nie możesz mieć parametru userVisibleOrderId, dopóki restauracja nie potwierdzi zamówienia. Po potwierdzeniu musisz wysłać żądanie AsyncOrderUpdateRequestMessage z poleceniem OrderUpdate i potwierdzeniem. |
Oto przykład elementu Receipt
:
Przykład
{ "userVisibleOrderId": "userVisibleId1234" }
RejectionInfo
W tej tabeli podano właściwości typu RejectionInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
type |
RejectionType |
To pole jest wymagane. |
|
reason |
String |
Przyczyna odrzucenia używana do logowania wewnętrznego. To pole jest niewidoczne dla użytkowników. |
Oto przykład elementu RejectionInfo
:
Przykład
{ "type": "PAYMENT_DECLINED", "reason": "There is an issue with payment processing." }
RejectionType
Typ RejectionType
ma te możliwe wartości:
INELIGIBLE
: użytkownik nie kwalifikuje się ze względu na problemy związane z zasadami lub ryzykiem.PAYMENT_DECLINED
: wystąpił problem z przetwarzaniem płatności.UNAVAILABLE_SLOT
: zamówienia nie można zrealizować przy zamówieniu z wyprzedzeniem określonym przez 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 opisujemy rodzaje płatności związane z zamawianiem jedzenia.ActionProvidedPaymentOptions
Wymagania dotyczące formy płatności z konkretnym działaniem.
W tej tabeli podano właściwości typu ActionProvidedPaymentOptions
:
Właściwość | Typ | Opis | |
---|---|---|---|
paymentType |
PaymentType |
To pole jest wymagane. |
|
displayName |
String | To pole jest wymagane. Nazwa instrumentu płatniczego widoczna na potwierdzeniu. Przykład: |
|
onFulfillmentPaymentData |
OnFulfillmentPaymentData |
Dodatkowe dane dla elementu paymentType „ON_FULFILLMENT”. Możesz na przykład użyć tego pola, aby określić, czy w ramach realizacji transakcji realizowana jest płatność gotówką czy kartą płatniczą. |
Oto przykład elementu ActionProvidedPaymentOptions
:
Przykład
{ "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } }
AllowedAuthMethods
Typ AllowedAuthMethods
ma te możliwe wartości:
PAN_ONLY
: metoda uwierzytelniania powiązana z kartami płatniczymi zapisanymi na koncie Google użytkownika. Zwracane dane płatności zawierają numer rachunku bankowego (PAN) oraz miesiąc i rok, w którym karta traci ważność.
AllowedCardNetworks
Typ AllowedCardNetworks
ma te możliwe 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 tej tabeli podano właściwości typu BillingAddressParameters
:
Właściwość | Typ | Opis | |
---|---|---|---|
format |
String |
Format adresu rozliczeniowego wymagany do zrealizowania transakcji. MIN: imię i nazwisko, kod kraju i kod pocztowy. PEŁNA: imię i nazwisko, ulica i numer domu, miejscowość, region, kod kraju, kod pocztowy. |
Oto przykład elementu BillingAddressParameters
:
Przykład 1
{ "format": "MIN" }
Przykład 2
{ "format": "FULL" }
CardParameters
Użyj tego obiektu, aby skonfigurować obsługę Google Pay API w swojej witrynie.
W tej tabeli podano właściwości typu CardParameters
:
Właściwość | Typ | Opis | |
---|---|---|---|
allowedAuthMethods |
List<Const> | To pole jest wymagane. Pola obsługiwane do uwierzytelniania transakcji kartą. Może zawierać nie mniej niż 1 element. |
|
allowedCardNetworks |
Lista<AllowedCardNetworks > |
To pole jest wymagane. Sieci kart, które są obsługiwane przez Ciebie i Google Pay API. Może zawierać nie mniej niż 1 element. |
|
billingAddressRequired |
Wartość logiczna |
Ustaw „true”, jeśli wymagasz adresu rozliczeniowego. Poproś o adres rozliczeniowy tylko wtedy, gdy jest wymagany do przetworzenia transakcji. Dodatkowe żądania danych mogą powodować błędy w procesie płatności i obniżać współczynniki 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 usługi TimesofMoney, lub „false” (fałsz) w przypadku wszystkich innych firm obsługujących płatności. |
Oto przykład elementu 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 tej tabeli podano właściwości typu GoogleProvidedPaymentInstrument
:
Właściwość | Typ | Opis | |
---|---|---|---|
instrumentToken |
String | To pole jest wymagane. Ciąg znaków zakodowany algorytmem Base64 zawierający token płatności służący do obciążania użytkownika za pomocą firmy obsługującej Google Pay zgodnie z wcześniej określoną wartością GoogleProvidedPaymentOptions. |
|
billingAddress |
PostalAddress |
Adres rozliczeniowy powiązany z płatnością. |
Oto przykład elementu 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 tej tabeli podano właściwości typu GoogleProvidedPaymentOptions
:
Właściwość | Typ | Opis | |
---|---|---|---|
facilitationSpecification |
String |
Plik JSON PaymentDataRequest jako ciąg znaków. Użyj tego obiektu, aby skonfigurować obsługę Google Pay API w swojej witrynie. |
|
supportedCardNetworks |
Lista<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 facilitationSpecification. Określa, czy karta przedpłacona jako forma płatności jest dopuszczana. To pole zostało wycofane. |
|
billingAddressRequired |
Wartość logiczna |
Zamiast tego użyj facilitationSpecification. Określa, czy adres rozliczeniowy jest wymagany. To pole zostało wycofane. |
|
tokenizationParameters |
TokenizationParameters |
To pole zostało wycofane. |
Oto przykład elementu 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
Użyj tego obiektu, aby skonfigurować obsługę Google Pay API w swojej witrynie.
W tej tabeli podano właściwości typu MerchantInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
merchantId |
String |
Identyfikator sprzedawcy w Google wydany przez Google Pay. |
|
merchantName |
String | To pole jest 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 elementu PaymentType „ON_FULFILLMENT”.
W tej tabeli podano właściwości typu OnFulfillmentPaymentData
:
Właściwość | Typ | Opis | |
---|---|---|---|
supportedPaymentOptions |
Lista<PaymentOptionsEnums > |
Lista opcji płatności dostępnych dla użytkownika w momencie realizacji zamówienia. |
Oto przykład elementu OnFulfillmentPaymentData
:
Przykład
{ "supportedPaymentOptions": [ "Cash", "Card" ] }
Parametry
Definiuje typy powiązane z TokenizationParameters
.
W tej tabeli podano właściwości typu Parameters
:
Właściwość | Typ | Opis | |
---|---|---|---|
gateway |
String | To pole jest wymagane. Przykład: |
|
gatewayMerchantId |
String | ||
[additionalKey: string] |
String | Dodatkowe pary klucz-wartość |
Oto przykład elementu 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
Użyj tego obiektu, aby skonfigurować obsługę Google Pay API w swojej witrynie.
W tej tabeli podano właściwości typu PaymentDataRequest
:
Właściwość | Typ | Opis | |
---|---|---|---|
apiVersion |
Stała | To pole jest wymagane. Główna wersja interfejsu API. Wartość: |
|
apiVersionMinor |
Stała | To pole jest wymagane. Pomocnicza wersja interfejsu API. Wartość: |
|
merchantInfo |
MerchantInfo |
To pole jest wymagane. (Identyfikator sprzedawcy w Google Pay) Informacje o sprzedawcy, który wysłał żądanie danych płatności. |
|
allowedPaymentMethods |
Lista<PaymentMethod > |
To pole jest wymagane. Określa, które formy płatności obsługiwane przez Google Pay API mają być dostępne. |
|
transactionInfo |
TransactionInfo |
To pole jest wymagane. Szczegółowe informacje o autoryzacji transakcji w zależności od tego, czy użytkownik wyraził zgodę na transakcję. To pole zawiera łączną cenę i stan ceny. |
Oto przykład elementu 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 dotyczące płatności za zamówienie.
W tej tabeli podano właściwości typu PaymentInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
displayName |
String | To pole jest wymagane. Widoczna dla użytkownika nazwa instrumentu płatniczego, która będzie widoczna na potwierdzeniu. |
|
paymentType |
PaymentType |
To pole jest wymagane. |
|
googleProvidedPaymentInstrument |
GoogleProvidedPaymentInstrument |
Token, którego może używać działanie. Określ tę wartość tylko wtedy, gdy jako opcję płatności podano GoogleProvidedPaymentOptions jako opcję płatności w komunikacie CheckoutResponseMessage. |
Oto przykład elementu 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
Użyj tego obiektu, aby skonfigurować obsługę Google Pay API w swojej witrynie.
W tej tabeli podano właściwości typu PaymentMethod
:
Właściwość | Typ | Opis | |
---|---|---|---|
type |
Stała | To pole jest wymagane. Krótki identyfikator obsługiwanej formy płatności. Obecnie obsługiwana jest tylko forma KARTA. Wartość: |
|
parameters |
CardParameters |
To pole jest wymagane. Parametry niezbędne do skonfigurowania podanej formy płatności. |
|
tokenizationSpecification |
TokenizationSpecification |
To pole jest wymagane. Skonfiguruj konto lub dostawcę usług odszyfrowywania, aby otrzymać dane do płatności. Ta właściwość jest wymagana w przypadku formy płatności CARD. |
Oto przykład elementu 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 tej tabeli podano właściwości typu PaymentOptions
:
Właściwość | Typ | Opis | |
---|---|---|---|
Wymagana jest dokładnie jedna z tych grup właściwości. | |||
googleProvidedOptions |
Grupa 1 | GoogleProvidedPaymentOptions |
Wzajemnie wykluczające się z actionProvidedOptions. Użyj go do płatności online za pomocą gPay. |
actionProvidedOptions |
Grupa 2 | ActionProvidedPaymentOptions |
Wzajemnie wykluczające się z googleProvidedOptions. Użyj dla opcji „gotówka przy odbiorze” lub „płatność za realizację”. |
Oto przykład elementu 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
ma te możliwe wartości:
Cash
Card
UPI
Paytm
PaymentType
Typ PaymentType
ma te możliwe wartości:
PAYMENT_CARD
: element GoogleProvidedPaymentOptions.ON_FULFILLMENT
: element ActionProvidedPaymentOptions.
SupportedCardNetworks
Definiuje typy powiązane zGoogleProvidedPaymentOptions
.
Typ SupportedCardNetworks
ma te możliwe wartości:
UNSPECIFIED_CARD_NETWORK
AMEX
DISCOVER
JCB
MASTERCARD
VISA
TokenizationParameters
Definiuje typy powiązane z:GoogleProvidedPaymentOptions
.
W tej tabeli podano właściwości typu TokenizationParameters
:
Właściwość | Typ | Opis | |
---|---|---|---|
tokenizationType |
Enum [
"UNSPECIFIED_TOKENIZATION_TYPE",
"PAYMENT_GATEWAY"
] |
To pole jest wymagane. Zamiast tego użyj facilitationSpecification. Akceptowane typy 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.
W tej tabeli podano właściwości typu TokenizationSpecification
:
Właściwość | Typ | Opis | |
---|---|---|---|
type |
Stała | To pole jest wymagane. |
|
parameters |
Parameters |
To pole jest wymagane. |
Oto przykład elementu 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 tej tabeli podano właściwości typu TransactionInfo
:
Właściwość | Typ | Opis | |
---|---|---|---|
currencyCode |
String | To pole jest wymagane. Kod waluty wyrażony literami według normy ISO 4217. |
|
transactionId |
String |
Unikalny identyfikator, który określa 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 |
Stała | To pole jest wymagane. Użyj wartości „ESTIMATED” jako wartości domyślnej. Łą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 | To pole jest 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. |
Oto przykład elementu TransactionInfo
:
Przykład
{ "totalPriceStatus": "ESTIMATED", "totalPrice": "12.34", "currencyCode": "USD" }