Schema delle azioni di evasione degli ordini

In questa pagina viene descritto il payload del servizio web per l'evasione degli ordini (API Ordering end-to-end) quando si utilizza l'API Ordering End-to-End integrata di azione. Per una versione leggibile di queste informazioni, puoi scaricare lo schema JSON.

Tipi di base

Carrello

Contiene i dettagli dell'ordine e se la richiesta riguarda il ritiro o pubblicazione. Un carrello contiene anche i dettagli sulla consegna, la mancia e la consegna . L'oggetto Cart è definito in un file Checkout AppRequest.f Includi una copia del carrello nella tua Checkout AppResponse

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

Proprietà Tipo Descrizione
@type Costanza

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

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

id String

ID facoltativo del carrello.

merchant Merchant

Commerciante affiliato a questo carrello.

lineItems Elenco<LineItem>

Obbligatorio.

Elenco dei prodotti o servizi ordinati dall'utente.

Non deve contenere meno di 1 elemento.

promotions Elenco<Promotion>

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

notes String

Note sull'ordine o sulle istruzioni per la consegna.

extension FoodCartExtension

Definisce i dettagli dell'utente, ad esempio le preferenze di evasione degli ordini.

Nell'esempio seguente viene mostrato un elemento Cart:

Esempio 1

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

Esempio 2

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

Contatto

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

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

Proprietà Tipo Descrizione
displayName String

Il nome della persona che riceve l'ordine, così come vorresti che fosse visualizzato. Utilizza questo campo se firstName e lastName non sono specificati.

Esempio: Lovefood Ordering

email String

Indirizzo email della persona che riceve l'ordine.

Esempio: ilovefood@example.com

firstName String

Nome della persona che riceve l'ordine.

Esempio: Lovefood

lastName String

Cognome della persona che riceve l'ordine.

Esempio: Ordering

phoneNumber String

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

Esempio: +16501234567

emailVerified Valore booleano

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

Nell'esempio seguente viene mostrato un elemento Contact:

Esempio

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

CustomPushMessage

Contiene il carattere OrderUpdate della richiesta.

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

Proprietà Tipo Descrizione
orderUpdate OrderUpdate

Obbligatorio.

Sono state aggiornate le informazioni relative all'ordine.

Nell'esempio seguente viene mostrato un elemento CustomPushMessage:

Esempio

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

DeliveryInfo

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

Proprietà Tipo Descrizione
deliveryTimeIso8601 String

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

Esempio: PT90M

Nell'esempio seguente viene mostrato un elemento DeliveryInfo:

Esempio

{
  "deliveryTimeIso8601": "PT90M"
}

Disclaimer

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

Proprietà Tipo Descrizione
predefinedMessage PredefinedMessage

Obbligatorio.

Per mostrare messaggi di disclaimer predefiniti durante il pagamento.

feeAmount Money

Il partner addebiterà al commerciante una commissione di importo N per questo ordine.

feeAmountRange FeeAmountRange

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

feePercent Number

Il partner addebiterà al commerciante una commissione dell'N% per questo ordine.

feePercentRange FeePercentRange

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

Nell'esempio seguente viene mostrato un elemento Disclaimer:

Esempio 1

{
  "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER"
}

Esempio 2

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE"
}

Esempio 3

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

Esempio 4

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

Esempio 5

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

Esempio 6

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

Errore

Il tipo Error ha i seguenti valori possibili:

  • CLOSED: il ristorante è chiuso per l'attività al momento dell'ordinazione.
  • NO_CAPACITY: non è disponibile alcuna capacità del servizio (ad esempio, un'interruzione temporanea dovuta a momenti di picco).
  • NO_COURIER_AVAILABLE: impossibile elaborare l'ordine a causa del personale addetto alla consegna limitato.
  • REQUIREMENTS_NOT_MET: non sono stati soddisfatti i vincoli per l'accettazione dell'ordine (ad es. dimensione minima del carrello).
  • UNAVAILABLE_SLOT: l'ordine non può essere evaso con l'ordine in anticipo specificato dalle info di consegna o dalle informazioni per il ritiro.
  • OUT_OF_SERVICE_AREA: l'ordine non può essere consegnato all'indirizzo dell'utente.
  • PROMO_EXPIRED: impossibile applicare la promozione perché è scaduta.
  • PROMO_NOT_APPLICABLE: codice di errore generico per individuare tutti i casi di mancata applicazione del codice promozionale se nessuno degli altri errori relativi al codice promozionale funziona.
  • PROMO_NOT_RECOGNIZED: il codice coupon non è stato riconosciuto.
  • PROMO_ORDER_INELIGIBLE: l'ordine corrente non è idoneo per questo coupon.
  • PROMO_USER_INELIGIBLE: l'utente corrente non è idoneo per questo coupon.
  • AVAILABILITY_CHANGED: l'articolo non è più disponibile o gli articoli non sono sufficienti per soddisfare la richiesta.
  • INCORRECT_PRICE: errori di prezzo nelle tariffe o nel totale.
  • INVALID: un elemento pubblicitario, FulfillmentOption o una promozione contiene dati non validi.
  • NOT_FOUND: impossibile trovare un elemento pubblicitario, FulfillmentOption o una promozione.
  • PRICE_CHANGED: il prezzo di un articolo è cambiato.

FeeAmountRange

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

Proprietà Tipo Descrizione
minFeeAmount Money

Limite inferiore dell'importo della commissione addebitata.

maxFeeAmount Money

Limite superiore dell'importo della commissione addebitata.

FeePercentRange

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

Proprietà Tipo Descrizione
minFeePercent Number

Limite inferiore della percentuale di commissione addebitata.

maxFeePercent Number

Limite superiore della percentuale di commissione addebitata.

FoodCartExtension

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

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

Proprietà Tipo Descrizione
@type Costanza

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

Valore: 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 di distribuzione dell'utente.

location Location

In CheckRequestMessage, questo campo specifica l'indirizzo di consegna, obbligatorio se l'ordine prevede la consegna. Per gli ordini con servizio di asporto o ritiro, questo campo non è incluso nel messaggio.

Nell'esempio seguente viene mostrato un elemento FoodCartExtension:

Esempio 1

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

Esempio 2

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

FoodErrorExtension

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

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

Proprietà Tipo Descrizione
@type Costanza

Obbligatorio.

Tipo di questa estensione.

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

foodOrderErrors Elenco<FoodOrderError>

Obbligatorio.

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

Non deve contenere meno di 1 elemento.

correctedProposedOrder ProposedOrder

Obbligatorio se 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 ProposedOrder con correzioni. Restituisci questo oggetto se sono presenti errori recuperabili nel ProposedOrder originale. Ad esempio, una modifica del prezzo di una o più voci nel carrello è un errore recuperabile. Gli errori ripristinabili con un ProposedOrder valido vengono spostati nella fase di conferma, invece di richiedere all'utente di esaminare il carrello.

paymentOptions PaymentOptions

Obbligatorio se 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 Elenco<PaymentOptions>

Opzioni di pagamento alternative a disposizione dell'utente.

Nell'esempio seguente viene mostrato un elemento FoodErrorExtension:

Esempio

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

FoodItemExtension

Definisce i componenti aggiuntivi per gli alimenti.

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

Proprietà Tipo Descrizione
@type Costanza

Obbligatorio.

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

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

options Elenco<FoodItemOption>

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

Nell'esempio seguente viene mostrato un elemento FoodItemExtension:

Esempio

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

FoodItemOption

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

Proprietà Tipo Descrizione
id String

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

Esempio: 39231093

offerId String

L'ID offerta dell'articolo.

Esempio: 912835081

name String

Il nome dell'opzione.

Esempio: Honey Mustard

price Money
note String

Nota relativa all'opzione.

quantity Number

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

Esempio: 3

subOptions Elenco<FoodItemOption>

Opzioni secondarie per l'opzione, se presenti.

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 } ]

