Tipi di base
Carrello
Contiene i dettagli dell'ordine, nonché se la richiesta riguarda il ritiro o la consegna. Un carrello contiene anche i dettagli di consegna, la mancia e l'indirizzo di consegna. L'oggettoCart
è definito in un file Checkout AppRequest
.f. Puoi includere una copia del carrello in Checkout AppResponse
La tabella seguente elenca le proprietà per il tipo Cart
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
@type |
Const |
Il tipo di questo oggetto. Ometti questo campo se l'oggetto Cart principale fa parte di ProposedOrder. Valore: |
|
id |
String |
ID facoltativo del carrello. |
|
merchant |
Merchant |
Commerciante affiliato a questo carrello. |
|
lineItems |
List<LineItem > |
Obbligatorio. Elenco dei prodotti o servizi che l'utente sta ordinando. Deve contenere almeno 1 elemento. |
|
promotions |
List<Promotion > |
Promozione applicata a questo carrello. Al momento è supportata una sola promozione. |
|
notes |
String |
Note sull'ordine o sulle istruzioni di consegna. |
|
extension |
FoodCartExtension |
Definisce i dettagli dell'utente, ad esempio le preferenze di evasione degli ordini. |
L'esempio seguente mostra un elemento Cart
:
Esempio 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" } } }
Esempio 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" } } }
Contatto
Specifica i dettagli della persona che riceve l'ordine. È disponibile solo inAppResponse
.
La tabella seguente elenca le proprietà per il tipo Contact
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
displayName |
String |
Il nome della persona che riceve l'ordine, così come vuoi che venga visualizzato. Utilizza questo campo se firstName e lastName non sono specificati. Esempio: |
|
email |
String |
Indirizzo email della persona che riceve l'ordine. Esempio: |
|
firstName |
String |
Nome della persona che riceve l'ordine. Esempio: |
|
lastName |
String |
Cognome della persona che riceve l'ordine. Esempio: |
|
phoneNumber |
String |
Numero di telefono della persona che riceve l'ordine, incluso il codice paese. Esempio: |
|
emailVerified |
Valore booleano |
Indica se la persona che riceve l'ordine ha eseguito l'accesso con il proprio Account Google. |
L'esempio seguente mostra un elemento Contact
:
Esempio
{ "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" }
CustomPushMessage
Contiene l'elementoOrderUpdate
per la richiesta.
La tabella seguente elenca le proprietà per il tipo CustomPushMessage
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
orderUpdate |
OrderUpdate |
Obbligatorio. Informazioni aggiornate per l'ordine. |
L'esempio seguente mostra un elemento CustomPushMessage
:
Esempio
{ "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
La tabella seguente elenca le proprietà per il tipo DeliveryInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
deliveryTimeIso8601 |
String |
Tempo di caricamento stimato, nel formato del timestamp ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" o nel formato della durata: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Ad esempio, PT90M rappresenta una durata di 90 minuti. Il valore predefinito "PT0M" indica che la data di consegna preferita è il prima possibile. Riferimento: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. Utilizzalo per aggiornare il tempo di consegna stimato durante la risposta al pagamento. Esempio: |
L'esempio seguente mostra un elemento DeliveryInfo
:
Esempio
{ "deliveryTimeIso8601": "PT90M" }
Disclaimer
La tabella seguente elenca le proprietà per il tipo Disclaimer
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
predefinedMessage |
PredefinedMessage |
Obbligatorio. Per mostrare messaggi di disclaimer predefiniti durante il pagamento. |
|
feeAmount |
Money |
Il partner addebiterà al commerciante una commissione di importo N per questo ordine. |
|
feeAmountRange |
FeeAmountRange |
Il partner addebiterà al ristorante una commissione da N a M euro per ordine. |
|
feePercent |
Number |
Il partner addebiterà al commerciante una commissione pari a N% per questo ordine. |
|
feePercentRange |
FeePercentRange |
Il partner addebiterà al commerciante una commissione compresa tra N% e M% per ordine. |
L'esempio seguente mostra un elemento Disclaimer
:
Esempio 1
{ "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER" }
Esempio 2
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE" }
Esempio 3
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feePercent": 25 }
Esempio 4
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feePercentRange": { "minFeePercent": 20, "maxFeePercent": 30 } }
Esempio 5
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feeAmount": { "currencyCode": "AUD", "units": 2, "nanos": 500000000 } }
Esempio 6
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feeAmountRange": { "minFeeAmount": { "currencyCode": "AUD", "units": 2, "nanos": 500000000 }, "maxFeeAmount": { "currencyCode": "AUD", "units": 10, "nanos": 0 } } }
Errore
Il tipo Error
ha i seguenti valori possibili:
CLOSED
: il ristorante è chiuso al momento dell'ordine.NO_CAPACITY
: la capacità del servizio non è disponibile (ad esempio, un'interruzione temporanea dovuta ai picchi di traffico).NO_COURIER_AVAILABLE
: impossibile elaborare l'ordine a causa del personale di consegna limitato.REQUIREMENTS_NOT_MET
: i vincoli per l'accettazione dell'ordine non sono stati soddisfatti (ad esempio, la quantità minima del carrello).UNAVAILABLE_SLOT
: l'ordine non può essere evaso all'ora dell'ordine anticipato specificata da DeliveryInfo o PickupInfo.OUT_OF_SERVICE_AREA
: l'ordine non può essere consegnato all'indirizzo dell'utente.PROMO_EXPIRED
: impossibile applicare la promozione perché è scaduta.PROMO_NOT_APPLICABLE
: codice di errore generico per rilevare tutti i casi di mancata applicazione del codice promozionale, se nessuno degli altri errori relativi al codice promozionale corrisponde.PROMO_NOT_RECOGNIZED
: il codice coupon non è stato riconosciuto.PROMO_ORDER_INELIGIBLE
: l'ordine corrente non è idoneo per questo coupon.PROMO_USER_INELIGIBLE
: l'utente corrente non è idoneo per questo coupon.AVAILABILITY_CHANGED
: l'articolo non è più disponibile o non sono disponibili articoli sufficienti per soddisfare la richiesta.INCORRECT_PRICE
: errori di prezzo nelle commissioni o nel totale.INVALID
: un elemento LineItem, FulfillmentOption o Promotion contiene dati non validi.NOT_FOUND
: non è stato possibile trovare un elemento LineItem, FulfillmentOption o Promotion.PRICE_CHANGED
: il prezzo di un articolo è cambiato.
FeeAmountRange
La tabella seguente elenca le proprietà per il tipo FeeAmountRange
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
minFeeAmount |
Money |
Limite inferiore dell'importo della commissione addebitata. |
|
maxFeeAmount |
Money |
Limite superiore dell'importo della commissione addebitata. |
FeePercentRange
La tabella seguente elenca le proprietà per il tipo FeePercentRange
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
minFeePercent |
Number |
Limite inferiore della percentuale di commissione addebitata. |
|
maxFeePercent |
Number |
Limite superiore della percentuale di commissione addebitata. |
FoodCartExtension
Contiene dettagli sull'utente, ad esempio le preferenze di evasione degli ordini.
La tabella seguente elenca le proprietà per il tipo FoodCartExtension
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
@type |
Const |
Tipo di estensione. Questo campo è sempre impostato su "type.googleapis.com/google.actions.v2.orders.FoodCartExtension". Valore: |
|
contact |
Contact |
Dati di contatto della persona che riceve l'ordine. I dettagli includono il nome, il numero di telefono e l'indirizzo email della persona. |
|
fulfillmentPreference |
FulfillmentOption |
Obbligatorio. Preferenza di evasione ordine dell'utente. |
|
location |
Location |
In CheckoutRequestMessage, questo campo specifica l'indirizzo di consegna, che è obbligatorio se l'ordine è da consegnare. Per gli ordini da asporto o da ritirare, questo campo non è incluso nel messaggio. |
L'esempio seguente mostra un elemento FoodCartExtension
:
Esempio 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" } }
Esempio 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
Identifica uno o più errori che si sono verificati durante l'elaborazione di una richiesta. La tabella seguente descrive i campi del tipoFoodErrorExtension
.
Gli errori possono essere inviati in un CheckoutResponse
.
La tabella seguente elenca le proprietà per il tipo FoodErrorExtension
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
@type |
Const | Obbligatorio. Tipo di estensione. Valore: |
|
foodOrderErrors |
List<FoodOrderError > |
Obbligatorio. Array di oggetti FoodOrderError che descrivono gli errori che si sono verificati. È consigliato un errore per carrello o per articolo. Deve contenere almeno 1 elemento. |
|
correctedProposedOrder |
ProposedOrder |
Obbligatorio quando
Un nuovo ordine proposto con le correzioni. Restituisce questo oggetto se sono presenti errori recuperabili nell'ordine proposto originale. Ad esempio, una variazione del prezzo di uno o più elementi pubblicitari nel carrello è un errore recuperabile. Gli errori recuperabili con un ordine proposto valido vengono avanzati alla fase di conferma, anziché richiedere all'utente di rivedere il carrello. |
|
paymentOptions |
PaymentOptions |
Obbligatorio quando
Opzioni di pagamento predefinite selezionate per l'utente. |
|
additionalPaymentOptions |
List<PaymentOptions > |
Opzioni di pagamento alternative a disposizione dell'utente. |
L'esempio seguente mostra un elemento FoodErrorExtension
:
Esempio
{ "@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
Definisce i componenti aggiuntivi per gli alimenti.
La tabella seguente elenca le proprietà per il tipo FoodItemExtension
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
@type |
Const | Obbligatorio. Tipo di estensione. Questo campo è sempre impostato su "type.googleapis.com/google.actions.v2.orders.FoodItemExtension". Valore: |
|
options |
List<FoodItemOption > |
Un'opzione può essere un elemento aggiuntivo o un gruppo di componenti aggiuntivi contenente un insieme di componenti aggiuntivi. |
L'esempio seguente mostra un elemento FoodItemExtension
:
Esempio
{ "@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
La tabella seguente elenca le proprietà per il tipo FoodItemOption
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
id |
String |
ID univoco assegnato da Google. Quando invii un FoodOrderError o un AsyncOrderUpdateRequest, utilizza questo campo per distinguere i casi in cui un carrello contiene più di un articolo con lo stesso offerId. Esempio: |
|
offerId |
String |
L'ID offerta per l'articolo. Esempio: |
|
name |
String |
Il nome dell'opzione. Esempio: |
|
price |
Money |
||
note |
String |
Nota relativa all'opzione. |
|
quantity |
Number |
Per le opzioni che sono elementi, il numero di elementi. Esempio: |
|
subOptions |
List<FoodItemOption > |
Eventuali opzioni secondarie. Esempio: |
L'esempio seguente mostra un elemento FoodItemOption
:
Esempio 1
{ "id": "10293231", "offerId": "1918491", "name": "Honey Mustard", "price": { "currencyCode": "USD", "units": "1", "nanos": 250000000 }, "quantity": 5 }
Esempio 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
Contiene i dettagli sugli errori in unCheckoutResponse
.
La tabella seguente elenca le proprietà per il tipo FoodOrderError
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
error |
Error |
Obbligatorio. |
|
id |
String | Obbligatorio quando
Questo campo è obbligatorio per gli errori a livello di articolo. Si tratta dell'attributo LineItem.id assegnato da Google per gli elementi del menu o FoodItemOption.id per i componenti aggiuntivi. |
|
description |
String |
Descrizione dell'errore. Questa descrizione è per i log interni e non è visibile agli utenti. |
|
updatedPrice |
Money |
Obbligatorio quando
Nuovo prezzo di un articolo che ha causato l'errore. Questo valore è obbligatorio solo quando l'errore è "PRICE_CHANGED". |
|
availableQuantity |
Intero | Obbligatorio quando
Nuova quantità disponibile dell'articolo che ha causato l'errore. Questo valore è obbligatorio solo se l'errore è "INVALID" o "NOT_FOUND". Il valore deve essere zero per "INVALID" e "NOT_FOUND". |
L'esempio seguente mostra un elemento FoodOrderError
:
Esempio 1
{ "error": "CLOSED", "description": "This store is currently reachable. Please try again later." }
Esempio 2
{ "error": "PRICE_CHANGED", "id": "french_fries", "description": "The price has changed.", "updatedPrice": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }
FoodOrderExtension
Contiene informazioni sull'evasione dell'ordine.
La tabella seguente elenca le proprietà per il tipo FoodOrderExtension
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
@type |
Const |
Tipo di estensione. Questo campo è sempre impostato su "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension". Valore: |
|
availableFulfillmentOptions |
List<FulfillmentOption > |
Rappresenta le opzioni di evasione dell'ordine disponibili. |
|
optinForRemarketing |
Valore booleano |
Richiesta dell'utente di attivare i tuoi canali di marketing. Per impostazione predefinita, non puoi inviare contenuti di marketing senza il consenso dell'utente. Se optinForRemarketing è true, puoi abbonare l'utente. Se optinForRemarketing è false o non è presente, devi mantenere invariato lo stato dell'iscrizione nel tuo sistema. Gli utenti non possono disattivare la funzionalità tramite Google, ma solo tramite una funzione di annullamento dell'iscrizione fornita nei tuoi canali di marketing. Questo flag è presente solo in SubmitOrderRequestMessage. |
L'esempio seguente mostra un elemento FoodOrderExtension
:
Esempio 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] }
Esempio 2
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2020-08-20T11:41:00Z" } ], "optinForRemarketing": true }
FulfillmentOption
Puoi utilizzare un oggettoFulfillmentOption
nei seguenti modi:
-
In
Checkout AppRequest
eSubmit AppRequest
, ilCart.extension.fulfillmentPreference
: memorizza la preferenza dell'utente (consegna o ritiro). Il prezzo è sempre 0 quando viene inviata la richiesta di pagamento. -
In
Checkout AppResponse
, il valoreProposedOrder.extension.availableFulfillmentOptions
: definisce una o più opzioni di importazione (al momento è supportata solo un'opzione). Specifica l'opzione predefinita comeLineItem
inProposedOrder.otherItems
. IlofferId
diFulfillmentOption
deve corrispondere all'ID delLineItem
specificato inProposedOrder.otherItems
.
La tabella seguente elenca le proprietà per il tipo FulfillmentOption
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
offerId |
String |
Identificatore univoco per questa opzione di evasione, se presente. |
|
fulfillmentInfo |
FulfillmentOptionInfo |
Obbligatorio. |
|
expiresAt |
Timestamp ISO |
Data e ora di scadenza di questa opzione di completamento. |
|
price |
Money |
Costo di questa opzione. |
L'esempio seguente mostra un elemento FulfillmentOption
:
Esempio
{ "offerId": "offer5", "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2019-05-02T00:00:00-07:00", "price": { "currencyCode": "USD", "units": "5", "nanos": 230000000 } }
FulfillmentOptionInfo
Definisce le informazioni relative aFulfillmentInfo
.
La tabella seguente elenca le proprietà per il tipo FulfillmentOptionInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
È obbligatorio uno dei seguenti gruppi di proprietà. | |||
delivery |
Gruppo 1 | DeliveryInfo |
Se presente, indica l'ordine di consegna. |
pickup |
Gruppo 2 | PickupInfo |
Se presente, indica un ordine di ritiro. |
Immagine
La tabella seguente elenca le proprietà per il tipo Image
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
sourceUrl |
String | Obbligatorio. URL dell'immagine. L'immagine deve avere almeno 72 x 72 pixel. Per risultati ottimali, utilizza un'immagine di almeno 216 x 216 pixel. L'immagine deve essere inferiore a 6 MB e 64 megapixel. |
LineItem
Definisce i contenuti di un carrello (Cart.lineItems
) o gli addebiti aggiuntivi per un ordine (ProposedOrder.otherItems
).
La tabella seguente elenca le proprietà per il tipo LineItem
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
id |
String | Obbligatorio quando
Per un elemento LineItem in un carrello (ProposedOrder.cart.lineItems[0].id), si tratta dell'ID univoco creato da Google durante la creazione dell'ordine. Per un elemento pubblicitario in un ordine proposto (ProposedOrder.otherItems[0].id), utilizzato per aggiungere elementi come le spese di consegna e le tasse, il valore di id è definito dal fornitore. Ad esempio, in un carrello sono presenti due articoli uguali con istruzioni di preparazione diverse (ad esempio due pizze medie con diversi tipi di condimento). In questo caso, entrambi gli articoli hanno lo stesso offerId di base. Quando invii una richiesta di aggiornamento dell'ordine per indicare che un articolo è stato rifiutato, utilizza questo ID come elemento di disambiguazione. In altre parole, se una delle pizze viene rifiutata perché manca un determinato condimento, l'ID aiuta Google a determinare a quale articolo dell'ordine fai riferimento. Questo campo è obbligatorio, tranne in otherItems. |
|
name |
String | Obbligatorio. Nome dell'elemento pubblicitario. Si tratta di una stringa visibile all'utente e, se possibile, deve essere scritta in maiuscolo (ad es. "Tariffa di consegna", "Tariffa di servizio", "Imposte"). Questo campo viene troncato a 100 caratteri per gli utenti. |
|
type |
LineItemType |
Obbligatorio. |
|
quantity |
Intero | Obbligatorio quando
Numero di articoli inclusi. Non applicabile a ProposedOrder.otherItems. |
|
description |
String |
Descrizione dell'articolo. |
|
price |
Price |
Obbligatorio. Il prezzo dell'articolo o degli articoli. Questo valore riflette il prezzo totale di tutti i prodotti o servizi per questo elemento pubblicitario (in altre parole, aggiungi il costo di eventuali componenti aggiuntivi e moltiplica per la quantità). Ad esempio, se un articolo da 10 $ha una quantità di 3, il prezzo sarà di 30 $. Una pizza con un prezzo base di 5 € e un componente aggiuntivo di 1 € avrà un prezzo di 6 €. Per due pizze (quantità = 2) con un prezzo base di 5 $e ciascuna con un componente aggiuntivo di 1 $, il prezzo sarà di 12 $. Ogni elemento LineItem deve avere un prezzo, anche se pari a "0". Quando il tipo è SCONTO, specifica il valore come negativo (ad es. "-2"). |
|
subLines |
List<SublineNote > |
Facoltativo e valido solo se il tipo è "REGOLARE". In questo campo della richiesta di pagamento e della richiesta di invio dell'ordine può essere inviata una nota specifica per l'articolo da parte dell'utente. Assicurati che il commerciante riceva la nota quando viene fornita. Sarà presente nella richiesta come subLines[0].note, che è l'unico valore fornito in questo campo quando è presente in una richiesta. Non deve contenere più di 1 articolo. |
|
offerId |
String | Obbligatorio quando
L'ID offerta del MenuItem per l'articolo. Non applicabile a ProposedOrder.otherItems. |
|
extension |
FoodItemExtension |
Definisce i componenti aggiuntivi per gli alimenti. |
L'esempio seguente mostra un elemento LineItem
:
Esempio 1
{ "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }
Esempio 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
Il tipo LineItemType
ha i seguenti valori possibili:
REGULAR
: elemento pubblicitario di tipo Articoli. Applicabile a Cart.lineItems.TAX
: voce relativa alle imposte. Applicabile a ProposedOrder.otherItems.DISCOUNT
: elemento pubblicitario sconto. Tieni presente che il prezzo deve essere negativo. Applicabile a ProposedOrder.otherItems.GRATUITY
: elemento pubblicitario per la mancia. Generalmente riservato per il messaggio SubmitOrderRequestMessage per un suggerimento selezionato dall'utente. Applicabile a ProposedOrder.otherItems.DELIVERY
: elemento pubblicitario di pubblicazione. Applicabile a ProposedOrder.otherItems.SUBTOTAL
: voce di sottototale. Applicabile a ProposedOrder.otherItems.FEE
: elemento pubblicitario aggiuntivo non coperto dagli altri tipi. Applicabile a ProposedOrder.otherItems.
Località
Specifica un indirizzo per l'ordinazione di cibo. Il tipoLocation
viene utilizzato in un
Cart
per indicare solo la destinazione di un ordine di consegna.
La posizione definitiva è presente anche in
TransactionDecisionValue
se l'utente effettua l'ordine. Per gli ordini che specificano il ritiro, non è inclusa alcuna località (nemmeno una vuota).
La tabella seguente elenca le proprietà per il tipo Location
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
coordinates |
Coordinates |
||
formattedAddress |
String |
Mostra l'indirizzo della stazione di ricarica. Esempio: |
|
postalAddress |
PostalAddress |
||
zipCode |
String |
Esempio: |
|
city |
String |
Il nome della città. Esempio: |
|
notes |
String |
Note sulla posizione, ad esempio i codici del cancello. Deve contenere al massimo 500 caratteri. Esempio: |
L'esempio seguente mostra un elemento Location
:
Esempio
{ "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" }
Commerciante
La tabella seguente elenca le proprietà per il tipo Merchant
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
id |
String |
L'ID del commerciante. Se specificato, corrisponde a Restaurant.@id nel feed dei ristoranti. Esempio: |
|
name |
String | Obbligatorio. Nome visibile dell'utente del commerciante. Esempio: |
L'esempio seguente mostra un elemento Merchant
:
Esempio
{ "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }
Denaro
La tabella seguente elenca le proprietà per il tipo Money
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
currencyCode |
String | Obbligatorio. Un codice valuta di 3 lettere in formato ISO 4217. Esempio: |
|
units |
String |
Le unità intere dell'importo. Ad esempio, se currencyCode è "USD", l'unità "1" corrisponde a un dollaro statunitense. Esempio: |
|
nanos |
Intero |
Numero di nano (10^-9) unità dell'importo. Il valore deve essere compreso tra -999.999.999 e +999.999.999, inclusi. Utilizza le seguenti regole: se le unità sono positive, i nano devono essere positivi o pari a zero. Se le unità sono pari a zero, i nano possono essere positivi, zero o negativi. Se units è negativo, nanos deve essere negativo o zero. Ad esempio, -1,75 $ è rappresentato come unità = -1 e nano = -750.000.000. Esempio: |
L'esempio seguente mostra un elemento Money
:
Esempio 1
{ "currencyCode": "USD", "units": "36", "nanos": 730000000 }
Esempio 2
{ "currencyCode": "EUR", "units": "10" }
Ordine
Contiene l'ordine finale, incluse tasse, commissioni e spese di consegna, nonché i dati di pagamento. Questo oggetto viene ricevuto dalla tua azione in unSubmit AppRequest
.
La tabella seguente elenca le proprietà per il tipo Order
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
finalOrder |
ProposedOrder |
Obbligatorio. L'ingiunzione proposta che ha causato l'ingiunzione. |
|
googleOrderId |
String | Obbligatorio. ID ordine assegnato da Google. Questo ID deve essere stabile per l'intero ciclo di vita di un ordine. Questo ID non è visibile all'utente finale. |
|
orderDate |
Timestamp ISO | Obbligatorio. Data e ora di creazione dell'ordine. |
|
paymentInfo |
PaymentInfo |
Obbligatorio. Dati di pagamento corrispondenti al pagamento di questo ordine. |
L'esempio seguente mostra un elemento Order
:
Esempio
{ "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
La tabella seguente descrive i campi del tipo OrderUpdate incluso inAppResponse
.
La tabella seguente elenca le proprietà per il tipo OrderUpdate
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
actionOrderId |
String | Obbligatorio. L'ID univoco dell'ordine nel sistema dell'integratore utilizzato per identificare l'ordine per cui viene inviato l'aggiornamento. Se receipt.user_visible_order_id non viene fornito almeno una volta in OrderUpdate per un ordine "CREATED", questo ID sarà l'ID visibile all'utente inserito visualizzato nella scheda dell'ordine Google. |
|
orderState |
OrderState |
Obbligatorio. Il nuovo stato dell'ordine. |
|
lineItemUpdates |
Map<String, LineItemUpdate > |
||
updateTime |
Timestamp ISO | Obbligatorio. L'ora in cui è stato aggiornato l'ordine. |
|
orderManagementActions |
List<OrderManagementAction > |
Azioni post-ordine come contattare l'assistenza e visualizzare i dettagli dell'ordine. Deve contenere almeno 1 elemento e non più di 6 elementi. |
|
rejectionInfo |
RejectionInfo |
Obbligatorio quando
|
|
cancellationInfo |
CancellationInfo |
Obbligatorio quando
|
|
inTransitInfo |
InTransitInfo |
Questo campo è stato ritirato. |
|
fulfillmentInfo |
FulfillmentInfo |
Questo campo è stato ritirato. |
|
receipt |
Receipt |
Obbligatorio quando
Fornisci l'ID ordine visibile all'utente in una ricevuta. |
|
totalPrice |
Price |
Prezzo totale dell'ordine. |
|
infoExtension |
FoodOrderUpdateExtension |
Definisce ulteriori dettagli dell'aggiornamento dell'ordine, ad esempio l'intervallo per la consegna o il ritiro stimati. |
L'esempio seguente mostra un elemento OrderUpdate
:
Esempio
{ "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
La tabella seguente elenca le proprietà per il tipo PickupInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
pickupTimeIso8601 |
String |
Ora di ritiro stimata, nel formato del timestamp ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" o nel formato della durata: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Ad esempio, PT90M rappresenta una durata di 90 minuti. Il valore predefinito "PT0M" indica che l'orario di ritiro preferito è il prima possibile. Riferimento: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. Utilizzalo per aggiornare l'orario di ritiro stimato durante la risposta al pagamento. Esempio: |
L'esempio seguente mostra un elemento PickupInfo
:
Esempio
{ "pickupTimeIso8601": "PT90M" }
PostalAddress
La tabella seguente elenca le proprietà per il tipo PostalAddress
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
regionCode |
String | Obbligatorio. Un codice paese di due lettere. Esempio: |
|
postalCode |
String |
Il codice postale. Esempio: |
|
administrativeArea |
String |
Suddivisione amministrativa di grado più alto usata per l'indirizzo postale di un paese o di un'area geografica. Può essere uno stato, una provincia, un oblast o una prefettura. Esempio: |
|
locality |
String |
La città di questa località. Lì dove le località non sono ben definite o non rientrano nella struttura, non specificare la località e utilizza il campo addressLines. Esempio: |
|
addressLines |
List<String> |
Una o più righe che puoi utilizzare per specificare l'indirizzo. Questo campo non deve essere modificato perché può contenere località poco chiare. Esempio: |
|
recipients |
List<String> |
Elenco dei destinatari di un ordine. Questo campo è disponibile solo in billingAddress. |
L'esempio seguente mostra un elemento PostalAddress
:
Esempio
{ "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }
Prezzo
La tabella seguente elenca le proprietà per il tipo Price
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
type |
Enum [
"ESTIMATE",
"ACTUAL"
] |
Obbligatorio. Il codice coupon della promozione. |
|
amount |
Money |
Obbligatorio. |
Promozione
La tabella seguente elenca le proprietà per il tipo Promotion
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
coupon |
String | Obbligatorio. Il codice coupon della promozione. |
ProposedOrder
La tabella seguente elenca le proprietà per il tipo ProposedOrder
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
id |
String |
ID facoltativo per l'ordine proposto. |
|
cart |
Cart |
Obbligatorio. Articoli dell'utente. |
|
otherItems |
List<LineItem > |
Elementi aggiunti dal fornitore, come spese di consegna, altre commissioni e tasse. otherItems può contenere anche la mancia e/o lo sconto aggiunti dall'utente. Non deve contenere più di 10 articoli. |
|
image |
Image |
Immagine associata all'ordine proposto. |
|
totalPrice |
Price |
Obbligatorio. Prezzo totale dell'ordine proposto. |
|
extension |
FoodOrderExtension |
Obbligatorio. Definisce le informazioni sull'evasione degli ordini di cibo. |
|
disclaimers |
List<Disclaimer > |
Corrisponde ai messaggi di disclaimer che verranno visualizzati nell'interfaccia utente prima dell'invio dell'ordine. |
L'esempio seguente mostra un elemento ProposedOrder
:
Esempio
{ "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
La tabella seguente elenca le proprietà per il tipo SublineNote
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
note |
String | Obbligatorio. |
Timestamp
La data e l'ora nel seguente formato:
"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
TransactionDecisionValue
ContieneOrder
.
La tabella seguente elenca le proprietà per il tipo TransactionDecisionValue
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
order |
Order |
Obbligatorio. Ordine da effettuare con i dettagli di pagamento. |
L'esempio seguente mostra un elemento TransactionDecisionValue
:
Esempio
{ "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" } } }
Richiesta di evasione
AppRequest
La tabella seguente elenca le proprietà per il tipo AppRequest
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
isInSandbox |
Valore booleano |
Indica se le transazioni successive vengono eseguite in un ambiente sandbox. |
|
conversation |
Conversation |
||
inputs |
List<Input > |
Obbligatorio. Contiene gli argomenti previsti per il pagamento di un carrello. Deve contenere esattamente 1 elemento. |
L'esempio seguente mostra un elemento AppRequest
:
Esempio 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" } } } } ] } ] }
Esempio 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
UnCheckoutRequestMessage
è un AppRequest
con l'intent actions.foodordering.intent.CHECKOUT
.
SubmitOrderRequestMessage
UnSubmitOrderRequestMessage
è un AppRequest
con l'intent actions.foodordering.intent.TRANSACTION_DECISION
.
Conversazione
UnConversation
è univoco solo per una sessione. Se necessario, puoi utilizzarlo per collegare più azioni Checkout
e SubmitOrder
.
La tabella seguente elenca le proprietà per il tipo Conversation
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
conversationId |
String | Obbligatorio. ID univoco per la conversazione. |
L'esempio seguente mostra un elemento Conversation
:
Esempio
{ "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ" }
Input
Gli argomenti previsti per il pagamento di un carrello.
La tabella seguente elenca le proprietà per il tipo Input
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
intent |
Enum [
"actions.foodordering.intent.CHECKOUT",
"actions.intent.TRANSACTION_DECISION"
] |
Obbligatorio. Impostato su "actions.foodordering.intent.CHECKOUT" per il messaggio di richiesta di pagamento OPPURE su "actions.intent.TRANSACTION_DECISION" per il messaggio di richiesta di invio dell'ordine. |
|
arguments |
List<Argument > |
Obbligatorio. Contiene il carrello da pagare o l'ordine da effettuare Deve contenere esattamente 1 elemento. |
Argomento
Contiene i dettagli sugli alimenti che l'utente vuole pagare. Per il pagamento, è applicabile solo l'estensione. Per l'invio dell'ordine, è applicabile solo transactionDecisionValue
La tabella seguente elenca le proprietà per il tipo Argument
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
È obbligatorio uno dei seguenti gruppi di proprietà. | |||
extension |
Gruppo 1 | Cart |
Dettagli sugli alimenti che l'utente vuole pagare. |
transactionDecisionValue |
Gruppo 2 | TransactionDecisionValue |
Contiene l'ordine da effettuare insieme ai dettagli di pagamento. |
Risposta all'evasione
AppResponse
La tabella seguente elenca le proprietà per il tipo AppResponse
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
expectUserResponse |
Const |
Impostato su false. Valore: |
|
finalResponse |
FinalResponse |
Obbligatorio. Contiene la tua risposta al pagamento del carrello. |
L'esempio seguente mostra un elemento AppResponse
:
Esempio 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." } } ] } } } ] } } }
Esempio 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" } } } } ] } } }
Esempio 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." } ] } } } ] } } }
Esempio 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
UnCheckoutResponseMessage
è un AppResponse
con un checkoutResponse
o un error
nel StructuredResponse
.
SubmitOrderResponseMessage
UnSubmitOrderResponseMessage
è un AppResponse
con un orderUpdate
nel StructuredResponse
.
FinalResponse
La tua risposta al pagamento del carrello o a SubmitOrderRequestMessage.
La tabella seguente elenca le proprietà per il tipo FinalResponse
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
richResponse |
RichResponse |
Obbligatorio. Contiene la tua risposta a CheckoutRequestMessage o SubmitOrderRequestMessage. |
CheckoutResponse
La tabella seguente elenca le proprietà per il tipo CheckoutResponse
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
proposedOrder |
ProposedOrder |
Obbligatorio. Ordine proposto da utilizzare per la transazione. |
|
paymentOptions |
PaymentOptions |
Obbligatorio. Opzione di pagamento predefinita selezionata per l'utente. |
|
additionalPaymentOptions |
List<PaymentOptions > |
Opzioni di pagamento alternative a disposizione dell'utente. |
L'esempio seguente mostra un elemento CheckoutResponse
:
Esempio
{ "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." } } ] }
Elemento
Contiene la tua risposta a un pagamento del carrello o a un messaggio SubmitOrderRequest.
La tabella seguente elenca le proprietà per il tipo Item
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
structuredResponse |
StructuredResponse |
Obbligatorio. |
RichResponse
Contiene la tua risposta al pagamento di un carrello.
La tabella seguente elenca le proprietà per il tipo RichResponse
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
items |
List<Item > |
Obbligatorio. Deve contenere esattamente 1 elemento. |
StructuredResponse
Per CheckoutResponseMessage, può essere uno dei seguenti: CheckoutResponse indica un pagamento riuscito. OPPURE FoodErrorExtension: indica un errore durante il pagamento. La risposta può includere un ordine proposto e le opzioni di pagamento corretti oppure un messaggio di errore senza opzioni di pagamento. Per SubmitOrderResponseMessage, è applicabile solo orderUpdate.
La tabella seguente elenca le proprietà per il tipo StructuredResponse
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
È obbligatorio uno dei seguenti gruppi di proprietà. | |||
checkoutResponse |
Gruppo 1 | CheckoutResponse |
Articoli selezionati più tasse e sconti. |
error |
Gruppo 2 | FoodErrorExtension |
Errori rilevati negli articoli del carrello. A seconda della natura dell'errore, questa proprietà può includere un ordine proposto e le opzioni di pagamento corretti oppure solo un messaggio di errore senza opzioni di pagamento. |
orderUpdate |
Gruppo 3 | OrderUpdate |
Aggiornamenti asincroni degli ordini
Questa sezione descrive i tipi di alto livello che costituiscono le richieste e le risposte di una tipica interazione con l'azione integrata di ordinazione di cibo.AsyncOrderUpdateRequestMessage
Invia una notifica all'utente in caso di modifiche dopo l'invio e la conferma di un ordine. Ad esempio, puoi informare l'utente che l'ordine è in transito o se il prezzo è cambiato. Per ulteriori informazioni, vediLa tabella seguente elenca le proprietà per il tipo AsyncOrderUpdateRequestMessage
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
isInSandbox |
Valore booleano |
Indica che l'ordine per cui è stato inviato questo aggiornamento è un pagamento nella sandbox. |
|
customPushMessage |
CustomPushMessage |
Obbligatorio. Contiene l'elemento OrderUpdate per la richiesta. |
L'esempio seguente mostra un elemento AsyncOrderUpdateRequestMessage
:
Esempio
{ "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
Dopo aver inviato correttamente unAsyncOrderUpdateRequestMessage
, Google risponde con uno stato HTTP 200 e un corpo vuoto. Se l'aggiornamento non è andato a buon fine,
Google risponde con i dettagli del motivo dell'errore.
Tipi di aggiornamento degli ordini
Pulsante
Definisce un elemento dell'interfaccia utente che puoi aggiungere per consentire l'interazione dell'utente.
La tabella seguente elenca le proprietà per il tipo Button
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
title |
String | Obbligatorio. L'etichetta visualizzata. Utilizza la maiuscola a inizio frase con massimo 30 caratteri per garantire il rendering corretto. Esempio: |
|
openUrlAction |
OpenUrlAction |
Obbligatorio. |
L'esempio seguente mostra un elemento Button
:
Esempio
{ "title": "Send us feedback", "openUrlAction": { "url": "mailto:person@example.com" } }
CancellationInfo
La tabella seguente elenca le proprietà per il tipo CancellationInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
reason |
String | Obbligatorio. Motivo del testo visualizzabile per il rifiuto quando OrderState.state è "CANCELLED". Esempio: |
L'esempio seguente mostra un elemento CancellationInfo
:
Esempio
{ "reason": "Insufficient inventory" }
FoodOrderUpdateExtension
Questo tipo fornisce all'utente un intervallo stimato per la consegna o la disponibilità dell'ordine. Invia questa estensione in un
OrderUpdate
ogni volta che le informazioni sono disponibili o sono cambiate dall'ultimo invio.
Fornisci una stima prudente per l'intervallo di evasione in modo che le aspettative degli utenti vengano soddisfatte in modo coerente. Ad esempio, se si prevede che l'ordine verrà consegnato oggi alle 13:00, devi inviare un intervallo stimato coerente con le variazioni dovute alle condizioni del traffico, ad esempio dalle 12:45 alle 13:15 di oggi.
Una durata o un timestamp ISO 8601 viene interpretato come l'intervallo dal
updateTime
del OrderUpdate
(in sostanza, "ora") al
updateTime
più duration
.
Non utilizzare questo formato a meno che "ora " non sia effettivamente un'aspettativa ragionevole.
Un intervallo ISO 8601 viene interpretato come l'intervallo dall'inizio alla fine dell'intervallo.
La tabella seguente elenca le proprietà per il tipo FoodOrderUpdateExtension
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
@type |
Const |
Tipo di estensione. Questo campo è sempre impostato su "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension". Valore: |
|
estimatedFulfillmentTimeIso8601 |
String |
L'ora stimata in cui l'ordine verrà consegnato o sarà pronto per il ritiro. La stringa deve essere nel formato ISO 8601 e deve corrispondere a un intervallo anziché a un'ora fissa. Le convenzioni accettate sono: Intervalli, Durate e Date/Orari. Questo campo può essere inviato in SubmitOrderResponseMessage o AsyncOrderUpdateRequestMessage quando le informazioni diventano disponibili o quando si verifica una modifica, ad esempio arrivi in anticipo o in ritardo. Esempio: |
|
foodOrderErrors |
List<FoodOrderError > |
Descrive gli errori che si sono verificati dopo l'ordine. È consigliato un errore per carrello o per articolo. Utilizza FoodOrderUpdateExtension.FoodOrderErrors per eventuali errori non coperti da RejectionInfo. Deve contenere almeno 1 elemento. |
L'esempio seguente mostra un elemento FoodOrderUpdateExtension
:
Esempio 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" }
Esempio 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
La tabella seguente elenca le proprietà per il tipo FulfillmentInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
È obbligatorio uno dei seguenti gruppi di proprietà. | |||
deliveryTime |
Gruppo 1 | Timestamp ISO |
Utilizza estimatedFulfillmentTimeIso8601 nel messaggio FoodOrderingUpdateExtension |
pickupTime |
Gruppo 2 | Timestamp ISO |
Utilizza estimatedFulfillmentTimeIso8601 nel messaggio FoodOrderingUpdateExtension |
L'esempio seguente mostra un elemento FulfillmentInfo
:
Esempio 1
{ "deliveryTime": "2017-05-10T02:36:38.803Z" }
Esempio 2
{ "pickupTime": "2019-12-26T07:24:27.803Z" }
InTransitInfo
La tabella seguente elenca le proprietà per il tipo InTransitInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
updatedTime |
Timestamp ISO |
Utilizza estimatedFulfillmentTimeIso8601 nel messaggio FoodOrderingUpdateExtension |
L'esempio seguente mostra un elemento InTransitInfo
:
Esempio
{ "updatedTime": "2017-05-10T02:36:38.803Z" }
LineItemUpdate
La tabella seguente elenca le proprietà per il tipo LineItemUpdate
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
orderState |
OrderState |
||
price |
Price |
||
reason |
String |
Motivo della modifica. Obbligatorio per le variazioni di prezzo. |
L'esempio seguente mostra un elemento LineItemUpdate
:
Esempio
{ "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "5", "nanos": 500000000 } }, "reason": "Menu updated prices." }
OpenUrlAction
La tabella seguente elenca le proprietà per il tipo OpenUrlAction
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
url |
String | Obbligatorio. L'azione attivata facendo clic o toccando il pulsante. L'elenco dei prefissi applicabili dipende da orderManagementActionType. "EMAIL": il prefisso deve essere "mailto". "CHIAMATA": il prefisso deve essere "tel". "CUSTOMER_SERVICE": il prefisso deve essere "mailto", "tel", "http" o "https". Esempio: |
OrderManagementAction
La gestione degli ordini consente agli utenti di ricevere assistenza post-ordine e deve essere inviata in ogni OrderUpdate
all'interno dell'ordine inviato
AppResponse
e in ogni successivo
AsyncOrderUpdateRequestMessage
Le azioni di gestione degli ordini inviate per un determinato ordine possono variare in base allo stato.
Ad esempio, nello stato "CREATED", CUSTOMER_SERVICE
potrebbe fare riferimento al numero di telefono dell'assistenza clienti. Poi, nello stato "CONFIRMATO", CUSTOMER_SERVICE
può passare al numero di telefono del ristorante se diventa il punto di contatto migliore per il cliente. Analogamente, una volta che l'ordine è nello stato "ELABORATO",
CUSTOMER_SERVICE
può fare riferimento al tuo indirizzo email di assistenza.
La tabella seguente elenca le proprietà per il tipo OrderManagementAction
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
type |
OrderManagementActionType |
Obbligatorio. |
|
button |
Button |
Obbligatorio. |
L'esempio seguente mostra un elemento OrderManagementAction
:
Esempio 1
{ "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }
Esempio 2
{ "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }
OrderManagementActionType
Definisce i tipi relativi aOrderManagementAction
.
Il tipo OrderManagementActionType
ha i seguenti valori possibili:
CUSTOMER_SERVICE
: indirizzo email e/o numero di contatto dell'assistenza clienti da mostrare nella pagina di conferma dell'ordine. Questo è obbligatorio. Il prefisso openUrlAction.url deve essere "mailto", "tel", "http" o "https".EMAIL
: azione email solo nella pagina dei dettagli dell'ordine. Il prefisso openUrlAction.url deve essere "mailto".CALL_DRIVER
: chiama l'azione solo nella pagina dei dettagli dell'ordine. Il prefisso di openUrlAction.url deve essere "tel".CALL_RESTAURANT
: chiama l'azione solo nella pagina dei dettagli dell'ordine. Il prefisso di openUrlAction.url deve essere "tel".
OrderState
Lo stato attuale dell'ordine. Ogni valore state
di OrderState
corrisponde anche a uno stato di acquisto su myaccount.google.com.
La tabella seguente elenca le proprietà per il tipo OrderState
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
state |
OrderStateEnum |
Obbligatorio. |
|
label |
String | Obbligatorio. La stringa di visualizzazione visibile all'utente per lo stato. Usa la lettera maiuscola a inizio frase. Esempio: |
L'esempio seguente mostra un elemento OrderState
:
Esempio
{ "state": "CONFIRMED", "label": "Provider confirmed" }
OrderStateEnum
Definisce i tipi relativi aOrderState
.
Il tipo OrderStateEnum
ha i seguenti valori possibili:
CREATED
: ordine creato dall'integratore e in attesa di conferma da parte del fornitore. Corrisponde allo stato di acquisto "Ordinato".CONFIRMED
: ordine confermato dal fornitore e attivo. Corrisponde allo stato di acquisto "Accettato".REJECTED
: ordine rifiutato dall'integratore o dal fornitore. Corrisponde allo stato di acquisto "Rifiutato".CANCELLED
: l'utente ha annullato l'ordine. Corrisponde allo stato di acquisto "Annullato".IN_PREPARATION
: il cibo è in fase di preparazione. Corrisponde allo stato di acquisto "Stato sconosciuto".READY_FOR_PICKUP
: il cibo è pronto per il ritiro. Corrisponde allo stato di acquisto "Pronto per il ritiro".IN_TRANSIT
: l'ordine è in fase di consegna. Corrisponde allo stato di acquisto "In corso".FULFILLED
: l'utente ha ricevuto l'articolo ordinato. Corrisponde allo stato di acquisto "Ritirato".
Ricevuta
Invia questo tipo in un ordine inviatoAppResponse
,
dove OrderState
è "CONFIRMED", "FULFILLED" o "IN_TRANSIT". Invia la conferma al momento in cui userVisibleOrderId
diventa disponibile. Non è necessario continuare a inviare la ricevuta negli aggiornamenti successivi.
La tabella seguente elenca le proprietà per il tipo Receipt
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
userVisibleOrderId |
String | Obbligatorio. Obbligatorio se l'ordine è "CONFIRMED", "IN_TRANSIT" o "FULFILLED". Questo campo è l'ID unico rivolto agli utenti per questo ordine (di solito l'ID ordine del ristorante), visualizzato sia nella ricevuta dell'integratore sia nella scheda dell'ordine di Google. L'utente deve essere in grado di utilizzare questo ID per fare riferimento al proprio ordine per il servizio clienti con il fornitore e l'integratore. Devi fornire questo ID una sola volta in un determinato OrderUpdate. Fino a quando non viene fornito, actionOrderId corrisponde a userVisibleOrderId. Ad esempio, potresti non avere un userVisibleOrderId finché l'ordine non viene confermato dal ristorante. Una volta confermata, devi inviare un messaggio AsyncOrderUpdateRequestMessage con un OrderUpdate e una ricevuta. |
L'esempio seguente mostra un elemento Receipt
:
Esempio
{ "userVisibleOrderId": "userVisibleId1234" }
RejectionInfo
La tabella seguente elenca le proprietà per il tipo RejectionInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
type |
RejectionType |
Obbligatorio. |
|
reason |
String |
Motivo del rifiuto utilizzato per il logging interno. Questo campo non è visibile agli utenti. |
L'esempio seguente mostra un elemento RejectionInfo
:
Esempio
{ "type": "PAYMENT_DECLINED", "reason": "There is an issue with payment processing." }
RejectionType
Il tipo RejectionType
ha i seguenti valori possibili:
INELIGIBLE
: l'utente non è idoneo a causa di problemi relativi a norme o rischi.PAYMENT_DECLINED
: si è verificato un problema con l'elaborazione del pagamento.UNAVAILABLE_SLOT
: l'ordine non può essere evaso all'ora dell'ordine in anticipo specificata da DeliveryInfo o PickupInfo.PROMO_NOT_APPLICABLE
: si è verificato un problema con la promozione.UNKNOWN
: qualsiasi altro motivo.
Tipi relativi ai pagamenti
Questa sezione descrive i tipi relativi ai pagamenti utilizzati per l'evasione degli ordini di cibo.ActionProvidedPaymentOptions
Requisiti per un metodo di pagamento fornito da un'azione.
La tabella seguente elenca le proprietà per il tipo ActionProvidedPaymentOptions
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
paymentType |
PaymentType |
Obbligatorio. |
|
displayName |
String | Obbligatorio. Nome dello strumento di pagamento visualizzato sulla ricevuta. Esempio: |
|
onFulfillmentPaymentData |
OnFulfillmentPaymentData |
Dati aggiuntivi per il tipo di pagamento "ON_FULFILLMENT". Ad esempio, puoi utilizzare questo campo per specificare se per l'evasione dell'ordine sono supportati contanti o carta. |
L'esempio seguente mostra un elemento ActionProvidedPaymentOptions
:
Esempio
{ "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } }
AllowedAuthMethods
Il tipo AllowedAuthMethods
ha i seguenti valori possibili:
PAN_ONLY
: metodo di autenticazione associato alle carte di pagamento registrate nell'Account Google dell'utente. I dati di pagamento restituiti includono il numero PAN (Personal Account Number) con il mese e l'anno di scadenza.
AllowedCardNetworks
Il tipo AllowedCardNetworks
ha i seguenti valori possibili:
AMEX
DISCOVER
INTERAC
JCB
MASTERCARD
VISA
BillingAddressParameters
Questo oggetto ti consente di impostare campi aggiuntivi da restituire per un indirizzo di fatturazione richiesto.
La tabella seguente elenca le proprietà per il tipo BillingAddressParameters
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
format |
String |
Formato dell'indirizzo di fatturazione richiesto per completare la transazione. MIN: nome, codice paese e codice postale. COMPLETO: nome, via, località, regione, codice paese e codice postale. |
L'esempio seguente mostra un elemento BillingAddressParameters
:
Esempio 1
{ "format": "MIN" }
Esempio 2
{ "format": "FULL" }
CardParameters
Utilizza questo oggetto per configurare il supporto dell'API Google Pay per il tuo sito.
La tabella seguente elenca le proprietà per il tipo CardParameters
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
allowedAuthMethods |
List<Const> | Obbligatorio. Campi supportati per autenticare una transazione con carta. Deve contenere almeno 1 elemento. |
|
allowedCardNetworks |
List<AllowedCardNetworks > |
Obbligatorio. Una o più emittenti di carte che supporti e che sono supportate anche dall'API Google Pay. Deve contenere almeno 1 elemento. |
|
billingAddressRequired |
Valore booleano |
Imposta su true se è necessario un indirizzo di fatturazione. Richiedi un indirizzo di fatturazione solo se necessario per elaborare la transazione. Le richieste di dati aggiuntivi possono aumentare le difficoltà nella procedura di pagamento e portare a tassi di conversione inferiori. |
|
billingAddressParameters |
BillingAddressParameters |
I campi previsti restituiti se billingAddressRequired è impostato su true. |
|
cvcRequired |
Valore booleano |
Imposta il valore true se utilizzi TimesofMoney, false per tutti gli altri elaboratori dei pagamenti. |
L'esempio seguente mostra un elemento CardParameters
:
Esempio 1
{ "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "AMEX", "DISCOVER" ], "billingAddressRequired": false, "cvcRequired": false }
Esempio 2
{ "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "AMEX", "DISCOVER" ], "billingAddressRequired": true, "billingAddressParameters": { "format": "MIN" }, "cvcRequired": false }
GoogleProvidedPaymentInstrument
La tabella seguente elenca le proprietà per il tipo GoogleProvidedPaymentInstrument
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
instrumentToken |
String | Obbligatorio. Stringa con codifica base 64 contenente il token di pagamento per addebitare l'utente a un elaboratore Google Pay partecipante, in base a GoogleProvidedPaymentOptions specificato in precedenza. |
|
billingAddress |
PostalAddress |
Indirizzo di fatturazione per il pagamento. |
L'esempio seguente mostra un elemento GoogleProvidedPaymentInstrument
:
Esempio
{ "instrumentToken": "abcd", "billingAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] } }
GoogleProvidedPaymentOptions
Requisiti per il metodo di pagamento fornito da Google.
La tabella seguente elenca le proprietà per il tipo GoogleProvidedPaymentOptions
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
facilitationSpecification |
String |
Un oggetto JSON PaymentDataRequest come stringa. Utilizza questo oggetto per configurare il supporto dell'API Google Pay per il tuo sito. |
|
supportedCardNetworks |
List<SupportedCardNetworks > |
Utilizza invece facilitationSpecification. Tipo di circuiti delle carte supportati dall'agente. Questo campo è stato ritirato. |
|
prepaidCardDisallowed |
Valore booleano |
Utilizza invece facilitationSpecification. Indica se una carta prepagata è consentita o meno come tipo di pagamento. Questo campo è stato ritirato. |
|
billingAddressRequired |
Valore booleano |
Utilizza invece facilitationSpecification. Indica se è necessario o meno un indirizzo di fatturazione. Questo campo è stato ritirato. |
|
tokenizationParameters |
TokenizationParameters |
Questo campo è stato ritirato. |
L'esempio seguente mostra un elemento GoogleProvidedPaymentOptions
:
Esempio 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\"}}" }
Esempio 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 }
Esempio 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
Utilizza questo oggetto per configurare il supporto dell'API Google Pay per il tuo sito.
La tabella seguente elenca le proprietà per il tipo MerchantInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
merchantId |
String |
Identificatore commerciante Google che ti è stato assegnato da Google Pay. |
|
merchantName |
String | Obbligatorio. Nome del commerciante codificato in UTF-8. Il nome del commerciante viene visualizzato nel foglio di pagamento. |
OnFulfillmentPaymentData
Utilizza questo oggetto per inviare dati aggiuntivi per il tipo di pagamento "ON_FULFILLMENT".
La tabella seguente elenca le proprietà per il tipo OnFulfillmentPaymentData
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
supportedPaymentOptions |
List<PaymentOptionsEnums > |
Elenco delle opzioni di pagamento disponibili per l'utente al momento dell'evasione dell'ordine. |
L'esempio seguente mostra un elemento OnFulfillmentPaymentData
:
Esempio
{ "supportedPaymentOptions": [ "Cash", "Card" ] }
Parametri
Definisce i tipi relativi a TokenizationParameters
.
La tabella seguente elenca le proprietà per il tipo Parameters
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
gateway |
String | Obbligatorio. Esempio: |
|
gatewayMerchantId |
String | ||
[additionalKey: string] |
String | Coppie chiave-valore aggiuntive |
L'esempio seguente mostra un elemento Parameters
:
Esempio 1
{ "gatewayMerchantId": "90412491", "gateway": "olo" }
Esempio 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
Utilizza questo oggetto per configurare il supporto dell'API Google Pay per il tuo sito.
La tabella seguente elenca le proprietà per il tipo PaymentDataRequest
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
apiVersion |
Const | Obbligatorio. Versione principale dell'API. Valore: |
|
apiVersionMinor |
Const | Obbligatorio. Versione secondaria dell'API. Valore: |
|
merchantInfo |
MerchantInfo |
Obbligatorio. (ID commerciante Google Pay) Informazioni sul commerciante che richiede i dati di pagamento. |
|
allowedPaymentMethods |
List<PaymentMethod > |
Obbligatorio. Specifica il supporto di uno o più metodi di pagamento supportati dall'API Google Pay. |
|
transactionInfo |
TransactionInfo |
Obbligatorio. Dettagli sull'autorizzazione della transazione in base al fatto che l'utente accetti o meno la transazione. Questo campo include il prezzo totale e lo stato del prezzo. |
L'esempio seguente mostra un elemento PaymentDataRequest
:
Esempio
{ "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
Informazioni relative al pagamento di un ordine.
La tabella seguente elenca le proprietà per il tipo PaymentInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
displayName |
String | Obbligatorio. Nome visibile all'utente dello strumento di pagamento da visualizzare sulla ricevuta. |
|
paymentType |
PaymentType |
Obbligatorio. |
|
googleProvidedPaymentInstrument |
GoogleProvidedPaymentInstrument |
Token che può essere utilizzato dall'azione. Specifica questo valore solo se hai specificato GoogleProvidedPaymentOptions come opzione di pagamento in CheckoutResponseMessage. |
L'esempio seguente mostra un elemento PaymentInfo
:
Esempio 1
{ "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd" }, "paymentType": "PAYMENT_CARD" }
Esempio 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
Utilizza questo oggetto per configurare il supporto dell'API Google Pay per il tuo sito.
La tabella seguente elenca le proprietà per il tipo PaymentMethod
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
type |
Const | Obbligatorio. Identificatore breve del metodo di pagamento supportato. Al momento è supportato solo il formato CARD. Valore: |
|
parameters |
CardParameters |
Obbligatorio. Parametri richiesti per configurare il tipo di metodo di pagamento fornito. |
|
tokenizationSpecification |
TokenizationSpecification |
Obbligatorio. Configura un account o un fornitore di decrittografia per ricevere i dati di pagamento. Questa proprietà è obbligatoria per il metodo di pagamento CARD. |
L'esempio seguente mostra un elemento PaymentMethod
:
Esempio
{ "type": "CARD", "parameters": { "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "VISA", "AMEX", "MASTERCARD" ], "billingAddressRequired": false }, "tokenizationSpecification": { "type": "PAYMENT_GATEWAY", "parameters": { "gatewayMerchantId": "90412491", "gateway": "olo" } } }
PaymentOptions
La tabella seguente elenca le proprietà per il tipo PaymentOptions
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
È obbligatorio uno dei seguenti gruppi di proprietà. | |||
googleProvidedOptions |
Gruppo 1 | GoogleProvidedPaymentOptions |
Si escludono a vicenda con actionProvidedOptions. Utilizzalo per i pagamenti online con gPay. |
actionProvidedOptions |
Gruppo 2 | ActionProvidedPaymentOptions |
Esclusivo con googleProvidedOptions. Utilizzalo per "pagamento alla consegna" o "pagamento al momento della consegna". |
L'esempio seguente mostra un elemento PaymentOptions
:
Esempio 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\"}}" } }
Esempio 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\"}}" } }
Esempio 3
{ "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } } }
PaymentOptionsEnums
Il tipo PaymentOptionsEnums
ha i seguenti valori possibili:
Cash
Card
UPI
Paytm
PaymentType
Il tipo PaymentType
ha i seguenti valori possibili:
PAYMENT_CARD
: per GoogleProvidedPaymentOptions.ON_FULFILLMENT
: per ActionProvidedPaymentOptions.
SupportedCardNetworks
Definisce i tipi relativi aGoogleProvidedPaymentOptions
.
Il tipo SupportedCardNetworks
ha i seguenti valori possibili:
UNSPECIFIED_CARD_NETWORK
AMEX
DISCOVER
JCB
MASTERCARD
VISA
TokenizationParameters
Definisce i tipi relativi aGoogleProvidedPaymentOptions
.
La tabella seguente elenca le proprietà per il tipo TokenizationParameters
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
tokenizationType |
Enum [
"UNSPECIFIED_TOKENIZATION_TYPE",
"PAYMENT_GATEWAY"
] |
Obbligatorio. Utilizza invece facilitationSpecification. Tipo di token accettato. |
|
parameters |
Parameters |
Utilizza invece facilitationSpecification. |
TokenizationSpecification
Questo oggetto ti consente di configurare un account per ricevere dati di pagamento addebitabili.
La tabella seguente elenca le proprietà per il tipo TokenizationSpecification
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
type |
Const | Obbligatorio. |
|
parameters |
Parameters |
Obbligatorio. |
L'esempio seguente mostra un elemento TokenizationSpecification
:
Esempio 1
{ "type": "PAYMENT_GATEWAY", "parameters": { "gatewayMerchantId": "1247192", "gateway": "cybersource" } }
Esempio 2
{ "type": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:version": "2018-10-31", "stripe:publishableKey": "12378127" } }
TransactionInfo
Questo oggetto descrive una transazione che determina la capacità di pagamento di un pagatore. Viene utilizzato per presentare una finestra di dialogo di autorizzazione del pagamento.
La tabella seguente elenca le proprietà per il tipo TransactionInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
currencyCode |
String | Obbligatorio. Codice alfabetico di valuta ISO 4217. |
|
transactionId |
String |
ID univoco che identifica un tentativo di transazione. I commercianti possono utilizzare un ID esistente o generarne uno specifico per i tentativi di transazione con Google Pay. Questo campo è obbligatorio quando invii i callback all'API Google Transaction Events. |
|
totalPriceStatus |
Const | Obbligatorio. Utilizza "ESTIMATED" come valore predefinito. Il prezzo totale può variare in base ai dettagli della risposta, ad esempio l'imposta sulle vendite riscossa in base a un indirizzo di fatturazione. Valore: |
|
totalPrice |
String | Obbligatorio. Valore monetario totale della transazione con una precisione decimale facoltativa di due cifre decimali. Questo campo deve avere lo stesso valore di cart.totalPrice. |
L'esempio seguente mostra un elemento TransactionInfo
:
Esempio
{ "totalPriceStatus": "ESTIMATED", "totalPrice": "12.34", "currencyCode": "USD" }