Schema delle azioni di evasione degli ordini

In questa pagina viene descritto il payload del servizio web di evasione degli ordini (API Order with Google) quando utilizzi l'API Action with Google integrata. Per una versione leggibile da queste macchine, puoi scaricare lo schema JSON.

Tipi di base

Carrello

Contiene i dettagli dell'ordine e se la richiesta è per il ritiro o la consegna. Un carrello contiene anche i dettagli di consegna, la mancia e l'indirizzo di consegna. L'oggetto Cart è definito in un Checkout AppRequest.f Includerai una copia del carrello in Checkout AppResponse

La tabella seguente elenca le proprietà per il tipo Cart:

Proprietà Tipo Descrizione
@type Costella

Il tipo di questo oggetto. Ometti questo campo se l'oggetto padre del carrello fa parte di ProposedOrder.

Valore: type.googleapis.com/google.actions.v2.orders.Cart

id Stringa

ID facoltativo del carrello.

merchant Merchant

Commerciante affiliato a questo carrello.

lineItems List<LineItem&GT;

Obbligatorio.

Elenco di beni o servizi ordinati dall'utente.

Non deve avere meno di 1 elemento.

promotions List<Promotion&GT;

Promozione applicata in questo carrello. Al momento è supportata una sola promozione.

notes Stringa

Note sull'ordine o sulle istruzioni per la consegna.

extension FoodCartExtension

Definisce i dettagli relativi all'utente, ad esempio le preferenze per l'evasione dell'ordine.

L'esempio seguente mostra un elemento Cart:

Esempio 1

{
  "@type": "type.googleapis.com/google.actions.v2.orders.Cart",
  "merchant": {
    "id": "https://www.exampleprovider.com/merchant/id1",
    "name": "Cucina Venti"
  },
  "lineItems": [
    {
      "name": "Sizzling Prawns Dinner",
      "type": "REGULAR",
      "id": "sample_item_offer_id_1",
      "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
      "quantity": 1,
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "16",
          "nanos": 750000000
        }
      },
      "subLines": [
        {
          "note": "Notes for this item."
        }
      ],
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
        "options": [
          {
            "id": "sample_addon_offer_id_1",
            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
            "name": "Honey Mustard",
            "price": {
              "currencyCode": "USD"
            },
            "quantity": 1
          },
          {
            "id": "sample_addon_offer_id_2",
            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
            "name": "BBQ Sauce",
            "price": {
              "currencyCode": "USD",
              "nanos": 500000000
            },
            "quantity": 1
          }
        ]
      }
    }
  ],
  "extension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
    "fulfillmentPreference": {
      "fulfillmentInfo": {
        "delivery": {
          "deliveryTimeIso8601": "P0M"
        }
      }
    },
    "location": {
      "coordinates": {
        "latitude": 37.788783,
        "longitude": -122.41384
      },
      "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
      "zipCode": "94043",
      "city": "Mountain View",
      "postalAddress": {
        "regionCode": "US",
        "postalCode": "94043",
        "administrativeArea": "CA",
        "locality": "Mountain View",
        "addressLines": [
          "1350 Charleston Road"
        ]
      },
      "notes": "Gate code is #111"
    }
  }
}

Esempio 2

{
  "merchant": {
    "id": "https://www.exampleprovider.com/merchant/id1",
    "name": "Falafel Bite"
  },
  "lineItems": [
    {
      "name": "Pita Chips",
      "type": "REGULAR",
      "id": "sample_item_offer_id_1",
      "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
      "quantity": 1,
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "2",
          "nanos": 750000000
        }
      },
      "subLines": [
        {
          "note": "Notes for this item."
        }
      ],
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
        "options": [
          {
            "id": "sample_addon_offer_id_1",
            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
            "name": "Honey Mustard",
            "price": {
              "currencyCode": "USD"
            },
            "quantity": 1
          },
          {
            "id": "sample_addon_offer_id_2",
            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
            "name": "BBQ Sauce",
            "price": {
              "currencyCode": "USD",
              "nanos": 500000000
            },
            "quantity": 1
          }
        ]
      }
    },
    {
      "name": "Chicken Shwarma Wrap",
      "type": "REGULAR",
      "id": "sample_item_offer_id_2",
      "offerId": "https://www.exampleprovider.com/menu/item/offer/id2",
      "quantity": 1,
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "8"
        }
      },
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
      }
    },
    {
      "name": "Greek Salad",
      "type": "REGULAR",
      "id": "sample_item_offer_id_3",
      "offerId": "https://www.exampleprovider.com/menu/item/offer/id3",
      "quantity": 1,
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "9",
          "nanos": 990000000
        }
      },
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
      }
    },
    {
      "name": "Prawns Biryani",
      "type": "REGULAR",
      "id": "sample_item_offer_id_4",
      "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
      "quantity": 1,
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "15",
          "nanos": 990000000
        }
      },
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
      }
    }
  ],
  "extension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
    "fulfillmentPreference": {
      "fulfillmentInfo": {
        "delivery": {
          "deliveryTimeIso8601": "P90M"
        }
      }
    },
    "location": {
      "coordinates": {
        "latitude": 37.788783,
        "longitude": -122.41384
      },
      "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
      "zipCode": "94043",
      "city": "Mountain View",
      "postalAddress": {
        "regionCode": "US",
        "postalCode": "94043",
        "administrativeArea": "CA",
        "locality": "Mountain View",
        "addressLines": [
          "1350 Charleston Road"
        ]
      },
      "notes": "Gate code is #111"
    }
  }
}

Contatto

Specifica i dettagli sulla persona che riceve l'ordine. È disponibile solo in AppResponse.

La tabella seguente elenca le proprietà per il tipo Contact:

Proprietà Tipo Descrizione
displayName Stringa

Il nome della persona che riceve l'ordine, come desideri che venga visualizzato. Utilizza questo campo se non sono specificati firstName e lastName.

Esempio: Lovefood Ordering

email Stringa

Indirizzo email della persona che riceve l'ordine.

Esempio: ilovefood@example.com

firstName Stringa

Nome della persona che riceve l'ordine.

Esempio: Lovefood

lastName Stringa

Cognome della persona che riceve l'ordine.

Esempio: Ordering

phoneNumber Stringa

Numero di telefono della persona che riceve l'ordine, incluso il codice paese.

Esempio: +16501234567

emailVerified Booleano

Indica se la persona che riceve l'ordine ha eseguito l'accesso con il proprio Account Google.

L'esempio seguente mostra un elemento Contact:

Esempio

{
  "displayName": "Lovefood Ordering",
  "email": "ilovefood@example.com",
  "phoneNumber": "+16501234567"
}

Messaggio personalizzato personalizzato

Contiene la OrderUpdate per la richiesta.

La tabella seguente elenca le proprietà per il tipo CustomPushMessage:

Proprietà Tipo Descrizione
orderUpdate OrderUpdate

Obbligatorio.

Informazioni aggiornate sull'ordine.

L'esempio seguente mostra un elemento CustomPushMessage:

Esempio

{
  "orderUpdate": {
    "actionOrderId": "sample_action_order_id",
    "orderState": {
      "state": "IN_TRANSIT",
      "label": "Order is on the way"
    },
    "inTransitInfo": {
      "updatedTime": "2017-07-17T12:00:00Z"
    },
    "updateTime": "2017-07-17T12:00:00Z",
    "orderManagementActions": [
      {
        "type": "CUSTOMER_SERVICE",
        "button": {
          "title": "Contact customer service",
          "openUrlAction": {
            "url": "mailto:support@example.com"
          }
        }
      },
      {
        "type": "EMAIL",
        "button": {
          "title": "Email restaurant",
          "openUrlAction": {
            "url": "mailto:person@example.com"
          }
        }
      },
      {
        "type": "CALL_RESTAURANT",
        "button": {
          "title": "Call restaurant",
          "openUrlAction": {
            "url": "tel:+16505554679"
          }
        }
      }
    ],
    "receipt": {
      "userVisibleOrderId": "userVisibleId1234"
    },
    "infoExtension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
      "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
    }
  }
}

Informazioni di pubblicazione

La tabella seguente elenca le proprietà per il tipo DeliveryInfo:

Proprietà Tipo Descrizione
deliveryTimeIso8601 Stringa

Tempi di consegna stimati, nel formato ISO 8601 timestamp: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" o formato durata: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Ad esempio, PT90M rappresenta una durata di 90 minuti. Il valore predefinito, "PT0M", indica che i tempi di consegna preferiti sono definiti il prima possibile. Riferimento: https://en.wikipedia.org/wiki/ISO_8601#Combinad_date_and_time_representations. Utilizzalo per aggiornare i tempi di consegna stimati durante la risposta al pagamento.

Esempio: PT90M

L'esempio seguente mostra un elemento DeliveryInfo:

Esempio

{
  "deliveryTimeIso8601": "PT90M"
}

Disclaimer

La tabella seguente elenca le proprietà per il tipo Disclaimer:

Proprietà Tipo Descrizione
predefinedMessage PredefinedMessage

Obbligatorio.

Per mostrare messaggi disclaimer predefiniti durante il pagamento.

feeAmount Money

Il partner addebiterà al commerciante una commissione pari a N per questo ordine.

feeAmountRange FeeAmountRange

Il partner addebiterà al ristorante una commissione da N a M per ordine.

feePercent Number

Il partner addebiterà al commerciante una commissione pari a N% per questo ordine.

feePercentRange FeePercentRange

Il partner addebiterà al commerciante una commissione compresa tra N% e M% per ordine.

L'esempio seguente mostra un elemento Disclaimer:

Esempio 1

{
  "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER"
}

Esempio 2

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE"
}

Esempio 3

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE",
  "feePercent": 25
}

Esempio 4

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE",
  "feePercentRange": {
    "minFeePercent": 20,
    "maxFeePercent": 30
  }
}

Esempio 5

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE",
  "feeAmount": {
    "currencyCode": "AUD",
    "units": 2,
    "nanos": 500000000
  }
}

Esempio 6

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE",
  "feeAmountRange": {
    "minFeeAmount": {
      "currencyCode": "AUD",
      "units": 2,
      "nanos": 500000000
    },
    "maxFeeAmount": {
      "currencyCode": "AUD",
      "units": 10,
      "nanos": 0
    }
  }
}

Errore

Il tipo Error ha i seguenti valori possibili:

  • CLOSED: il ristorante è chiuso al momento dell'ordine.
  • NO_CAPACITY: non è disponibile alcuna capacità di servizio (ad esempio un'interruzione temporanea dovuta a periodi di picco).
  • NO_COURIER_AVAILABLE: impossibile elaborare l'ordine a causa di un numero limitato di addetti alla consegna.
  • REQUIREMENTS_NOT_MET: i vincoli per l'accettazione dell'ordine non sono stati soddisfatti (ad es. dimensione minima del carrello).
  • UNAVAILABLE_SLOT: l'ordine non può essere elaborato all'ora di anticipo specificata da DeliveryInfo o PickupInfo.
  • OUT_OF_SERVICE_AREA: l'ordine non può essere consegnato all'indirizzo dell'utente.
  • PROMO_EXPIRED: impossibile applicare la promozione perché è scaduta.
  • PROMO_NOT_APPLICABLE: codice di errore generico che consente di individuare tutti i casi in cui non è possibile applicare il codice promozionale, se non si tratta di altri errori relativi al codice promozionale.
  • PROMO_NOT_RECOGNIZED: il codice coupon non è stato riconosciuto.
  • PROMO_ORDER_INELIGIBLE: l'ordine corrente non è idoneo per questo coupon.
  • PROMO_USER_INELIGIBLE: l'utente corrente non è idoneo per questo coupon.
  • AVAILABILITY_CHANGED: l'elemento non è più disponibile oppure non sono presenti elementi sufficienti per soddisfare la richiesta.
  • INCORRECT_PRICE: errori di prezzo nelle tariffe o in totale.
  • INVALID: un elemento pubblicitario, un'opzione di evasione o una promozione contiene dati non validi.
  • NOT_FOUND: impossibile trovare un elemento pubblicitario, un'opzione di evasione o una promozione.
  • PRICE_CHANGED: il prezzo di un articolo è cambiato.

IntervalloImportoImporto

La tabella seguente elenca le proprietà per il tipo FeeAmountRange:

Proprietà Tipo Descrizione
minFeeAmount Money

Limite inferiore dell'importo addebitato,

maxFeeAmount Money

Limite superiore dell'importo della tariffa addebitato.

TariffaPercentRange

La tabella seguente elenca le proprietà per il tipo FeePercentRange:

Proprietà Tipo Descrizione
minFeePercent Number

Limite inferiore della percentuale di commissione addebitata.

maxFeePercent Number

Limite superiore della percentuale di tariffa addebitata.

Estensione FoodCart

Contiene dettagli sull'utente, come le preferenze di evasione degli ordini.

La tabella seguente elenca le proprietà per il tipo FoodCartExtension:

Proprietà Tipo Descrizione
@type Costella

Tipo di questa estensione. Questo campo è sempre impostato su "type.googleapis.com/google.actions.v2.orders.FoodCartExtension".

Valore: type.googleapis.com/google.actions.v2.orders.FoodCartExtension

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 per l'evasione dell'utente.

location Location

In CheckoutRequestMessage, questo campo specifica l'indirizzo di consegna, necessario se l'ordine viene consegnato. Per gli ordini relativi a asporto o ritiro, questo campo non è incluso nel messaggio.

L'esempio seguente mostra un elemento FoodCartExtension:

Esempio 1

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
  "fulfillmentPreference": {
    "fulfillmentInfo": {
      "delivery": {
        "deliveryTimeIso8601": "P0M"
      }
    }
  },
  "location": {
    "coordinates": {
      "latitude": 37.788783,
      "longitude": -122.41384
    },
    "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
    "zipCode": "94043",
    "city": "Mountain View",
    "postalAddress": {
      "regionCode": "US",
      "postalCode": "94043",
      "administrativeArea": "CA",
      "locality": "Mountain View",
      "addressLines": [
        "1350 Charleston Road"
      ]
    },
    "notes": "Gate code is #111"
  }
}