Nell'esempio seguente viene mostrato un elemento FoodItemOption:

Esempio 1

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

Esempio 2

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

FoodOrderError

Contiene i dettagli sugli errori in un elemento CheckoutResponse.

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

Proprietà Tipo Descrizione
error Error

Obbligatorio.

id String

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

Questo campo è obbligatorio per errori a livello di articolo. Si tratta del parametro LineItem.id assegnato da Google per le voci di menu o FoodItemOption.id per i componenti aggiuntivi.

description String

Descrizione dell'errore. Questa descrizione è riferita al logging interno e non è visibile agli utenti.

updatedPrice Money

Obbligatorio se error = "PRICE_CHANGED".

Nuovo prezzo di un articolo che ha causato l'errore. Questo campo è obbligatorio solo se l'errore è "PRICE_CHANGED".

availableQuantity Intero

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

Nuova quantità disponibile dell'articolo che ha causato l'errore. Questo campo è obbligatorio solo se l'errore è "NON VALIDO" o "NOT_FOUND". Il valore deve essere zero per "NON VALIDO" e "NOT_FOUND".

Nell'esempio seguente viene mostrato un elemento FoodOrderError:

Esempio 1

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

Esempio 2

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

FoodOrderExtension

Contiene le informazioni di evasione dell'ordine.

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

Proprietà Tipo Descrizione
@type Costanza

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

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

availableFulfillmentOptions Elenco<FulfillmentOption>

Rappresenta le opzioni di evasione degli ordini disponibili per l'ordine.

optinForRemarketing Valore booleano

Richiesta di attivazione ai tuoi canali di marketing da parte degli utenti. Per impostazione predefinita, non puoi inviare contenuti di marketing senza il consenso dell'utente. Se optinForRemarketing è true, puoi iscrivere l'utente. Se optinForRemarketing è false o non è presente, è necessario mantenere lo stato dell'abbonamento nel sistema così com'è. Gli utenti non possono effettuare la disattivazione tramite Google, ma soltanto tramite la funzione di annullamento dell'iscrizione fornita nei tuoi canali di marketing. Questo flag è presente solo in SubmitOrderRequestMessage.

Nell'esempio seguente viene mostrato un elemento FoodOrderExtension:

Esempio 1

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

Esempio 2

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

FulfillmentOption

Puoi utilizzare un oggetto FulfillmentOption nei seguenti modi:
  • Tra Checkout AppRequest e Submit AppRequest, Cart.extension.fulfillmentPreference: memorizza la preferenza dell'utente (consegna o ritiro). Il prezzo è sempre 0 al momento dell'invio della richiesta di pagamento.
  • In Checkout AppResponse, ProposedOrder.extension.availableFulfillmentOptions: Definisce una o più opzioni di pubblicazione (al momento, esiste una sola opzione supportato). Puoi specificare l'opzione predefinita LineItem in ProposedOrder.otherItems. Il offerId di FulfillmentOption deve corrispondere all'ID del LineItem specificato in ProposedOrder.otherItems.

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

Proprietà Tipo Descrizione
offerId String

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

fulfillmentInfo FulfillmentOptionInfo

Obbligatorio.

expiresAt Timestamp ISO

Ora di scadenza di questa opzione di evasione degli ordini.

price Money

Costo di questa opzione.

Nell'esempio seguente viene mostrato un elemento FulfillmentOption:

Esempio

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

FulfillmentOptionInfo

Definisce le informazioni relative a FulfillmentInfo.

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

Proprietà Tipo Descrizione
È richiesto esattamente uno dei seguenti gruppi di proprietà.
delivery Gruppo 1 DeliveryInfo

Se presente, indica l'ordine di consegna.

