Tipi di base
Carrello
Contiene i dettagli dell'ordine e indica 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 Checkout AppRequest
.f
Includi una copia del carrello nel tuo Checkout AppResponse
Nella tabella seguente sono elencate le proprietà per il tipo Cart
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
@type |
Costante |
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 |
Elenco<LineItem > |
Obbligatorio. Elenco dei beni o servizi che l'utente ordina. Non deve contenere meno di 1 articolo. |
|
promotions |
Elenco<Promotion > |
Promozione applicata a questo carrello. Al momento è supportata una sola promozione. |
|
notes |
String |
Note sulle istruzioni relative all'ordine o alla consegna. |
|
extension |
FoodCartExtension |
Definisce i dettagli relativi all'utente, come le preferenze di evasione degli ordini. |
Nell'esempio seguente viene mostrato 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 sulla persona che riceve l'ordine. È disponibile solo inAppResponse
.
Nella tabella seguente sono elencate le proprietà per il tipo Contact
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
displayName |
String |
Il nome della persona che riceve l'ordine, così come vorresti che venisse 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 prefisso internazionale. Esempio: |
|
emailVerified |
Booleano |
Indica se la persona che riceve l'ordine ha eseguito l'accesso con il proprio Account Google. |
Nell'esempio seguente viene mostrato un elemento Contact
:
Esempio
{ "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" }
CustomPushMessage
Contiene il valoreOrderUpdate
per la richiesta.
Nella tabella seguente sono elencate le proprietà per il tipo CustomPushMessage
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
orderUpdate |
OrderUpdate |
Obbligatorio. Informazioni aggiornate per l'ordine. |
Nell'esempio seguente viene mostrato 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
Nella tabella seguente sono elencate le proprietà per il tipo DeliveryInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
deliveryTimeIso8601 |
String |
Tempi di consegna stimati, in formato timestamp ISO 8601: "{year}-{month}-{day}T{ora}:{min}:{sec}[.{frac_sec}]Z" o formato di 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 il tempo di consegna preferito è "Il più presto possibile". Riferimento: https://en.wikipedia.org/wiki/ISO_8601#Merged_date_and_time_representations. Utilizzalo per aggiornare i tempi di consegna stimati durante la risposta al pagamento. Esempio: |
Nell'esempio seguente viene mostrato un elemento DeliveryInfo
:
Esempio
{ "deliveryTimeIso8601": "PT90M" }
Disclaimer
Nella tabella seguente sono elencate le proprietà per il tipo Disclaimer
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
predefinedMessage |
PredefinedMessage |
Obbligatorio. Per mostrare messaggi di disclaimer predefiniti al momento del pagamento. |
|
feeAmount |
Money |
Il partner addebiterà al commerciante una commissione per l'importo di N per questo ordine. |
|
feeAmountRange |
FeeAmountRange |
Il partner addebiterà al ristorante una tariffa per l'importo da N a M per ordine. |
|
feePercent |
Number |
Il partner addebiterà al commerciante una commissione del N% per questo ordine. |
|
feePercentRange |
FeePercentRange |
Il partner addebiterà al commerciante una commissione compresa tra N% e M% per ordine. |
Nell'esempio seguente viene mostrato 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 degli ordini.NO_CAPACITY
: non è disponibile capacità di servizio (ad esempio, un'interruzione temporanea dovuta ai periodi di punta).NO_COURIER_AVAILABLE
: impossibile elaborare l'ordine a causa del personale limitato per la consegna.REQUIREMENTS_NOT_MET
: i vincoli per l'accettazione dell'ordine non sono stati soddisfatti (ad esempio, le dimensioni minime del carrello).UNAVAILABLE_SLOT
: l'ordine non può essere evaso con l'orario specificato in DeliveryInfo o PickupInfo.OUT_OF_SERVICE_AREA
: l'ordine non può essere consegnato all'indirizzo dell'utente.PROMO_EXPIRED
: impossibile presentare domanda perché la promozione è scaduta.PROMO_NOT_APPLICABLE
: codice di errore generico per rilevare tutti i casi di mancata applicazione del codice promozionale, se non si verificano altri errori relativi al codice promozionale.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 presenti articoli sufficienti per soddisfare la richiesta.INCORRECT_PRICE
: errori di prezzo nelle commissioni o nel totale.INVALID
: un elemento pubblicitario, un elemento FulfillmentOption o una promozione contiene dati non validi.NOT_FOUND
: impossibile trovare un elemento pubblicitario, un FulfillmentOption o una promozione.PRICE_CHANGED
: il prezzo di un articolo è cambiato.
FeeAmountRange
Nella tabella seguente sono elencate le proprietà per il tipo FeeAmountRange
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
minFeeAmount |
Money |
Limite inferiore dell'importo addebitato. |
|
maxFeeAmount |
Money |
Limite massimo dell'importo della commissione addebitato. |
FeePercentRange
Nella tabella seguente sono elencate le proprietà per il tipo FeePercentRange
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
minFeePercent |
Number |
Limite inferiore della percentuale della commissione addebitata. |
|
maxFeePercent |
Number |
Limite superiore della percentuale della commissione addebitata. |
FoodCartExtension
Contiene i dettagli relativi all'utente, come le preferenze di evasione degli ordini.
Nella tabella seguente sono elencate le proprietà per il tipo FoodCartExtension
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
@type |
Costante |
Tipo di questa estensione. Questo campo è sempre impostato su "type.googleapis.com/google.actions.v2.orders.FoodCartEstensione". Valore: |
|
contact |
Contact |
Dati di contatto della persona che riceve l'ordine. I dettagli includono nome, numero di telefono e indirizzo email della persona. |
|
fulfillmentPreference |
FulfillmentOption |
Obbligatorio. Preferenza di evasione degli ordini dell'utente. |
|
location |
Location |
In CheckoutRequestMessage questo campo specifica l'indirizzo di consegna, obbligatorio se l'ordine è per la consegna. Per gli ordini con asporto o ritiro, questo campo non è incluso nel messaggio. |
Nell'esempio seguente viene mostrato 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 una CheckoutResponse
.
Nella tabella seguente sono elencate le proprietà per il tipo FoodErrorExtension
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
@type |
Costante | Obbligatorio. Tipo di questa estensione. Valore: |
|
foodOrderErrors |
Elenco<FoodOrderError > |
Obbligatorio. Array di oggetti FoodOrderError che descrivono gli errori che si sono verificati. È consigliato un errore per carrello o per articolo. Non deve contenere meno di 1 articolo. |
|
correctedProposedOrder |
ProposedOrder |
Obbligatorio quando Un nuovo Ordine proposto con correzioni. Restituisci questo oggetto se sono presenti errori ripristinabili nell'Ordine ProposedOrder originale. Ad esempio, una modifica del prezzo di uno o più elementi pubblicitari nel carrello è un errore recuperabile. Gli errori ripristinabili con un ProposedOrder valido vengono avanzati alla fase di conferma, anziché richiedere all'utente di esaminare il carrello. |
|
paymentOptions |
PaymentOptions |
Obbligatorio quando Opzioni di pagamento predefinite selezionate per l'utente. |
|
additionalPaymentOptions |
Elenco<PaymentOptions > |
Opzioni di pagamento alternative disponibili per l'utente. |
Nell'esempio seguente viene mostrato 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.
Nella tabella seguente sono elencate le proprietà per il tipo FoodItemExtension
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
@type |
Costante | Obbligatorio. Tipo di questa estensione. Questo campo è sempre impostato su "type.googleapis.com/google.actions.v2.orders.FoodItemestensione". Valore: |
|
options |
Elenco<FoodItemOption > |
Un'opzione può essere un elemento o un gruppo di componenti aggiuntivi contenente un insieme di componenti aggiuntivi. |
Nell'esempio seguente viene mostrato 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
Nella tabella seguente sono elencate le proprietà per il tipo FoodItemOption
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
id |
String |
ID univoco assegnato da Google. Quando invii un valore FoodOrderError o AsyncOrderUpdateRequest, utilizza questo campo per differenziare i casi in cui un carrello contiene più di un articolo con lo stesso offerId. Esempio: |
|
offerId |
String |
L'ID offerta dell'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 |
Elenco<FoodItemOption > |
Opzioni secondarie per l'opzione, se presenti. Esempio: |
Nell'esempio seguente viene mostrato 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 dettagli sugli errori in unaCheckoutResponse
.
Nella tabella seguente sono elencate 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. È l'elemento LineItem.id assegnato da Google per le voci del menu o FoodItemOption.id per i componenti aggiuntivi. |
|
description |
String |
Descrizione dell'errore. Questa descrizione riguarda il logging interno e non è visibile agli utenti. |
|
updatedPrice |
Money |
Obbligatorio quando Nuovo prezzo di un articolo che ha causato l'errore. Questa operazione è obbligatoria solo se l'errore è "PRICE_CHANGED". |
|
availableQuantity |
Intero | Obbligatorio quando Nuova quantità disponibile dell'articolo che ha causato l'errore. Questa operazione è necessaria solo se l'errore è "INVALID" o "NOT_FOUND". Il valore "INVALID" e "NOT_FOUND" deve essere zero. |
Nell'esempio seguente viene mostrato 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 le informazioni di evasione dell'ordine.
Nella tabella seguente sono elencate le proprietà per il tipo FoodOrderExtension
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
@type |
Costante |
Tipo di questa estensione. Questo campo è sempre impostato su "type.googleapis.com/google.actions.v2.orders.FoodOrderestensione". Valore: |
|
availableFulfillmentOptions |
Elenco<FulfillmentOption > |
Rappresenta le opzioni di evasione dell'ordine disponibili. |
|
optinForRemarketing |
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 iscrivere l'utente. Se optinForRemarketing è false o non è presente, devi mantenere lo stato dell'iscrizione nel tuo sistema così com'è. Gli utenti non possono disattivare la funzionalità tramite Google, ma solo attraverso una funzione di annullamento dell'iscrizione fornita nei tuoi canali di marketing. Questo flag è presente solo in SubmitOrderRequestMessage. |
Nell'esempio seguente viene mostrato 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
,Cart.extension.fulfillmentPreference
: memorizza la preferenza dell'utente (consegna o ritiro). Il prezzo è sempre pari a 0 quando viene inviata la richiesta di pagamento. -
In
Checkout AppResponse
,ProposedOrder.extension.availableFulfillmentOptions
: definisce una o più opzioni di consegna (al momento è supportata una sola opzione). Specifichi l'opzione predefinita comeLineItem
inProposedOrder.otherItems
.offerId
diFulfillmentOption
deve corrispondere all'ID diLineItem
specificato inProposedOrder.otherItems
.
Nella tabella seguente sono elencate 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 |
Ora di scadenza dell'opzione di evasione degli ordini. |
|
price |
Money |
Costo di questa opzione. |
Nell'esempio seguente viene mostrato 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
.
Nella tabella seguente sono elencate le proprietà per il tipo FulfillmentOptionInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
È richiesto esattamente 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
Nella tabella seguente sono elencate le proprietà per il tipo Image
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
sourceUrl |
String | Obbligatorio. URL dell'immagine. L'immagine deve essere di 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 i costi aggiuntivi per un ordine (ProposedOrder.otherItems
).
Nella tabella seguente sono elencate le proprietà per il tipo LineItem
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
id |
String | Obbligatorio quando Per un elemento pubblicitario 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 quali spese di spedizione e tasse, il valore dell'ID è definito dal fornitore. Ad esempio, un carrello contiene due articoli uguali con istruzioni di preparazione diverse (ad es. due pizze medie con set di condimenti diversi). In questo caso, entrambi gli elementi hanno lo stesso offerId di base. Quando invii una richiesta di aggiornamento dell'ordine per indicare che un articolo è stato rifiutato, utilizza questo ID per distinguere l'articolo. In altre parole, se una delle pizze viene rifiutata perché è priva di un particolare 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 presentare la maiuscola iniziale (ad esempio "Commissione di consegna", "Addebito per servizio", "Tasse"). 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 beni o servizi per l'elemento pubblicitario in questione (in altre parole, aggiungi il costo di eventuali componenti aggiuntivi e moltiplica per la quantità). Ad esempio, se un articolo a 10 $ha una quantità pari a 3, il prezzo sarà 30 $. Per una pizza con un prezzo base di $5 e un componente aggiuntivo di $1, il prezzo sarebbe di $6. Per due pizze (quantità = 2) con un prezzo base di $5 e ognuna con un add-on di $1, il prezzo sarebbe di $12. Ogni elemento pubblicitario deve avere un prezzo, anche se il prezzo è "0". Quando il tipo è DISCOUNT, specifica il valore come negativo (ad esempio "-2"). |
|
subLines |
Elenco<SublineNote > |
Facoltativo e valido solo se il tipo è "REGULAR". È possibile inviare una nota dell'utente specifica per l'articolo in questo campo nella richiesta di pagamento e nella richiesta di invio dell'ordine. Assicurati che il commerciante riceva la nota quando viene fornita. Sarà incluso nella richiesta come subLines[0].note, 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 della voce di menu per l'elemento. Non applicabile a ProposedOrder.otherItems. |
|
extension |
FoodItemExtension |
Definisce i componenti aggiuntivi per gli alimenti. |
Nell'esempio seguente viene mostrato 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 per prodotti. Applicabile a Cart.lineItems.TAX
: voce fiscale. Applicabile a ProposedOrder.otherItems.DISCOUNT
: elemento pubblicitario scontato. Tieni presente che il prezzo deve essere negativo. Applicabile a ProposedOrder.otherItems.GRATUITY
: elemento pubblicitario senza costi. Di solito viene riservato al campo SubmitOrderRequestMessage per il suggerimento selezionato dall'utente. Applicabile a ProposedOrder.otherItems.DELIVERY
: elemento pubblicitario da pubblicare. Applicabile a ProposedOrder.otherItems.SUBTOTAL
: elemento pubblicitario subtotale. 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 finalizzata è presente anche in TransactionDecisionValue
se l'utente effettua l'ordine. Per gli ordini che prevedono il ritiro, la località non è inclusa (nemmeno vuota).
Nella tabella seguente sono elencate le proprietà per il tipo Location
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
coordinates |
Coordinates |
||
formattedAddress |
String |
Visualizza l'indirizzo della sede. Esempio: |
|
postalAddress |
PostalAddress |
||
zipCode |
String |
Esempio: |
|
city |
String |
Il nome della città. Esempio: |
|
notes |
String |
Note sul luogo, ad esempio i codici dei gate. Deve contenere al massimo 500 caratteri. Esempio: |
Nell'esempio seguente viene mostrato 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
Nella tabella seguente sono elencate le proprietà per il tipo Merchant
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
id |
String |
L'ID del commerciante. Se specificato, corrisponde a Restaurant.@id del feed Ristorante. Esempio: |
|
name |
String | Obbligatorio. Nome del commerciante visibile all'utente. Esempio: |
Nell'esempio seguente viene mostrato un elemento Merchant
:
Esempio
{ "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }
Valuta
Nella tabella seguente sono elencate 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à della quantità. Il valore deve essere compreso tra -999.999.999 e +999.999.999 inclusi. Usa le seguenti regole: se le unità sono positive, i nano devono essere positivi o zero. Se le unità sono pari a zero, i nano possono essere positivi, zero o negativi. Se le unità sono negative, i nano devono essere negativi o pari a zero. Ad esempio,$-1,75 è rappresentato come unità = -1 e nanos = -750.000.000. Esempio: |
Nell'esempio seguente viene mostrato 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 spedizione, nonché i dati di pagamento. Questo oggetto viene ricevuto dalla tua azione in unSubmit AppRequest
.
Nella tabella seguente sono elencate le proprietà per il tipo Order
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
finalOrder |
ProposedOrder |
Obbligatorio. L'ordine proposto che ha causato l'ordine. |
|
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. La data e l'ora in cui è stato creato l'ordine. |
|
paymentInfo |
PaymentInfo |
Obbligatorio. Dati di pagamento corrispondenti al pagamento di questo ordine. |
Nell'esempio seguente viene mostrato 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 seguente tabella descrive i campi del tipo OrderUpdate che è incluso inAppResponse
.
Nella tabella seguente sono elencate le proprietà per il tipo OrderUpdate
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
actionOrderId |
String | Obbligatorio. ID univoco dell'ordine nel sistema dell'integratore, utilizzato per identificare l'ordine per il quale viene inviato l'aggiornamento. Se scontrino.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 e visualizzato nella scheda dell'ordine di Google. |
|
orderState |
OrderState |
Obbligatorio. Il nuovo stato dell'ordine. |
|
lineItemUpdates |
Mappa<Stringa, LineItemUpdate > |
||
updateTime |
Timestamp ISO | Obbligatorio. L'ora in cui è stato aggiornato l'ordine. |
|
orderManagementActions |
Elenco<OrderManagementAction > |
Azioni successive all'ordine, ad esempio contattare l'assistenza e visualizzare i dettagli degli ordini. Non deve contenere meno di 1 elemento e non più di 6 elementi. |
|
rejectionInfo |
RejectionInfo |
Obbligatorio quando |
|
cancellationInfo |
CancellationInfo |
Obbligatorio quando |
|
inTransitInfo |
InTransitInfo |
Questo campo è obsoleto. |
|
fulfillmentInfo |
FulfillmentInfo |
Questo campo è obsoleto. |
|
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, come l'intervallo per la consegna stimata o il ritiro. |
Nell'esempio seguente viene mostrato 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
Nella tabella seguente sono elencate le proprietà per il tipo PickupInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
pickupTimeIso8601 |
String |
Tempo di ritiro stimato, in formato timestamp ISO 8601: "{year}-{month}-{day}T{ora}:{min}:{sec}[.{frac_sec}]Z" o formato 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 più presto possibile. Riferimento: https://en.wikipedia.org/wiki/ISO_8601#Merged_date_and_time_representations. Utilizzalo per aggiornare il tempo di ritiro stimato durante la risposta al pagamento. Esempio: |
Nell'esempio seguente viene mostrato un elemento PickupInfo
:
Esempio
{ "pickupTimeIso8601": "PT90M" }
PostalAddress
Nella tabella seguente sono elencate 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 livello più alto utilizzata per gli indirizzi postali di un paese o di una regione. Può essere uno stato, una provincia, un'oblast o una prefettura. Esempio: |
|
locality |
String |
La città in cui si trova la località in questione. Nelle regioni del mondo in cui le località non sono ben definite o non rientrano in questa struttura, non specificare la località e utilizza invece il campo addressLines. Esempio: |
|
addressLines |
List<String> |
Una o più righe che puoi utilizzare per specificare la via. Questo campo non deve essere modificato perché può contenere località non chiare. Esempio: |
|
recipients |
List<String> |
Elenco dei destinatari di un ordine. Questo campo è disponibile solo in billingAddress. |
Nell'esempio seguente viene mostrato un elemento PostalAddress
:
Esempio
{ "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }
Prezzo
Nella tabella seguente sono elencate le proprietà per il tipo Price
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
type |
Enum [
"ESTIMATE",
"ACTUAL"
] |
Obbligatorio. Il codice coupon promozionale. |
|
amount |
Money |
Obbligatorio. |
Promozione
Nella tabella seguente sono elencate le proprietà per il tipo Promotion
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
coupon |
String | Obbligatorio. Il codice coupon promozionale. |
ProposedOrder
Nella tabella seguente sono elencate le proprietà per il tipo ProposedOrder
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
id |
String |
ID facoltativo dell'ordine proposto. |
|
cart |
Cart |
Obbligatorio. Articoli dell'utente. |
|
otherItems |
Elenco<LineItem > |
Articoli aggiunti dal fornitore, ad esempio spese di spedizione, altre commissioni e tasse. otherGli articoli possono anche contenere mance e/o sconti aggiunti dall'utente. Non deve contenere più di 10 elementi. |
|
image |
Image |
Immagine associata all'ordine proposto. |
|
totalPrice |
Price |
Obbligatorio. Prezzo totale dell'ordine proposto. |
|
extension |
FoodOrderExtension |
Obbligatorio. Definisce le informazioni di evasione degli ordini di cibo. |
|
disclaimers |
Elenco<Disclaimer > |
Corrisponde ai messaggi di disclaimer che verranno visualizzati nell'interfaccia utente prima dell'effettuazione dell'ordine. |
Nell'esempio seguente viene mostrato 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
Nella tabella seguente sono elencate 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
Contiene ilOrder
.
Nella tabella seguente sono elencate le proprietà per il tipo TransactionDecisionValue
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
order |
Order |
Obbligatorio. Ordine da effettuare con i dettagli di pagamento. |
Nell'esempio seguente viene mostrato 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 degli ordini
AppRequest
Nella tabella seguente sono elencate le proprietà per il tipo AppRequest
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
isInSandbox |
Booleano |
Indica se le transazioni successive vengono eseguite in un ambiente sandbox. |
|
conversation |
Conversation |
||
inputs |
Elenco<Input > |
Obbligatorio. Contiene gli argomenti previsti per il pagamento di un carrello. Deve avere esattamente 1 articolo. |
Nell'esempio seguente viene mostrato 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
è una AppRequest
con l'intento actions.foodordering.intent.CHECKOUT
.
SubmitOrderRequestMessage
UnSubmitOrderRequestMessage
è una AppRequest
con l'intento actions.foodordering.intent.TRANSACTION_DECISION
.
Dialogo
UnConversation
è univoco per una sola sessione. Puoi utilizzarla per collegare più azioni Checkout
e SubmitOrder
, se necessario.
Nella tabella seguente sono elencate le proprietà per il tipo Conversation
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
conversationId |
String | Obbligatorio. ID univoco per la conversazione. |
Nell'esempio seguente viene mostrato un elemento Conversation
:
Esempio
{ "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ" }
Input
Gli argomenti previsti per il pagamento di un carrello.
Nella tabella seguente sono elencate le proprietà per il tipo Input
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
intent |
Enum [
"actions.foodordering.intent.CHECKOUT",
"actions.intent.TRANSACTION_DECISION"
] |
Obbligatorio. Imposta su "actions.foodordering.intent.CheckOUT" per il messaggio di richiesta di pagamento OPPURE su "actions.intent.TRANSACTION_DECISION" per inviare il messaggio di richiesta dell'ordine. |
|
arguments |
Elenco<Argument > |
Obbligatorio. Contiene il carrello da pagare o l'ordine da effettuare Deve avere esattamente 1 articolo. |
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
Nella tabella seguente sono elencate le proprietà per il tipo Argument
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
È richiesto esattamente uno dei seguenti gruppi di proprietà. | |||
extension |
Gruppo 1 | Cart |
Indica in dettaglio gli alimenti che l'utente vuole pagare. |
transactionDecisionValue |
Gruppo 2 | TransactionDecisionValue |
Contiene l'ordine da effettuare, insieme ai dettagli di pagamento. |
Risposta di evasione ordini
AppResponse
Nella tabella seguente sono elencate le proprietà per il tipo AppResponse
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
expectUserResponse |
Costante |
Imposta il valore su false. Valore: |
|
finalResponse |
FinalResponse |
Obbligatorio. Contiene la tua risposta al pagamento del carrello. |
Nell'esempio seguente viene mostrato 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 error
nella
StructuredResponse
.
SubmitOrderResponseMessage
UnSubmitOrderResponseMessage
è un AppResponse
con
un orderUpdate
in StructuredResponse
.
FinalResponse
La tua risposta al pagamento del carrello o SubmitOrderRequestMessage.
Nella tabella seguente sono elencate le proprietà per il tipo FinalResponse
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
richResponse |
RichResponse |
Obbligatorio. Contiene la tua risposta a CheckoutRequestMessage o SubmitOrderRequestMessage. |
CheckoutResponse
Nella tabella seguente sono elencate 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 |
Elenco<PaymentOptions > |
Opzioni di pagamento alternative disponibili per l'utente. |
Nell'esempio seguente viene mostrato 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." } } ] }
Articolo
Contiene la tua risposta al pagamento di un carrello o a SubmitOrderRequestMessage.
Nella tabella seguente sono elencate le proprietà per il tipo Item
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
structuredResponse |
StructuredResponse |
Obbligatorio. |
RichResponse
Contiene la tua risposta al pagamento di un carrello.
Nella tabella seguente sono elencate le proprietà per il tipo RichResponse
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
items |
Elenco<Item > |
Obbligatorio. Deve avere esattamente 1 articolo. |
StructuredResponse
Per CheckoutResponseMessage, può essere uno dei seguenti: CheckoutResponse Indica che il pagamento è andato a buon fine. OR FoodError Extensions: indica un errore durante il pagamento. La risposta può includere ProposedOrder e PaymentOptions corretti oppure un messaggio di errore senza PaymentOptions. Per SubmitOrderResponseMessage, è applicabile solo orderUpdate.
Nella tabella seguente sono elencate le proprietà per il tipo StructuredResponse
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
È richiesto esattamente uno dei seguenti gruppi di proprietà. | |||
checkoutResponse |
Gruppo 1 | CheckoutResponse |
Articoli pagati, tasse e sconti. |
error |
Gruppo 2 | FoodErrorExtension |
Errori osservati per gli articoli del carrello. A seconda della natura dell'errore, questa proprietà può includere un ProposedOrder e PaymentOptions corretti oppure solo un messaggio di errore senza PaymentOptions. |
orderUpdate |
Gruppo 3 | OrderUpdate |
Aggiornamenti asincroni sugli ordini
Questa sezione descrive i tipi di alto livello che costituiscono le richieste e le risposte di una tipica interazione integrata per l'ordinazione di cibo.AsyncOrderUpdateRequestMessage
Informa l'utente delle modifiche dopo che un ordine è stato inviato e confermato. Ad esempio, puoi informare l'utente che l'ordine è in transito o se il prezzo è cambiato. Per ulteriori informazioni, visitaNella tabella seguente sono elencate le proprietà per il tipo AsyncOrderUpdateRequestMessage
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
isInSandbox |
Booleano |
Indica che l'ordine per il quale è stato inviato l'aggiornamento è un pagamento sandbox. |
|
customPushMessage |
CustomPushMessage |
Obbligatorio. Contiene il valore OrderUpdate per la richiesta. |
Nell'esempio seguente viene mostrato 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 va a buon fine, Google risponde fornendo informazioni sul motivo per cui l'aggiornamento dell'ordine non è andato a buon fine.
Tipi di aggiornamento degli ordini
Pulsante
Definisce un elemento dell'interfaccia utente che puoi aggiungere per fornire l'interazione dell'utente.
Nella tabella seguente sono elencate le proprietà per il tipo Button
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
title |
String | Obbligatorio. L'etichetta da visualizzare. Per una corretta visualizzazione, utilizza la maiuscola iniziale di massimo 30 caratteri. Esempio: |
|
openUrlAction |
OpenUrlAction |
Obbligatorio. |
Nell'esempio seguente viene mostrato un elemento Button
:
Esempio
{ "title": "Send us feedback", "openUrlAction": { "url": "mailto:person@example.com" } }
CancellationInfo
Nella tabella seguente sono elencate le proprietà per il tipo CancellationInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
reason |
String | Obbligatorio. Motivo del testo visualizzabile per il rifiuto quando OrderState.state è "ANNULLATO". Esempio: |
Nell'esempio seguente viene mostrato un elemento CancellationInfo
:
Esempio
{ "reason": "Insufficient inventory" }
FoodOrderUpdateExtension
Questo tipo fornisce all'utente un intervallo stimato in cui l'ordine verrà
consegnato o pronto per il ritiro. 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 costantemente. Ad esempio, se la stima della consegna dell'ordine è prevista oggi alle 13:00, devi inviare un intervallo stimato coerente con le variazioni dovute alle condizioni del traffico, ad esempio oggi dalle 12:45 alle 13:15.
Una durata o un timestamp ISO 8601 viene interpretato come l'intervallo dal
updateTime
dell'OrderUpdate
(in pratica, "ora") a
updateTime
più duration
.
Non utilizzare questo formato a meno che "ora " non sia un'aspettativa ragionevole.
Un intervallo ISO 8601 viene interpretato come il valore che va dall'inizio alla fine dell'intervallo.
Nella tabella seguente sono elencate le proprietà per il tipo FoodOrderUpdateExtension
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
@type |
Costante |
Tipo di questa estensione. Questo campo è sempre impostato su "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateEstensione". Valore: |
|
estimatedFulfillmentTimeIso8601 |
String |
L'orario stimato in cui l'ordine verrà consegnato o sarà pronto per il ritiro. La stringa deve essere nel formato ISO 8601 e corrispondere a un intervallo anziché a una singola ora fissa. Le convenzioni accettabili sono: intervalli, durate e date/ore. Questo campo può essere inviato in SubmitOrderResponseMessage o AsyncOrderUpdateRequestMessage quando le informazioni diventano disponibili o vengono apportate modifiche, ad esempio in caso di arrivi anticipati o in ritardo. Esempio: |
|
foodOrderErrors |
Elenco<FoodOrderError > |
Descrive gli errori che si sono verificati dopo l'ordine. È consigliato un errore per carrello o per articolo. Utilizza FoodOrderUpdate Extensions.FoodOrderErrors per gli errori non contemplati da RifiutaionInfo. Non deve contenere meno di 1 articolo. |
Nell'esempio seguente viene mostrato 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
Nella tabella seguente sono elencate le proprietà per il tipo FulfillmentInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
È richiesto esattamente uno dei seguenti gruppi di proprietà. | |||
deliveryTime |
Gruppo 1 | Timestamp ISO |
Utilizzo del tempo di completamento stimatoIso8601 nel messaggio FoodOrderingUpdate Extensions |
pickupTime |
Gruppo 2 | Timestamp ISO |
Utilizzo del tempo di completamento stimatoIso8601 nel messaggio FoodOrderingUpdate Extensions |
Nell'esempio seguente viene mostrato un elemento FulfillmentInfo
:
Esempio 1
{ "deliveryTime": "2017-05-10T02:36:38.803Z" }
Esempio 2
{ "pickupTime": "2019-12-26T07:24:27.803Z" }
InTransitInfo
Nella tabella seguente sono elencate le proprietà per il tipo InTransitInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
updatedTime |
Timestamp ISO |
Utilizzo del tempo di completamento stimatoIso8601 nel messaggio FoodOrderingUpdate Extensions |
Nell'esempio seguente viene mostrato un elemento InTransitInfo
:
Esempio
{ "updatedTime": "2017-05-10T02:36:38.803Z" }
LineItemUpdate
Nella tabella seguente sono elencate le proprietà per il tipo LineItemUpdate
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
orderState |
OrderState |
||
price |
Price |
||
reason |
String |
Il motivo della modifica. Obbligatorio per le variazioni di prezzo. |
Nell'esempio seguente viene mostrato 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
Nella tabella seguente sono elencate le proprietà per il tipo OpenUrlAction
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
url |
String | Obbligatorio. L'azione attivata toccando o facendo clic sul pulsante. L'elenco dei prefissi applicabili dipende da orderManagementActionType. "EMAIL": il prefisso deve essere "mailto". "CALL": 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 di invio
AppResponse
e in ogni successiva
AsyncOrderUpdateRequestMessage
azione di gestione degli ordini inviata per un determinato ordine può variare in base
allo stato.
Ad esempio, nello stato "CREATO", CUSTOMER_SERVICE
potrebbe fare riferimento al tuo
numero di telefono dell'assistenza clienti. Quindi, nello stato "CONFERMATO", CUSTOMER_SERVICE
può passare al telefono del ristorante se questo diventa il migliore punto di contatto per il cliente. Analogamente, una volta che l'ordine si trova nello stato "FULFILLED", CUSTOMER_SERVICE
può fare riferimento ai tuoi indirizzi email di assistenza.
Nella tabella seguente sono elencate le proprietà per il tipo OrderManagementAction
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
type |
OrderManagementActionType |
Obbligatorio. |
|
button |
Button |
Obbligatorio. |
Nell'esempio seguente viene mostrato 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 campo è obbligatorio. Il prefisso openUrlAction.url deve essere "mailto", "tel", "http" o "https".EMAIL
: l'azione email nella pagina dei dettagli dell'ordine. Il prefisso openUrlAction.url deve essere "mailto".CALL_DRIVER
: invito all'azione solo nella pagina dei dettagli dell'ordine. Il prefisso openUrlAction.url deve essere "tel".CALL_RESTAURANT
: invito all'azione solo nella pagina dei dettagli dell'ordine. Il prefisso openUrlAction.url deve essere "tel".
OrderState
Lo stato attuale dell'ordine. Ogni valore OrderState
di state
corrisponde
anche a uno stato di acquisto sul sito
myaccount.google.com.
Nella tabella seguente sono elencate 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 maiuscola a inizio frase. Esempio: |
Nell'esempio seguente viene mostrato 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, in attesa di conferma da parte del fornitore. Corrisponde allo stato di acquisto "Ordinato".CONFIRMED
: ordine confermato dal fornitore ed è 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'ordine. Corrisponde allo stato di acquisto "Ritiro".
Ricevuta
Invia questo tipo in un ordine di invioAppResponse
,
dove OrderState
è "CONFERMA", "FULFILLED" o "IN_TRANSIT". Invia la ricevuta quando il userVisibleOrderId
sarà disponibile. Non è necessario continuare
a inviare la ricevuta negli aggiornamenti successivi.
Nella tabella seguente sono elencate le proprietà per il tipo Receipt
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
userVisibleOrderId |
String | Obbligatorio. Obbligatorio se l'ordine è "CONFERMATO", "IN_TRANSIT" o "FULFILLED". Questo campo è il singolo ID dell'ordine visibile all'utente (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 all'ordine per l'assistenza clienti presso il fornitore e l'integratore. Devi fornire questo ID una sola volta in ogni OrderUpdate. Finché non viene fornito, actionOrderId è userVisibleOrderId. Ad esempio, potresti non avere un userVisibleOrderId finché l'ordine non viene confermato dal ristorante. Dopo la conferma, devi inviare un AsyncOrderUpdateRequestMessage con un OrderUpdate e una ricevuta. |
Nell'esempio seguente viene mostrato un elemento Receipt
:
Esempio
{ "userVisibleOrderId": "userVisibleId1234" }
RejectionInfo
Nella tabella seguente sono elencate 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. |
Nell'esempio seguente viene mostrato 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 alle norme o relativi ai rischi.PAYMENT_DECLINED
: si è verificato un problema con l'elaborazione dei pagamenti.UNAVAILABLE_SLOT
: l'ordine non può essere evaso con l'orario specificato in DeliveryInfo o PickupInfo.PROMO_NOT_APPLICABLE
: si è verificato un problema con la promozione.UNKNOWN
: qualsiasi altro motivo.
Tipi di pagamenti
Questa sezione descrive i tipi di pagamento utilizzati per l'evasione degli ordini di cibo.ActionProvidedPaymentOptions
Requisiti per un metodo di pagamento fornito da un'azione.
Nella tabella seguente sono elencate 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 PaymentType "ON_FULFILLMENT". Ad esempio, puoi utilizzare questo campo per specificare se i contanti o la carta sono supportati per l'evasione degli ordini. |
Nell'esempio seguente viene mostrato 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 memorizzate nell'Account Google dell'utente. I dati di pagamento restituiti includono il numero di conto personale (PAN) 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 consente di impostare campi aggiuntivi da restituire per un indirizzo di fatturazione richiesto.
Nella tabella seguente sono elencate le proprietà per il tipo BillingAddressParameters
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
format |
String |
Il formato dell'indirizzo di fatturazione è obbligatorio per completare la transazione. MIN: nome, codice paese e codice postale. COMPLETO: nome, via, località, regione, codice paese e codice postale. |
Nell'esempio seguente viene mostrato un elemento BillingAddressParameters
:
Esempio 1
{ "format": "MIN" }
Esempio 2
{ "format": "FULL" }
CardParameters
Utilizza questo oggetto per configurare il supporto del tuo sito per l'API Google Pay.
Nella tabella seguente sono elencate le proprietà per il tipo CardParameters
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
allowedAuthMethods |
List<Const> | Obbligatorio. Campi supportati per autenticare una transazione con carta. Non deve contenere meno di 1 articolo. |
|
allowedCardNetworks |
Elenco<AllowedCardNetworks > |
Obbligatorio. Una o più reti di carte supportate e supportate anche dall'API Google Pay. Non deve contenere meno di 1 articolo. |
|
billingAddressRequired |
Booleano |
Imposta questo valore su true se hai bisogno di un indirizzo di fatturazione. Richiedi un indirizzo di fatturazione solo se necessario per elaborare la transazione. Le richieste di dati aggiuntive possono aumentare l'attrito nella procedura di pagamento e portare a una riduzione dei tassi di conversione. |
|
billingAddressParameters |
BillingAddressParameters |
I campi previsti vengono restituiti se billingAddressRequired è impostato su true. |
|
cvcRequired |
Booleano |
Impostalo su true se utilizzi TimesofMoney, su false per tutti gli altri elaboratori dei pagamenti. |
Nell'esempio seguente viene mostrato 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
Nella tabella seguente sono elencate le proprietà per il tipo GoogleProvidedPaymentInstrument
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
instrumentToken |
String | Obbligatorio. Stringa di base con codifica 64 contenente il token di pagamento per l'addebito di costi all'utente presso un elaboratore partecipante di Google Pay, in base alle opzioni GoogleProvidedPaymentOptions precedentemente specificate. |
|
billingAddress |
PostalAddress |
Indirizzo di fatturazione per il pagamento. |
Nell'esempio seguente viene mostrato un elemento GoogleProvidedPaymentInstrument
:
Esempio
{ "instrumentToken": "abcd", "billingAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] } }
GoogleProvidedPaymentOptions
Requisiti del metodo di pagamento fornito da Google.
Nella tabella seguente sono elencate le proprietà per il tipo GoogleProvidedPaymentOptions
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
facilitationSpecification |
String |
Un JSON PaymentDataRequest sotto forma di stringa. Utilizza questo oggetto per configurare il supporto del tuo sito per l'API Google Pay. |
|
supportedCardNetworks |
Elenco<SupportedCardNetworks > |
Utilizza facilitationSpecification. Tipo di reti di carte supportate dall'agente. Questo campo è obsoleto. |
|
prepaidCardDisallowed |
Booleano |
Utilizza facilitationSpecification. Indica se una carta prepagata è consentita o meno come tipo di pagamento. Questo campo è obsoleto. |
|
billingAddressRequired |
Booleano |
Utilizza facilitationSpecification. Indica se l'indirizzo di fatturazione è obbligatorio o meno. Questo campo è obsoleto. |
|
tokenizationParameters |
TokenizationParameters |
Questo campo è obsoleto. |
Nell'esempio seguente viene mostrato 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 del tuo sito per l'API Google Pay.
Nella tabella seguente sono elencate le proprietà per il tipo MerchantInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
merchantId |
String |
Identificatore del commerciante Google fornito all'utente da Google Pay. |
|
merchantName |
String | Obbligatorio. Nome del commerciante codificato come UTF-8. Il nome del commerciante viene visualizzato nel foglio dei pagamenti. |
OnFulfillmentPaymentData
Utilizza questo oggetto per inviare dati aggiuntivi per PaymentType "ON_FULFILLMENT".
Nella tabella seguente sono elencate le proprietà per il tipo OnFulfillmentPaymentData
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
supportedPaymentOptions |
Elenco<PaymentOptionsEnums > |
Elenco delle opzioni di pagamento disponibili per l'utente al momento dell'evasione dell'ordine. |
Nell'esempio seguente viene mostrato un elemento OnFulfillmentPaymentData
:
Esempio
{ "supportedPaymentOptions": [ "Cash", "Card" ] }
Parametri
Definisce i tipi relativi a TokenizationParameters
.
Nella tabella seguente sono elencate le proprietà per il tipo Parameters
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
gateway |
String | Obbligatorio. Esempio: |
|
gatewayMerchantId |
String | ||
[additionalKey: string] |
String | Coppie chiave-valore aggiuntive |
Nell'esempio seguente viene mostrato 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 del tuo sito per l'API Google Pay.
Nella tabella seguente sono elencate le proprietà per il tipo PaymentDataRequest
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
apiVersion |
Costante | Obbligatorio. Versione API principale. Valore: |
|
apiVersionMinor |
Costante | Obbligatorio. Versione API secondaria. Valore: |
|
merchantInfo |
MerchantInfo |
Obbligatorio. (ID commerciante Google Pay) Informazioni sul commerciante che richiede i dati di pagamento. |
|
allowedPaymentMethods |
Elenco<PaymentMethod > |
Obbligatorio. Specifica il supporto per uno o più metodi di pagamento supportati dall'API Google Pay. |
|
transactionInfo |
TransactionInfo |
Obbligatorio. Dettagli sull'autorizzazione della transazione a seconda che l'utente accetti o meno la transazione. Questo campo include il prezzo totale e lo stato del prezzo. |
Nell'esempio seguente viene mostrato 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.
Nella tabella seguente sono elencate le proprietà per il tipo PaymentInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
displayName |
String | Obbligatorio. Nome dello strumento di pagamento visibile all'utente da visualizzare sulla ricevuta. |
|
paymentType |
PaymentType |
Obbligatorio. |
|
googleProvidedPaymentInstrument |
GoogleProvidedPaymentInstrument |
Token che può essere utilizzato dall'azione. Specificalo soltanto se hai specificato GoogleProvidedPaymentOptions come opzione di pagamento nel CheckoutResponseMessage. |
Nell'esempio seguente viene mostrato 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 del tuo sito per l'API Google Pay.
Nella tabella seguente sono elencate le proprietà per il tipo PaymentMethod
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
type |
Costante | Obbligatorio. Identificatore breve per il metodo di pagamento supportato. Al momento è supportata solo la carta CARD. Valore: |
|
parameters |
CardParameters |
Obbligatorio. Parametri necessari per configurare il tipo di metodo di pagamento fornito. |
|
tokenizationSpecification |
TokenizationSpecification |
Obbligatorio. Configura un fornitore di account o di decriptazione per ricevere i dati di pagamento. Questa proprietà è obbligatoria per il metodo di pagamento CARD. |
Nell'esempio seguente viene mostrato 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
Nella tabella seguente sono elencate le proprietà per il tipo PaymentOptions
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
È richiesto esattamente uno dei seguenti gruppi di proprietà. | |||
googleProvidedOptions |
Gruppo 1 | GoogleProvidedPaymentOptions |
In esclusiva con actionProvidedOptions. Utilizza questo metodo per i pagamenti online tramite gPay. |
actionProvidedOptions |
Gruppo 2 | ActionProvidedPaymentOptions |
In esclusiva con googleProvidedOptions. Utilizza questo metodo per "pagamento alla consegna" o "pagamento in evasione". |
Nell'esempio seguente viene mostrato 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
.
Nella tabella seguente sono elencate le proprietà per il tipo TokenizationParameters
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
tokenizationType |
Enum [
"UNSPECIFIED_TOKENIZATION_TYPE",
"PAYMENT_GATEWAY"
] |
Obbligatorio. Utilizza facilitationSpecification. Tipo di token accettabili. |
|
parameters |
Parameters |
Utilizza facilitationSpecification. |
TokenizationSpecification
Questo oggetto consente di configurare un account per ricevere dati di pagamento addebitabili.
Nella tabella seguente sono elencate le proprietà per il tipo TokenizationSpecification
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
type |
Costante | Obbligatorio. |
|
parameters |
Parameters |
Obbligatorio. |
Nell'esempio seguente viene mostrato 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 un pagatore di pagare. Viene utilizzata per presentare una finestra di dialogo di autorizzazione dei pagamenti.
Nella tabella seguente sono elencate le proprietà per il tipo TransactionInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
currencyCode |
String | Obbligatorio. Codice alfabetico 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 Google Pay. Questo campo è obbligatorio quando invii callback all'API Google Transaction Events. |
|
totalPriceStatus |
Costante | Obbligatorio. Usa "STIMATED" come impostazione predefinita. 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. |
Nell'esempio seguente viene mostrato un elemento TransactionInfo
:
Esempio
{ "totalPriceStatus": "ESTIMATED", "totalPrice": "12.34", "currencyCode": "USD" }