Esempio 2

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
  "fulfillmentPreference": {
    "fulfillmentInfo": {
      "pickup": {
        "pickupTimeIso8601": "P0M"
      }
    }
  },
  "contact": {
    "displayName": "Lovefood Ordering",
    "email": "ilovefood@example.com",
    "phoneNumber": "+16501234567"
  }
}

Estensione Errore Alimentazione

Identifica uno o più errori che si sono verificati durante l'elaborazione di una richiesta. La tabella seguente descrive i campi del tipo FoodErrorExtension. Gli errori possono essere inviati in una CheckoutResponse.

La tabella seguente elenca le proprietà per il tipo FoodErrorExtension:

Proprietà Tipo Descrizione
@type Costella

Obbligatorio.

Tipo di questa estensione.

Valore: type.googleapis.com/google.actions.v2.orders.FoodErrorExtension

foodOrderErrors List<FoodOrderError&GT;

Obbligatorio.

Array di oggetti FoodOrderError che descrivono gli errori che si sono verificati. È consigliato un solo errore per carrello o articolo.

Non deve avere meno di 1 elemento.

correctedProposedOrder ProposedOrder

Obbligatorio quando foodOrderErrors.error = "UNAVAILABLE_SLOT", "PROMO_EXPIRED", "PROMO_NOT_APPLICABLE", "PROMO_NOT_RECOGNIZED", "PROMO_ORDER_INELIGIBLE", "PROMO_USER_INELIGIBLE", "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "INVALID", "NOT_FOUND", or "PRICE_CHANGED".

Un nuovo proposta di ordine con correzioni. Restituisce questo oggetto se ci sono errori recuperabili nella proposta originale proposta. Ad esempio, una modifica del prezzo di uno o più elementi pubblicitari nel carrello è un errore recuperabile. Gli errori recuperabili con un ProposedOrder valido vengono portati alla fase di conferma, invece di richiedere all'utente di esaminare il carrello.

paymentOptions PaymentOptions

Obbligatorio quando foodOrderErrors.error = "UNAVAILABLE_SLOT", "PROMO_EXPIRED", "PROMO_NOT_APPLICABLE", "PROMO_NOT_RECOGNIZED", "PROMO_ORDER_INELIGIBLE", "PROMO_USER_INELIGIBLE", "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "INVALID", "NOT_FOUND", or "PRICE_CHANGED".

Opzioni di pagamento predefinite selezionate per l'utente.

additionalPaymentOptions List<PaymentOptions&GT;

Opzioni di pagamento alternative disponibili per l'utente.

L'esempio seguente mostra un elemento FoodErrorExtension:

Esempio

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension",
  "foodOrderErrors": [
    {
      "error": "PRICE_CHANGED",
      "id": "sample_item_offer_id_1",
      "description": "The price has changed.",
      "updatedPrice": {
        "currencyCode": "USD",
        "units": "2",
        "nanos": 750000000
      }
    },
    {
      "error": "PRICE_CHANGED",
      "id": "sample_item_offer_id_2",
      "description": "The price has changed.",
      "updatedPrice": {
        "currencyCode": "USD",
        "units": "8"
      }
    }
  ],
  "correctedProposedOrder": {
    "id": "sample_corrected_proposed_order_id_1",
    "otherItems": [
      {
        "name": "New customer discount",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "-5",
            "nanos": -500000000
          }
        },
        "type": "DISCOUNT"
      },
      {
        "name": "Delivery fee",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "3",
            "nanos": 500000000
          }
        },
        "type": "DELIVERY"
      },
      {
        "name": "Tax",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "1",
            "nanos": 500000000
          }
        },
        "type": "TAX"
      }
    ],
    "cart": {
      "merchant": {
        "id": "https://www.exampleprovider.com/merchant/id1",
        "name": "Falafel Bite"
      },
      "lineItems": [
        {
          "name": "Pita Chips",
          "type": "REGULAR",
          "id": "sample_item_offer_id_1",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "2",
              "nanos": 750000000
            }
          },
          "subLines": [
            {
              "note": "Notes for this item."
            }
          ],
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
            "options": [
              {
                "id": "sample_addon_offer_id_1",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                "name": "Honey Mustard",
                "price": {
                  "currencyCode": "USD"
                },
                "quantity": 1
              },
              {
                "id": "sample_addon_offer_id_2",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                "name": "BBQ Sauce",
                "price": {
                  "currencyCode": "USD",
                  "nanos": 500000000
                },
                "quantity": 1
              }
            ]
          }
        },
        {
          "name": "Chicken Shwarma Wrap",
          "type": "REGULAR",
          "id": "sample_item_offer_id_2",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id2",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "8"
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        },
        {
          "name": "Greek Salad",
          "type": "REGULAR",
          "id": "sample_item_offer_id_3",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id3",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "9",
              "nanos": 990000000
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        },
        {
          "name": "Prawns Biryani",
          "type": "REGULAR",
          "id": "sample_item_offer_id_4",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "15",
              "nanos": 990000000
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        }
      ],
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
        "fulfillmentPreference": {
          "fulfillmentInfo": {
            "delivery": {
              "deliveryTimeIso8601": "P90M"
            }
          }
        },
        "location": {
          "coordinates": {
            "latitude": 37.788783,
            "longitude": -122.41384
          },
          "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
          "zipCode": "94043",
          "city": "Mountain View",
          "postalAddress": {
            "regionCode": "US",
            "postalCode": "94043",
            "administrativeArea": "CA",
            "locality": "Mountain View",
            "addressLines": [
              "1350 Charleston Road"
            ]
          },
          "notes": "Gate code is #111"
        }
      }
    },
    "totalPrice": {
      "type": "ESTIMATE",
      "amount": {
        "currencyCode": "USD",
        "units": "36",
        "nanos": 730000000
      }
    },
    "extension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
      "availableFulfillmentOptions": [
        {
          "fulfillmentInfo": {
            "delivery": {
              "deliveryTimeIso8601": "P90M"
            }
          },
          "expiresAt": "2017-07-17T12:30:00Z"
        }
      ]
    }
  },
  "paymentOptions": {
    "googleProvidedOptions": {
      "tokenizationParameters": {
        "tokenizationType": "PAYMENT_GATEWAY",
        "parameters": {
          "gateway": "stripe",
          "stripe:publishableKey": "pk_live_stripe_client_key",
          "stripe:version": "2017-04-06"
        }
      },
      "supportedCardNetworks": [
        "AMEX",
        "DISCOVER",
        "MASTERCARD",
        "JCB",
        "VISA"
      ],
      "prepaidCardDisallowed": true
    }
  }
}

Estensione elemento alimentare

Definisce i componenti aggiuntivi per gli alimenti.

La tabella seguente elenca le proprietà per il tipo FoodItemExtension:

Proprietà Tipo Descrizione
@type Costella

Obbligatorio.

Tipo di questa estensione. Questo campo è sempre impostato su "type.googleapis.com/google.actions.v2.orders.foodItemExtension".

Valore: type.googleapis.com/google.actions.v2.orders.FoodItemExtension

options List<FoodItemOption&GT;

Un'opzione può essere un componente aggiuntivo o un gruppo di componenti aggiuntivi contenente un insieme di componenti aggiuntivi.

L'esempio seguente mostra un elemento FoodItemExtension:

Esempio

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
  "options": [
    {
      "id": "sample_addon_offer_id_1",
      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
      "name": "Honey Mustard",
      "price": {
        "currencyCode": "USD"
      },
      "quantity": 1
    },
    {
      "id": "sample_addon_offer_id_2",
      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
      "name": "BBQ Sauce",
      "price": {
        "currencyCode": "USD",
        "nanos": 500000000
      },
      "quantity": 1,
      "subOptions": [
        {
          "id": "10239138",
          "offerId": "912391723",
          "name": "Fries",
          "price": {
            "currencyCode": "USD",
            "units": "2",
            "nanos": 230000000
          },
          "quantity": 1
        }
      ]
    }
  ]
}

Opzione Cibo

La tabella seguente elenca le proprietà per il tipo FoodItemOption:

Proprietà Tipo Descrizione
id Stringa

ID univoco assegnato da Google. Quando invii un valore FoodOrderError o AsyncOrderUpdateRequest, utilizza questo campo per distinguere i casi in cui un carrello contiene più articoli con lo stesso ID offerta.

Esempio: 39231093

offerId Stringa

L'ID offerta dell'articolo.

Esempio: 912835081

name Stringa

Il nome dell'opzione.

Esempio: Honey Mustard

price Money
note Stringa

Nota sull'opzione.

quantity Number

Per le opzioni che sono elementi, il numero di elementi.

Esempio: 3

subOptions List<FoodItemOption&GT;

Le eventuali opzioni secondarie per l'opzione.

Esempio: [ { "id": "71283712", "offerId": "51209121", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "units": "3", "nanos": 780000000 }, "quantity": 2 }, { "id": "102941024", "offerId": "12084102", "name": "Ketchup", "price": { "currencyCode": "USD", "units": "2", "nanos": 980000000 }, "quantity": 6 } ]

L'esempio seguente mostra un elemento FoodItemOption:

Esempio 1

{
  "id": "10293231",
  "offerId": "1918491",
  "name": "Honey Mustard",
  "price": {
    "currencyCode": "USD",
    "units": "1",
    "nanos": 250000000
  },
  "quantity": 5
}

Esempio 2

{
  "id": "123166552",
  "offerId": "912849184",
  "name": "Make It A Meal",
  "price": {
    "currencyCode": "USD",
    "units": "3",
    "nanos": 730000000
  },
  "quantity": 1,
  "subOptions": [
    {
      "id": "10239138",
      "offerId": "912391723",
      "name": "Fries",
      "price": {
        "currencyCode": "USD",
        "units": "2",
        "nanos": 230000000
      },
      "quantity": 1
    },
    {
      "id": "57159183",
      "offerId": "81837123",
      "name": "Drink",
      "price": {
        "currencyCode": "USD",
        "units": "3",
        "nanos": 130000000
      },
      "quantity": 1
    }
  ]
}

ErroreOrdineCibo

Contiene dettagli sugli errori in una CheckoutResponse.

La tabella seguente elenca le proprietà per il tipo FoodOrderError:

Proprietà Tipo Descrizione
error Error

Obbligatorio.

id Stringa

Obbligatorio quando error = "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "PRICE_CHANGED", "INVALID", or "NOT_FOUND".

Questo campo è obbligatorio per gli errori a livello di articolo. È l'elemento LineItem.id assegnato da Google per le voci di menu o FoodItemOption.id per i componenti aggiuntivi.

description Stringa

Descrizione dell'errore. Questa descrizione è per il logging interno e non è visibile agli utenti.

updatedPrice Money

Obbligatorio quando error = "PRICE_CHANGED".

Nuovo prezzo di un articolo che ha causato l'errore. Questa operazione è necessaria solo quando l'errore è "PRICE_CHANGED".

availableQuantity Intero

Obbligatorio quando error = "INVALID", or "NOT_FOUND".

Nuova quantità disponibile dell'articolo che ha causato l'errore. Questa operazione è necessaria solo quando l'errore è "INVALID" o "NOT_FOUND". Il valore deve essere zero per "INVALID" e "NOT_FOUND".

L'esempio seguente mostra un elemento FoodOrderError:

Esempio 1

{
  "error": "CLOSED",
  "description": "This store is currently reachable. Please try again later."
}

Esempio 2

{
  "error": "PRICE_CHANGED",
  "id": "french_fries",
  "description": "The price has changed.",
  "updatedPrice": {
    "currencyCode": "USD",
    "units": "2",
    "nanos": 750000000
  }
}

Estensione ordine cibo

Contiene informazioni sull'evasione dell'ordine.

La tabella seguente elenca le proprietà per il tipo FoodOrderExtension:

Proprietà Tipo Descrizione
@type Costella

Tipo di questa estensione. Questo campo è sempre impostato su "type.googleapis.com/google.actions.v2.orders.foodOrderExtension".

Valore: type.googleapis.com/google.actions.v2.orders.FoodOrderExtension

availableFulfillmentOptions List<FulfillmentOption&GT;

Rappresenta le opzioni disponibili per l'evasione dell'ordine.

optinForRemarketing Booleano

Richiesta all'utente di attivare i canali di marketing. Per impostazione predefinita, non è possibile inviare contenuti di marketing senza il consenso dell'utente. Se optinForRemarketing è vero, puoi iscriverti all'utente. Se optinForRemarketing è falso o non è presente, devi mantenere lo stato di abbonamento nel sistema così com'è. Gli utenti non possono disattivare il servizio tramite Google, ma solo tramite una funzione di annullamento dell'iscrizione fornita nei tuoi canali di marketing. Il flag è presente solo in SendOrderRequestMessage.