pickup Gruppo 2 PickupInfo

Se presente, indica un ordine di ritiro.

Immagine

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

Proprietà Tipo Descrizione
sourceUrl String

Obbligatorio.

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

LineItem

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

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

Proprietà Tipo Descrizione
id String

Obbligatorio se 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 ProposedOrder (ProposedOrder.otherItems[0].id), utilizzato per aggiungere elementi come tasse e spese di spedizione, il valore dell'ID è definito dal provider. Ad esempio, in un carrello ci sono due articoli uguali con istruzioni di preparazione diverse (come due pizze medie con set di condimenti diversi). In questo caso, entrambi gli elementi hanno lo stesso ID offerta di base. Quando invii una richiesta di aggiornamento dell'ordine per indicare che un articolo viene rifiutato, utilizza questo ID come disambiguatore. In altre parole, se una delle pizze viene rifiutata perché è priva di un particolare condimento, l'ID aiuta Google a determinare a quale articolo ti riferisci nell'ordine. Questo campo è obbligatorio, tranne in altri elementi.

name String

Obbligatorio.

Nome dell'elemento pubblicitario. Si tratta di una stringa visibile all'utente e, se possibile, deve usare la maiuscola a inizio frase (ad esempio "Commissione di consegna", "Addebito di servizio", "Tasse"). Questo campo è troncato a 100 caratteri per gli utenti.

type LineItemType

Obbligatorio.

quantity Intero

Obbligatorio se type = "REGULAR".

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

description String

Descrizione dell'articolo.

price Price

Obbligatorio.

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

subLines Elenco<SublineNote>

Facoltativo e valido solo se il tipo è "REGULAR". L'utente potrebbe inviare una nota specifica per l'articolo in questo campo nella richiesta di pagamento e nella richiesta di invio dell'ordine. Assicurati che il commerciante riceva la nota quando viene fornita. Sarà nella richiesta come subLines[0].note, che è l'unico valore fornito in questo campo se presente in una richiesta.

Non può contenere più di 1 articolo.

offerId String

Obbligatorio se type = "REGULAR".

L'ID offerta della voce di menu dell'elemento. Non applicabile a ProposedOrder.otherItems.

extension FoodItemExtension

Definisce i componenti aggiuntivi per gli alimenti.

Nell'esempio seguente viene mostrato un elemento LineItem:

Esempio 1

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

Esempio 2

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

LineItemType

Il tipo LineItemType ha i seguenti valori possibili:

  • REGULAR: voce relativa ai prodotti. Applicabile a Cart.lineItems.
  • TAX: voce fiscale. Applicabile a ProposedOrder.otherItems.
  • DISCOUNT: elemento pubblicitario scontato. Tieni presente che il prezzo deve essere negativo. Applicabile a ProposedOrder.otherItems.
  • GRATUITY: voce senza costi. Di solito riservato a SubmitOrderRequestMessage per un suggerimento selezionato dall'utente. Applicabile a ProposedOrder.otherItems.
  • DELIVERY: elemento pubblicitario da pubblicare. Applicabile a ProposedOrder.otherItems.
  • SUBTOTAL: subtotale dell'elemento pubblicitario. Applicabile a ProposedOrder.otherItems.
  • FEE: elemento pubblicitario aggiuntivo non coperto dagli altri tipi. Applicabile a ProposedOrder.otherItems.

Località

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

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

Proprietà Tipo Descrizione
coordinates Coordinates
formattedAddress String

Indirizzo visualizzato della sede.

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

postalAddress PostalAddress
zipCode String

Esempio: 90210

city String

Il nome della città.

Esempio: Los Angeles

notes String

Note sulla posizione, ad esempio i codici del cancello. Deve contenere al massimo 500 caratteri.

Esempio: Gate code is #111

Nell'esempio seguente viene mostrato un elemento Location:

Esempio

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

Commerciante

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

Proprietà Tipo Descrizione
id String

L'ID del commerciante. Se specificato, corrisponde a Restaurant.@id nel feed del ristorante.

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

name String

Obbligatorio.

Nome visibile all'utente del commerciante.

Esempio: Falafel Bite

Nell'esempio seguente viene mostrato un elemento Merchant:

Esempio

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

Denaro

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

Proprietà Tipo Descrizione
currencyCode String

Obbligatorio.

Un codice valuta di 3 lettere in formato ISO 4217.

Esempio: USD

units String

Le unità intere dell'importo. Ad esempio, se currencyCode è "USD", allora "1" è un dollaro statunitense.

Esempio: 36

nanos Intero

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

Esempio: 730000000

Nell'esempio seguente viene mostrato un elemento Money:

Esempio 1

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

Esempio 2

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

Ordine

Contiene l'ordine finale, comprese tasse, commissioni e spese di spedizione, come nonché i dati di pagamento. Questo oggetto viene ricevuto dalla tua azione in un Submit AppRequest.

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

Proprietà Tipo Descrizione
finalOrder ProposedOrder

Obbligatorio.

L'ordine proposto che ha generato l'ordine.

googleOrderId String

Obbligatorio.

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

orderDate Timestamp ISO

Obbligatorio.

La data e l'ora in cui è stato creato l'ordine.

paymentInfo PaymentInfo

Obbligatorio.

Dati di pagamento corrispondenti al pagamento di questo ordine.

Nell'esempio seguente viene mostrato un elemento Order:

Esempio

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

OrderUpdate

Nella tabella seguente vengono descritti i campi di tipo OrderUpdate, incluso in AppResponse.

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

Proprietà Tipo Descrizione
actionOrderId String

Obbligatorio.

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

orderState OrderState

Obbligatorio.

Il nuovo stato dell'ordine.

lineItemUpdates Mappa<String, LineItemUpdate>
updateTime Timestamp ISO

