Tipi di base
Carrello
Contiene i dettagli dell'ordine e se la richiesta riguarda il ritiro o pubblicazione. Un carrello contiene anche i dettagli sulla consegna, la mancia e la consegna . L'oggettoCart
è definito in un file Checkout AppRequest
.f
Includi una copia del carrello nella tua Checkout AppResponse
La seguente tabella elenca le proprietà per il tipo Cart
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
@type |
Costanza |
Il tipo di questo oggetto. Ometti questo campo se l'oggetto Cart padre fa parte di ProposedOrder. Valore: |
|
id |
String |
ID facoltativo del carrello. |
|
merchant |
Merchant |
Commerciante affiliato a questo carrello. |
|
lineItems |
Elenco<LineItem > |
Obbligatorio. Elenco dei prodotti o servizi ordinati dall'utente. Non deve contenere meno di 1 elemento. |
|
promotions |
Elenco<Promotion > |
Promozione applicata a questo carrello. Al momento è supportata una sola promozione. |
|
notes |
String |
Note sull'ordine o sulle istruzioni per la consegna. |
|
extension |
FoodCartExtension |
Definisce i dettagli dell'utente, ad esempio 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 della persona che riceve l'ordine. È disponibile solo inAppResponse
La seguente tabella elenca le proprietà per il tipo Contact
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
displayName |
String |
Il nome della persona che riceve l'ordine, così come vorresti che fosse visualizzato. Utilizza questo campo se firstName e lastName non sono specificati. Esempio: |
|
email |
String |
Indirizzo email della persona che riceve l'ordine. Esempio: |
|
firstName |
String |
Nome della persona che riceve l'ordine. Esempio: |
|
lastName |
String |
Cognome della persona che riceve l'ordine. Esempio: |
|
phoneNumber |
String |
Numero di telefono della persona che riceve l'ordine, incluso il codice paese. Esempio: |
|
emailVerified |
Valore booleano |
Indica se la persona che riceve l'ordine ha eseguito l'accesso con il proprio Account Google. |
Nell'esempio seguente viene mostrato un elemento Contact
:
Esempio
{ "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" }
CustomPushMessage
Contiene il carattereOrderUpdate
della richiesta.
La seguente tabella elenca le proprietà per il tipo CustomPushMessage
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
orderUpdate |
OrderUpdate |
Obbligatorio. Sono state aggiornate le informazioni relative all'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
La seguente tabella elenca le proprietà per il tipo DeliveryInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
deliveryTimeIso8601 |
String |
Tempi di consegna stimati, nel formato di timestamp ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" o il formato della durata: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Ad esempio, PT90M rappresenta una durata di 90 minuti. Il valore predefinito "PT0M" indica che l'orario di consegna preferito è il prima possibile. Riferimento: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. Utilizza questo pulsante 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
La seguente tabella elenca le proprietà per il tipo Disclaimer
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
predefinedMessage |
PredefinedMessage |
Obbligatorio. Per mostrare messaggi di disclaimer predefiniti durante il pagamento. |
|
feeAmount |
Money |
Il partner addebiterà al commerciante una commissione di importo N per questo ordine. |
|
feeAmountRange |
FeeAmountRange |
Il partner addebiterà al ristorante una commissione di importo da N a M per ogni ordine. |
|
feePercent |
Number |
Il partner addebiterà al commerciante una commissione dell'N% per questo ordine. |
|
feePercentRange |
FeePercentRange |
Il Partner addebiterà al commerciante una commissione compresa tra N% e M% per ogni 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 per l'attività al momento dell'ordinazione.NO_CAPACITY
: non è disponibile alcuna capacità del servizio (ad esempio, un'interruzione temporanea dovuta a momenti di picco).NO_COURIER_AVAILABLE
: impossibile elaborare l'ordine a causa del personale addetto alla consegna limitato.REQUIREMENTS_NOT_MET
: non sono stati soddisfatti i vincoli per l'accettazione dell'ordine (ad es. dimensione minima del carrello).UNAVAILABLE_SLOT
: l'ordine non può essere evaso con l'ordine in anticipo specificato dalle info di consegna o dalle informazioni per il ritiro.OUT_OF_SERVICE_AREA
: l'ordine non può essere consegnato all'indirizzo dell'utente.PROMO_EXPIRED
: impossibile applicare la promozione perché è scaduta.PROMO_NOT_APPLICABLE
: codice di errore generico per individuare tutti i casi di mancata applicazione del codice promozionale se nessuno degli altri errori relativi al codice promozionale funziona.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 gli articoli non sono sufficienti per soddisfare la richiesta.INCORRECT_PRICE
: errori di prezzo nelle tariffe o nel totale.INVALID
: un elemento pubblicitario, FulfillmentOption o una promozione contiene dati non validi.NOT_FOUND
: impossibile trovare un elemento pubblicitario, FulfillmentOption o una promozione.PRICE_CHANGED
: il prezzo di un articolo è cambiato.
FeeAmountRange
La seguente tabella elenca le proprietà per il tipo FeeAmountRange
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
minFeeAmount |
Money |
Limite inferiore dell'importo della commissione addebitata. |
|
maxFeeAmount |
Money |
Limite superiore dell'importo della commissione addebitata. |
FeePercentRange
La seguente tabella elenca le proprietà per il tipo FeePercentRange
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
minFeePercent |
Number |
Limite inferiore della percentuale di commissione addebitata. |
|
maxFeePercent |
Number |
Limite superiore della percentuale di commissione addebitata. |
FoodCartExtension
Contiene dettagli sull'utente, ad esempio le preferenze di evasione degli ordini.
La seguente tabella elenca le proprietà per il tipo FoodCartExtension
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
@type |
Costanza |
Tipo di questa estensione. Questo campo è sempre impostato su "type.googleapis.com/google.actions.v2.orders.FoodCartextension". Valore: |
|
contact |
Contact |
Dati di contatto della persona che riceve l'ordine. I dettagli includono il nome, il numero di telefono e l'indirizzo email della persona. |
|
fulfillmentPreference |
FulfillmentOption |
Obbligatorio. Preferenza di distribuzione dell'utente. |
|
location |
Location |
In CheckRequestMessage, questo campo specifica l'indirizzo di consegna, obbligatorio se l'ordine prevede la consegna. Per gli ordini con servizio di 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 seguente tabella descrive i campi del tipoFoodErrorExtension
.
Gli errori possono essere inviati in un CheckoutResponse
.
La seguente tabella elenca le proprietà per il tipo FoodErrorExtension
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
@type |
Costanza | 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 elemento. |
|
correctedProposedOrder |
ProposedOrder |
Obbligatorio se
Un nuovo ProposedOrder con correzioni. Restituisci questo oggetto se sono presenti errori recuperabili nel ProposedOrder originale. Ad esempio, una modifica del prezzo di una o più voci nel carrello è un errore recuperabile. Gli errori ripristinabili con un ProposedOrder valido vengono spostati nella fase di conferma, invece di richiedere all'utente di esaminare il carrello. |
|
paymentOptions |
PaymentOptions |
Obbligatorio se
Opzioni di pagamento predefinite selezionate per l'utente. |
|
additionalPaymentOptions |
Elenco<PaymentOptions > |
Opzioni di pagamento alternative a disposizione dell'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.
La seguente tabella elenca le proprietà per il tipo FoodItemExtension
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
@type |
Costanza | Obbligatorio. Tipo di questa estensione. Questo campo è sempre impostato su "type.googleapis.com/google.actions.v2.orders.FoodItemextension". 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
La seguente tabella elenca le proprietà per il tipo FoodItemOption
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
id |
String |
ID univoco assegnato da Google. Quando invii una richiesta FoodOrderError o AsyncOrderUpdateRequest, utilizza questo campo per distinguere i casi in cui un carrello contiene più di un articolo con lo stesso ID offerta. 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 i dettagli sugli errori in un elementoCheckoutResponse
.
La seguente tabella elenca le proprietà per il tipo FoodOrderError
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
error |
Error |
Obbligatorio. |
|
id |
String | Obbligatorio se
Questo campo è obbligatorio per errori a livello di articolo. Si tratta del parametro LineItem.id assegnato da Google per le voci di menu o FoodItemOption.id per i componenti aggiuntivi. |
|
description |
String |
Descrizione dell'errore. Questa descrizione è riferita al logging interno e non è visibile agli utenti. |
|
updatedPrice |
Money |
Obbligatorio se
Nuovo prezzo di un articolo che ha causato l'errore. Questo campo è obbligatorio solo se l'errore è "PRICE_CHANGED". |
|
availableQuantity |
Intero | Obbligatorio se
Nuova quantità disponibile dell'articolo che ha causato l'errore. Questo campo è obbligatorio solo se l'errore è "NON VALIDO" o "NOT_FOUND". Il valore deve essere zero per "NON VALIDO" e "NOT_FOUND". |
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.
La seguente tabella elenca le proprietà per il tipo FoodOrderExtension
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
@type |
Costanza |
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 degli ordini disponibili per l'ordine. |
|
optinForRemarketing |
Valore booleano |
Richiesta di attivazione ai tuoi canali di marketing da parte degli utenti. 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, è necessario mantenere lo stato dell'abbonamento nel sistema così com'è. Gli utenti non possono effettuare la disattivazione tramite Google, ma soltanto tramite la 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:
-
Tra
Checkout AppRequest
eSubmit AppRequest
,Cart.extension.fulfillmentPreference
: memorizza la preferenza dell'utente (consegna o ritiro). Il prezzo è sempre 0 al momento dell'invio della richiesta di pagamento. -
In
Checkout AppResponse
,ProposedOrder.extension.availableFulfillmentOptions
: Definisce una o più opzioni di pubblicazione (al momento, esiste una sola opzione supportato). Puoi specificare l'opzione predefinitaLineItem
inProposedOrder.otherItems
. IlofferId
diFulfillmentOption
deve corrispondere all'ID delLineItem
specificato inProposedOrder.otherItems
.
La seguente tabella elenca le proprietà per il tipo FulfillmentOption
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
offerId |
String |
Identificatore univoco per questa opzione di evasione degli ordini, se presente. |
|
fulfillmentInfo |
FulfillmentOptionInfo |
Obbligatorio. |
|
expiresAt |
Timestamp ISO |
Ora di scadenza di questa 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
.
La seguente tabella elenca 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
La seguente tabella elenca le proprietà per il tipo Image
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
sourceUrl |
String | Obbligatorio. URL dell'immagine. Le dimensioni dell'immagine devono essere pari almeno a 72 x 72 pixel. Per ottenere 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
).
La seguente tabella elenca le proprietà per il tipo LineItem
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
id |
String | Obbligatorio se
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 ProposedOrder (ProposedOrder.otherItems[0].id), utilizzato per aggiungere elementi come tasse e spese di spedizione, il valore dell'ID è definito dal provider. Ad esempio, in un carrello ci sono due articoli uguali con istruzioni di preparazione diverse (come due pizze medie con set di condimenti diversi). In questo caso, entrambi gli elementi hanno lo stesso ID offerta di base. Quando invii una richiesta di aggiornamento dell'ordine per indicare che un articolo viene rifiutato, utilizza questo ID come disambiguatore. In altre parole, se una delle pizze viene rifiutata perché è priva di un particolare condimento, l'ID aiuta Google a determinare a quale articolo ti riferisci nell'ordine. Questo campo è obbligatorio, tranne in altri elementi. |
|
name |
String | Obbligatorio. Nome dell'elemento pubblicitario. Si tratta di una stringa visibile all'utente e, se possibile, deve usare la maiuscola a inizio frase (ad esempio "Commissione di consegna", "Addebito di servizio", "Tasse"). Questo campo è troncato a 100 caratteri per gli utenti. |
|
type |
LineItemType |
Obbligatorio. |
|
quantity |
Intero | Obbligatorio se
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, somma il costo di eventuali componenti aggiuntivi e moltiplica per la quantità). Ad esempio, se un articolo da 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 è 6 €. Per due pizze (quantità = 2) con un prezzo base di 5 $e ciascuna con un componente aggiuntivo di $1, il prezzo sarebbe di 12 $. Ogni elemento pubblicitario deve avere un prezzo, anche se è pari a "0". Se il tipo è DISCOUNT, specifica il valore come negativo (ad esempio "-2"). |
|
subLines |
Elenco<SublineNote > |
Facoltativo e valido solo se il tipo è "REGULAR". L'utente potrebbe inviare una nota 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à nella richiesta come subLines[0].note, che è l'unico valore fornito in questo campo se presente in una richiesta. Non può contenere più di 1 articolo. |
|
offerId |
String | Obbligatorio se
L'ID offerta della voce di menu dell'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
: voce relativa ai 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
: voce senza costi. Di solito riservato a SubmitOrderRequestMessage per un suggerimento selezionato dall'utente. Applicabile a ProposedOrder.otherItems.DELIVERY
: elemento pubblicitario da pubblicare. Applicabile a ProposedOrder.otherItems.SUBTOTAL
: subtotale dell'elemento pubblicitario. 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 la destinazione
di un solo ordine di consegna.
La località finalizzata è presente anche in
TransactionDecisionValue
se l'utente effettua l'ordine. Per gli ordini che specificano il ritiro, la località è
non sono inclusi (nemmeno uno vuoto).
La seguente tabella elenca le proprietà per il tipo Location
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
coordinates |
Coordinates |
||
formattedAddress |
String |
Indirizzo visualizzato della sede. Esempio: |
|
postalAddress |
PostalAddress |
||
zipCode |
String |
Esempio: |
|
city |
String |
Il nome della città. Esempio: |
|
notes |
String |
Note sulla posizione, ad esempio i codici del cancello. Deve contenere al massimo 500 caratteri. Esempio: |
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
La seguente tabella elenca le proprietà per il tipo Merchant
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
id |
String |
L'ID del commerciante. Se specificato, corrisponde a Restaurant.@id nel feed del ristorante. Esempio: |
|
name |
String | Obbligatorio. Nome visibile all'utente del commerciante. Esempio: |
Nell'esempio seguente viene mostrato un elemento Merchant
:
Esempio
{ "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }
Denaro
La seguente tabella elenca le proprietà per il tipo Money
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
currencyCode |
String | Obbligatorio. Un codice valuta di 3 lettere in formato ISO 4217. Esempio: |
|
units |
String |
Le unità intere dell'importo. Ad esempio, se currencyCode è "USD", allora "1" è 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 pari a 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 nano = -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, comprese tasse, commissioni e spese di spedizione, come nonché i dati di pagamento. Questo oggetto viene ricevuto dalla tua azione in unSubmit AppRequest
.
La seguente tabella elenca le proprietà per il tipo Order
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
finalOrder |
ProposedOrder |
Obbligatorio. L'ordine proposto che ha generato 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
Nella tabella seguente vengono descritti i campi di tipo OrderUpdate, incluso inAppResponse
.
La seguente tabella elenca 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 cui viene inviato l'aggiornamento. Se receive.user_visible_order_id non viene fornito almeno una volta in OrderUpdate per un valore "CREATED" questo ID sarà l'ID visibile dell'utente inserito e visualizzato nella scheda dell'ordine Google. |
|
orderState |
OrderState |
Obbligatorio. Il nuovo stato dell'ordine. |
|
lineItemUpdates |
Mappa<String, LineItemUpdate > |
||
updateTime |
Timestamp ISO | Obbligatorio. L'ora in cui l'ordine è stato aggiornato. |
|
orderManagementActions |
Elenco<OrderManagementAction > |
Azioni successive all'ordine, ad esempio contattare l'assistenza e visualizzare i dettagli dell'ordine. Non deve contenere meno di 1 articolo e non più di 6 elementi. |
|
rejectionInfo |
RejectionInfo |
Obbligatorio se
|
|
cancellationInfo |
CancellationInfo |
Obbligatorio se
|
|
inTransitInfo |
InTransitInfo |
Questo campo è obsoleto. |
|
fulfillmentInfo |
FulfillmentInfo |
Questo campo è obsoleto. |
|
receipt |
Receipt |
Obbligatorio se
Fornisci l'ID ordine visibile all'utente in una ricevuta. |
|
totalPrice |
Price |
Prezzo totale dell'ordine. |
|
infoExtension |
FoodOrderUpdateExtension |
Definisce ulteriori dettagli sull'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
La seguente tabella elenca le proprietà per il tipo PickupInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
pickupTimeIso8601 |
String |
Orario di ritiro stimato, nel formato di timestamp ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" o il formato della durata: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Ad esempio, PT90M rappresenta una durata di 90 minuti. Il valore predefinito, "PT0M", indica che l'orario di ritiro preferito è il prima possibile. Riferimento: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. Utilizza questo campo per aggiornare l'orario di ritiro stimato durante la risposta al pagamento. Esempio: |
Nell'esempio seguente viene mostrato un elemento PickupInfo
:
Esempio
{ "pickupTimeIso8601": "PT90M" }
PostalAddress
La seguente tabella elenca le proprietà per il tipo PostalAddress
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
regionCode |
String | Obbligatorio. Un codice paese di due lettere. Esempio: |
|
postalCode |
String |
Il codice postale. Esempio: |
|
administrativeArea |
String |
Suddivisione amministrativa di livello più elevato 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à di questa località. Nelle regioni del mondo in cui le località non sono ben definite o non rientrano in questa struttura, non specificare la località e utilizza il campo addressLines. Esempio: |
|
addressLines |
Elenco<String> |
Una o più righe che puoi utilizzare per specificare l'indirizzo. Questo campo non deve essere modificato perché può contenere località poco chiare. Esempio: |
|
recipients |
Elenco<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
La seguente tabella elenca le proprietà per il tipo Price
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
type |
Enum [
"ESTIMATE",
"ACTUAL"
] |
Obbligatorio. Il codice del coupon promozionale. |
|
amount |
Money |
Obbligatorio. |
Promozione
La seguente tabella elenca le proprietà per il tipo Promotion
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
coupon |
String | Obbligatorio. Il codice del coupon promozionale. |
ProposedOrder
La seguente tabella elenca le proprietà per il tipo ProposedOrder
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
id |
String |
ID facoltativo per l'ordine proposto. |
|
cart |
Cart |
Obbligatorio. Articoli dell'utente. |
|
otherItems |
Elenco<LineItem > |
Articoli aggiunti dal fornitore, ad esempio spese di spedizione, altre commissioni e imposte. Gli altri articoli possono anche includere una mancia e/o uno sconto aggiunto 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 di effettuare l'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
La seguente tabella elenca le proprietà per il tipo SublineNote
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
note |
String | Obbligatorio. |
Timestamp
Data e ora nel seguente formato:
"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
TransactionDecisionValue
Contiene il valoreOrder
.
La seguente tabella elenca le proprietà per il tipo TransactionDecisionValue
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
order |
Order |
Obbligatorio. Ordine da effettuare con i dati 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 ordine
AppRequest
La seguente tabella elenca le proprietà per il tipo AppRequest
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
isInSandbox |
Valore booleano |
Indica se le transazioni successive vengono effettuate in un ambiente sandbox. |
|
conversation |
Conversation |
||
inputs |
Elenco<Input > |
Obbligatorio. Contiene gli argomenti previsti per il pagamento di un carrello. Deve essere presente 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
è un AppRequest
con l'intent actions.foodordering.intent.CHECKOUT
.
SubmitOrderRequestMessage
UnSubmitOrderRequestMessage
è un AppRequest
con l'intent actions.foodordering.intent.TRANSACTION_DECISION
.
Conversazione
UnConversation
è univoco per una sola sessione. Puoi utilizzarlo per collegare più
Checkout
e SubmitOrder
Azioni insieme se necessario.
La seguente tabella elenca le proprietà per il tipo Conversation
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
conversationId |
String | Obbligatorio. ID univoco della conversazione. |
Nell'esempio seguente viene mostrato un elemento Conversation
:
Esempio
{ "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ" }
Input
Gli argomenti previsti per il pagamento di un carrello.
La seguente tabella elenca 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 O "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 essere presente esattamente 1 articolo. |
Argomento
Contiene dettagli sugli alimenti che l'utente vuole controllare. Per il pagamento è applicabile solo l'estensione. Per l'invio dell'ordine è applicabile solo transactionDecisionValue
La seguente tabella elenca le proprietà per il tipo Argument
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
È richiesto esattamente uno dei seguenti gruppi di proprietà. | |||
extension |
Gruppo 1 | Cart |
Descrive in dettaglio gli alimenti che l'utente vuole pagare. |
transactionDecisionValue |
Gruppo 2 | TransactionDecisionValue |
Contiene l'ordine da effettuare e i dettagli sul pagamento. |
Risposta di evasione ordine
AppResponse
La seguente tabella elenca le proprietà per il tipo AppResponse
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
expectUserResponse |
Costanza |
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
checkoutResponse
o error
nel
StructuredResponse
SubmitOrderResponseMessage
UnSubmitOrderResponseMessage
è un AppResponse
con
orderUpdate
in StructuredResponse
.
FinalResponse
La tua risposta al pagamento del carrello o a SubmitOrderRequestMessage.
La seguente tabella elenca le proprietà per il tipo FinalResponse
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
richResponse |
RichResponse |
Obbligatorio. Contiene la risposta al messaggio CheckoutRequestMessage o SubmitOrderRequestMessage. |
CheckoutResponse
La seguente tabella elenca le proprietà per il tipo CheckoutResponse
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
proposedOrder |
ProposedOrder |
Obbligatorio. Ordine proposto da utilizzare per la transazione. |
|
paymentOptions |
PaymentOptions |
Obbligatorio. È stata selezionata l'opzione di pagamento predefinita per l'utente. |
|
additionalPaymentOptions |
Elenco<PaymentOptions > |
Opzioni di pagamento alternative a disposizione dell'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." } } ] }
Elemento
Contiene la risposta al pagamento di un carrello o a SubmitOrderRequestMessage.
La seguente tabella elenca le proprietà per il tipo Item
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
structuredResponse |
StructuredResponse |
Obbligatorio. |
RichResponse
Contiene la tua risposta al pagamento di un carrello.
La seguente tabella elenca le proprietà per il tipo RichResponse
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
items |
Elenco<Item > |
Obbligatorio. Deve essere presente esattamente 1 articolo. |
StructuredResponse
Per CheckoutResponseMessage, il valore può essere uno dei seguenti: CheckResponse Indica che il pagamento è andato a buon fine. OR FoodErrorEstensione: 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.
La seguente tabella elenca 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 negli articoli del carrello. A seconda della natura dell'errore, questa proprietà può includere ProposedOrder e PaymentOptions corretti oppure solo un messaggio di errore senza PaymentOptions. |
orderUpdate |
Gruppo 3 | OrderUpdate |
Aggiornamenti dell'ordine asincrono
Questa sezione descrive i tipi di alto livello che compongono le richieste e risposte di una tipica interazione di azione integrata di 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 è cambiato. Per ulteriori informazioni, visitaLa seguente tabella elenca le proprietà per il tipo AsyncOrderUpdateRequestMessage
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
isInSandbox |
Valore booleano |
Indica che l'ordine per cui è stato inviato l'aggiornamento è un pagamento sandbox. |
|
customPushMessage |
CustomPushMessage |
Obbligatorio. Contiene l'elemento 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 che avrai inviato correttamente unAsyncOrderUpdateRequestMessage
, Google risponde
con uno stato HTTP 200 e un corpo vuoto. Se l'aggiornamento non è andato a buon fine,
Google risponde fornendo dettagli sul motivo per cui l'aggiornamento dell'ordine non è riuscito.
Tipi di aggiornamento dell'ordine
Pulsante
Definisce un elemento dell'interfaccia utente che puoi aggiungere per fornire un'interazione con l'utente.
La seguente tabella elenca le proprietà per il tipo Button
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
title |
String | Obbligatorio. L'etichetta da visualizzare. Per garantire il rendering corretto, utilizza la maiuscola a inizio frase e non superi i 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
La seguente tabella elenca le proprietà per il tipo CancellationInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
reason |
String | Obbligatorio. Motivo del testo visualizzato per il rifiuto quando OrderState.state è "CANCELLED". Esempio: |
Nell'esempio seguente viene mostrato un elemento CancellationInfo
:
Esempio
{ "reason": "Insufficient inventory" }
FoodOrderUpdateExtension
Questo tipo fornisce all'utente un intervallo stimato per il momento in cui verrà effettuato l'ordine
consegnato o pronto per il ritiro. Invia questa estensione in un
OrderUpdate
ogni volta che le informazioni sono disponibili o sono state modificate dall'ultimo invio.
Fornisci una stima prudente per l'intervallo di completamento, in modo che l'utente vengono soddisfatte costantemente. Ad esempio, se si stima che l'ordine sia inviato oggi alle 13:00, dovresti inviare un intervallo stimato in linea con le variazioni dovute alle condizioni del traffico, ad esempio oggi alle 12:45 alle 13:15.
Una durata o un timestamp ISO 8601 viene interpretata come l'intervallo tra
updateTime
di OrderUpdate
(in sostanza, "ora") alla
updateTime
più duration
.
Non usare questo formato a meno che non sia "ora" è un'aspettativa ragionevole.
Un intervallo ISO 8601 viene interpretato come l'intervallo dall'inizio al alla fine dell'intervallo.
La seguente tabella elenca le proprietà per il tipo FoodOrderUpdateExtension
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
@type |
Costanza |
Tipo di questa estensione. Questo campo è sempre impostato su "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateextension". Valore: |
|
estimatedFulfillmentTimeIso8601 |
String |
Il tempo stimato in cui l'ordine verrà consegnato o sarà pronto per il ritiro. La stringa deve essere nel formato ISO 8601 e deve corrispondere a un intervallo anziché a un singolo intervallo di tempo fisso. Le convenzioni accettabili sono: intervalli, durate e date/ora. Questo campo può essere inviato in SubmitOrderResponseMessage o AsyncOrderUpdateRequestMessage quando le informazioni diventano disponibili o viene apportata una modifica, ad esempio gli arrivi in anticipo 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 FoodOrderUpdateEstensione.FoodOrderErrors per gli errori non coperti da RifiutaInfo. Non deve contenere meno di 1 elemento. |
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
La seguente tabella elenca le proprietà per il tipo FulfillmentInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
È richiesto esattamente uno dei seguenti gruppi di proprietà. | |||
deliveryTime |
Gruppo 1 | Timestamp ISO |
UtilizzaestimatedFulfillmentTimeIso8601 nel messaggio FoodOrderingUpdateextension |
pickupTime |
Gruppo 2 | Timestamp ISO |
UtilizzaestimatedFulfillmentTimeIso8601 nel messaggio FoodOrderingUpdateextension |
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
La seguente tabella elenca le proprietà per il tipo InTransitInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
updatedTime |
Timestamp ISO |
UtilizzaestimatedFulfillmentTimeIso8601 nel messaggio FoodOrderingUpdateextension |
Nell'esempio seguente viene mostrato un elemento InTransitInfo
:
Esempio
{ "updatedTime": "2017-05-10T02:36:38.803Z" }
LineItemUpdate
La seguente tabella elenca 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
La seguente tabella elenca le proprietà per il tipo OpenUrlAction
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
url |
String | Obbligatorio. L'azione attivata facendo clic o toccando il pulsante. L'elenco dei prefissi applicabili dipende da orderManagementActionType. "EMAIL": il prefisso deve essere "mailto". "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 successiva all'ordine e deve essere inviata
ogni OrderUpdate
all'interno dell'ordine di invio
AppResponse
e i pod
AsyncOrderUpdateRequestMessage
Le azioni di gestione degli ordini inviate per un determinato ordine possono variare in base al
stato.
Ad esempio, nella colonna "CREATED" stato, CUSTOMER_SERVICE
potrebbe fare riferimento ai tuoi
telefono per l'assistenza clienti. Nella colonna "CONFERMA" stato, CUSTOMER_SERVICE
possono passare al telefono del ristorante se questo diventa il punto di riferimento
di contatto per il cliente. Allo stesso modo, una volta che l'ordine si trova nello stato stato,
CUSTOMER_SERVICE
può fare riferimento ai tuoi indirizzi email di assistenza.
La seguente tabella elenca 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 sulla pagina di conferma dell'ordine. Questo campo è obbligatorio. Il prefisso openUrlAction.url deve essere "mailto", "tel", "http" o "https".EMAIL
: azione email solo nella pagina dei dettagli dell'ordine. Il prefisso openUrlAction.url deve essere "mailto".CALL_DRIVER
: azione di chiamata solo nella pagina dei dettagli dell'ordine. Il prefisso openUrlAction.url deve essere "tel".CALL_RESTAURANT
: azione di chiamata solo nella pagina dei dettagli dell'ordine. Il prefisso openUrlAction.url deve essere "tel".
OrderState
Stato attuale dell'ordine. Ogni valore state
di OrderState
anche
corrisponde a uno stato di acquisto su
myaccount.google.com
La seguente tabella elenca le proprietà per il tipo OrderState
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
state |
OrderStateEnum |
Obbligatorio. |
|
label |
String | Obbligatorio. La stringa visualizzata dall'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 e in attesa di conferma da parte del fornitore. Corrisponde al valore "Ordinato" stato dell'acquisto.CONFIRMED
: ordine confermato dal fornitore ed è attivo. Corrisponde allo stato "Accettato" stato dell'acquisto.REJECTED
: ordine rifiutato dall'integratore o dal fornitore. Corrisponde al "Rifiutato" stato dell'acquisto.CANCELLED
: l'utente ha annullato l'ordine. Corrisponde allo stato "Annullato" stato dell'acquisto.IN_PREPARATION
: si prepara il cibo. Corrisponde allo "Stato sconosciuto" stato dell'acquisto.READY_FOR_PICKUP
: cibo pronto per il ritiro. Corrisponde al campo "Pronto per il ritiro" stato dell'acquisto.IN_TRANSIT
: l'ordine è in fase di consegna. Corrisponde allo stato "In corso" stato dell'acquisto.FULFILLED
: l'utente ha ricevuto ciò che è stato ordinato. Corrisponde al "Ritiro" stato dell'acquisto.
Ricevuta
Invia questo tipo in un ordine di invioAppResponse
,
dove OrderState
è "CONFIRMED", "FULFILLED" o "IN_TRANSIT". Invia ricevuta a
l'ora in cui userVisibleOrderId
diventa disponibile. Non è necessario conservare
inviando la ricevuta negli aggiornamenti successivi.
La seguente tabella elenca le proprietà per il tipo Receipt
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
userVisibleOrderId |
String | Obbligatorio. Obbligatorio se l'ordine è "CONFIRMED", "IN_TRANSIT" o "FULFILLED". Questo campo è il singolo ID rivolto all'utente per questo ordine (di solito l'ID ordine del ristorante), visualizzato sia nella ricevuta dell'integratore sia nella scheda dell'ordine Google. L'utente deve essere in grado di utilizzare questo ID per fare riferimento all'ordine di assistenza clienti con il fornitore e l'integratore. Devi fornire questo ID una sola volta in ogni OrderUpdate. Finché non viene fornito, actionOrderId è userVisibileOrderId. Ad esempio, potresti non avere userVisibileOrderId fino a quando 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
La seguente tabella elenca le proprietà per il tipo RejectionInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
type |
RejectionType |
Obbligatorio. |
|
reason |
String |
Motivo del rifiuto utilizzato per il logging interno. Questo campo non è visibile agli utenti. |
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 ai rischi.PAYMENT_DECLINED
: si è verificato un problema con l'elaborazione dei pagamenti.UNAVAILABLE_SLOT
: l'ordine non può essere evaso con l'ordine in anticipo specificato dalle info di consegna o dalle informazioni per il ritiro.PROMO_NOT_APPLICABLE
: si è verificato un problema con la promozione.UNKNOWN
: qualsiasi altro motivo.
Tipi di pagamenti
In questa sezione vengono descritti i tipi di pagamenti utilizzati per le ordinazioni di cibo fulfillment.ActionProvidedPaymentOptions
Requisiti per un metodo di pagamento fornito da un'azione.
La seguente tabella elenca le proprietà per il tipo ActionProvidedPaymentOptions
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
paymentType |
PaymentType |
Obbligatorio. |
|
displayName |
String | Obbligatorio. Nome dello strumento di pagamento riportato sullo scontrino. Esempio: |
|
onFulfillmentPaymentData |
OnFulfillmentPaymentData |
Dati aggiuntivi per il metodo paymentType "ON_FULFILLMENT". Ad esempio, puoi utilizzare questo campo per specificare se i contanti o la carta sono supportati per l'evasione dell'ordine. |
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.
La seguente tabella elenca le proprietà per il tipo BillingAddressParameters
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
format |
String |
Formato dell'indirizzo di fatturazione richiesto per completare la transazione. MIN: nome, codice paese e codice postale. COMPLETO: nome, indirizzo, 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.
La seguente tabella elenca 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 elemento. |
|
allowedCardNetworks |
Elenco<AllowedCardNetworks > |
Obbligatorio. Una o più reti di carte supportate e supportate anche dall'API Google Pay. Non deve contenere meno di 1 elemento. |
|
billingAddressRequired |
Valore booleano |
Imposta il 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 le difficoltà nella procedura di pagamento e portare a una riduzione dei tassi di conversione. |
|
billingAddressParameters |
BillingAddressParameters |
I campi previsti sono stati restituiti se billingAddressRequired è impostato su true. |
|
cvcRequired |
Valore booleano |
Imposta il valore su true se utilizzi TimesofMoney, 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
La seguente tabella elenca le proprietà per il tipo GoogleProvidedPaymentInstrument
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
instrumentToken |
String | Obbligatorio. Stringa di base codificata in 64 che contiene il token di pagamento per l'addebito all'utente presso un elaboratore partecipante di Google Pay, secondo quanto specificato in precedenza per GoogleProvidedPaymentOptions. |
|
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 per il metodo di pagamento fornito da Google.
La seguente tabella elenca le proprietà per il tipo GoogleProvidedPaymentOptions
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
facilitationSpecification |
String |
Un file JSON PaymentDataRequest come stringa. Utilizza questo oggetto per configurare il supporto del tuo sito per l'API Google Pay. |
|
supportedCardNetworks |
Elenco<SupportedCardNetworks > |
Usa invece facilitationSpecification. Tipo di reti di carte supportate dall'agente. Questo campo è obsoleto. |
|
prepaidCardDisallowed |
Valore booleano |
Usa invece facilitationSpecification. Indica se una carta prepagata è consentita come tipo di pagamento. Questo campo è obsoleto. |
|
billingAddressRequired |
Valore booleano |
Usa invece facilitationSpecification. Indica se è richiesto o meno un indirizzo di fatturazione. 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.
La seguente tabella elenca le proprietà per il tipo MerchantInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
merchantId |
String |
Identificatore 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 di pagamento. |
OnFulfillmentPaymentData
Utilizza questo oggetto per inviare dati aggiuntivi per PaymentType "ON_FULFILLMENT".
La seguente tabella elenca 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
.
La seguente tabella elenca 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.
La seguente tabella elenca le proprietà per il tipo PaymentDataRequest
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
apiVersion |
Costanza | Obbligatorio. Versione principale dell'API. Valore: |
|
apiVersionMinor |
Costanza | Obbligatorio. Versione API minore. Valore: |
|
merchantInfo |
MerchantInfo |
Obbligatorio. (ID commerciante Google Pay) Informazioni sul commerciante che richiede i dati di pagamento. |
|
allowedPaymentMethods |
Elenco<PaymentMethod > |
Obbligatorio. Specifica il supporto di uno o più metodi di pagamento supportati dall'API Google Pay. |
|
transactionInfo |
TransactionInfo |
Obbligatorio. Dettagli sull'autorizzazione della transazione a seconda che l'utente abbia acconsentito o meno alla 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.
La seguente tabella elenca 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 solo se hai specificato GoogleProvidedPaymentOptions come opzione di pagamento in CheckResponseMessage. |
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.
La seguente tabella elenca le proprietà per il tipo PaymentMethod
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
type |
Costanza | Obbligatorio. Identificatore breve del 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 account o un fornitore di servizi 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
La seguente tabella elenca le proprietà per il tipo PaymentOptions
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
È richiesto esattamente uno dei seguenti gruppi di proprietà. | |||
googleProvidedOptions |
Gruppo 1 | GoogleProvidedPaymentOptions |
Si escludono a vicenda con actionProvidedOptions. Utilizza questa opzione per i pagamenti online tramite gPay. |
actionProvidedOptions |
Gruppo 2 | ActionProvidedPaymentOptions |
Si escludono a vicenda con googleProvidedOptions. Utilizza questa opzione per i pagamenti in contanti alla consegna oppure "pagare all'evasione dell'ordine". |
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
.
La seguente tabella elenca le proprietà per il tipo TokenizationParameters
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
tokenizationType |
Enum [
"UNSPECIFIED_TOKENIZATION_TYPE",
"PAYMENT_GATEWAY"
] |
Obbligatorio. Usa invece facilitationSpecification. Tipo di token accettabile. |
|
parameters |
Parameters |
Usa invece facilitationSpecification. |
TokenizationSpecification
Questo oggetto consente di configurare un account in modo da ricevere dati di pagamento addebitabili.
La seguente tabella elenca le proprietà per il tipo TokenizationSpecification
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
type |
Costanza | 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 pagamento di un pagatore. Viene utilizzato per presentare una finestra di dialogo di autorizzazione di pagamento.
La seguente tabella elenca le proprietà per il tipo TransactionInfo
:
Proprietà | Tipo | Descrizione | |
---|---|---|---|
currencyCode |
String | Obbligatorio. Codice alfabetico di valuta ISO 4217. |
|
transactionId |
String |
ID univoco che identifica un tentativo di transazione. I commercianti possono utilizzare un ID esistente o generarne uno specifico per i tentativi di transazione con Google Pay. Questo campo è obbligatorio quando invii i callback all'API Google Transaction Events. |
|
totalPriceStatus |
Costanza | Obbligatorio. Utilizza "STIMATED" come 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 con 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" }