L'esempio seguente mostra un elemento FoodOrderExtension:

Esempio 1

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
  "availableFulfillmentOptions": [
    {
      "fulfillmentInfo": {
        "delivery": {
          "deliveryTimeIso8601": "P0M"
        }
      },
      "expiresAt": "2017-07-17T12:30:00Z"
    }
  ]
}

Esempio 2

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
  "availableFulfillmentOptions": [
    {
      "fulfillmentInfo": {
        "pickup": {
          "pickupTimeIso8601": "P0M"
        }
      },
      "expiresAt": "2020-08-20T11:41:00Z"
    }
  ],
  "optinForRemarketing": true
}

Opzione di evasione ordine

Puoi utilizzare un oggetto FulfillmentOption nei seguenti modi:
  • In Checkout AppRequest e Submit AppRequest, Cart.extension.fulfillmentPreference: archivia 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 è supportata una sola opzione). Specifica l'opzione predefinita LineItem come ProposedOrder.otherItems. offerId di FulfillmentOption deve corrispondere all'ID di LineItem specificato in ProposedOrder.otherItems.

La tabella seguente elenca le proprietà per il tipo FulfillmentOption:

Proprietà Tipo Descrizione
offerId Stringa

Identificatore univoco per questa opzione di evasione degli ordini, se presente.

fulfillmentInfo FulfillmentOptionInfo

Obbligatorio.

expiresAt Timestamp ISO

Data e ora di scadenza dell'opzione di evasione degli ordini.

price Money

Costo di questa opzione.

L'esempio seguente mostra un elemento FulfillmentOption:

Esempio

{
  "offerId": "offer5",
  "fulfillmentInfo": {
    "pickup": {
      "pickupTimeIso8601": "P0M"
    }
  },
  "expiresAt": "2019-05-02T00:00:00-07:00",
  "price": {
    "currencyCode": "USD",
    "units": "5",
    "nanos": 230000000
  }
}

InformazioniFulfillmentOption

Definisce le informazioni relative a FulfillmentInfo.

La tabella seguente elenca le proprietà per il tipo FulfillmentOptionInfo:

Proprietà Tipo Descrizione
È obbligatorio specificare 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 con ritiro.

Immagine

La tabella seguente elenca le proprietà per il tipo Image:

Proprietà Tipo Descrizione
sourceUrl Stringa

Obbligatorio.

URL dell'immagine. Le dimensioni minime dell'immagine devono essere 72 x 72 pixel. Per risultati ottimali, utilizza un'immagine di almeno 216 x 216 pixel. L'immagine deve essere inferiore a 6 MB e a 64 megapixel.

Elemento pubblicitario

Definisce i contenuti di un carrello (Cart.lineItems) o i costi aggiuntivi per un ordine (ProposedOrder.otherItems).

La tabella seguente elenca le proprietà per il tipo LineItem:

Proprietà Tipo Descrizione
id Stringa

Obbligatorio quando type = "REGULAR".

Per un elemento pubblicitario in un carrello (ProposedOrder.cart.lineitems[0].id), si tratta dell'ID univoco creato da Google durante la creazione dell'ordine. Per un elemento pubblicitario in un ordine Proposed (ProposedOrder.otheritems[0].id), che viene utilizzato per aggiungere elementi quali spese di spedizione e tasse, 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 diversi condimenti). 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 è stato rifiutato, utilizza questo ID come disambiguatore. In altre parole, se una delle pizze viene rifiutata perché manca un determinato condimento, l'ID aiuta Google a determinare l'articolo nell'ordine a cui fai riferimento. Questo campo è obbligatorio ad eccezione di otherItem.

name Stringa

Obbligatorio.

Nome dell'elemento pubblicitario. Si tratta di una stringa visibile all'utente e, quando possibile, deve essere maiuscola (come "Tariffa di consegna", "Tasse di servizio", "Tasse"). Questo campo viene troncato a 100 caratteri per gli utenti.

type LineItemType

Obbligatorio.

quantity Intero

Obbligatorio quando type = "REGULAR".

Numero di articoli inclusi. Non applicabile a ProposedOrder.otherItem.

description Stringa

Descrizione dell'articolo.

price Price

Obbligatorio.

Il prezzo dell'articolo o degli articoli. Questo valore rispecchia il prezzo totale di tutti i beni o servizi dell'elemento pubblicitario (in altre parole, aggiungi il costo di eventuali componenti aggiuntivi e moltiplica per la quantità). Ad esempio: se un articolo da 10 $ha una quantità di 3, il prezzo sarà 30 $. Per una pizza con un prezzo base di 5 $e un componente aggiuntivo di 1 $, il prezzo sarebbe 6 $. Per due pizze (quantità = 2) con un prezzo base di 5 € e ciascuna con un costo aggiuntivo di 1 €, il prezzo è 12 €. Ogni elemento pubblicitario dovrebbe avere un prezzo, anche se il prezzo è "0". Quando il tipo è DISCOUNT, specifica il valore come negativo (ad esempio, "-2").

subLines List<SublineNote&GT;

Facoltativo e valido solo se il tipo è "REGULAR". In questo campo, nella richiesta di pagamento e nell'invio dell'ordine, potrebbe essere inviata una nota dell'utente specifica dell'articolo. Assicurati che il commerciante riceva la nota quando viene fornito. Si trova nella richiesta come subLines[0].note, che è l'unico valore fornito in questo campo quando è presente in una richiesta.

Non deve avere più di 1 elemento.

offerId Stringa

Obbligatorio quando type = "REGULAR".

L'ID offerta della voce di menu della voce. Non applicabile a ProposedOrder.otherItem.

extension FoodItemExtension

Definisce i componenti aggiuntivi per gli alimenti.

L'esempio seguente mostra un elemento LineItem:

Esempio 1

{
  "name": "New customer discount",
  "price": {
    "type": "ESTIMATE",
    "amount": {
      "currencyCode": "USD",
      "units": "-5",
      "nanos": -500000000
    }
  },
  "type": "DISCOUNT"
}

Esempio 2

{
  "name": "Pita Chips",
  "type": "REGULAR",
  "id": "sample_item_offer_id_1",
  "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
  "quantity": 1,
  "price": {
    "type": "ESTIMATE",
    "amount": {
      "currencyCode": "USD",
      "units": "2",
      "nanos": 750000000
    }
  },
  "subLines": [
    {
      "note": "Notes for this item."
    }
  ],
  "extension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
    "options": [
      {
        "id": "sample_addon_offer_id_1",
        "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
        "name": "Honey Mustard",
        "price": {
          "currencyCode": "USD"
        },
        "quantity": 1
      },
      {
        "id": "sample_addon_offer_id_2",
        "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
        "name": "BBQ Sauce",
        "price": {
          "currencyCode": "USD",
          "nanos": 500000000
        },
        "quantity": 1
      }
    ]
  }
}

TipoElementoPubblicitario

Il tipo LineItemType ha i seguenti valori possibili:

  • REGULAR: elemento pubblicitario di beni. Applicabile a Cart.lineItem.
  • TAX: voce fiscale. Applicabile a ProposedOrder.otherItem.
  • DISCOUNT: elemento pubblicitario scontato. Tieni presente che il prezzo deve essere negativo. Applicabile a ProposedOrder.otherItem.
  • GRATUITY: elemento pubblicitario di gravità. Generalmente riservato al campo SendOrderRequestMessage per un suggerimento selezionato dall'utente. Applicabile a ProposedOrder.otherItem.
  • DELIVERY: elemento pubblicitario da pubblicare. Applicabile a ProposedOrder.otherItem.
  • SUBTOTAL: elemento pubblicitario parziale. Applicabile a ProposedOrder.otherItem.
  • FEE: elemento pubblicitario aggiuntivo non coperto dagli altri tipi. Applicabile a ProposedOrder.otherItem.

Località

Specifica un indirizzo per l'ordinazione di cibo. Il tipo Location viene utilizzato in un Cart per indicare la destinazione di un solo ordine di consegna. La posizione finalizzata è presente anche in TransactionDecisionValue se l'utente effettua l'ordine. Per gli ordini che specificano il ritiro, una località non è inclusa (neanche quella vuota).

La tabella seguente elenca le proprietà per il tipo Location:

Proprietà Tipo Descrizione
coordinates Coordinates
formattedAddress Stringa

Indirizzo visualizzato della località.

Esempio: 1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States

postalAddress PostalAddress
zipCode Stringa

Esempio: 90210

city Stringa

Il nome della città.

Esempio: Los Angeles

notes Stringa

Note sulla posizione, ad esempio codici di accesso. Deve contenere massimo 500 caratteri.

Esempio: Gate code is #111

L'esempio seguente mostra un elemento Location:

Esempio

{
  "coordinates": {
    "latitude": 37.788783,
    "longitude": -122.41384
  },
  "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
  "zipCode": "94043",
  "city": "Mountain View",
  "postalAddress": {
    "regionCode": "US",
    "postalCode": "94043",
    "administrativeArea": "CA",
    "locality": "Mountain View",
    "addressLines": [
      "1350 Charleston Road"
    ]
  },
  "notes": "Gate code is #111"
}

Merchant Center

La tabella seguente elenca le proprietà per il tipo Merchant:

Proprietà Tipo Descrizione
id Stringa

ID del commerciante. Se specificato, crea una corrispondenza con Ristoranti.@id nel feed Ristorante.

Esempio: https://www.exampleprovider.com/merchant/id1

name Stringa

Obbligatorio.

Nome visibile all'utente del commerciante.

Esempio: Falafel Bite

L'esempio seguente mostra un elemento Merchant:

Esempio

{
  "id": "https://www.exampleprovider.com/merchant/id1",
  "name": "Falafel Bite"
}

Importo

La tabella seguente elenca le proprietà per il tipo Money:

Proprietà Tipo Descrizione
currencyCode Stringa

Obbligatorio.

Un codice valuta di tre lettere nel formato ISO 4217.

Esempio: USD

units Stringa

L'unità intera dell'importo. Ad esempio, securrencyCode è "USD", quindi "1" unità è un dollaro USA.

Esempio: 36

nanos Intero

Numero di unità di nano (10^-9) della quantità. Il valore deve essere compreso tra -999.999.999 e +999.999.999 inclusi. Utilizza le regole seguenti: se le unità sono positive, i nano devono essere positivi o pari a zero. Se le unità sono zero, i nano possono essere positivi, zero o negativi. Se le unità sono negative, i nano devono essere zero o zero. Ad esempio $-1,75 è rappresentato come unità = -1 e nanos = -750.000.000.

Esempio: 730000000

L'esempio seguente mostra un elemento Money:

Esempio 1

{
  "currencyCode": "USD",
  "units": "36",
  "nanos": 730000000
}

Esempio 2

{
  "currencyCode": "EUR",
  "units": "10"
}

Ordina

Contiene l'ordine finale, inclusi tasse, commissioni, spese di spedizione e dati di pagamento. Questo oggetto viene ricevuto dall'azione in un Submit AppRequest.

La tabella seguente elenca le proprietà per il tipo Order:

Proprietà Tipo Descrizione
finalOrder ProposedOrder

Obbligatorio.

L'ordine proposto che ha causato l'ordine.

googleOrderId Stringa

Obbligatorio.

ID ordine assegnato da Google. Questo ID deve essere stabile per l'intero ciclo di vita di un ordine. Questo ID non è visibile all'utente finale.

orderDate Timestamp ISO

Obbligatorio.

Data e ora in cui è stato creato l'ordine.

paymentInfo PaymentInfo

Obbligatorio.

I dati di pagamento corrispondenti a questo ordine.

L'esempio seguente mostra un elemento Order:

Esempio

{
  "finalOrder": {
    "cart": {
      "notes": "Guest prefers their food to be hot when it is delivered.",
      "merchant": {
        "id": "https://www.exampleprovider.com/merchant/id1",
        "name": "Cucina Venti"
      },
      "lineItems": [
        {
          "name": "Sizzling Prawns Dinner",
          "type": "REGULAR",
          "id": "sample_item_offer_id_1",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "16",
              "nanos": 750000000
            }
          },
          "subLines": [
            {
              "note": "Notes for this item."
            }
          ],
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
            "options": [
              {
                "id": "sample_addon_offer_id_1",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                "name": "Honey Mustard",
                "price": {
                  "currencyCode": "USD"
                },
                "quantity": 1
              },
              {
                "id": "sample_addon_offer_id_2",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                "name": "BBQ Sauce",
                "price": {
                  "currencyCode": "USD",
                  "nanos": 500000000
                },
                "quantity": 1
              }
            ]
          }
        }
      ],
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
        "fulfillmentPreference": {
          "fulfillmentInfo": {
            "pickup": {
              "pickupTimeIso8601": "P0M"
            }
          }
        },
        "contact": {
          "displayName": "Lovefood Ordering",
          "email": "ilovefood@example.com",
          "phoneNumber": "+16501234567"
        }
      }
    },
    "otherItems": [
      {
        "name": "Service fee",
        "type": "FEE",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "3",
            "nanos": 500000000
          }
        }
      },
      {
        "name": "Tax",
        "type": "TAX",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "1",
            "nanos": 370000000
          }
        }
      },
      {
        "name": "Tip",
        "type": "GRATUITY",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "2",
            "nanos": 590000000
          }
        }
      }
    ],
    "totalPrice": {
      "type": "ESTIMATE",
      "amount": {
        "currencyCode": "USD",
        "units": "23",
        "nanos": 710000000
      }
    },
    "id": "sample_final_order_id",
    "extension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
      "availableFulfillmentOptions": [
        {
          "fulfillmentInfo": {
            "pickup": {
              "pickupTimeIso8601": "P0M"
            }
          },
          "expiresAt": "2017-07-17T12:30:00Z"
        }
      ],
      "optinForRemarketing": true
    }
  },
  "googleOrderId": "sample_google_order_id",
  "orderDate": "2017-07-17T12:00:00Z",
  "paymentInfo": {
    "displayName": "Visa\u2006****\u20061111",
    "googleProvidedPaymentInstrument": {
      "instrumentToken": "abcd"
    },
    "paymentType": "PAYMENT_CARD"
  }
}