Obbligatorio.

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

orderManagementActions Elenco<OrderManagementAction>

Azioni successive all'ordine, ad esempio contattare l'assistenza e visualizzare i dettagli dell'ordine.

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

rejectionInfo RejectionInfo

Obbligatorio se orderState.state = "REJECTED".

cancellationInfo CancellationInfo

Obbligatorio se orderState.state = "CANCELLED".

inTransitInfo InTransitInfo

Questo campo è obsoleto.

fulfillmentInfo FulfillmentInfo

Questo campo è obsoleto.

receipt Receipt

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

Fornisci l'ID ordine visibile all'utente in una ricevuta.

totalPrice Price

Prezzo totale dell'ordine.

infoExtension FoodOrderUpdateExtension

Definisce ulteriori dettagli sull'aggiornamento dell'ordine, come l'intervallo per la consegna stimata o il ritiro.

Nell'esempio seguente viene mostrato un elemento OrderUpdate:

Esempio

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

PickupInfo

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

Proprietà Tipo Descrizione
pickupTimeIso8601 String

Orario di ritiro stimato, nel formato di timestamp ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" o il formato della durata: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Ad esempio, PT90M rappresenta una durata di 90 minuti. Il valore predefinito, "PT0M", indica che l'orario di ritiro preferito è il prima possibile. Riferimento: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. Utilizza questo campo per aggiornare l'orario di ritiro stimato durante la risposta al pagamento.

Esempio: PT90M

Nell'esempio seguente viene mostrato un elemento PickupInfo:

Esempio

{
  "pickupTimeIso8601": "PT90M"
}

PostalAddress

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

Proprietà Tipo Descrizione
regionCode String

Obbligatorio.

Un codice paese di due lettere.

Esempio: US

postalCode String

Il codice postale.

Esempio: 94043

administrativeArea String

Suddivisione amministrativa di livello più elevato utilizzata per gli indirizzi postali di un paese o di una regione. Può essere uno stato, una provincia, un oblast o una prefettura.

Esempio: CA

locality String

La città di questa località. Nelle regioni del mondo in cui le località non sono ben definite o non rientrano in questa struttura, non specificare la località e utilizza il campo addressLines.

Esempio: Mountain View

addressLines Elenco<String>

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

Esempio: [ "1350 Charleston Road" ]

recipients Elenco<String>

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

Nell'esempio seguente viene mostrato un elemento PostalAddress:

Esempio

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

Prezzo

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

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

Obbligatorio.

Il codice del coupon promozionale.

amount Money

Obbligatorio.

Promozione

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

Proprietà Tipo Descrizione
coupon String

Obbligatorio.

Il codice del coupon promozionale.

ProposedOrder

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

Proprietà Tipo Descrizione
id String

ID facoltativo per l'ordine proposto.

cart Cart

Obbligatorio.

Articoli dell'utente.

otherItems Elenco<LineItem>

Articoli aggiunti dal fornitore, ad esempio spese di spedizione, altre commissioni e imposte. Gli altri articoli possono anche includere una mancia e/o uno sconto aggiunto dall'utente.

Non deve contenere più di 10 elementi.

image Image

Immagine associata all'ordine proposto.

totalPrice Price

Obbligatorio.

Prezzo totale dell'ordine proposto.

extension FoodOrderExtension

Obbligatorio.

Definisce le informazioni di evasione degli ordini di cibo.

disclaimers Elenco<Disclaimer>

Corrisponde ai messaggi di disclaimer che verranno visualizzati nell'interfaccia utente prima di effettuare l'ordine.

Nell'esempio seguente viene mostrato un elemento ProposedOrder:

Esempio

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

SublineNote

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

Proprietà Tipo Descrizione
note String

Obbligatorio.

Timestamp

Data e ora nel seguente formato: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"

TransactionDecisionValue

Contiene il valore Order.

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

Proprietà Tipo Descrizione
order Order

Obbligatorio.

Ordine da effettuare con i dati di pagamento.

Nell'esempio seguente viene mostrato un elemento TransactionDecisionValue:

Esempio

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

Richiesta di evasione ordine

AppRequest

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

Proprietà Tipo Descrizione
isInSandbox Valore booleano

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

conversation Conversation
inputs Elenco<Input>

Obbligatorio.

Contiene gli argomenti previsti per il pagamento di un carrello.

Deve essere presente esattamente 1 articolo.

Nell'esempio seguente viene mostrato un elemento AppRequest:

Esempio 1

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

Esempio 2

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

CheckoutRequestMessage

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

SubmitOrderRequestMessage

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

Conversazione

Un Conversation è univoco per una sola sessione. Puoi utilizzarlo per collegare più Checkout e SubmitOrder Azioni insieme se necessario.

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

Proprietà Tipo Descrizione
conversationId String

Obbligatorio.

ID univoco della conversazione.

Nell'esempio seguente viene mostrato un elemento Conversation:

Esempio

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

Input

Gli argomenti previsti per il pagamento di un carrello.

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

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

Obbligatorio.

Imposta su "actions.foodordering.intent.CHECKOUT" per il messaggio di richiesta di pagamento O "actions.intent.TRANSACTION_DECISION" per inviare il messaggio di richiesta dell'ordine.

arguments Elenco<Argument>

Obbligatorio.

Contiene il carrello da pagare o l'ordine da effettuare

Deve essere presente esattamente 1 articolo.

Argomento

Contiene dettagli sugli alimenti che l'utente vuole controllare. Per il pagamento è applicabile solo l'estensione. Per l'invio dell'ordine è applicabile solo transactionDecisionValue

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

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

Descrive in dettaglio gli alimenti che l'utente vuole pagare.

transactionDecisionValue Gruppo 2 TransactionDecisionValue

Contiene l'ordine da effettuare e i dettagli sul pagamento.