AggiornamentoOrdine

La tabella seguente descrive i campi del tipo OrderUpdate inclusi in AppResponse.

La tabella seguente elenca le proprietà per il tipo OrderUpdate:

Proprietà Tipo Descrizione
actionOrderId Stringa

Obbligatorio.

ID univoco dell'ordine nel sistema dell'integratore utilizzato per identificare l'ordine per cui viene inviato l'aggiornamento. Se ricevuta.user_visible_order_id non viene fornito almeno una volta in OrderUpdate per un ordine "CREATED", questo ID sarà l'ID visibile utente inserito nella scheda dell'ordine di Google.

orderState OrderState

Obbligatorio.

Il nuovo stato dell'ordine.

lineItemUpdates Map<String, LineItemUpdate>
updateTime Timestamp ISO

Obbligatorio.

L'ora in cui è stato aggiornato l'ordine.

orderManagementActions List<OrderManagementAction&GT;

Le azioni successive all'ordine, come contattare l'assistenza e visualizzare i dettagli dell'ordine.

Non deve contenere meno di 1 elemento e non più di 6 elementi.

rejectionInfo RejectionInfo

Obbligatorio quando orderState.state = "REJECTED".

cancellationInfo CancellationInfo

Obbligatorio quando orderState.state = "CANCELLED".

inTransitInfo InTransitInfo

Questo campo è obsoleto.

fulfillmentInfo FulfillmentInfo

Questo campo è obsoleto.

receipt Receipt

Obbligatorio quando orderState.state = "CONFIRMED", "IN_PREPARATION", or "READY_FOR_PICKUP".

Fornisci l'ID ordine visibile all'utente nella ricevuta.

totalPrice Price

Prezzo totale dell'ordine.

infoExtension FoodOrderUpdateExtension

Definisce più dettagli sull'aggiornamento dell'ordine, ad esempio l'intervallo per la consegna stimata o il ritiro.

L'esempio seguente mostra un elemento OrderUpdate:

Esempio

{
  "actionOrderId": "sample_action_order_id",
  "orderState": {
    "state": "CONFIRMED",
    "label": "Provider confirmed"
  },
  "totalPrice": {
    "type": "ESTIMATE",
    "amount": {
      "currencyCode": "USD",
      "units": "41",
      "nanos": 600000000
    }
  },
  "lineItemUpdates": {
    "sample_item_id_1": {
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "3",
          "nanos": 500000000
        }
      },
      "reason": "This item has an updated price."
    }
  },
  "receipt": {
    "userVisibleOrderId": "userVisibleId1234"
  },
  "updateTime": "2017-07-17T12:00:00Z",
  "orderManagementActions": [
    {
      "type": "CUSTOMER_SERVICE",
      "button": {
        "title": "Contact customer service",
        "openUrlAction": {
          "url": "mailto:support@example.com"
        }
      }
    },
    {
      "type": "EMAIL",
      "button": {
        "title": "Email restaurant",
        "openUrlAction": {
          "url": "mailto:person@example.com"
        }
      }
    },
    {
      "type": "CALL_RESTAURANT",
      "button": {
        "title": "Call restaurant",
        "openUrlAction": {
          "url": "tel:+16505554679"
        }
      }
    }
  ],
  "infoExtension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
    "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
  }
}

Informazioni sul ritiro

La tabella seguente elenca le proprietà per il tipo PickupInfo:

Proprietà Tipo Descrizione
pickupTimeIso8601 Stringa

Tempo di ritiro stimato, nel formato ISO 8601: timestamp: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" o 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#Combinad_date_and_time_representations. Utilizzalo per aggiornare il tempo di ritiro stimato durante la risposta al pagamento.

Esempio: PT90M

L'esempio seguente mostra un elemento PickupInfo:

Esempio

{
  "pickupTimeIso8601": "PT90M"
}

PostalAddress

La tabella seguente elenca le proprietà per il tipo PostalAddress:

Proprietà Tipo Descrizione
regionCode Stringa

Obbligatorio.

Un codice paese di due lettere.

Esempio: US

postalCode Stringa

Il codice postale.

Esempio: 94043

administrativeArea Stringa

Suddivisione amministrativa di grado più alto usata per l'indirizzo postale di un paese o di un'area geografica. ad esempio uno stato, una provincia, un oblast o una prefettura.

Esempio: CA

locality Stringa

La città in cui si trova questo luogo. Nelle aree geografiche in cui le località non sono definite correttamente o non rientrano in questa struttura, non specificare la località e utilizza invece il campo addressLines.

Esempio: Mountain View

addressLines List<String&GT;

Una o più righe che puoi utilizzare per specificare l'indirizzo fisico. Questo campo non deve essere modificato perché può contenere località non chiare.

Esempio: [ "1350 Charleston Road" ]

recipients List<String&GT;

Elenco dei destinatari di un ordine. Questo campo è disponibile solo in billingAddress.

L'esempio seguente mostra un elemento PostalAddress:

Esempio

{
  "regionCode": "US",
  "postalCode": "94043",
  "administrativeArea": "CA",
  "locality": "Mountain View",
  "addressLines": [
    "1350 Charleston Road"
  ]
}

Prezzo

La tabella seguente elenca le proprietà per il tipo Price:

Proprietà Tipo Descrizione
type Enum [ "ESTIMATE", "ACTUAL" ]

Obbligatorio.

Il codice coupon promozionale.

amount Money

Obbligatorio.

Promotion

La tabella seguente elenca le proprietà per il tipo Promotion:

Proprietà Tipo Descrizione
coupon Stringa

Obbligatorio.

Il codice coupon promozionale.

Ordine proposto

La tabella seguente elenca le proprietà per il tipo ProposedOrder:

Proprietà Tipo Descrizione
id Stringa

ID facoltativo per l'ordine proposto.

cart Cart

Obbligatorio.

Articoli dell'utente.

otherItems List<LineItem&GT;

Elementi aggiunti dal fornitore, ad esempio spese di spedizione, altre spese e tasse. otheritems possono anche contenere mance e/o sconti aggiunti dall'utente.

Non devono includere 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 List<Disclaimer&GT;

Corrisponde ai disclaimer che verranno visualizzati nell'interfaccia utente prima che l'ordine venga effettuato.

L'esempio seguente mostra un elemento ProposedOrder:

Esempio

{
  "id": "sample_proposed_order_id_1",
  "otherItems": [
    {
      "name": "New customer discount",
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "-5",
          "nanos": -500000000
        }
      },
      "type": "DISCOUNT"
    },
    {
      "name": "Delivery fee",
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "3",
          "nanos": 500000000
        }
      },
      "type": "DELIVERY"
    },
    {
      "name": "Tax",
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "1",
          "nanos": 500000000
        }
      },
      "type": "TAX"
    }
  ],
  "cart": {
    "merchant": {
      "id": "https://www.exampleprovider.com/merchant/id1",
      "name": "Falafel Bite"
    },
    "lineItems": [
      {
        "name": "Pita Chips",
        "type": "REGULAR",
        "id": "sample_item_offer_id_1",
        "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
        "quantity": 1,
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "2",
            "nanos": 750000000
          }
        },
        "subLines": [
          {
            "note": "Notes for this item."
          }
        ],
        "extension": {
          "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
          "options": [
            {
              "id": "sample_addon_offer_id_1",
              "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
              "name": "Honey Mustard",
              "price": {
                "currencyCode": "USD"
              },
              "quantity": 1
            },
            {
              "id": "sample_addon_offer_id_2",
              "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
              "name": "BBQ Sauce",
              "price": {
                "currencyCode": "USD",
                "nanos": 500000000
              },
              "quantity": 1
            }
          ]
        }
      },
      {
        "name": "Chicken Shwarma Wrap",
        "type": "REGULAR",
        "id": "sample_item_offer_id_2",
        "offerId": "https://www.exampleprovider.com/menu/item/offer/id2",
        "quantity": 1,
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "8"
          }
        },
        "extension": {
          "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
        }
      },
      {
        "name": "Greek Salad",
        "type": "REGULAR",
        "id": "sample_item_offer_id_3",
        "offerId": "https://www.exampleprovider.com/menu/item/offer/id3",
        "quantity": 1,
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "9",
            "nanos": 990000000
          }
        },
        "extension": {
          "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
        }
      },
      {
        "name": "Prawns Biryani",
        "type": "REGULAR",
        "id": "sample_item_offer_id_4",
        "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
        "quantity": 1,
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "15",
            "nanos": 990000000
          }
        },
        "extension": {
          "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
        }
      }
    ],
    "extension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
      "fulfillmentPreference": {
        "fulfillmentInfo": {
          "delivery": {
            "deliveryTimeIso8601": "P90M"
          }
        }
      },
      "location": {
        "coordinates": {
          "latitude": 37.788783,
          "longitude": -122.41384
        },
        "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
        "zipCode": "94043",
        "city": "Mountain View",
        "postalAddress": {
          "regionCode": "US",
          "postalCode": "94043",
          "administrativeArea": "CA",
          "locality": "Mountain View",
          "addressLines": [
            "1350 Charleston Road"
          ]
        },
        "notes": "Gate code is #111"
      }
    }
  },
  "totalPrice": {
    "type": "ESTIMATE",
    "amount": {
      "currencyCode": "USD",
      "units": "36",
      "nanos": 730000000
    }
  },
  "extension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
    "availableFulfillmentOptions": [
      {
        "fulfillmentInfo": {
          "delivery": {
            "deliveryTimeIso8601": "P0M"
          }
        },
        "expiresAt": "2017-07-17T12:30:00Z"
      }
    ]
  }
}

SublineNote

La tabella seguente elenca le proprietà per il tipo SublineNote:

Proprietà Tipo Descrizione
note Stringa

Obbligatorio.

Timestamp

La data e l'ora, nel seguente formato: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"

ValoreDecisioneTransazione

Contiene Order.

La tabella seguente elenca le proprietà per il tipo TransactionDecisionValue:

Proprietà Tipo Descrizione
order Order

Obbligatorio.

Ordine da effettuare con dettagli sul pagamento.

L'esempio seguente mostra un elemento TransactionDecisionValue:

Esempio

{
  "order": {
    "finalOrder": {
      "cart": {
        "notes": "Guest prefers their food to be hot when it is delivered.",
        "merchant": {
          "id": "https://www.exampleprovider.com/merchant/id1",
          "name": "Cucina Venti"
        },
        "lineItems": [
          {
            "name": "Sizzling Prawns Dinner",
            "type": "REGULAR",
            "id": "sample_item_offer_id_1",
            "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
            "quantity": 1,
            "price": {
              "type": "ESTIMATE",
              "amount": {
                "currencyCode": "USD",
                "units": "16",
                "nanos": 750000000
              }
            },
            "subLines": [
              {
                "note": "Notes for this item."
              }
            ],
            "extension": {
              "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
              "options": [
                {
                  "id": "sample_addon_offer_id_1",
                  "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                  "name": "Honey Mustard",
                  "price": {
                    "currencyCode": "USD"
                  },
                  "quantity": 1
                },
                {
                  "id": "sample_addon_offer_id_2",
                  "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                  "name": "BBQ Sauce",
                  "price": {
                    "currencyCode": "USD",
                    "nanos": 500000000
                  },
                  "quantity": 1
                }
              ]
            }
          }
        ],
        "extension": {
          "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
          "fulfillmentPreference": {
            "fulfillmentInfo": {
              "pickup": {
                "pickupTimeIso8601": "P0M"
              }
            }
          },
          "contact": {
            "displayName": "Lovefood Ordering",
            "email": "ilovefood@example.com",
            "phoneNumber": "+16501234567"
          }
        }
      },
      "otherItems": [
        {
          "name": "Service fee",
          "type": "FEE",
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "3",
              "nanos": 500000000
            }
          }
        },
        {
          "name": "Tax",
          "type": "TAX",
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "1",
              "nanos": 370000000
            }
          }
        },
        {
          "name": "Tip",
          "type": "GRATUITY",
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "2",
              "nanos": 590000000
            }
          }
        }
      ],
      "totalPrice": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "23",
          "nanos": 710000000
        }
      },
      "id": "sample_final_order_id",
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
        "availableFulfillmentOptions": [
          {
            "fulfillmentInfo": {
              "pickup": {
                "pickupTimeIso8601": "P0M"
              }
            },
            "expiresAt": "2017-07-17T12:30:00Z"
          }
        ],
        "optinForRemarketing": true
      }
    },
    "googleOrderId": "sample_google_order_id",
    "orderDate": "2017-07-17T12:00:00Z",
    "paymentInfo": {
      "displayName": "Visa\u2006****\u20061111",
      "googleProvidedPaymentInstrument": {
        "instrumentToken": "abcd"
      },
      "paymentType": "PAYMENT_CARD"
    }
  }
}

Richiesta di evasione ordine

RichiestaApp

La tabella seguente elenca le proprietà per il tipo AppRequest:

Proprietà Tipo Descrizione
isInSandbox Booleano

Indica se le transazioni successive vengono eseguite in un ambiente sandbox.

conversation Conversation
inputs List<Input&GT;

Obbligatorio.

Contiene gli argomenti previsti per il pagamento di un carrello.

Deve avere esattamente 1 elemento.

L'esempio seguente mostra un elemento AppRequest:

Esempio 1

{
  "isInSandbox": true,
  "inputs": [
    {
      "intent": "actions.foodordering.intent.CHECKOUT",
      "arguments": [
        {
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.Cart",
            "merchant": {
              "id": "https://www.exampleprovider.com/merchant/id1",
              "name": "Cucina Venti"
            },
            "lineItems": [
              {
                "name": "Sizzling Prawns Dinner",
                "type": "REGULAR",
                "id": "sample_item_offer_id_1",
                "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
                "quantity": 1,
                "price": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "16",
                    "nanos": 750000000
                  }
                },
                "subLines": [
                  {
                    "note": "Notes for this item."
                  }
                ],
                "extension": {
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
                  "options": [
                    {
                      "id": "sample_addon_offer_id_1",
                      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                      "name": "Honey Mustard",
                      "price": {
                        "currencyCode": "USD"
                      },
                      "quantity": 1
                    },
                    {
                      "id": "sample_addon_offer_id_2",
                      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                      "name": "BBQ Sauce",
                      "price": {
                        "currencyCode": "USD",
                        "nanos": 500000000
                      },
                      "quantity": 1
                    }
                  ]
                }
              }
            ],
            "extension": {
              "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
              "fulfillmentPreference": {
                "fulfillmentInfo": {
                  "delivery": {
                    "deliveryTimeIso8601": "P0M"
                  }
                }
              },
              "location": {
                "coordinates": {
                  "latitude": 37.788783,
                  "longitude": -122.41384
                },
                "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
                "zipCode": "94043",
                "city": "Mountain View",
                "postalAddress": {
                  "regionCode": "US",
                  "postalCode": "94043",
                  "administrativeArea": "CA",
                  "locality": "Mountain View",
                  "addressLines": [
                    "1350 Charleston Road"
                  ]
                },
                "notes": "Gate code is #111"
              }
            }
          }
        }
      ]
    }
  ]
}

Esempio 2

{
  "isInSandbox": true,
  "inputs": [
    {
      "intent": "actions.intent.TRANSACTION_DECISION",
      "arguments": [
        {
          "transactionDecisionValue": {
            "order": {
              "finalOrder": {
                "cart": {
                  "notes": "Guest prefers their food to be hot when it is delivered.",
                  "merchant": {
                    "id": "https://www.exampleprovider.com/merchant/id1",
                    "name": "Cucina Venti"
                  },
                  "lineItems": [
                    {
                      "name": "Sizzling Prawns Dinner",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_1",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "16",
                          "nanos": 750000000
                        }
                      },
                      "subLines": [
                        {
                          "note": "Notes for this item."
                        }
                      ],
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
                        "options": [
                          {
                            "id": "sample_addon_offer_id_1",
                            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                            "name": "Honey Mustard",
                            "price": {
                              "currencyCode": "USD"
                            },
                            "quantity": 1
                          },
                          {
                            "id": "sample_addon_offer_id_2",
                            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                            "name": "BBQ Sauce",
                            "price": {
                              "currencyCode": "USD",
                              "nanos": 500000000
                            },
                            "quantity": 1
                          }
                        ]
                      }
                    }
                  ],
                  "extension": {
                    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
                    "fulfillmentPreference": {
                      "fulfillmentInfo": {
                        "pickup": {
                          "pickupTimeIso8601": "P0M"
                        }
                      }
                    },
                    "contact": {
                      "displayName": "Lovefood Ordering",
                      "email": "ilovefood@example.com",
                      "phoneNumber": "+16501234567"
                    }
                  }
                },
                "otherItems": [
                  {
                    "name": "Service fee",
                    "type": "FEE",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "3",
                        "nanos": 500000000
                      }
                    }
                  },
                  {
                    "name": "Tax",
                    "type": "TAX",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "1",
                        "nanos": 370000000
                      }
                    }
                  },
                  {
                    "name": "Tip",
                    "type": "GRATUITY",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "2",
                        "nanos": 590000000
                      }
                    }
                  }
                ],
                "totalPrice": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "23",
                    "nanos": 710000000
                  }
                },
                "id": "sample_final_order_id",
                "extension": {
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
                  "availableFulfillmentOptions": [
                    {
                      "fulfillmentInfo": {
                        "pickup": {
                          "pickupTimeIso8601": "P0M"
                        }
                      },
                      "expiresAt": "2017-07-17T12:30:00Z"
                    }
                  ],
                  "optinForRemarketing": true
                }
              },
              "googleOrderId": "sample_google_order_id",
              "orderDate": "2017-07-17T12:00:00Z",
              "paymentInfo": {
                "displayName": "Visa\u2006****\u20061111",
                "googleProvidedPaymentInstrument": {
                  "instrumentToken": "abcd"
                },
                "paymentType": "PAYMENT_CARD"
              }
            }
          }
        }
      ]
    }
  ]
}

Messaggio richiesta di pagamento

Un CheckoutRequestMessage è un AppRequest con l'intento di actions.foodordering.intent.CHECKOUT.

MessaggioInviaRichiesta

Un SubmitOrderRequestMessage è un AppRequest con l'intento di actions.foodordering.intent.TRANSACTION_DECISION.

Conversazione

Un Conversation è univoco per una sola sessione. Puoi utilizzarla per collegare più azioni Checkout e SubmitOrder, se necessario.

La tabella seguente elenca le proprietà per il tipo Conversation:

Proprietà Tipo Descrizione
conversationId Stringa

Obbligatorio.

ID univoco della conversazione.

L'esempio seguente mostra un elemento Conversation:

Esempio

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

Input

Gli argomenti previsti per il pagamento di un carrello.

La tabella seguente elenca le proprietà per il tipo Input:

Proprietà Tipo Descrizione
intent Enum [ "actions.foodordering.intent.CHECKOUT", "actions.intent.TRANSACTION_DECISION" ]

Obbligatorio.

Impostalo su "actions.foodordering.intent.checkoutOUT" per il messaggio della richiesta di pagamento OPPURE "actions.intent.TRANSACTION_DECISION" per il messaggio di richiesta dell'ordine di invio.

arguments List<Argument&GT;

Obbligatorio.

Contiene il carrello per il pagamento o l'ordine da effettuare

Deve avere esattamente 1 elemento.

Argomento

Contiene i dettagli relativi agli alimenti che l'utente vuole pagare. Per il pagamento, è applicabile solo l'estensione. Per l'ordine di invio, è applicabile solo TransactionDecisionValue

La tabella seguente elenca le proprietà per il tipo Argument:

Proprietà Tipo Descrizione
È obbligatorio specificare uno dei seguenti gruppi di proprietà.
extension Gruppo 1 Cart

Specifica in modo dettagliato gli alimenti che l'utente vuole pagare.

transactionDecisionValue Gruppo 2 TransactionDecisionValue

Contiene l'ordine da effettuare insieme ai dettagli di pagamento.

Risposta evasione ordine

Risposta app

La tabella seguente elenca le proprietà per il tipo AppResponse:

Proprietà Tipo Descrizione
expectUserResponse Costella

Imposta su false.

Valore: False

finalResponse FinalResponse

Obbligatorio.

Contiene la tua risposta al pagamento del carrello.

L'esempio seguente mostra un elemento AppResponse:

Esempio 1

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "checkoutResponse": {
              "proposedOrder": {
                "id": "sample_proposed_order_id_1",
                "otherItems": [
                  {
                    "name": "New customer discount",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "-5",
                        "nanos": -500000000
                      }
                    },
                    "type": "DISCOUNT"
                  },
                  {
                    "name": "Delivery fee",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "3",
                        "nanos": 500000000
                      }
                    },
                    "type": "DELIVERY"
                  },
                  {
                    "name": "Tax",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "1",
                        "nanos": 500000000
                      }
                    },
                    "type": "TAX"
                  }
                ],
                "cart": {
                  "merchant": {
                    "id": "https://www.exampleprovider.com/merchant/id1",
                    "name": "Falafel Bite"
                  },
                  "lineItems": [
                    {
                      "name": "Pita Chips",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_1",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "2",
                          "nanos": 750000000
                        }
                      },
                      "subLines": [
                        {
                          "note": "Notes for this item."
                        }
                      ],
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
                        "options": [
                          {
                            "id": "sample_addon_offer_id_1",
                            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                            "name": "Honey Mustard",
                            "price": {
                              "currencyCode": "USD"
                            },
                            "quantity": 1
                          },
                          {
                            "id": "sample_addon_offer_id_2",
                            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                            "name": "BBQ Sauce",
                            "price": {
                              "currencyCode": "USD",
                              "nanos": 500000000
                            },
                            "quantity": 1
                          }
                        ]
                      }
                    },
                    {
                      "name": "Chicken Shwarma Wrap",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_2",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id2",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "8"
                        }
                      },
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
                      }
                    },
                    {
                      "name": "Greek Salad",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_3",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id3",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "9",
                          "nanos": 990000000
                        }
                      },
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
                      }
                    },
                    {
                      "name": "Prawns Biryani",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_4",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "15",
                          "nanos": 990000000
                        }
                      },
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
                      }
                    }
                  ],
                  "extension": {
                    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
                    "fulfillmentPreference": {
                      "fulfillmentInfo": {
                        "delivery": {
                          "deliveryTimeIso8601": "P90M"
                        }
                      }
                    },
                    "location": {
                      "coordinates": {
                        "latitude": 37.788783,
                        "longitude": -122.41384
                      },
                      "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
                      "zipCode": "94043",
                      "city": "Mountain View",
                      "postalAddress": {
                        "regionCode": "US",
                        "postalCode": "94043",
                        "administrativeArea": "CA",
                        "locality": "Mountain View",
                        "addressLines": [
                          "1350 Charleston Road"
                        ]
                      },
                      "notes": "Gate code is #111"
                    }
                  }
                },
                "totalPrice": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "36",
                    "nanos": 730000000
                  }
                },
                "extension": {
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
                  "availableFulfillmentOptions": [
                    {
                      "fulfillmentInfo": {
                        "delivery": {
                          "deliveryTimeIso8601": "P0M"
                        }
                      },
                      "expiresAt": "2017-07-17T12:30:00Z"
                    }
                  ]
                }
              },
              "paymentOptions": {
                "googleProvidedOptions": {
                  "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": {  \"merchantId\": \"Merchant ID\",  \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [  {    \"type\": \"CARD\",    \"parameters\": {      \"allowedAuthMethods\": [        \"PAN_ONLY\"      ],      \"allowedCardNetworks\": [        \"VISA\",        \"AMEX\",        \"MASTERCARD\"      ],      \"billingAddressRequired\": false    },    \"tokenizationSpecification\": {      \"type\": \"PAYMENT_GATEWAY\",      \"parameters\": {        \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\",        \"gateway\": \"stripe\",        \"stripe:version\": \"2019-05-16\"      }    }  }],\"transactionInfo\": {  \"currencyCode\": \"AUD\",  \"totalPriceStatus\": \"ESTIMATED\",  \"totalPrice\": \"1.0\"}}"
                }
              },
              "additionalPaymentOptions": [
                {
                  "actionProvidedOptions": {
                    "paymentType": "ON_FULFILLMENT",
                    "displayName": "Cash on delivery."
                  }
                }
              ]
            }
          }
        }
      ]
    }
  }
}

Esempio 2

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "orderUpdate": {
              "actionOrderId": "sample_action_order_id",
              "orderState": {
                "state": "CONFIRMED",
                "label": "Provider confirmed"
              },
              "receipt": {
                "userVisibleOrderId": "userVisibleId1234"
              },
              "updateTime": "2017-07-17T12:00:00Z",
              "orderManagementActions": [
                {
                  "type": "CUSTOMER_SERVICE",
                  "button": {
                    "title": "Contact customer service",
                    "openUrlAction": {
                      "url": "mailto:support@example.com"
                    }
                  }
                },
                {
                  "type": "CUSTOMER_SERVICE",
                  "button": {
                    "title": "Call customer service",
                    "openUrlAction": {
                      "url": "tel:+18005554679"
                    }
                  }
                },
                {
                  "type": "EMAIL",
                  "button": {
                    "title": "Email restaurant",
                    "openUrlAction": {
                      "url": "mailto:person@example.com"
                    }
                  }
                },
                {
                  "type": "CALL_RESTAURANT",
                  "button": {
                    "title": "Call restaurant",
                    "openUrlAction": {
                      "url": "tel:+16505554679"
                    }
                  }
                }
              ],
              "infoExtension": {
                "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
                "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
              }
            }
          }
        }
      ]
    }
  }
}