Risposta di evasione ordine

AppResponse

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

Proprietà Tipo Descrizione
expectUserResponse Costanza

Imposta il valore su false.

Valore: False

finalResponse FinalResponse

Obbligatorio.

Contiene la tua risposta al pagamento del carrello.

Nell'esempio seguente viene mostrato un elemento AppResponse:

Esempio 1

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

Esempio 2

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

Esempio 3

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

Esempio 4

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

CheckoutResponseMessage

Un CheckoutResponseMessage è un AppResponse con checkoutResponse o error nel StructuredResponse

SubmitOrderResponseMessage

Un SubmitOrderResponseMessage è un AppResponse con orderUpdate in StructuredResponse.

FinalResponse

La tua risposta al pagamento del carrello o a SubmitOrderRequestMessage.

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

Proprietà Tipo Descrizione
richResponse RichResponse

Obbligatorio.

Contiene la risposta al messaggio CheckoutRequestMessage o SubmitOrderRequestMessage.

CheckoutResponse

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

Proprietà Tipo Descrizione
proposedOrder ProposedOrder

Obbligatorio.

Ordine proposto da utilizzare per la transazione.

paymentOptions PaymentOptions

Obbligatorio.

È stata selezionata l'opzione di pagamento predefinita per l'utente.

additionalPaymentOptions Elenco<PaymentOptions>

Opzioni di pagamento alternative a disposizione dell'utente.

Nell'esempio seguente viene mostrato un elemento CheckoutResponse:

Esempio

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

Elemento

Contiene la risposta al pagamento di un carrello o a SubmitOrderRequestMessage.

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

Proprietà Tipo Descrizione
structuredResponse StructuredResponse

Obbligatorio.

RichResponse

Contiene la tua risposta al pagamento di un carrello.

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

Proprietà Tipo Descrizione
items Elenco<Item>

Obbligatorio.

Deve essere presente esattamente 1 articolo.

StructuredResponse

Per CheckoutResponseMessage, il valore può essere uno dei seguenti: CheckResponse Indica che il pagamento è andato a buon fine. OR FoodErrorEstensione: indica un errore durante il pagamento. La risposta può includere ProposedOrder e PaymentOptions corretti oppure un messaggio di errore senza PaymentOptions. Per SubmitOrderResponseMessage è applicabile solo orderUpdate.

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

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

Articoli pagati, tasse e sconti.

error Gruppo 2 FoodErrorExtension

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

orderUpdate Gruppo 3 OrderUpdate

Aggiornamenti dell'ordine asincrono

Questa sezione descrive i tipi di alto livello che compongono le richieste e risposte di una tipica interazione di azione integrata di ordinazione di cibo.

AsyncOrderUpdateRequestMessage

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

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

Proprietà Tipo Descrizione
isInSandbox Valore booleano

Indica che l'ordine per cui è stato inviato l'aggiornamento è un pagamento sandbox.

customPushMessage CustomPushMessage

Obbligatorio.

Contiene l'elemento OrderUpdate per la richiesta.

Nell'esempio seguente viene mostrato un elemento AsyncOrderUpdateRequestMessage:

Esempio

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

AsyncOrderUpdateResponseMessage

Dopo che avrai inviato correttamente un AsyncOrderUpdateRequestMessage, Google risponde con uno stato HTTP 200 e un corpo vuoto. Se l'aggiornamento non è andato a buon fine, Google risponde fornendo dettagli sul motivo per cui l'aggiornamento dell'ordine non è riuscito.

Tipi di aggiornamento dell'ordine

Pulsante

Definisce un elemento dell'interfaccia utente che puoi aggiungere per fornire un'interazione con l'utente.

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

Proprietà Tipo Descrizione
title String

Obbligatorio.

L'etichetta da visualizzare. Per garantire il rendering corretto, utilizza la maiuscola a inizio frase e non superi i 30 caratteri.

Esempio: Contact us

openUrlAction OpenUrlAction

Obbligatorio.

Nell'esempio seguente viene mostrato un elemento Button:

Esempio

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

CancellationInfo

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

Proprietà Tipo Descrizione
reason String

Obbligatorio.

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

Esempio: Restaurant closed

Nell'esempio seguente viene mostrato un elemento CancellationInfo:

Esempio

{
  "reason": "Insufficient inventory"
}

FoodOrderUpdateExtension

Questo tipo fornisce all'utente un intervallo stimato per il momento in cui verrà effettuato l'ordine consegnato o pronto per il ritiro. Invia questa estensione in un OrderUpdate ogni volta che le informazioni sono disponibili o sono state modificate dall'ultimo invio.

Fornisci una stima prudente per l'intervallo di completamento, in modo che l'utente vengono soddisfatte costantemente. Ad esempio, se si stima che l'ordine sia inviato oggi alle 13:00, dovresti inviare un intervallo stimato in linea con le variazioni dovute alle condizioni del traffico, ad esempio oggi alle 12:45 alle 13:15.

Una durata o un timestamp ISO 8601 viene interpretata come l'intervallo tra updateTime di OrderUpdate (in sostanza, "ora") alla updateTime più duration. Non usare questo formato a meno che non sia "ora" è un'aspettativa ragionevole.

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

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

Proprietà Tipo Descrizione
@type Costanza

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

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

estimatedFulfillmentTimeIso8601 String

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

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

foodOrderErrors Elenco<FoodOrderError>

Descrive gli errori che si sono verificati dopo l'ordine. È consigliato un errore per carrello o per articolo. Utilizza FoodOrderUpdateEstensione.FoodOrderErrors per gli errori non coperti da RifiutaInfo.

Non deve contenere meno di 1 elemento.

Nell'esempio seguente viene mostrato un elemento FoodOrderUpdateExtension:

Esempio 1

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

Esempio 2

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

FulfillmentInfo

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

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