Esempio 3

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "error": {
              "@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension",
              "foodOrderErrors": [
                {
                  "error": "CLOSED",
                  "description": "The restaurant is closed."
                }
              ]
            }
          }
        }
      ]
    }
  }
}

Esempio 4

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "checkoutResponse": {
              "proposedOrder": {
                "otherItems": [
                  {
                    "name": "Delivery Fees",
                    "subLines": [],
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "3",
                        "nanos": 500000000
                      }
                    },
                    "type": "DELIVERY"
                  },
                  {
                    "name": "Tax",
                    "subLines": [],
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "1",
                        "nanos": 370000000
                      }
                    },
                    "type": "TAX"
                  },
                  {
                    "name": "Promotion",
                    "subLines": [],
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "-5",
                        "nanos": 0
                      }
                    },
                    "id": "OWG_ACTIVE_CODE",
                    "type": "DISCOUNT"
                  }
                ],
                "cart": {
                  "merchant": {
                    "id": "https://www.exampleprovider.com/merchant/id1",
                    "name": "Falafel Bite"
                  },
                  "lineItems": [
                    {
                      "name": "Pita Chips",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_1",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "2",
                          "nanos": 750000000
                        }
                      },
                      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
                      }
                    }
                  ],
                  "promotions": [
                    {
                      "coupon": "OWG_ACTIVE_CODE"
                    }
                  ],
                  "extension": {
                    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
                    "fulfillmentPreference": {
                      "fulfillmentInfo": {
                        "pickup": {
                          "pickupTimeIso8601": "P0M"
                        }
                      }
                    }
                  }
                },
                "totalPrice": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "14",
                    "nanos": 860000000
                  }
                },
                "extension": {
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
                  "availableFulfillmentOptions": [
                    {
                      "fulfillmentInfo": {
                        "pickup": {
                          "pickupTimeIso8601": "P0M"
                        }
                      },
                      "expiresAt": "2018-04-10T01:20:08.471Z"
                    }
                  ]
                }
              },
              "paymentOptions": {
                "googleProvidedOptions": {
                  "tokenizationParameters": {
                    "tokenizationType": "PAYMENT_GATEWAY",
                    "parameters": {
                      "gateway": "stripe",
                      "stripe:publishableKey": "pk_live_stripe_client_key",
                      "stripe:version": "2017-04-06"
                    }
                  },
                  "supportedCardNetworks": [
                    "AMEX",
                    "DISCOVER",
                    "MASTERCARD",
                    "VISA",
                    "JCB"
                  ],
                  "prepaidCardDisallowed": true,
                  "billingAddressRequired": true
                }
              }
            }
          }
        }
      ]
    }
  }
}

Messaggio di risposta al pagamento

CheckoutResponseMessage è un AppResponse con un checkoutResponse o error in StructuredResponse.

Messaggio di risposta all'ordine

SubmitOrderResponseMessage è un AppResponse con un orderUpdate in StructuredResponse.

Risposta finale

La tua risposta al pagamento del carrello o SendOrderRequestMessage.

La tabella seguente elenca le proprietà per il tipo FinalResponse:

Proprietà Tipo Descrizione
richResponse RichResponse

Obbligatorio.

Contiene la tua risposta al messaggio CheckoutRequestMessage o SendOrderRequestMessage.

Risposta al pagamento

La tabella seguente elenca le proprietà per il tipo CheckoutResponse:

Proprietà Tipo Descrizione
proposedOrder ProposedOrder

Obbligatorio.

Ordine proposto da utilizzare per la transazione.

paymentOptions PaymentOptions

Obbligatorio.

Opzione di pagamento predefinita selezionata per l'utente.

additionalPaymentOptions List<PaymentOptions&GT;

Opzioni di pagamento alternative disponibili per l'utente.

L'esempio seguente mostra un elemento CheckoutResponse:

Esempio

{
  "proposedOrder": {
    "id": "sample_proposed_order_id_1",
    "otherItems": [
      {
        "name": "New customer discount",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "-5",
            "nanos": -500000000
          }
        },
        "type": "DISCOUNT"
      },
      {
        "name": "Delivery fee",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "3",
            "nanos": 500000000
          }
        },
        "type": "DELIVERY"
      },
      {
        "name": "Tax",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "1",
            "nanos": 500000000
          }
        },
        "type": "TAX"
      }
    ],
    "cart": {
      "merchant": {
        "id": "https://www.exampleprovider.com/merchant/id1",
        "name": "Falafel Bite"
      },
      "lineItems": [
        {
          "name": "Pita Chips",
          "type": "REGULAR",
          "id": "sample_item_offer_id_1",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "2",
              "nanos": 750000000
            }
          },
          "subLines": [
            {
              "note": "Notes for this item."
            }
          ],
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
            "options": [
              {
                "id": "sample_addon_offer_id_1",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                "name": "Honey Mustard",
                "price": {
                  "currencyCode": "USD"
                },
                "quantity": 1
              },
              {
                "id": "sample_addon_offer_id_2",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                "name": "BBQ Sauce",
                "price": {
                  "currencyCode": "USD",
                  "nanos": 500000000
                },
                "quantity": 1
              }
            ]
          }
        },
        {
          "name": "Chicken Shwarma Wrap",
          "type": "REGULAR",
          "id": "sample_item_offer_id_2",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id2",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "8"
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        },
        {
          "name": "Greek Salad",
          "type": "REGULAR",
          "id": "sample_item_offer_id_3",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id3",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "9",
              "nanos": 990000000
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        },
        {
          "name": "Prawns Biryani",
          "type": "REGULAR",
          "id": "sample_item_offer_id_4",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "15",
              "nanos": 990000000
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        }
      ],
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
        "fulfillmentPreference": {
          "fulfillmentInfo": {
            "delivery": {
              "deliveryTimeIso8601": "P90M"
            }
          }
        },
        "location": {
          "coordinates": {
            "latitude": 37.788783,
            "longitude": -122.41384
          },
          "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
          "zipCode": "94043",
          "city": "Mountain View",
          "postalAddress": {
            "regionCode": "US",
            "postalCode": "94043",
            "administrativeArea": "CA",
            "locality": "Mountain View",
            "addressLines": [
              "1350 Charleston Road"
            ]
          },
          "notes": "Gate code is #111"
        }
      }
    },
    "totalPrice": {
      "type": "ESTIMATE",
      "amount": {
        "currencyCode": "USD",
        "units": "36",
        "nanos": 730000000
      }
    },
    "extension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
      "availableFulfillmentOptions": [
        {
          "fulfillmentInfo": {
            "delivery": {
              "deliveryTimeIso8601": "P0M"
            }
          },
          "expiresAt": "2017-07-17T12:30:00Z"
        }
      ]
    }
  },
  "paymentOptions": {
    "googleProvidedOptions": {
      "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": {  \"merchantId\": \"Merchant ID\",  \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [  {    \"type\": \"CARD\",    \"parameters\": {      \"allowedAuthMethods\": [        \"PAN_ONLY\"      ],      \"allowedCardNetworks\": [        \"VISA\",        \"AMEX\",        \"MASTERCARD\"      ],      \"billingAddressRequired\": false    },    \"tokenizationSpecification\": {      \"type\": \"PAYMENT_GATEWAY\",      \"parameters\": {        \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\",        \"gateway\": \"stripe\",        \"stripe:version\": \"2019-05-16\"      }    }  }],\"transactionInfo\": {  \"currencyCode\": \"AUD\",  \"totalPriceStatus\": \"ESTIMATED\",  \"totalPrice\": \"1.0\"}}"
    }
  },
  "additionalPaymentOptions": [
    {
      "actionProvidedOptions": {
        "paymentType": "ON_FULFILLMENT",
        "displayName": "Cash on delivery."
      }
    }
  ]
}

Articolo

Contiene la tua risposta al pagamento di un carrello o a SendOrderRequestMessage.

La tabella seguente elenca le proprietà per il tipo Item:

Proprietà Tipo Descrizione
structuredResponse StructuredResponse

Obbligatorio.

Risposta multipla

Contiene la tua risposta al pagamento del carrello.

La tabella seguente elenca le proprietà per il tipo RichResponse:

Proprietà Tipo Descrizione
items List<Item&GT;

Obbligatorio.

Deve avere esattamente 1 elemento.

Risposta strutturata

Il valore CheckoutResponseMessage può essere uno dei seguenti: CheckoutResponse indica un pagamento riuscito. OR FoodErrorExtension: indica un errore durante il pagamento. La risposta può includere un oggetto ProposedOrder e PaymentOptions corretto o un messaggio di errore senza PaymentOptions. Per SendOrderResponseMessage, è applicabile solo orderUpdate.

La tabella seguente elenca le proprietà per il tipo StructuredResponse:

Proprietà Tipo Descrizione
È obbligatorio specificare uno dei seguenti gruppi di proprietà.
checkoutResponse Gruppo 1 CheckoutResponse

Articoli verificati più tasse e sconti.

error Gruppo 2 FoodErrorExtension

Errori osservati negli articoli del carrello. A seconda della natura dell'errore, questa proprietà può includere un oggetto ProposedOrder e PaymentOptions corretto o solo un messaggio di errore senza PaymentOptions.

orderUpdate Gruppo 3 OrderUpdate

Aggiornamenti asincroni degli ordini

In questa sezione vengono descritti i tipi di alto livello che costituiscono le richieste e le risposte di un'interazione tipica di azione di ordinazione di cibo.

MessaggioAsyncOrderUpdateRequest

Informa l'utente delle modifiche dopo che l'ordine è stato inviato e confermato. Ad esempio, puoi informare l'utente che l'ordine è in transito o se il prezzo è cambiato. Per ulteriori informazioni, visita

La tabella seguente elenca le proprietà per il tipo AsyncOrderUpdateRequestMessage:

Proprietà Tipo Descrizione
isInSandbox Booleano

Indica che l'ordine di invio dell'aggiornamento è un pagamento sandbox.

customPushMessage CustomPushMessage

Obbligatorio.

Contiene il valore UpdateUpdate della richiesta.

L'esempio seguente mostra un elemento AsyncOrderUpdateRequestMessage:

Esempio

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
      "actionOrderId": "sample_action_order_id",
      "orderState": {
        "state": "IN_TRANSIT",
        "label": "Order is on the way"
      },
      "inTransitInfo": {
        "updatedTime": "2017-07-17T12:00:00Z"
      },
      "updateTime": "2017-07-17T12:00:00Z",
      "receipt": {
        "userVisibleOrderId": "userVisibleId1234"
      },
      "orderManagementActions": [
        {
          "type": "CUSTOMER_SERVICE",
          "button": {
            "title": "Contact customer service",
            "openUrlAction": {
              "url": "mailto:support@example.com"
            }
          }
        },
        {
          "type": "EMAIL",
          "button": {
            "title": "Email restaurant",
            "openUrlAction": {
              "url": "mailto:person@example.com"
            }
          }
        },
        {
          "type": "CALL_RESTAURANT",
          "button": {
            "title": "Call restaurant",
            "openUrlAction": {
              "url": "tel:+16505554679"
            }
          }
        }
      ],
      "infoExtension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
        "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
      }
    }
  }
}

MessaggioAsyncOrderUpdateResponse

Dopo aver inviato correttamente un AsyncOrderUpdateRequestMessage, Google risponde con uno stato HTTP 200 e un corpo vuoto. Se l'aggiornamento non è riuscito, 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 l'interazione dell'utente.

La tabella seguente elenca le proprietà per il tipo Button:

Proprietà Tipo Descrizione
title Stringa

Obbligatorio.

Etichetta da visualizzare. Utilizza una maiuscola a inizio frase con un massimo di 30 caratteri per assicurarti un rendering corretto.

Esempio: Contact us

openUrlAction OpenUrlAction

Obbligatorio.

L'esempio seguente mostra un elemento Button:

Esempio

{
  "title": "Send us feedback",
  "openUrlAction": {
    "url": "mailto:person@example.com"
  }
}

Informazioni sull'annullamento

La tabella seguente elenca le proprietà per il tipo CancellationInfo:

Proprietà Tipo Descrizione
reason Stringa

Obbligatorio.

Motivo del testo visualizzato per il rifiuto quando OrderState.state è "CANCELLED".

Esempio: Restaurant closed

L'esempio seguente mostra un elemento CancellationInfo:

Esempio

{
  "reason": "Insufficient inventory"
}

FoodOrderUpdateExtension

Questo tipo fornisce a un utente un intervallo stimato per la consegna o il ritiro dell'ordine. Invia questa estensione in una OrderUpdate ogni volta che le informazioni sono disponibili o sono state modificate dall'ultima invio.

Fornisci una stima conservativa per l'intervallo di evasione degli ordini, in modo che le aspettative degli utenti vengano rispettate in modo coerente. Ad esempio, se si stima che l'ordine verrà consegnato oggi alle 13:00, devi inviare un intervallo stimato coerente con le variazioni dovute alle condizioni del traffico, come oggi alle 12:45-13:15.

Una durata o un timestamp ISO 8601 vengono interpretati come l'intervallo da updateTime di OrderUpdate (in sostanza, "ora") a updateTime più duration. Non utilizzare questo formato a meno che non si verifichi un'aspettativa ragionevole.

Un intervallo ISO 8601 viene interpretato come l'intervallo dall'inizio alla fine dell'intervallo.

La tabella seguente elenca le proprietà per il tipo FoodOrderUpdateExtension:

Proprietà Tipo Descrizione
@type Costella

Tipo di questa estensione. Questo campo è sempre impostato su "type.googleapis.com/google.actions.v2.orders.foodOrderUpdateExtension".

Valore: type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension

estimatedFulfillmentTimeIso8601 Stringa

Il tempo stimato in cui l'ordine verrà consegnato o sarà pronto per il ritiro. La stringa deve essere in formato ISO 8601 e deve corrispondere a un intervallo anziché a una singola ora fissa. Le convenzioni accettabili sono: intervalli, durate e date/orari. Questo campo può essere inviato in SendOrderResponseMessage o AsyncOrderUpdateRequestMessage quando le informazioni diventano disponibili o quando viene apportata una modifica, ad esempio gli arrivi in anticipo o in ritardo.

Esempio: 2017-07-17T13:00:00Z/2017-07-17T13:30:00Z

foodOrderErrors List<FoodOrderError&GT;

Descrive gli errori che si sono verificati dopo l'ordine. È consigliato un solo errore per carrello o articolo. Utilizza FoodOrderUpdateExtension.foodOrderErrors per eventuali errori non coperti da RifiutaionInfo.

Non deve avere meno di 1 elemento.

L'esempio seguente mostra un elemento FoodOrderUpdateExtension:

Esempio 1

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
  "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
}

Esempio 2

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
  "foodOrderErrors": [
    {
      "error": "NO_CAPACITY",
      "description": "Sorry, the restaurant cannot take your order right now."
    }
  ]
}

Informazioni Fulfillment

La tabella seguente elenca le proprietà per il tipo FulfillmentInfo:

Proprietà Tipo Descrizione
È obbligatorio specificare uno dei seguenti gruppi di proprietà.
deliveryTime Gruppo 1 Timestamp ISO

Utilizza il messaggio stimateFulfillmentTimeIso8601 nel messaggio FoodOrderingUpdateExtension

pickupTime Gruppo 2 Timestamp ISO

Utilizza il messaggio stimateFulfillmentTimeIso8601 nel messaggio FoodOrderingUpdateExtension

L'esempio seguente mostra un elemento FulfillmentInfo:

Esempio 1

{
  "deliveryTime": "2017-05-10T02:36:38.803Z"
}

Esempio 2

{
  "pickupTime": "2019-12-26T07:24:27.803Z"
}

InfoInTransit

La tabella seguente elenca le proprietà per il tipo InTransitInfo:

Proprietà Tipo Descrizione
updatedTime Timestamp ISO

Utilizza il messaggio stimateFulfillmentTimeIso8601 nel messaggio FoodOrderingUpdateExtension

L'esempio seguente mostra un elemento InTransitInfo:

Esempio

{
  "updatedTime": "2017-05-10T02:36:38.803Z"
}

Aggiornamento elemento pubblicitario

La tabella seguente elenca le proprietà per il tipo LineItemUpdate:

Proprietà Tipo Descrizione
orderState OrderState
price Price
reason Stringa

Motivo della modifica. Obbligatorio per le variazioni di prezzo.

L'esempio seguente mostra un elemento LineItemUpdate:

Esempio

{
  "orderState": {
    "state": "CONFIRMED",
    "label": "Provider confirmed"
  },
  "price": {
    "type": "ESTIMATE",
    "amount": {
      "currencyCode": "USD",
      "units": "5",
      "nanos": 500000000
    }
  },
  "reason": "Menu updated prices."
}

Azione OpenUrl

La tabella seguente elenca le proprietà per il tipo OpenUrlAction:

Proprietà Tipo Descrizione
url Stringa

Obbligatorio.

L'azione attivata toccando 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: https://www.google.com

OrderManagementAction

La gestione degli ordini consente agli utenti di ricevere assistenza post-ordine e deve essere inviata in ogni OrderUpdate all'interno dell'ordine di invio AppResponse e in ogni AsyncOrderUpdateRequestMessage azione di gestione degli ordini inviata per un determinato ordine può variare in base allo stato.

Ad esempio, nello stato"CREATED"; CUSTOMER_SERVICE potrebbe fare riferimento al tuo telefono dell'assistenza clienti. Quindi, nello stato "CONFERMA", CUSTOMER_SERVICE può cambiare il telefono del ristorante se questo diventa il miglior punto di contatto per il cliente. Allo stesso modo, una volta che l'ordine è in stato "FULFILLED&quot";, CUSTOMER_SERVICE può fare riferimento agli indirizzi email dell'assistenza.

La tabella seguente elenca le proprietà per il tipo OrderManagementAction:

Proprietà Tipo Descrizione
type OrderManagementActionType

Obbligatorio.

button Button

Obbligatorio.

L'esempio seguente mostra un elemento OrderManagementAction:

Esempio 1

{
  "type": "CUSTOMER_SERVICE",
  "button": {
    "title": "Contact customer service",
    "openUrlAction": {
      "url": "mailto:support@example.com"
    }
  }
}

Esempio 2

{
  "type": "EMAIL",
  "button": {
    "title": "Email restaurant",
    "openUrlAction": {
      "url": "mailto:person@example.com"
    }
  }
}

TipoOrdineAzioneGestione

Definisce i tipi relativi a OrderManagementAction.

Il tipo OrderManagementActionType ha i seguenti valori possibili:

  • CUSTOMER_SERVICE: email e/o numero di contatto dell'assistenza clienti da mostrare sulla pagina di conferma dell'ordine. Questo prefisso è obbligatorio. Il prefisso openUrlAction.url deve essere "mailto", "tel", "http" o "https".
  • EMAIL: l'azione email è disponibile 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".

StatoOrdine

Lo stato attuale dell'ordine. Ogni valore state di OrderState corrisponde anche a uno stato di acquisto su myaccount.google.com.

La tabella seguente elenca le proprietà per il tipo OrderState:

Proprietà Tipo Descrizione
state OrderStateEnum

Obbligatorio.

label Stringa

Obbligatorio.

La stringa di visualizzazione visibile all'utente per lo stato. Usa la lettera maiuscola a inizio frase.

Esempio: Your order has been received

L'esempio seguente mostra un elemento OrderState:

Esempio

{
  "state": "CONFIRMED",
  "label": "Provider confirmed"
}

CodiceOrdineEnumerazione

Definisce i tipi relativi a OrderState.

Il tipo OrderStateEnum ha i seguenti valori possibili:

  • CREATED: ordine creato dall'integratore ed in attesa di conferma da parte del fornitore. Corrisponde allo "stato di acquisto".
  • CONFIRMED: ordine confermato dal fornitore ed attivo. Corrisponde allo stato di acquisto "Accettato".
  • REJECTED: ordine rifiutato dall'integratore o dal fornitore. Corrisponde allo stato di acquisto "Rifiutato".
  • CANCELLED: l'utente ha annullato l'ordine. Corrisponde allo stato di acquisto "Annullato".
  • IN_PREPARATION: è in corso la preparazione del cibo. Corrisponde allo "Stato sconosciuto" dello stato di acquisto.
  • READY_FOR_PICKUP: il cibo è pronto per il ritiro. Corrisponde allo stato "Pronto per il ritiro"
  • IN_TRANSIT: l'ordine è in fase di consegna. Corrisponde allo "Stato di acquisto in corso".
  • FULFILLED: l'utente ha ricevuto l'ordine. Corrisponde allo "Stato di acquisto selezionato".

Ricevuta

Invia questo tipo in un ordine di invio AppResponse, dove OrderState è "CONFERMA". Invia la ricevuta nel momento in cui userVisibleOrderId diventa disponibile. Non è necessario continuare a inviare la ricevuta negli aggiornamenti successivi.

La tabella seguente elenca le proprietà per il tipo Receipt:

Proprietà Tipo Descrizione
userVisibleOrderId Stringa

Obbligatorio.

Obbligatorio se l'ordine è "CONFERMA". Questo campo è l'ID univoco dell'utente per questo ordine (di solito l'ID ordine del ristorante), visualizzato nella ricevuta dell'integratore e nella scheda dell'ordine di Google. L'utente deve essere in grado di utilizzare questo ID per fare riferimento all'ordine relativo all'assistenza clienti del fornitore e dell'integratore. Questo ID deve essere fornito una sola volta in qualsiasi valore UpdateUpdate. Fino a quando non viene fornito, l'actionOrderId è l'utenteVisibleOrderId. Ad esempio, potresti non avere un userVisibleIdId finché l'ordine non viene confermato dal ristorante. Dopo aver confermato, devi inviare un AsyncOrderUpdateRequestMessage con un OrderUpdate e uno Ricevuta.

L'esempio seguente mostra un elemento Receipt:

Esempio

{
  "userVisibleOrderId": "userVisibleId1234"
}

Informazioni sul rifiuto

La tabella seguente elenca le proprietà per il tipo RejectionInfo:

Proprietà Tipo Descrizione
type RejectionType

Obbligatorio.

reason Stringa

Motivo del rifiuto utilizzato per il logging interno. Questo campo non è visibile agli utenti.

L'esempio seguente mostra un elemento RejectionInfo:

Esempio

{
  "type": "PAYMENT_DECLINED",
  "reason": "There is an issue with payment processing."
}

Tipo di rifiuto

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 del pagamento.
  • UNAVAILABLE_SLOT: l'ordine non può essere elaborato all'ora di anticipo specificata da DeliveryInfo o PickupInfo.
  • PROMO_NOT_APPLICABLE: si è verificato un problema con la promozione.
  • UNKNOWN: qualsiasi altro motivo.

Tipi correlati ai pagamenti

Questa sezione descrive i tipi di pagamento utilizzati per l'evasione degli ordini di cibo.

Opzioni di pagamento fornite da Action

Requisiti per un metodo di pagamento fornito in base all'azione.

La tabella seguente elenca le proprietà per il tipo ActionProvidedPaymentOptions:

Proprietà Tipo Descrizione
paymentType PaymentType

Obbligatorio.

displayName Stringa

Obbligatorio.

Nome dello strumento di pagamento visualizzato sulla ricevuta.

Esempio: Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

Dati aggiuntivi per paymentType "ON_FULFILLMENT". Ad esempio, puoi utilizzare questo campo per specificare se le carte o i contanti sono supportati al momento dell'evasione dell'ordine.

L'esempio seguente mostra un elemento ActionProvidedPaymentOptions:

Esempio

{
  "paymentType": "ON_FULFILLMENT",
  "displayName": "Pay when you get your food.",
  "onFulfillmentPaymentData": {
    "supportedPaymentOptions": [
      "Cash",
      "Card"
    ]
  }
}

AllowedAuthMethods

Il tipo AllowedAuthMethods ha i seguenti valori possibili:

  • PAN_ONLY: metodo di autenticazione associato alle carte di pagamento archiviate con l'Account Google dell'utente. I dati di pagamento restituiti includono il numero di conto personale (PAN) con il mese di scadenza e l'anno di scadenza.

RetiCard consentite

Il tipo AllowedCardNetworks ha i seguenti valori possibili:

  • AMEX
  • DISCOVER
  • INTERAC
  • JCB
  • MASTERCARD
  • VISA

Parametri scheda

Utilizza questo oggetto per configurare il supporto del tuo sito per l'API Google Pay.

La tabella seguente elenca le proprietà per il tipo CardParameters:

Proprietà Tipo Descrizione
allowedAuthMethods List<Cost>

Obbligatorio.

Campi supportati per autenticare una transazione con carta.

Non deve avere meno di 1 elemento.

allowedCardNetworks List<AllowedCardNetworks&GT;

Obbligatorio.

Una o più reti di carte supportate e supportate anche dall'API Google Pay.

Non deve avere meno di 1 elemento.

billingAddressRequired Booleano

Imposta su true se richiedi un indirizzo di fatturazione. Richiedi un indirizzo di fatturazione solo se è necessario per elaborare la transazione. Ulteriori richieste di dati possono aumentare la procedura di pagamento e portare a tassi di conversione inferiori.

cvcRequired Booleano

Impostato su true se utilizzi TimesofMoney e false per tutti gli altri processori di pagamento.

L'esempio seguente mostra un elemento CardParameters:

Esempio

{
  "allowedAuthMethods": [
    "PAN_ONLY"
  ],
  "allowedCardNetworks": [
    "AMEX",
    "DISCOVER"
  ],
  "billingAddressRequired": false,
  "cvcRequired": false
}

Strumento di pagamento fornito da Google

La tabella seguente elenca le proprietà per il tipo GoogleProvidedPaymentInstrument:

Proprietà Tipo Descrizione
instrumentToken Stringa

Obbligatorio.

Stringa codificata in base 64 contenente il token di pagamento per addebitare all'utente un processore Google Pay partecipante, in base alle opzioni GoogleProvidedPaymentOptions specificate in precedenza.

billingAddress PostalAddress

Indirizzo di fatturazione per il pagamento.

L'esempio seguente mostra un elemento GoogleProvidedPaymentInstrument:

Esempio

{
  "instrumentToken": "abcd",
  "billingAddress": {
    "regionCode": "US",
    "postalCode": "94043",
    "administrativeArea": "CA",
    "locality": "Mountain View",
    "addressLines": [
      "1350 Charleston Road"
    ]
  }
}

Opzioni di pagamento fornite da Google

Requisiti per il metodo di pagamento fornito da Google.