UtilizzaestimatedFulfillmentTimeIso8601 nel messaggio FoodOrderingUpdateextension

pickupTime Gruppo 2 Timestamp ISO

UtilizzaestimatedFulfillmentTimeIso8601 nel messaggio FoodOrderingUpdateextension

Nell'esempio seguente viene mostrato un elemento FulfillmentInfo:

Esempio 1

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

Esempio 2

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

InTransitInfo

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

Proprietà Tipo Descrizione
updatedTime Timestamp ISO

UtilizzaestimatedFulfillmentTimeIso8601 nel messaggio FoodOrderingUpdateextension

Nell'esempio seguente viene mostrato un elemento InTransitInfo:

Esempio

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

LineItemUpdate

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

Proprietà Tipo Descrizione
orderState OrderState
price Price
reason String

Il motivo della modifica. Obbligatorio per le variazioni di prezzo.

Nell'esempio seguente viene mostrato un elemento LineItemUpdate:

Esempio

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

OpenUrlAction

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

Proprietà Tipo Descrizione
url String

Obbligatorio.

L'azione attivata facendo clic o toccando il pulsante. L'elenco dei prefissi applicabili dipende da orderManagementActionType. "EMAIL": il prefisso deve essere "mailto". "CALL": il prefisso deve essere "tel". "CUSTOMER_SERVICE": il prefisso deve essere "mailto", "tel", "http" o "https".

Esempio: https://www.google.com

OrderManagementAction

La gestione degli ordini consente agli utenti di ricevere assistenza successiva all'ordine e deve essere inviata ogni OrderUpdate all'interno dell'ordine di invio AppResponse e i pod AsyncOrderUpdateRequestMessage Le azioni di gestione degli ordini inviate per un determinato ordine possono variare in base al stato.

Ad esempio, nella colonna "CREATED" stato, CUSTOMER_SERVICE potrebbe fare riferimento ai tuoi telefono per l'assistenza clienti. Nella colonna "CONFERMA" stato, CUSTOMER_SERVICE possono passare al telefono del ristorante se questo diventa il punto di riferimento di contatto per il cliente. Allo stesso modo, una volta che l'ordine si trova nello stato stato, CUSTOMER_SERVICE può fare riferimento ai tuoi indirizzi email di assistenza.

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

Proprietà Tipo Descrizione
type OrderManagementActionType

Obbligatorio.

button Button

Obbligatorio.

Nell'esempio seguente viene mostrato un elemento OrderManagementAction:

Esempio 1

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

Esempio 2

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

OrderManagementActionType

Definisce i tipi relativi a OrderManagementAction.

Il tipo OrderManagementActionType ha i seguenti valori possibili:

  • CUSTOMER_SERVICE: indirizzo email e/o numero di contatto dell'assistenza clienti da mostrare sulla pagina di conferma dell'ordine. Questo campo è obbligatorio. Il prefisso openUrlAction.url deve essere "mailto", "tel", "http" o "https".
  • EMAIL: azione email solo nella pagina dei dettagli dell'ordine. Il prefisso openUrlAction.url deve essere "mailto".
  • CALL_DRIVER: azione di chiamata solo nella pagina dei dettagli dell'ordine. Il prefisso openUrlAction.url deve essere "tel".
  • CALL_RESTAURANT: azione di chiamata solo nella pagina dei dettagli dell'ordine. Il prefisso openUrlAction.url deve essere "tel".

OrderState

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

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

Proprietà Tipo Descrizione
state OrderStateEnum

Obbligatorio.

label String

Obbligatorio.

La stringa visualizzata dall'utente per lo stato. Usa la maiuscola a inizio frase.

Esempio: Your order has been received

Nell'esempio seguente viene mostrato un elemento OrderState:

Esempio

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

OrderStateEnum

Definisce i tipi relativi a OrderState.

Il tipo OrderStateEnum ha i seguenti valori possibili:

  • CREATED: ordine creato dall'integratore e in attesa di conferma da parte del fornitore. Corrisponde al valore "Ordinato" stato dell'acquisto.
  • CONFIRMED: ordine confermato dal fornitore ed è attivo. Corrisponde allo stato "Accettato" stato dell'acquisto.
  • REJECTED: ordine rifiutato dall'integratore o dal fornitore. Corrisponde al "Rifiutato" stato dell'acquisto.
  • CANCELLED: l'utente ha annullato l'ordine. Corrisponde allo stato "Annullato" stato dell'acquisto.
  • IN_PREPARATION: si prepara il cibo. Corrisponde allo "Stato sconosciuto" stato dell'acquisto.
  • READY_FOR_PICKUP: cibo pronto per il ritiro. Corrisponde al campo "Pronto per il ritiro" stato dell'acquisto.
  • IN_TRANSIT: l'ordine è in fase di consegna. Corrisponde allo stato "In corso" stato dell'acquisto.
  • FULFILLED: l'utente ha ricevuto ciò che è stato ordinato. Corrisponde al "Ritiro" stato dell'acquisto.

Ricevuta

Invia questo tipo in un ordine di invio AppResponse, dove OrderState è "CONFIRMED", "FULFILLED" o "IN_TRANSIT". Invia ricevuta a l'ora in cui userVisibleOrderId diventa disponibile. Non è necessario conservare inviando la ricevuta negli aggiornamenti successivi.

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

Proprietà Tipo Descrizione
userVisibleOrderId String

Obbligatorio.

Obbligatorio se l'ordine è "CONFIRMED", "IN_TRANSIT" o "FULFILLED". Questo campo è il singolo ID rivolto all'utente per questo ordine (di solito l'ID ordine del ristorante), visualizzato sia nella ricevuta dell'integratore sia nella scheda dell'ordine Google. L'utente deve essere in grado di utilizzare questo ID per fare riferimento all'ordine di assistenza clienti con il fornitore e l'integratore. Devi fornire questo ID una sola volta in ogni OrderUpdate. Finché non viene fornito, actionOrderId è userVisibileOrderId. Ad esempio, potresti non avere userVisibileOrderId fino a quando l'ordine non viene confermato dal ristorante. Dopo la conferma, devi inviare un AsyncOrderUpdateRequestMessage con un OrderUpdate e una ricevuta.

Nell'esempio seguente viene mostrato un elemento Receipt:

Esempio

{
  "userVisibleOrderId": "userVisibleId1234"
}

RejectionInfo

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

Proprietà Tipo Descrizione
type RejectionType

Obbligatorio.

reason String

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

Nell'esempio seguente viene mostrato un elemento RejectionInfo:

Esempio

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

RejectionType

Il tipo RejectionType ha i seguenti valori possibili:

  • INELIGIBLE: l'utente non è idoneo a causa di problemi relativi alle norme o ai rischi.
  • PAYMENT_DECLINED: si è verificato un problema con l'elaborazione dei pagamenti.
  • UNAVAILABLE_SLOT: l'ordine non può essere evaso con l'ordine in anticipo specificato dalle info di consegna o dalle informazioni per il ritiro.
  • PROMO_NOT_APPLICABLE: si è verificato un problema con la promozione.
  • UNKNOWN: qualsiasi altro motivo.

Tipi di pagamenti

In questa sezione vengono descritti i tipi di pagamenti utilizzati per le ordinazioni di cibo fulfillment.

ActionProvidedPaymentOptions

Requisiti per un metodo di pagamento fornito da un'azione.

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

Proprietà Tipo Descrizione
paymentType PaymentType

Obbligatorio.

displayName String

Obbligatorio.

Nome dello strumento di pagamento riportato sullo scontrino.

Esempio: Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

Dati aggiuntivi per il metodo paymentType "ON_FULFILLMENT". Ad esempio, puoi utilizzare questo campo per specificare se i contanti o la carta sono supportati per l'evasione dell'ordine.

Nell'esempio seguente viene mostrato un elemento ActionProvidedPaymentOptions:

Esempio

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

AllowedAuthMethods

Il tipo AllowedAuthMethods ha i seguenti valori possibili:

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

AllowedCardNetworks

Il tipo AllowedCardNetworks ha i seguenti valori possibili:

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

BillingAddressParameters

Questo oggetto consente di impostare campi aggiuntivi da restituire per un indirizzo di fatturazione richiesto.

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

Proprietà Tipo Descrizione
format String

Formato dell'indirizzo di fatturazione richiesto per completare la transazione. MIN: nome, codice paese e codice postale. COMPLETO: nome, indirizzo, località, regione, codice paese e codice postale.

Nell'esempio seguente viene mostrato un elemento BillingAddressParameters:

Esempio 1

{
  "format": "MIN"
}

Esempio 2

{
  "format": "FULL"
}

CardParameters

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

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

Proprietà Tipo Descrizione
allowedAuthMethods List<Const>

Obbligatorio.

Campi supportati per autenticare una transazione con carta.

Non deve contenere meno di 1 elemento.

allowedCardNetworks Elenco<AllowedCardNetworks>

Obbligatorio.

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

Non deve contenere meno di 1 elemento.

billingAddressRequired Valore booleano

Imposta il valore su true se hai bisogno di un indirizzo di fatturazione. Richiedi un indirizzo di fatturazione solo se è necessario per elaborare la transazione. Le richieste di dati aggiuntive possono aumentare le difficoltà nella procedura di pagamento e portare a una riduzione dei tassi di conversione.

billingAddressParameters BillingAddressParameters

I campi previsti sono stati restituiti se billingAddressRequired è impostato su true.

cvcRequired Valore booleano

Imposta il valore su true se utilizzi TimesofMoney, false per tutti gli altri elaboratori dei pagamenti.

Nell'esempio seguente viene mostrato un elemento CardParameters:

Esempio 1

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

Esempio 2

{
  "allowedAuthMethods": [
    "PAN_ONLY"
  ],
  "allowedCardNetworks": [
    "AMEX",
    "DISCOVER"
  ],
  "billingAddressRequired": true,
  "billingAddressParameters": {
    "format": "MIN"
  },
  "cvcRequired": false
}

GoogleProvidedPaymentInstrument

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

Proprietà Tipo Descrizione
instrumentToken String

Obbligatorio.

Stringa di base codificata in 64 che contiene il token di pagamento per l'addebito all'utente presso un elaboratore partecipante di Google Pay, secondo quanto specificato in precedenza per GoogleProvidedPaymentOptions.

billingAddress PostalAddress

Indirizzo di fatturazione per il pagamento.

Nell'esempio seguente viene mostrato un elemento GoogleProvidedPaymentInstrument:

Esempio

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

GoogleProvidedPaymentOptions

Requisiti per il metodo di pagamento fornito da Google.

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

Proprietà Tipo Descrizione
facilitationSpecification String

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

supportedCardNetworks Elenco<SupportedCardNetworks>

Usa invece facilitationSpecification. Tipo di reti di carte supportate dall'agente.

Questo campo è obsoleto.

prepaidCardDisallowed Valore booleano

Usa invece facilitationSpecification. Indica se una carta prepagata è consentita come tipo di pagamento.

Questo campo è obsoleto.

billingAddressRequired Valore booleano

Usa invece facilitationSpecification. Indica se è richiesto o meno un indirizzo di fatturazione.

Questo campo è obsoleto.

tokenizationParameters TokenizationParameters

Questo campo è obsoleto.

Nell'esempio seguente viene mostrato un elemento GoogleProvidedPaymentOptions:

Esempio 1

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

Esempio 2

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

Esempio 3

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

MerchantInfo

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

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

Proprietà Tipo Descrizione
merchantId String

Identificatore commerciante Google fornito all'utente da Google Pay.

merchantName String

Obbligatorio.

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

OnFulfillmentPaymentData

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

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

Proprietà Tipo Descrizione
supportedPaymentOptions Elenco<PaymentOptionsEnums>

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

Nell'esempio seguente viene mostrato un elemento OnFulfillmentPaymentData:

Esempio

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

Parametri

Definisce i tipi relativi a TokenizationParameters.

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

Proprietà Tipo Descrizione
gateway String

Obbligatorio.

Esempio: braintree

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

Nell'esempio seguente viene mostrato un elemento Parameters:

Esempio 1

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

Esempio 2

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

PaymentDataRequest

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

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

Proprietà Tipo Descrizione
apiVersion Costanza

Obbligatorio.

Versione principale dell'API.

Valore: 2

apiVersionMinor Costanza

Obbligatorio.

Versione API minore.

Valore: 0

merchantInfo MerchantInfo

Obbligatorio.

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

allowedPaymentMethods Elenco<PaymentMethod>

Obbligatorio.

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

transactionInfo TransactionInfo

Obbligatorio.

Dettagli sull'autorizzazione della transazione a seconda che l'utente abbia acconsentito o meno alla transazione. Questo campo include il prezzo totale e lo stato del prezzo.

Nell'esempio seguente viene mostrato un elemento PaymentDataRequest:

Esempio

{
  "apiVersion": 2,
  "apiVersionMinor": 0,
  "merchantInfo": {
    "merchantId": "10391231",
    "merchantName": "Burrito Town"
  },
  "allowedPaymentMethods": [
    {
      "type": "CARD",
      "parameters": {
        "allowedAuthMethods": [
          "PAN_ONLY"
        ],
        "allowedCardNetworks": [
          "VISA",
          "AMEX",
          "MASTERCARD"
        ],
        "billingAddressRequired": true,
        "billingAddressParameters": {
          "format": "FULL"
        },
        "cvcRequired": false
      },
      "tokenizationSpecification": {
        "type": "PAYMENT_GATEWAY",
        "parameters": {
          "gateway": "stripe",
          "stripe:version": "2019-05-16",
          "stripe:publishableKey": "pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA"
        }
      }
    }
  ],
  "transactionInfo": {
    "currencyCode": "INR",
    "totalPriceStatus": "ESTIMATED",
    "totalPrice": "185.00"
  }
}

PaymentInfo

Informazioni relative al pagamento di un ordine.

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

Proprietà Tipo Descrizione
displayName String

Obbligatorio.

Nome dello strumento di pagamento visibile all'utente da visualizzare sulla ricevuta.

paymentType PaymentType

Obbligatorio.

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

Token che può essere utilizzato dall'azione. Specificalo solo se hai specificato GoogleProvidedPaymentOptions come opzione di pagamento in CheckResponseMessage.

Nell'esempio seguente viene mostrato un elemento PaymentInfo:

Esempio 1

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

Esempio 2

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

PaymentMethod

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

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

Proprietà Tipo Descrizione
type Costanza

Obbligatorio.

Identificatore breve del metodo di pagamento supportato. Al momento è supportata solo la carta CARD.

Valore: CARD

parameters CardParameters

Obbligatorio.

Parametri necessari per configurare il tipo di metodo di pagamento fornito.

tokenizationSpecification TokenizationSpecification

Obbligatorio.

Configura un account o un fornitore di servizi di decriptazione per ricevere i dati di pagamento. Questa proprietà è obbligatoria per il metodo di pagamento CARD.

Nell'esempio seguente viene mostrato un elemento PaymentMethod:

Esempio

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

PaymentOptions

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

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

Si escludono a vicenda con actionProvidedOptions. Utilizza questa opzione per i pagamenti online tramite gPay.

actionProvidedOptions Gruppo 2 ActionProvidedPaymentOptions

Si escludono a vicenda con googleProvidedOptions. Utilizza questa opzione per i pagamenti in contanti alla consegna oppure "pagare all'evasione dell'ordine".

Nell'esempio seguente viene mostrato un elemento PaymentOptions:

Esempio 1

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

Esempio 2

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

Esempio 3

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

PaymentOptionsEnums

Il tipo PaymentOptionsEnums ha i seguenti valori possibili:

  • Cash
  • Card
  • UPI
  • Paytm

PaymentType

Il tipo PaymentType ha i seguenti valori possibili:

  • PAYMENT_CARD: per GoogleProvidedPaymentOptions.
  • ON_FULFILLMENT: per ActionProvidedPaymentOptions.

SupportedCardNetworks

Definisce i tipi relativi a GoogleProvidedPaymentOptions.

Il tipo SupportedCardNetworks ha i seguenti valori possibili:

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

TokenizationParameters

Definisce i tipi relativi a GoogleProvidedPaymentOptions.

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

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

Obbligatorio.

Usa invece facilitationSpecification. Tipo di token accettabile.

parameters Parameters

Usa invece facilitationSpecification.

TokenizationSpecification

Questo oggetto consente di configurare un account in modo da ricevere dati di pagamento addebitabili.

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

Proprietà Tipo Descrizione
type Costanza

Obbligatorio.

parameters Parameters

Obbligatorio.

Nell'esempio seguente viene mostrato un elemento TokenizationSpecification:

Esempio 1

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

Esempio 2

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

TransactionInfo

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

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

Proprietà Tipo Descrizione
currencyCode String

Obbligatorio.

Codice alfabetico di valuta ISO 4217.

transactionId String

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

totalPriceStatus Costanza

Obbligatorio.

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

Valore: ESTIMATED

totalPrice String

Obbligatorio.

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

Nell'esempio seguente viene mostrato un elemento TransactionInfo:

Esempio

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