La tabella seguente elenca le proprietà per il tipo GoogleProvidedPaymentOptions:

Proprietà Tipo Descrizione
facilitationSpecification Stringa

Un JSON PaymentDataRequest come stringa. Utilizza questo oggetto per configurare il supporto del tuo sito per l'API Google Pay.

supportedCardNetworks List<SupportedCardNetworks&GT;

Usa facilitaSpecificaSpecifica. Tipo di reti di carte supportate dall'agente.

Questo campo è obsoleto.

prepaidCardDisallowed Booleano

Usa facilitaSpecificaSpecifica. Indica se una carta prepagata è consentita o meno come tipo di pagamento.

Questo campo è obsoleto.

billingAddressRequired Booleano

Usa facilitaSpecificaSpecifica. Indica se è necessario o meno un indirizzo di fatturazione.

Questo campo è obsoleto.

tokenizationParameters TokenizationParameters

Questo campo è obsoleto.

L'esempio seguente mostra un elemento GoogleProvidedPaymentOptions:

Esempio 1

{
  "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": {  \"merchantId\": \"Merchant ID\",  \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [  {    \"type\": \"CARD\",    \"parameters\": {      \"allowedAuthMethods\": [        \"PAN_ONLY\"      ],      \"allowedCardNetworks\": [        \"VISA\",        \"AMEX\",        \"MASTERCARD\"      ],      \"billingAddressRequired\": false    },    \"tokenizationSpecification\": {      \"type\": \"PAYMENT_GATEWAY\",      \"parameters\": {        \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\",        \"gateway\": \"stripe\",        \"stripe:version\": \"2019-05-16\"      }    }  }],\"transactionInfo\": {  \"currencyCode\": \"AUD\",  \"totalPriceStatus\": \"ESTIMATED\",  \"totalPrice\": \"1.0\"}}"
}

Esempio 2

{
  "tokenizationParameters": {
    "tokenizationType": "PAYMENT_GATEWAY",
    "parameters": {
      "gateway": "braintree",
      "braintree:apiVersion": "v1",
      "braintree:sdkVersion": "1.4.0",
      "braintree:merchantId": "a1b2c3d4e5",
      "braintree:clientKey": "production_braintree_client_key",
      "braintree:authorizationFingerprint": "same_as_client_key"
    }
  },
  "supportedCardNetworks": [
    "AMEX",
    "DISCOVER",
    "MASTERCARD",
    "JCB",
    "VISA"
  ],
  "prepaidCardDisallowed": true
}

Esempio 3

{
  "tokenizationParameters": {
    "tokenizationType": "PAYMENT_GATEWAY",
    "parameters": {
      "gateway": "stripe",
      "stripe:publishableKey": "pk_live_stripe_client_key",
      "stripe:version": "2017-04-06"
    }
  },
  "supportedCardNetworks": [
    "AMEX",
    "DISCOVER",
    "MASTERCARD",
    "VISA",
    "JCB"
  ],
  "prepaidCardDisallowed": true,
  "billingAddressRequired": true
}

Informazioni sul commerciante

Utilizza questo oggetto per configurare il supporto del tuo sito per l'API Google Pay.

La tabella seguente elenca le proprietà per il tipo MerchantInfo:

Proprietà Tipo Descrizione
merchantId Stringa

Identificatore del commerciante Google emesso da Google Pay.

merchantName Stringa

Obbligatorio.

Nome del commerciante codificato come UTF-8. Il nome del commerciante viene visualizzato nel foglio di pagamento.

DatidipagamentoFulfillment

Utilizza questo oggetto per inviare dati aggiuntivi per PaymentType "ON_FULFILLMENT".

La tabella seguente elenca le proprietà per il tipo OnFulfillmentPaymentData:

Proprietà Tipo Descrizione
supportedPaymentOptions List<PaymentOptionsEnums&GT;

Elenco delle opzioni di pagamento disponibili per l'utente al momento dell'evasione dell'ordine.

L'esempio seguente mostra un elemento OnFulfillmentPaymentData:

Esempio

{
  "supportedPaymentOptions": [
    "Cash",
    "Card"
  ]
}

Parametri

Definisce i tipi relativi a TokenizationParameters.

La tabella seguente elenca le proprietà per il tipo Parameters:

Proprietà Tipo Descrizione
gateway Stringa

Obbligatorio.

Esempio: braintree

gatewayMerchantId Stringa
[additionalKey: string] Stringa Coppie chiave-valore aggiuntive

L'esempio seguente mostra un elemento Parameters:

Esempio 1

{
  "gatewayMerchantId": "90412491",
  "gateway": "olo"
}

Esempio 2

{
  "gateway": "braintree",
  "braintree:apiVersion": "v1",
  "braintree:sdkVersion": "1.4.0",
  "braintree:merchantId": "YOUR_MERCHANT_ID",
  "braintree:clientKey": "YOUR_BRAINTREE_SANDVOX_OR_PRODUCTION_KEY"
}

RichiestaDatiDati

Utilizza questo oggetto per configurare il supporto del tuo sito per l'API Google Pay.

La tabella seguente elenca le proprietà per il tipo PaymentDataRequest:

Proprietà Tipo Descrizione
apiVersion Costella

Obbligatorio.

Versione principale dell'API.

Valore: 2

apiVersionMinor Costella

Obbligatorio.

Versione dell'API secondaria.

Valore: 0

merchantInfo MerchantInfo

Obbligatorio.

(ID commerciante Google Pay) Informazioni sul commerciante che richiede i dati di pagamento.

allowedPaymentMethods List<PaymentMethod&GT;

Obbligatorio.

Specifica il supporto di uno o più metodi di pagamento supportati dall'API Google Pay.

transactionInfo TransactionInfo

Obbligatorio.

Dettagli sull'autorizzazione della transazione in base al fatto che l'utente abbia accettato o meno la transazione. Questo campo include il prezzo totale e lo stato del prezzo.

L'esempio seguente mostra un elemento PaymentDataRequest:

Esempio

{
  "apiVersion": 2,
  "apiVersionMinor": 0,
  "merchantInfo": {
    "merchantId": "10391231",
    "merchantName": "Burrito Town"
  },
  "allowedPaymentMethods": [
    {
      "type": "CARD",
      "parameters": {
        "allowedAuthMethods": [
          "PAN_ONLY"
        ],
        "allowedCardNetworks": [
          "VISA",
          "AMEX",
          "MASTERCARD"
        ],
        "billingAddressRequired": true,
        "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"
  }
}

Dati di pagamento

Informazioni relative ai pagamenti di un ordine.

La tabella seguente elenca le proprietà per il tipo PaymentInfo:

Proprietà Tipo Descrizione
displayName Stringa

Obbligatorio.

Nome visibile dello strumento di pagamento visibile all'utente sullo scontrino.

paymentType PaymentType

Obbligatorio.

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

Token utilizzabile dall'azione. Specifica questa opzione solo se hai specificato GoogleProvidedPaymentOptions come opzione di pagamento nel CheckoutResponseMessage.

L'esempio seguente mostra un elemento PaymentInfo:

Esempio 1

{
  "displayName": "Visa\u2006****\u20061111",
  "googleProvidedPaymentInstrument": {
    "instrumentToken": "abcd"
  },
  "paymentType": "PAYMENT_CARD"
}

Esempio 2

{
  "displayName": "Visa\u2006****\u20061111",
  "googleProvidedPaymentInstrument": {
    "instrumentToken": "abcd",
    "billingAddress": {
      "regionCode": "US",
      "postalCode": "94043",
      "administrativeArea": "CA",
      "locality": "Mountain View",
      "addressLines": [
        "123 Random Street",
        "Unit ABC"
      ],
      "recipients": [
        "sample_receipient"
      ]
    }
  },
  "paymentType": "PAYMENT_CARD"
}

Metodo di pagamento

Utilizza questo oggetto per configurare il supporto del tuo sito per l'API Google Pay.

La tabella seguente elenca le proprietà per il tipo PaymentMethod:

Proprietà Tipo Descrizione
type Costella

Obbligatorio.

Identificatore breve per il metodo di pagamento supportato. Al momento è supportato solo CARD.

Valore: CARD

parameters CardParameters

Obbligatorio.

Parametri richiesti 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.

L'esempio seguente mostra un elemento PaymentMethod:

Esempio

{
  "type": "CARD",
  "parameters": {
    "allowedAuthMethods": [
      "PAN_ONLY"
    ],
    "allowedCardNetworks": [
      "VISA",
      "AMEX",
      "MASTERCARD"
    ],
    "billingAddressRequired": false
  },
  "tokenizationSpecification": {
    "type": "PAYMENT_GATEWAY",
    "parameters": {
      "gatewayMerchantId": "90412491",
      "gateway": "olo"
    }
  }
}

Opzioni di pagamento

La tabella seguente elenca le proprietà per il tipo PaymentOptions:

Proprietà Tipo Descrizione
È obbligatorio specificare uno dei seguenti gruppi di proprietà.
googleProvidedOptions Gruppo 1 GoogleProvidedPaymentOptions

che si escludono a vicenda con actionProvidedOptions. Utilizza questo metodo per i pagamenti online tramite gPay.

actionProvidedOptions Gruppo 2 ActionProvidedPaymentOptions

che si escludono a vicenda con googleProvidedOptions. Utilizza questa opzione per "un pagamento alla consegna" o "pagamento per l'evasione dell'ordine".

L'esempio seguente mostra un elemento PaymentOptions:

Esempio 1

{
  "googleProvidedOptions": {
    "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": {  \"merchantId\": \"Merchant ID\",  \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [  {    \"type\": \"CARD\",    \"parameters\": {      \"allowedAuthMethods\": [        \"PAN_ONLY\"      ],      \"allowedCardNetworks\": [        \"VISA\",        \"AMEX\",        \"MASTERCARD\"      ],      \"billingAddressRequired\": false    },    \"tokenizationSpecification\": {      \"type\": \"PAYMENT_GATEWAY\",      \"parameters\": {        \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\",        \"gateway\": \"stripe\",        \"stripe:version\": \"2019-05-16\"      }    }  }],\"transactionInfo\": {  \"currencyCode\": \"AUD\",  \"totalPriceStatus\": \"ESTIMATED\",  \"totalPrice\": \"1.0\"}}"
  }
}

Esempio 2

{
  "actionProvidedOptions": {
    "paymentType": "ON_FULFILLMENT",
    "displayName": "Pay when you get your food.",
    "onFulfillmentPaymentData": {
      "supportedPaymentOptions": [
        "Cash",
        "Card"
      ]
    }
  }
}

EnumerazioniOpzioni di pagamento

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.

RetiCardCard supportate

Definisce i tipi relativi a GoogleProvidedPaymentOptions.

Il tipo SupportedCardNetworks ha i seguenti valori possibili:

  • UNSPECIFIED_CARD_NETWORK
  • AMEX
  • DISCOVER
  • JCB
  • MASTERCARD
  • VISA

Parametri di tokenizzazione

Definisce i tipi relativi a GoogleProvidedPaymentOptions.

La tabella seguente elenca le proprietà per il tipo TokenizationParameters:

Proprietà Tipo Descrizione
tokenizationType Enum [ "UNSPECIFIED_TOKENIZATION_TYPE", "PAYMENT_GATEWAY" ]

Obbligatorio.

Usa facilitaSpecificaSpecifica. Tipo di token accettabile.

parameters Parameters

Usa facilitaSpecificaSpecifica.

Specificazione tokenizzazione

Questo oggetto consente di configurare un account per ricevere i dati di pagamento addebitabili.

La tabella seguente elenca le proprietà per il tipo TokenizationSpecification:

Proprietà Tipo Descrizione
type Costella

Obbligatorio.

parameters Parameters

Obbligatorio.

L'esempio seguente mostra un elemento TokenizationSpecification:

Esempio 1

{
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gatewayMerchantId": "1247192",
    "gateway": "cybersource"
  }
}

Esempio 2

{
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "stripe",
    "stripe:version": "2018-10-31",
    "stripe:publishableKey": "12378127"
  }
}

TransactionInfo

Questo oggetto descrive una transazione che determina la capacità di pagamento di un pagatore. Viene utilizzata per presentare una finestra di dialogo dell'autorizzazione di pagamento.

La tabella seguente elenca le proprietà per il tipo TransactionInfo:

Proprietà Tipo Descrizione
currencyCode Stringa

Obbligatorio.

Codice valuta alfabetico ISO 4217.

transactionId Stringa

ID univoco che identifica un tentativo di transazione. I commercianti possono utilizzare un ID esistente o generarne uno specifico per tentativi di transazione con Google Pay. Questo campo è obbligatorio quando invii i callback all'API Google Transaction Events.

totalPriceStatus Costella

Obbligatorio.

Utilizza "ESTIMATED" come predefinito. Il prezzo totale può variare in base ai dettagli della risposta, ad esempio l'imposta sulle vendite riscossa in base a un indirizzo di fatturazione.

Valore: ESTIMATED

totalPrice Stringa

Obbligatorio.

Valore monetario totale della transazione con una precisione decimale facoltativa di due cifre decimali. Questo campo deve avere lo stesso valore di cart.totalPrice.

L'esempio seguente mostra un elemento TransactionInfo:

Esempio

{
  "totalPriceStatus": "ESTIMATED",
  "totalPrice": "12.34",
  "currencyCode": "USD"
}