Tipos de base
Carrito
Contiene detalles del pedido y también si la solicitud es de retiro. o entrega. Un carrito también contiene los detalles de la entrega, la propina y la entrega web. El objetoCart
se define en un archivo Checkout AppRequest
.f
Incluyes una copia del carrito en tu Checkout AppResponse
En la siguiente tabla, se enumeran las propiedades del tipo Cart
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
@type |
Const. |
Es el tipo de este objeto. Omite este campo si el objeto Cart superior forma parte de ProposaldOrder. Valor: |
|
id |
String |
Es el ID opcional del carrito. |
|
merchant |
Merchant |
El comercio está afiliado a este carrito. |
|
lineItems |
Lista<LineItem > |
Obligatorio. Lista de los productos o servicios que solicita el usuario. No debe tener menos de 1 elemento. |
|
promotions |
Lista<Promotion > |
Promoción aplicada en este carrito. Por el momento, solo se admite una promoción. |
|
notes |
String |
Notas sobre las instrucciones del pedido o de la entrega. |
|
extension |
FoodCartExtension |
Define los detalles del usuario, como las preferencias de entrega. |
En el siguiente ejemplo, se muestra un elemento Cart
:
Ejemplo 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" } } }
Ejemplo 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" } } }
Contacto
Especifica los detalles sobre la persona que recibe el pedido. Solo está disponible enAppResponse
En la siguiente tabla, se enumeran las propiedades del tipo Contact
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
displayName |
String |
Nombre de la persona que recibe el pedido, tal como quieres que se muestre Usa este campo si no se especifican firstName y lastName. Ejemplo: |
|
email |
String |
Dirección de correo electrónico de la persona que recibe el pedido. Ejemplo: |
|
firstName |
String |
Nombre de la persona que recibe el pedido Ejemplo: |
|
lastName |
String |
Apellido de la persona que recibe el pedido. Ejemplo: |
|
phoneNumber |
String |
Número de teléfono de la persona que recibe el pedido, incluido el código de país Ejemplo: |
|
emailVerified |
Booleano |
Indica si la persona que recibe el pedido accedió con su Cuenta de Google. |
En el siguiente ejemplo, se muestra un elemento Contact
:
Ejemplo
{ "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" }
CustomPushMessage
Contiene elOrderUpdate
de la solicitud.
En la siguiente tabla, se enumeran las propiedades del tipo CustomPushMessage
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
orderUpdate |
OrderUpdate |
Obligatorio. Se actualizó la información del pedido. |
En el siguiente ejemplo, se muestra un elemento CustomPushMessage
:
Ejemplo
{ "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
En la siguiente tabla, se enumeran las propiedades del tipo DeliveryInfo
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
deliveryTimeIso8601 |
String |
Tiempo de entrega estimado, en formato de marca de tiempo ISO 8601: “{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z” o el formato de duración: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Por ejemplo, PT90M representa una duración de 90 minutos. El valor predeterminado, “PT0M”, indica que el tiempo de entrega preferido es lo antes posible. Referencia: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. Usa esta opción para actualizar el tiempo de entrega estimado durante la respuesta de confirmación de la compra. Ejemplo: |
En el siguiente ejemplo, se muestra un elemento DeliveryInfo
:
Ejemplo
{ "deliveryTimeIso8601": "PT90M" }
Renuncia de responsabilidad
En la siguiente tabla, se enumeran las propiedades del tipo Disclaimer
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
predefinedMessage |
PredefinedMessage |
Obligatorio. Para mostrar mensajes de renuncia de responsabilidad predefinidos durante la confirmación de la compra |
|
feeAmount |
Money |
El socio cobrará al comercio una tarifa de importe N por este pedido. |
|
feeAmountRange |
FeeAmountRange |
El socio cobrará al restaurante un monto de tarifa N a M por pedido. |
|
feePercent |
Número |
El socio cobrará al comercio una tarifa del N% por este pedido. |
|
feePercentRange |
FeePercentRange |
El socio cobrará al comercio una tarifa de N% a M% por pedido. |
En el siguiente ejemplo, se muestra un elemento Disclaimer
:
Ejemplo 1
{ "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER" }
Ejemplo 2
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE" }
Ejemplo 3
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feePercent": 25 }
Ejemplo 4
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feePercentRange": { "minFeePercent": 20, "maxFeePercent": 30 } }
Ejemplo 5
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feeAmount": { "currencyCode": "AUD", "units": 2, "nanos": 500000000 } }
Ejemplo 6
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feeAmountRange": { "minFeeAmount": { "currencyCode": "AUD", "units": 2, "nanos": 500000000 }, "maxFeeAmount": { "currencyCode": "AUD", "units": 10, "nanos": 0 } } }
Error
El tipo Error
tiene los siguientes valores posibles:
CLOSED
: El restaurante está cerrado en el momento de realizar pedidos.NO_CAPACITY
: No hay capacidad de servicio disponible (por ejemplo, una interrupción temporal debido a horas de mayor demanda).NO_COURIER_AVAILABLE
: No se puede procesar el pedido porque el personal de entrega es limitado.REQUIREMENTS_NOT_MET
: No se cumplieron las restricciones para aceptar el pedido (por ejemplo, el tamaño mínimo del carrito).UNAVAILABLE_SLOT
: El pedido no se puede entregar en la hora de anticipación que se especifica en DeliveryInfo o PickupInfo.OUT_OF_SERVICE_AREA
: El pedido no se puede entregar a la dirección del usuario.PROMO_EXPIRED
: No se pudo aplicar porque la promoción venció.PROMO_NOT_APPLICABLE
: Es un código de error genérico que registra todos los casos en los que no se puede aplicar el código promocional si ninguno de los otros errores de códigos promocionales es adecuado.PROMO_NOT_RECOGNIZED
: No se reconoció el código del cupón.PROMO_ORDER_INELIGIBLE
: El pedido actual no es apto para este cupón.PROMO_USER_INELIGIBLE
: El usuario actual no es apto para obtener este cupón.AVAILABILITY_CHANGED
: El artículo ya no está disponible o no hay suficientes para cumplir con la solicitud.INCORRECT_PRICE
: Errores de precio en tarifas o el total.INVALID
: Un elemento LineItem, FulfillmentOption o Promoción contiene datos no válidos.NOT_FOUND
: No se puede encontrar un elemento de una sola línea, una opción de entrega ni una promoción.PRICE_CHANGED
: Cambió el precio de un elemento.
FeeAmountRange
En la siguiente tabla, se enumeran las propiedades del tipo FeeAmountRange
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
minFeeAmount |
Money |
Límite inferior del importe de la tarifa que se cobra. |
|
maxFeeAmount |
Money |
Límite superior del importe de la tarifa cobrada. |
FeePercentRange
En la siguiente tabla, se enumeran las propiedades del tipo FeePercentRange
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
minFeePercent |
Número |
Límite inferior del porcentaje de tarifa cobrada. |
|
maxFeePercent |
Número |
Límite superior del porcentaje de tarifa cobrada. |
FoodCartExtension
Contiene detalles sobre el usuario, como las preferencias de entrega.
En la siguiente tabla, se enumeran las propiedades del tipo FoodCartExtension
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
@type |
Const. |
Es el tipo de esta extensión. Este campo siempre está configurado como "type.googleapis.com/google.actions.v2.orders.FoodCartExtension". Valor: |
|
contact |
Contact |
Información de contacto de la persona que recibe el pedido. Los detalles incluyen el nombre, el número de teléfono y la dirección de correo electrónico de la persona. |
|
fulfillmentPreference |
FulfillmentOption |
Obligatorio. Preferencia de entrega del usuario. |
|
location |
Location |
En CheckoutRequestMessage, este campo especifica la dirección de entrega, que es obligatoria si el pedido es para entrega. En el caso de los pedidos para llevar o retirar, este campo no se incluye en el mensaje. |
En el siguiente ejemplo, se muestra un elemento FoodCartExtension
:
Ejemplo 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" } }
Ejemplo 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 más errores que se produjeron mientras se procesaba una solicitud. En la siguiente tabla, se describen los campos del tipoFoodErrorExtension
.
Los errores se pueden enviar en un CheckoutResponse
.
En la siguiente tabla, se enumeran las propiedades del tipo FoodErrorExtension
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
@type |
Const. | Obligatorio. Es el tipo de esta extensión. Valor: |
|
foodOrderErrors |
Lista<FoodOrderError > |
Obligatorio. Arreglo de objetos FoodOrderError que describen los errores que se produjeron. Se recomienda un error por carrito o por artículo. No debe tener menos de 1 elemento. |
|
correctedProposedOrder |
ProposedOrder |
Obligatorio cuando
Un nuevo ProposaldOrder con correcciones. Devuelve este objeto si hay errores recuperables en el ProposaldOrder original. Por ejemplo, un cambio en el precio de una o más líneas de pedido en el carrito es un error recuperable. Los errores recuperables con un ProposaldOrder válido se avanzan a la etapa de confirmación, en lugar de requerir que el usuario revise su carrito. |
|
paymentOptions |
PaymentOptions |
Obligatorio cuando
Son las opciones de pago predeterminadas seleccionadas para el usuario. |
|
additionalPaymentOptions |
Lista<PaymentOptions > |
Son las opciones de pago alternativas disponibles para el usuario. |
En el siguiente ejemplo, se muestra un elemento FoodErrorExtension
:
Ejemplo
{ "@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
Define los complementos para los alimentos.
En la siguiente tabla, se enumeran las propiedades del tipo FoodItemExtension
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
@type |
Const. | Obligatorio. Es el tipo de esta extensión. Este campo siempre está configurado como "type.googleapis.com/google.actions.v2.orders.FoodItemExtension". Valor: |
|
options |
Lista<FoodItemOption > |
Una opción puede ser un elemento o grupo de complementos que contenga un conjunto de complementos. |
En el siguiente ejemplo, se muestra un elemento FoodItemExtension
:
Ejemplo
{ "@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
En la siguiente tabla, se enumeran las propiedades del tipo FoodItemOption
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
id |
String |
Es el ID único asignado por Google. Cuando envíes un FoodOrderError o AsyncOrderUpdateRequest, usa este campo para diferenciar los casos en los que un carrito contenga más de un artículo con el mismo offerId. Ejemplo: |
|
offerId |
String |
Es el ID de oferta del artículo. Ejemplo: |
|
name |
String |
El nombre de la opción. Ejemplo: |
|
price |
Money |
||
note |
String |
Nota relacionada con la opción. |
|
quantity |
Número |
En el caso de las opciones que son elementos, indica la cantidad de elementos. Ejemplo: |
|
subOptions |
Lista<FoodItemOption > |
Subopciones para la opción, si las hubiera. Ejemplo: |
En el siguiente ejemplo, se muestra un elemento FoodItemOption
:
Ejemplo 1
{ "id": "10293231", "offerId": "1918491", "name": "Honey Mustard", "price": { "currencyCode": "USD", "units": "1", "nanos": 250000000 }, "quantity": 5 }
Ejemplo 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 detalles sobre errores en unCheckoutResponse
.
En la siguiente tabla, se enumeran las propiedades del tipo FoodOrderError
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
error |
Error |
Obligatorio. |
|
id |
String | Obligatorio cuando
Este campo es obligatorio para los errores a nivel del artículo. Es el LineItem.id asignado por Google para los elementos de menú o el FoodItemOption.id para los complementos. |
|
description |
String |
Descripción del error. Esta descripción es para el registro interno y no es visible para los usuarios. |
|
updatedPrice |
Money |
Obligatorio cuando
Es el nuevo precio del artículo que causó el error. Solo es obligatorio cuando el error es "PRICE_CHANGED". |
|
availableQuantity |
Número entero | Obligatorio cuando
Nueva cantidad disponible del artículo que causó el error. Esta acción es obligatoria solo cuando el error es "INVALID" o "NOT_FOUND". El valor debe ser cero para "INVALID" y "NOT_FOUND". |
En el siguiente ejemplo, se muestra un elemento FoodOrderError
:
Ejemplo 1
{ "error": "CLOSED", "description": "This store is currently reachable. Please try again later." }
Ejemplo 2
{ "error": "PRICE_CHANGED", "id": "french_fries", "description": "The price has changed.", "updatedPrice": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }
FoodOrderExtension
Contiene información de entrega sobre el pedido.
En la siguiente tabla, se enumeran las propiedades del tipo FoodOrderExtension
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
@type |
Const. |
Es el tipo de esta extensión. Este campo siempre está configurado como "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension". Valor: |
|
availableFulfillmentOptions |
Lista<FulfillmentOption > |
Representa las opciones de entrega disponibles para el pedido. |
|
optinForRemarketing |
Booleano |
Es la solicitud del usuario para habilitar tus canales de distribución. De forma predeterminada, no puedes enviar contenido de marketing sin el consentimiento del usuario. Si optinForRemarketing es verdadero, puedes suscribir al usuario. Si optinForRemarketing es falso o no está presente, debes mantener el estado de la suscripción en tu sistema tal como está. Los usuarios no pueden inhabilitar esta opción a través de Google, solo mediante la función para anular la suscripción que se proporciona en tus canales de distribución. Esta marca solo está presente en SubmitOrderRequestMessage. |
En el siguiente ejemplo, se muestra un elemento FoodOrderExtension
:
Ejemplo 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] }
Ejemplo 2
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2020-08-20T11:41:00Z" } ], "optinForRemarketing": true }
FulfillmentOption
Puedes usar un objetoFulfillmentOption
de las siguientes maneras:
-
En
Checkout AppRequest
ySubmit AppRequest
, elCart.extension.fulfillmentPreference
: Almacena la preferencia del usuario (entrega o retiro). El precio siempre es 0 a partir del momento en que se envía la solicitud de confirmación de la compra. -
En
Checkout AppResponse
, el elementoProposedOrder.extension.availableFulfillmentOptions
Define una o más opciones de publicación (actualmente, solo se puede usar una opción ). Debes especificar la opción predeterminada comoLineItem
enProposedOrder.otherItems
ElofferId
deFulfillmentOption
debe coincidir con el ID de la Se especificóLineItem
enProposedOrder.otherItems
.
En la siguiente tabla, se enumeran las propiedades del tipo FulfillmentOption
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
offerId |
String |
Es el identificador único de esta opción de entrega, si corresponde. |
|
fulfillmentInfo |
FulfillmentOptionInfo |
Obligatorio. |
|
expiresAt |
Marca de tiempo ISO |
Hora en la que vence esta opción de entrega. |
|
price |
Money |
El costo de esta opción. |
En el siguiente ejemplo, se muestra un elemento FulfillmentOption
:
Ejemplo
{ "offerId": "offer5", "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2019-05-02T00:00:00-07:00", "price": { "currencyCode": "USD", "units": "5", "nanos": 230000000 } }
FulfillmentOptionInfo
Define la información relacionada conFulfillmentInfo
.
En la siguiente tabla, se enumeran las propiedades del tipo FulfillmentOptionInfo
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
Se requiere exactamente uno de los siguientes grupos de propiedades. | |||
delivery |
Grupo 1 | DeliveryInfo |
Si está presente, indica el orden de entrega. |
pickup |
Grupo 2 | PickupInfo |
Si está presente, indica un pedido para retirar. |
Imagen
En la siguiente tabla, se enumeran las propiedades del tipo Image
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
sourceUrl |
String | Obligatorio. URL de la imagen. Como mínimo, la imagen debe tener 72 x 72 píxeles. Para obtener mejores resultados, usa una imagen que sea de al menos 216 × 216 píxeles. La imagen debe tener menos de 6 MB y 64 megapíxeles. |
LineItem
Define el contenido de un carrito (Cart.lineItems
) o los cargos adicionales de un
pedido (ProposedOrder.otherItems
).
En la siguiente tabla, se enumeran las propiedades del tipo LineItem
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
id |
String | Obligatorio cuando
Para un elemento de una sola línea en un carrito (ProposaldOrder.cart.lineItems[0].id), este es el ID único que crea Google cuando se crea el pedido. Para un elemento de una sola línea en un pedido propuesto (ProposaldOrder.otherItems[0].id), que se usa para agregar elementos como impuestos y tarifas de envío, el proveedor define el valor de ID. Por ejemplo, en un carrito hay dos de los mismos elementos con diferentes instrucciones de preparación (como dos pizzas medianas con diferentes conjuntos de ingredientes). En este caso, ambos artículos tienen el mismo offerId base. Cuando envíes una solicitud de actualización de pedido para indicar que se rechazó un artículo, usa este ID como para desambiguar. En otras palabras, si una de las pizzas se rechaza porque no tiene un ingrediente particular, el ID ayuda a Google a determinar a qué artículo del pedido te refieres. Este campo es obligatorio, excepto en otherItems. |
|
name |
String | Obligatorio. Es el nombre de la línea de pedido. Es una cadena visible para el usuario que debe estar en mayúscula inicial cuando sea posible (como “Tarifa de entrega”, “Cargo por servicio” o “Impuestos”). Este campo se trunca a los 100 caracteres para los usuarios. |
|
type |
LineItemType |
Obligatorio. |
|
quantity |
Número entero | Obligatorio cuando
Cantidad de elementos incluidos. No es aplicable a ProposaldOrder.otherItems. |
|
description |
String |
Es la descripción del artículo. |
|
price |
Price |
Obligatorio. Es el precio de los artículos. Este valor refleja el precio total de todos los bienes o servicios de esta línea de pedido (es decir, sumar el costo de cualquier complemento y multiplicarlo por la cantidad). Por ejemplo, si un artículo de USD 10 tiene la cantidad de 3, el precio sería de USD 30. Para una pizza con precio base de USD 5 y un complemento de USD 1, el precio sería de USD 6. Para dos pizzas (cantidad = 2) con un precio base de USD 5 y cada una con un complemento de USD 1, el precio sería de USD 12. Cada línea de pedido debe tener un precio, incluso si este es "0". Cuando el tipo sea DISCOUNT, especifica el valor como negativo (por ejemplo, “-2”). |
|
subLines |
Lista<SublineNote > |
Opcional y solo válido si el tipo es "REGULAR". Es posible que el usuario envíe una nota específica para el artículo en este campo de las solicitudes de confirmación de la compra y de envío de pedido. Asegúrate de que el comercio reciba la nota cuando la recibas. Aparecerá en la solicitud como subLines[0].note, que es el único valor proporcionado en este campo cuando está presente en una solicitud. No debe tener más de 1 elemento. |
|
offerId |
String | Obligatorio cuando
Es el ID de oferta del MenuItem. No es aplicable a ProposaldOrder.otherItems. |
|
extension |
FoodItemExtension |
Define los complementos para los alimentos. |
En el siguiente ejemplo, se muestra un elemento LineItem
:
Ejemplo 1
{ "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }
Ejemplo 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
El tipo LineItemType
tiene los siguientes valores posibles:
REGULAR
: Es la línea de pedido de bienes. Se aplica a Cart.lineItems.TAX
: Línea de pedido fiscal. Aplicable a ProposaldOrder.otherItems.DISCOUNT
: Línea de pedido de descuento. Ten en cuenta que el precio debe ser negativo. Aplicable a ProposaldOrder.otherItems.GRATUITY
: Línea de pedido de propina Generalmente reservado para SubmitOrderRequestMessage para una sugerencia seleccionada por el usuario. Aplicable a ProposaldOrder.otherItems.DELIVERY
: Línea de pedido de publicación. Aplicable a ProposaldOrder.otherItems.SUBTOTAL
: Línea de pedido del subtotal Aplicable a ProposaldOrder.otherItems.FEE
: Es una línea de pedido adicional que no se incluye en los otros tipos. Aplicable a ProposaldOrder.otherItems.
Ubicación
Especifica una dirección para pedir comida. El tipoLocation
se usa en un
Cart
para indicar solo el destino de un pedido de entrega.
La ubicación finalizada también está presente en
TransactionDecisionValue
si el usuario hace el pedido. Para los pedidos que especifican un retiro, una ubicación es
no están incluidas (ni siquiera una vacía).
En la siguiente tabla, se enumeran las propiedades del tipo Location
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
coordinates |
Coordinates |
||
formattedAddress |
String |
Mostrar la dirección de la ubicación Ejemplo: |
|
postalAddress |
PostalAddress |
||
zipCode |
String |
Ejemplo: |
|
city |
String |
Indica el nombre de la ciudad. Ejemplo: |
|
notes |
String |
Notas sobre la ubicación, como los códigos de las puertas Debe tener 500 caracteres o menos. Ejemplo: |
En el siguiente ejemplo, se muestra un elemento Location
:
Ejemplo
{ "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" }
Merchant
En la siguiente tabla, se enumeran las propiedades del tipo Merchant
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
id |
String |
Es el ID del comercio. Si se especifica, coincide con Restaurant.@id en el feed de Restaurante. Ejemplo: |
|
name |
String | Obligatorio. Es el nombre visible del usuario del comercio. Ejemplo: |
En el siguiente ejemplo, se muestra un elemento Merchant
:
Ejemplo
{ "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }
Dinero
En la siguiente tabla, se enumeran las propiedades del tipo Money
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
currencyCode |
String | Obligatorio. Código de moneda de 3 letras en formato ISO 4217. Ejemplo: |
|
units |
String |
La unidad entera del importe. Por ejemplo, si currencyCode es "USD", entonces "1". la unidad es 1 dólar estadounidense. Ejemplo: |
|
nanos |
Número entero |
Número de unidades nano (10^-9) del importe. Debe ser un valor entre -999,999,999 y +999,999,999, ambos incluidos. Usa las siguientes reglas: Si las unidades son positivas, los nanosegundos deben ser positivos o cero. Si la cantidad de unidades es cero, los nanosegundos pueden ser positivos, cero o negativos. Si la cantidad de unidades es negativa, los nanosegundos deben ser negativas o cero. Por ejemplo, $-1.75 se representa como unidades = -1 y nanos = -750,000,000. Ejemplo: |
En el siguiente ejemplo, se muestra un elemento Money
:
Ejemplo 1
{ "currencyCode": "USD", "units": "36", "nanos": 730000000 }
Ejemplo 2
{ "currencyCode": "EUR", "units": "10" }
Pedido
Contiene el pedido final, incluidos los impuestos, las tarifas y los gastos de envío, como así como la información de pago. Tu acción recibe este objeto en unSubmit AppRequest
En la siguiente tabla, se enumeran las propiedades del tipo Order
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
finalOrder |
ProposedOrder |
Obligatorio. Es el pedido propuesto que causó el pedido. |
|
googleOrderId |
String | Obligatorio. Es el ID de pedido que asigna Google. Este ID debe ser estable durante todo el ciclo de vida de un pedido. Este ID no es visible para el usuario final. |
|
orderDate |
Marca de tiempo ISO | Obligatorio. Fecha y hora en que se creó el pedido. |
|
paymentInfo |
PaymentInfo |
Obligatorio. Es la información de pago correspondiente al pago de este pedido. |
En el siguiente ejemplo, se muestra un elemento Order
:
Ejemplo
{ "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
En la siguiente tabla, se describen los campos del tipo OrderUpdate, que se incluido enAppResponse
.
En la siguiente tabla, se enumeran las propiedades del tipo OrderUpdate
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
actionOrderId |
String | Obligatorio. Es el ID único del pedido en el sistema del integrador que se usa para identificar el pedido para el que se envía la actualización. Si no se proporciona recibo.user_visible_order_id al menos una vez en OrderUpdate para un estado "CREATED" este ID será el ID visible que el usuario ingrese y se mostrará en la tarjeta de pedido de Google. |
|
orderState |
OrderState |
Obligatorio. Es el nuevo estado del pedido. |
|
lineItemUpdates |
Map<String, LineItemUpdate > |
||
updateTime |
Marca de tiempo ISO | Obligatorio. Indica la hora a la que se actualizó el pedido. |
|
orderManagementActions |
Lista<OrderManagementAction > |
Acciones posteriores al pedido, como comunicarse con el equipo de asistencia y ver los detalles del pedido. Debe tener, como mínimo, 1 elemento y 6 elementos como máximo. |
|
rejectionInfo |
RejectionInfo |
Obligatorio cuando
|
|
cancellationInfo |
CancellationInfo |
Obligatorio cuando
|
|
inTransitInfo |
InTransitInfo |
Este campo dejó de estar disponible. |
|
fulfillmentInfo |
FulfillmentInfo |
Este campo dejó de estar disponible. |
|
receipt |
Receipt |
Obligatorio cuando
Proporciona el ID de pedido visible para el usuario en un recibo. |
|
totalPrice |
Price |
Es el precio total del pedido. |
|
infoExtension |
FoodOrderUpdateExtension |
Define más detalles de la actualización del pedido, como el intervalo de entrega o retiro estimados. |
En el siguiente ejemplo, se muestra un elemento OrderUpdate
:
Ejemplo
{ "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
En la siguiente tabla, se enumeran las propiedades del tipo PickupInfo
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
pickupTimeIso8601 |
String |
Hora estimada de retiro, en formato de marca de tiempo ISO 8601: “{año}-{month}-{day}T{hora}:{min}:{sec}[.{frac_sec}]Z” o el formato de duración: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Por ejemplo, PT90M representa una duración de 90 minutos. El valor predeterminado, "PT0M", indica que el horario de partida preferido es lo antes posible. Referencia: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. Usa esta opción para actualizar el tiempo de retiro estimado durante la respuesta de confirmación de la compra. Ejemplo: |
En el siguiente ejemplo, se muestra un elemento PickupInfo
:
Ejemplo
{ "pickupTimeIso8601": "PT90M" }
PostalAddress
En la siguiente tabla, se enumeran las propiedades del tipo PostalAddress
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
regionCode |
String | Obligatorio. Un código de país de dos letras. Ejemplo: |
|
postalCode |
String |
Corresponde al código postal, Ejemplo: |
|
administrativeArea |
String |
División administrativa más alta que se usa para las direcciones postales de un país o una región. Puede ser un estado, una provincia, una óblast o una prefectura. Ejemplo: |
|
locality |
String |
Es la ciudad o el pueblo de esta ubicación. En regiones del mundo donde las localidades no están bien definidas o no se ajustan a esta estructura, no especifiques la localidad y usa el campo addressLines. Ejemplo: |
|
addressLines |
Lista<String> |
Una o más líneas que puedes usar para especificar la dirección. Este campo no debe modificarse porque puede contener localidades poco claras. Ejemplo: |
|
recipients |
Lista<String> |
Es la lista de destinatarios de un pedido. Este campo solo está disponible en billingAddress. |
En el siguiente ejemplo, se muestra un elemento PostalAddress
:
Ejemplo
{ "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }
Precio
En la siguiente tabla, se enumeran las propiedades del tipo Price
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
type |
Enum [
"ESTIMATE",
"ACTUAL"
] |
Obligatorio. Es el código del cupón promocional. |
|
amount |
Money |
Obligatorio. |
Promoción
En la siguiente tabla, se enumeran las propiedades del tipo Promotion
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
coupon |
String | Obligatorio. Es el código del cupón promocional. |
ProposedOrder
En la siguiente tabla, se enumeran las propiedades del tipo ProposedOrder
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
id |
String |
Es el ID opcional del pedido propuesto. |
|
cart |
Cart |
Obligatorio. Elementos del usuario. |
|
otherItems |
Lista<LineItem > |
Artículos que agregó el proveedor, como cargos de envío, impuestos y otras tarifas otherItems también pueden contener propinas o descuentos agregados por el usuario. Debe tener un máximo de 10 elementos. |
|
image |
Image |
Imagen asociada con el pedido propuesto. |
|
totalPrice |
Price |
Obligatorio. Es el precio total del pedido propuesto. |
|
extension |
FoodOrderExtension |
Obligatorio. Define la información de entrega de los pedidos de comida. |
|
disclaimers |
Lista<Disclaimer > |
Corresponde a los mensajes de renuncia de responsabilidad que se mostrarán en la IU antes de realizar el pedido. |
En el siguiente ejemplo, se muestra un elemento ProposedOrder
:
Ejemplo
{ "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
En la siguiente tabla, se enumeran las propiedades del tipo SublineNote
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
note |
String | Obligatorio. |
Marca de tiempo
Fecha y hora, en el siguiente formato:
"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
TransactionDecisionValue
Contiene el objetoOrder
.
En la siguiente tabla, se enumeran las propiedades del tipo TransactionDecisionValue
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
order |
Order |
Obligatorio. El pedido se realizará con los detalles del pago. |
En el siguiente ejemplo, se muestra un elemento TransactionDecisionValue
:
Ejemplo
{ "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" } } }
Solicitud de entrega
AppRequest
En la siguiente tabla, se enumeran las propiedades del tipo AppRequest
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
isInSandbox |
Booleano |
Indica si las transacciones posteriores se realizan en un entorno de zona de pruebas. |
|
conversation |
Conversation |
||
inputs |
Lista<Input > |
Obligatorio. Contiene los argumentos esperados para pagar un carrito. Debe tener exactamente 1 artículo. |
En el siguiente ejemplo, se muestra un elemento AppRequest
:
Ejemplo 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" } } } } ] } ] }
Ejemplo 2
{ "isInSandbox": true, "inputs": [ { "intent": "actions.intent.TRANSACTION_DECISION", "arguments": [ { "transactionDecisionValue": { "order": { "finalOrder": { "cart": { "notes": "Guest prefers their food to be hot when it is delivered.", "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Cucina Venti" }, "lineItems": [ { "name": "Sizzling Prawns Dinner", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "16", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } }, "contact": { "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" } } }, "otherItems": [ { "name": "Service fee", "type": "FEE", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } } }, { "name": "Tax", "type": "TAX", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 370000000 } } }, { "name": "Tip", "type": "GRATUITY", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 590000000 } } } ], "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "23", "nanos": 710000000 } }, "id": "sample_final_order_id", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ], "optinForRemarketing": true } }, "googleOrderId": "sample_google_order_id", "orderDate": "2017-07-17T12:00:00Z", "paymentInfo": { "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd" }, "paymentType": "PAYMENT_CARD" } } } } ] } ] }
CheckoutRequestMessage
UnCheckoutRequestMessage
es un AppRequest
.
con el intent actions.foodordering.intent.CHECKOUT
.
SubmitOrderRequestMessage
UnSubmitOrderRequestMessage
es un AppRequest
.
con el intent actions.foodordering.intent.TRANSACTION_DECISION
.
Conversación
UnConversation
es único para una sola sesión. Puedes usarlo para vincular varias
Acciones Checkout
y SubmitOrder
juntas si es necesario.
En la siguiente tabla, se enumeran las propiedades del tipo Conversation
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
conversationId |
String | Obligatorio. Es el ID único de la conversación. |
En el siguiente ejemplo, se muestra un elemento Conversation
:
Ejemplo
{ "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ" }
Entrada
Los argumentos esperados para pagar un carrito.
En la siguiente tabla, se enumeran las propiedades del tipo Input
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
intent |
Enum [
"actions.foodordering.intent.CHECKOUT",
"actions.intent.TRANSACTION_DECISION"
] |
Obligatorio. Se estableció como "actions.foodordering.intent.CHECKOUT". para el mensaje de solicitud de confirmación de la compra O "actions.intent.TRANSACTION_DECISION" para enviar una solicitud de pedido. |
|
arguments |
Lista<Argument > |
Obligatorio. Contiene el carrito que se debe pagar o el pedido que se debe realizar Debe tener exactamente 1 artículo. |
Argumento
Contiene detalles sobre los alimentos que el usuario desea consultar. Para la confirmación de la compra, solo se aplica la extensión. Para enviar un pedido, solo se aplica transactionDecisionValue
En la siguiente tabla, se enumeran las propiedades del tipo Argument
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
Se requiere exactamente uno de los siguientes grupos de propiedades. | |||
extension |
Grupo 1 | Cart |
Detalla los alimentos que el usuario desea comprobar. |
transactionDecisionValue |
Grupo 2 | TransactionDecisionValue |
Contiene el pedido que se debe realizar junto con los detalles del pago. |
Respuesta de entrega
AppResponse
En la siguiente tabla, se enumeran las propiedades del tipo AppResponse
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
expectUserResponse |
Const. |
Configurada como falsa. Valor: |
|
finalResponse |
FinalResponse |
Obligatorio. Contiene tu respuesta a la confirmación de la compra del carrito. |
En el siguiente ejemplo, se muestra un elemento AppResponse
:
Ejemplo 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." } } ] } } } ] } } }
Ejemplo 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" } } } } ] } } }
Ejemplo 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." } ] } } } ] } } }
Ejemplo 4
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "checkoutResponse": { "proposedOrder": { "otherItems": [ { "name": "Delivery Fees", "subLines": [], "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "subLines": [], "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 370000000 } }, "type": "TAX" }, { "name": "Promotion", "subLines": [], "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": 0 } }, "id": "OWG_ACTIVE_CODE", "type": "DISCOUNT" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "promotions": [ { "coupon": "OWG_ACTIVE_CODE" } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "14", "nanos": 860000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2018-04-10T01:20:08.471Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:publishableKey": "pk_live_stripe_client_key", "stripe:version": "2017-04-06" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "VISA", "JCB" ], "prepaidCardDisallowed": true, "billingAddressRequired": true } } } } } ] } } }
CheckoutResponseMessage
UnCheckoutResponseMessage
es un AppResponse
con
un objeto checkoutResponse
o error
en la
StructuredResponse
SubmitOrderResponseMessage
UnSubmitOrderResponseMessage
es un AppResponse
con
un orderUpdate
en StructuredResponse
.
FinalResponse
Tu respuesta a la confirmación de la compra del carrito o a SubmitOrderRequestMessage.
En la siguiente tabla, se enumeran las propiedades del tipo FinalResponse
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
richResponse |
RichResponse |
Obligatorio. Contiene tu respuesta a CheckoutRequestMessage o SubmitOrderRequestMessage. |
CheckoutResponse
En la siguiente tabla, se enumeran las propiedades del tipo CheckoutResponse
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
proposedOrder |
ProposedOrder |
Obligatorio. Orden propuesto para usar en la transacción. |
|
paymentOptions |
PaymentOptions |
Obligatorio. Opción de pago predeterminada seleccionada para el usuario. |
|
additionalPaymentOptions |
Lista<PaymentOptions > |
Son las opciones de pago alternativas disponibles para el usuario. |
En el siguiente ejemplo, se muestra un elemento CheckoutResponse
:
Ejemplo
{ "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 tu respuesta a un proceso de confirmación de la compra o a SubmitOrderRequestMessage.
En la siguiente tabla, se enumeran las propiedades del tipo Item
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
structuredResponse |
StructuredResponse |
Obligatorio. |
RichResponse
Contiene tu respuesta a la confirmación de una compra en el carrito.
En la siguiente tabla, se enumeran las propiedades del tipo RichResponse
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
items |
Lista<Item > |
Obligatorio. Debe tener exactamente 1 artículo. |
StructuredResponse
Para CheckoutResponseMessage, puede ser una de las siguientes opciones: CheckoutResponse indica que la confirmación de la compra se realizó correctamente. O FoodErrorExtension: Indica un error durante la confirmación de la compra. La respuesta puede incluir un ProposaldOrder y PaymentOptions corregidos o un mensaje de error sin PaymentOptions. Para SubmitOrderResponseMessage, solo se aplica orderUpdate.
En la siguiente tabla, se enumeran las propiedades del tipo StructuredResponse
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
Se requiere exactamente uno de los siguientes grupos de propiedades. | |||
checkoutResponse |
Grupo 1 | CheckoutResponse |
Artículos comprados con impuestos y descuentos |
error |
Grupo 2 | FoodErrorExtension |
Errores observados en los artículos del carrito. Según la naturaleza del error, esta propiedad puede incluir un ProposaldOrder y PaymentOptions corregidos, o bien solo un mensaje de error sin PaymentOptions. |
orderUpdate |
Grupo 3 | OrderUpdate |
Actualizaciones de pedidos asíncronas
En esta sección, se describen los tipos de alto nivel que componen las solicitudes y respuestas a una interacción de acción integrada típica con un pedido de comida.AsyncOrderUpdateRequestMessage
Notifica al usuario sobre los cambios después de que se envía y confirma un pedido. Por ejemplo, puedes notificar al usuario que el pedido está en tránsito o si el Cambió el precio. Para obtener más información, consultaEn la siguiente tabla, se enumeran las propiedades del tipo AsyncOrderUpdateRequestMessage
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
isInSandbox |
Booleano |
Indica que el pedido para el que se envió esta actualización es un pago de zona de pruebas. |
|
customPushMessage |
CustomPushMessage |
Obligatorio. Contiene el OrderUpdate para la solicitud. |
En el siguiente ejemplo, se muestra un elemento AsyncOrderUpdateRequestMessage
:
Ejemplo
{ "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
Después de enviar correctamente unAsyncOrderUpdateRequestMessage
, Google responde
con un estado HTTP 200 y un cuerpo vacío. Si la actualización no se realiza correctamente,
Google responde con detalles sobre por qué falló la actualización del pedido.
Tipos de actualización de pedidos
Botón
Define un elemento de la interfaz de usuario que puedes agregar para proporcionar interacción con el usuario.
En la siguiente tabla, se enumeran las propiedades del tipo Button
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
title |
String | Obligatorio. Es la etiqueta de visualización. Usa mayúscula inicial de 30 caracteres o menos para garantizar una renderización adecuada. Ejemplo: |
|
openUrlAction |
OpenUrlAction |
Obligatorio. |
En el siguiente ejemplo, se muestra un elemento Button
:
Ejemplo
{ "title": "Send us feedback", "openUrlAction": { "url": "mailto:person@example.com" } }
CancellationInfo
En la siguiente tabla, se enumeran las propiedades del tipo CancellationInfo
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
reason |
String | Obligatorio. Es el motivo del rechazo que se puede mostrar en el texto cuando OrderState.state es "CANCELLED". Ejemplo: |
En el siguiente ejemplo, se muestra un elemento CancellationInfo
:
Ejemplo
{ "reason": "Insufficient inventory" }
FoodOrderUpdateExtension
Este tipo proporciona al usuario un intervalo estimado en el que se creará el pedido
entregados o listos para retirar. Enviar esta extensión en un
OrderUpdate
siempre que la información esté disponible o haya cambiado desde que se envió por última vez.
Proporcionar una estimación conservadora del intervalo de entrega para que el usuario las expectativas se cumplen constantemente. Por ejemplo, si se calcula que el pedido entregado hoy a las 13:00, debes enviar un intervalo estimado de coherentes con las variaciones debidas a las condiciones del tráfico, como hoy a las 12:45 a las 1:15 p.m.
Una marca de tiempo o duración según la norma ISO 8601 se interpreta como el intervalo de la
updateTime
de OrderUpdate
(en esencia, "ahora") al
updateTime
más duration
.
No uses este formato, a menos que “ahora” en realidad es una expectativa razonable.
Un intervalo ISO 8601 se interpreta como el intervalo desde el inicio final del intervalo.
En la siguiente tabla, se enumeran las propiedades del tipo FoodOrderUpdateExtension
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
@type |
Const. |
Es el tipo de esta extensión. Este campo siempre está configurado como "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension". Valor: |
|
estimatedFulfillmentTimeIso8601 |
String |
La hora estimada en la que el pedido se entregará o estará listo para su retiro. La cadena debe estar en formato ISO 8601 y corresponde a un intervalo en lugar de a un único tiempo fijo. Las convenciones aceptables son: Intervalos, duraciones, y fechas y horas. Este campo se puede enviar en SubmitOrderResponseMessage o AsyncOrderUpdateRequestMessage cuando la información esté disponible o haya un cambio, como llegadas anticipadas o retrasadas. Ejemplo: |
|
foodOrderErrors |
Lista<FoodOrderError > |
Describe los errores que se produjeron después del pedido. Se recomienda un error por carrito o por artículo. Usa FoodOrderUpdateExtension.FoodOrderErrors para los errores que no estén cubiertos por RejectionInfo. No debe tener menos de 1 elemento. |
En el siguiente ejemplo, se muestra un elemento FoodOrderUpdateExtension
:
Ejemplo 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" }
Ejemplo 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
En la siguiente tabla, se enumeran las propiedades del tipo FulfillmentInfo
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
Se requiere exactamente uno de los siguientes grupos de propiedades. | |||
deliveryTime |
Grupo 1 | Marca de tiempo ISO |
Usa HulfillmentTimeIso8601 en el mensaje FoodOrderingUpdateExtension. |
pickupTime |
Grupo 2 | Marca de tiempo ISO |
Usa HulfillmentTimeIso8601 en el mensaje FoodOrderingUpdateExtension. |
En el siguiente ejemplo, se muestra un elemento FulfillmentInfo
:
Ejemplo 1
{ "deliveryTime": "2017-05-10T02:36:38.803Z" }
Ejemplo 2
{ "pickupTime": "2019-12-26T07:24:27.803Z" }
InTransitInfo
En la siguiente tabla, se enumeran las propiedades del tipo InTransitInfo
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
updatedTime |
Marca de tiempo ISO |
UsaestimatedFulfillmentTimeIso8601 en el mensaje FoodOrderingUpdateExtension |
En el siguiente ejemplo, se muestra un elemento InTransitInfo
:
Ejemplo
{ "updatedTime": "2017-05-10T02:36:38.803Z" }
LineItemUpdate
En la siguiente tabla, se enumeran las propiedades del tipo LineItemUpdate
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
orderState |
OrderState |
||
price |
Price |
||
reason |
String |
Motivo del cambio. Obligatorio para los cambios de precio. |
En el siguiente ejemplo, se muestra un elemento LineItemUpdate
:
Ejemplo
{ "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "5", "nanos": 500000000 } }, "reason": "Menu updated prices." }
OpenUrlAction
En la siguiente tabla, se enumeran las propiedades del tipo OpenUrlAction
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
url |
String | Obligatorio. La acción que se activa al hacer clic o tocar el botón. La lista de prefijos aplicables depende de orderManagementActionType. “EMAIL”: El prefijo debe ser “mailto”. “CALL”: El prefijo debe ser “tel”. “CUSTOMER_SERVICE”: El prefijo debe ser “mailto”, “tel”, “http” o “https”. Ejemplo: |
OrderManagementAction
La administración de pedidos permite a los usuarios recibir asistencia después de los pedidos y debe enviarse
cada OrderUpdate
del pedido de envío
AppResponse
y cada una de ellas
AsyncOrderUpdateRequestMessage
Las acciones de administración de pedidos enviadas para un pedido en particular pueden variar según la
para cada estado.
Por ejemplo, en la columna “CREATED”, estado, CUSTOMER_SERVICE
podría hacer referencia a tu
teléfono de atención al cliente. Luego, en la columna "CONFIRMED", estado, CUSTOMER_SERVICE
puede cambiar al teléfono del restaurante si ese es el mejor punto de
contacto del cliente. Del mismo modo, una vez que el pedido esté en el estado estado,
CUSTOMER_SERVICE
puede hacer referencia a tus direcciones de correo electrónico de asistencia.
En la siguiente tabla, se enumeran las propiedades del tipo OrderManagementAction
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
type |
OrderManagementActionType |
Obligatorio. |
|
button |
Button |
Obligatorio. |
En el siguiente ejemplo, se muestra un elemento OrderManagementAction
:
Ejemplo 1
{ "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }
Ejemplo 2
{ "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }
OrderManagementActionType
Define los tipos relacionados conOrderManagementAction
.
El tipo OrderManagementActionType
tiene los siguientes valores posibles:
CUSTOMER_SERVICE
: El correo electrónico o el número de contacto del servicio de atención al cliente que se mostrará en la página de confirmación del pedido. Este campo es obligatorio. El prefijo de openUrlAction.url debe ser "mailto", "tel", "http" o "https".EMAIL
: Acción de correo electrónico solo en la página de detalles del pedido. El prefijo de openUrlAction.url debe ser "mailto".CALL_DRIVER
: Acción de llamada solo en la página de detalles del pedido. El prefijo de openUrlAction.url debe ser "tel".CALL_RESTAURANT
: Acción de llamada solo en la página de detalles del pedido. El prefijo de openUrlAction.url debe ser "tel".
OrderState
Es el estado actual del pedido. Cada valor de state
de OrderState
también
corresponde al estado de compra de
myaccount.google.com.
En la siguiente tabla, se enumeran las propiedades del tipo OrderState
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
state |
OrderStateEnum |
Obligatorio. |
|
label |
String | Obligatorio. Es la cadena de visualización del estado que se muestra al usuario. Usa mayúscula inicial. Ejemplo: |
En el siguiente ejemplo, se muestra un elemento OrderState
:
Ejemplo
{ "state": "CONFIRMED", "label": "Provider confirmed" }
OrderStateEnum
Define los tipos relacionados conOrderState
.
El tipo OrderStateEnum
tiene los siguientes valores posibles:
CREATED
: Es el pedido creado por el integrador y a la espera de la confirmación del proveedor. Corresponde al valor "Ordenado" estado de compra.CONFIRMED
: El proveedor confirmó el pedido y está activo. Corresponde al mensaje "Aceptado" estado de compra.REJECTED
: El integrador o el proveedor rechazó el pedido. Corresponde al estado "Rechazado" estado de compra.CANCELLED
: El usuario canceló el pedido. Corresponde al mensaje "Cancelado" estado de compra.IN_PREPARATION
: Se está preparando comida. Corresponde al estado "Estado desconocido" estado de compra.READY_FOR_PICKUP
: La comida está lista para retirarla. Corresponde al valor "Listo para retirar" estado de compra.IN_TRANSIT
: Se está entregando el pedido. Corresponde al estado "En curso" estado de compra.FULFILLED
: El usuario recibió lo que se pidió. Corresponde al valor "Retirado" estado de compra.
Recibo
Envía este tipo en un pedido de envíoAppResponse
,
donde OrderState
es "CONFIRMED", "FULFILLED" o "IN_TRANSIT". Enviar recibo a
La hora en que userVisibleOrderId
estará disponible. No es necesario que
el envío del recibo en actualizaciones posteriores.
En la siguiente tabla, se enumeran las propiedades del tipo Receipt
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
userVisibleOrderId |
String | Obligatorio. Obligatorio si el pedido es “CONFIRMED”, “IN_TRANSIT” o “FULFILLED”. Este campo corresponde al ID que verá el usuario único para este pedido (por lo general, el ID de pedido del restaurante), que se muestra en el recibo del integrador y en la tarjeta de pedido de Google. El usuario debe poder usar este ID para hacer referencia a su pedido de atención al cliente con el proveedor y el integrador. Solo debes proporcionar este ID una vez en una OrderUpdate determinada. Hasta que se proporcione, el actionOrderId es el userVisibleOrderId. Por ejemplo, es posible que no tengas un userVisibleOrderId hasta que el restaurante confirme el pedido. Una vez confirmado, debes enviar un AsyncOrderUpdateRequestMessage con un OrderUpdate y un Recibo. |
En el siguiente ejemplo, se muestra un elemento Receipt
:
Ejemplo
{ "userVisibleOrderId": "userVisibleId1234" }
RejectionInfo
En la siguiente tabla, se enumeran las propiedades del tipo RejectionInfo
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
type |
RejectionType |
Obligatorio. |
|
reason |
String |
Motivo del rechazo que se usó para el registro interno. Los usuarios no pueden ver este campo. |
En el siguiente ejemplo, se muestra un elemento RejectionInfo
:
Ejemplo
{ "type": "PAYMENT_DECLINED", "reason": "There is an issue with payment processing." }
RejectionType
El tipo RejectionType
tiene los siguientes valores posibles:
INELIGIBLE
: El usuario no es apto debido a problemas relacionados con las políticas o los riesgos.PAYMENT_DECLINED
: Hay un problema con el procesamiento del pago.UNAVAILABLE_SLOT
: El pedido no se puede entregar en la hora de anticipación que se especifica en DeliveryInfo o PickupInfo.PROMO_NOT_APPLICABLE
: Hay un problema con la promoción.UNKNOWN
: Cualquier otro motivo.
Tipos relacionados con pagos
En esta sección, se describen los tipos relacionados con los pagos que se usan para los pedidos de comida la entrega de datos.ActionProvidedPaymentOptions
Requisitos para una forma de pago proporcionada por una acción.
En la siguiente tabla, se enumeran las propiedades del tipo ActionProvidedPaymentOptions
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
paymentType |
PaymentType |
Obligatorio. |
|
displayName |
String | Obligatorio. Indica el nombre del instrumento de pago que aparece en el recibo. Ejemplo: |
|
onFulfillmentPaymentData |
OnFulfillmentPaymentData |
Datos adicionales para el paymentType “ON_FULFILLMENT”. Por ejemplo, puedes usar este campo para especificar si se admite efectivo o tarjeta en la entrega. |
En el siguiente ejemplo, se muestra un elemento ActionProvidedPaymentOptions
:
Ejemplo
{ "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } }
AllowedAuthMethods
El tipo AllowedAuthMethods
tiene los siguientes valores posibles:
PAN_ONLY
: Forma de autenticación asociada con las tarjetas de pago almacenadas en los archivos de la Cuenta de Google del usuario. Los datos de pago que se muestran incluyen el número de cuenta personal (PAN) con el mes y año de vencimiento.
AllowedCardNetworks
El tipo AllowedCardNetworks
tiene los siguientes valores posibles:
AMEX
DISCOVER
INTERAC
JCB
MASTERCARD
VISA
BillingAddressParameters
Este objeto te permite configurar campos adicionales que se mostrarán para una dirección de facturación solicitada.
En la siguiente tabla, se enumeran las propiedades del tipo BillingAddressParameters
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
format |
String |
Se requiere el formato de la dirección de facturación para completar la transacción. MIN: Nombre, código de país y código postal. COMPLETO: Nombre, dirección, localidad, región, código de país y código postal. |
En el siguiente ejemplo, se muestra un elemento BillingAddressParameters
:
Ejemplo 1
{ "format": "MIN" }
Ejemplo 2
{ "format": "FULL" }
CardParameters
Usa este objeto para configurar la compatibilidad de tu sitio con la API de Google Pay.
En la siguiente tabla, se enumeran las propiedades del tipo CardParameters
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
allowedAuthMethods |
List<Const> | Obligatorio. Son los campos admitidos para autenticar una transacción con tarjeta. No debe tener menos de 1 elemento. |
|
allowedCardNetworks |
Lista<AllowedCardNetworks > |
Obligatorio. Una o más redes de tarjetas compatibles que también sean compatibles con la API de Google Pay. No debe tener menos de 1 elemento. |
|
billingAddressRequired |
Booleano |
Establécelo como verdadero si necesitas una dirección de facturación. Solicita una dirección de facturación solo si es necesario para procesar la transacción. Las solicitudes de datos adicionales pueden aumentar la fricción en el proceso de confirmación de la compra y reducir los porcentajes de conversiones. |
|
billingAddressParameters |
BillingAddressParameters |
Los campos esperados que se muestran si billingAddressRequired se establece como verdadero. |
|
cvcRequired |
Booleano |
Se establece como verdadero si se usa TimesofMoney. Es falso para todos los demás procesadores de pagos. |
En el siguiente ejemplo, se muestra un elemento CardParameters
:
Ejemplo 1
{ "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "AMEX", "DISCOVER" ], "billingAddressRequired": false, "cvcRequired": false }
Ejemplo 2
{ "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "AMEX", "DISCOVER" ], "billingAddressRequired": true, "billingAddressParameters": { "format": "MIN" }, "cvcRequired": false }
GoogleProvidedPaymentInstrument
En la siguiente tabla, se enumeran las propiedades del tipo GoogleProvidedPaymentInstrument
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
instrumentToken |
String | Obligatorio. Es una cadena codificada en base 64 que contiene el token de pago por cobrar al usuario con un procesador de Google Pay participante, según las opciones GoogleProvidedPaymentOptions especificadas anteriormente. |
|
billingAddress |
PostalAddress |
Dirección de facturación del pago. |
En el siguiente ejemplo, se muestra un elemento GoogleProvidedPaymentInstrument
:
Ejemplo
{ "instrumentToken": "abcd", "billingAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] } }
GoogleProvidedPaymentOptions
Requisitos para las formas de pago proporcionadas por Google.
En la siguiente tabla, se enumeran las propiedades del tipo GoogleProvidedPaymentOptions
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
facilitationSpecification |
String |
Un archivo JSON de PaymentDataRequest como una cadena. Usa este objeto para configurar la compatibilidad de tu sitio con la API de Google Pay. |
|
supportedCardNetworks |
Lista<SupportedCardNetworks > |
En su lugar, usa facilitationSpecification. El tipo de redes de tarjetas que admite el agente. Este campo dejó de estar disponible. |
|
prepaidCardDisallowed |
Booleano |
En su lugar, usa facilitationSpecification. Indica si se permite o no una tarjeta prepagada como tipo de pago. Este campo dejó de estar disponible. |
|
billingAddressRequired |
Booleano |
En su lugar, usa facilitationSpecification. Si se requiere o no una dirección de facturación. Este campo dejó de estar disponible. |
|
tokenizationParameters |
TokenizationParameters |
Este campo dejó de estar disponible. |
En el siguiente ejemplo, se muestra un elemento GoogleProvidedPaymentOptions
:
Ejemplo 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\"}}" }
Ejemplo 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 }
Ejemplo 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
Usa este objeto para configurar la compatibilidad de tu sitio con la API de Google Pay.
En la siguiente tabla, se enumeran las propiedades del tipo MerchantInfo
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
merchantId |
String |
Es el identificador de comerciante de Google emitido para usted por Google Pay. |
|
merchantName |
String | Obligatorio. El nombre del comercio está codificado como UTF-8. El nombre del comercio se muestra en la hoja de pagos. |
OnFulfillmentPaymentData
Usa este objeto para enviar datos adicionales para el PaymentType “ON_FULFILLMENT”.
En la siguiente tabla, se enumeran las propiedades del tipo OnFulfillmentPaymentData
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
supportedPaymentOptions |
Lista<PaymentOptionsEnums > |
Es la lista de opciones de pago disponibles para el usuario en el momento de la entrega del pedido. |
En el siguiente ejemplo, se muestra un elemento OnFulfillmentPaymentData
:
Ejemplo
{ "supportedPaymentOptions": [ "Cash", "Card" ] }
Parámetros
Define los tipos relacionados con TokenizationParameters
.
En la siguiente tabla, se enumeran las propiedades del tipo Parameters
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
gateway |
String | Obligatorio. Ejemplo: |
|
gatewayMerchantId |
String | ||
[additionalKey: string] |
String | Pares clave-valor adicionales |
En el siguiente ejemplo, se muestra un elemento Parameters
:
Ejemplo 1
{ "gatewayMerchantId": "90412491", "gateway": "olo" }
Ejemplo 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
Usa este objeto para configurar la compatibilidad de tu sitio con la API de Google Pay.
En la siguiente tabla, se enumeran las propiedades del tipo PaymentDataRequest
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
apiVersion |
Const. | Obligatorio. Versión principal de la API. Valor: |
|
apiVersionMinor |
Const. | Obligatorio. Versión secundaria de la API. Valor: |
|
merchantInfo |
MerchantInfo |
Obligatorio. (ID del comerciante de Google Pay) Información sobre el comercio que solicita los datos de pago. |
|
allowedPaymentMethods |
Lista<PaymentMethod > |
Obligatorio. Especifica la compatibilidad con una o más formas de pago compatibles con la API de Google Pay. |
|
transactionInfo |
TransactionInfo |
Obligatorio. Son los detalles sobre la autorización de la transacción según si el usuario la acepta o no. Este campo incluye el precio total y el estado del precio. |
En el siguiente ejemplo, se muestra un elemento PaymentDataRequest
:
Ejemplo
{ "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
Información relacionada con el pago de un pedido.
En la siguiente tabla, se enumeran las propiedades del tipo PaymentInfo
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
displayName |
String | Obligatorio. Es el nombre del instrumento de pago que se muestra en el recibo y que se muestra al usuario. |
|
paymentType |
PaymentType |
Obligatorio. |
|
googleProvidedPaymentInstrument |
GoogleProvidedPaymentInstrument |
El token que puede usar la acción. Especifica esto solo si especificaste GoogleProvidedPaymentOptions como opción de pago en CheckoutResponseMessage. |
En el siguiente ejemplo, se muestra un elemento PaymentInfo
:
Ejemplo 1
{ "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd" }, "paymentType": "PAYMENT_CARD" }
Ejemplo 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
Usa este objeto para configurar la compatibilidad de tu sitio con la API de Google Pay.
En la siguiente tabla, se enumeran las propiedades del tipo PaymentMethod
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
type |
Const. | Obligatorio. Es el identificador corto de la forma de pago admitida. Por el momento, solo se admite CARD. Valor: |
|
parameters |
CardParameters |
Obligatorio. Son los parámetros necesarios para configurar el tipo de forma de pago proporcionado. |
|
tokenizationSpecification |
TokenizationSpecification |
Obligatorio. Configura una cuenta o un proveedor de desencriptación para recibir información de pago. Esta propiedad es obligatoria para la forma de pago CARD. |
En el siguiente ejemplo, se muestra un elemento PaymentMethod
:
Ejemplo
{ "type": "CARD", "parameters": { "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "VISA", "AMEX", "MASTERCARD" ], "billingAddressRequired": false }, "tokenizationSpecification": { "type": "PAYMENT_GATEWAY", "parameters": { "gatewayMerchantId": "90412491", "gateway": "olo" } } }
PaymentOptions
En la siguiente tabla, se enumeran las propiedades del tipo PaymentOptions
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
Se requiere exactamente uno de los siguientes grupos de propiedades. | |||
googleProvidedOptions |
Grupo 1 | GoogleProvidedPaymentOptions |
Este campo es mutuamente excluyente con actionProvidedOptions. Úsala para pagar en línea con gPay. |
actionProvidedOptions |
Grupo 2 | ActionProvidedPaymentOptions |
Este campo y googleProvidedOptions son mutuamente excluyentes. Usa esta opción para "dinero contra entrega" o "pagar por entrega". |
En el siguiente ejemplo, se muestra un elemento PaymentOptions
:
Ejemplo 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\"}}" } }
Ejemplo 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\"}}" } }
Ejemplo 3
{ "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } } }
PaymentOptionsEnums
El tipo PaymentOptionsEnums
tiene los siguientes valores posibles:
Cash
Card
UPI
Paytm
PaymentType
El tipo PaymentType
tiene los siguientes valores posibles:
PAYMENT_CARD
: Para GoogleProvidedPaymentOptions.ON_FULFILLMENT
: Para ActionProvidedPaymentOptions.
SupportedCardNetworks
Define los tipos relacionados conGoogleProvidedPaymentOptions
.
El tipo SupportedCardNetworks
tiene los siguientes valores posibles:
UNSPECIFIED_CARD_NETWORK
AMEX
DISCOVER
JCB
MASTERCARD
VISA
TokenizationParameters
Define los tipos relacionados conGoogleProvidedPaymentOptions
.
En la siguiente tabla, se enumeran las propiedades del tipo TokenizationParameters
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
tokenizationType |
Enum [
"UNSPECIFIED_TOKENIZATION_TYPE",
"PAYMENT_GATEWAY"
] |
Obligatorio. En su lugar, usa facilitationSpecification. Son los tipos de tokens aceptables. |
|
parameters |
Parameters |
En su lugar, usa facilitationSpecification. |
TokenizationSpecification
Este objeto te permite configurar una cuenta para recibir información de pago cobrable.
En la siguiente tabla, se enumeran las propiedades del tipo TokenizationSpecification
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
type |
Const. | Obligatorio. |
|
parameters |
Parameters |
Obligatorio. |
En el siguiente ejemplo, se muestra un elemento TokenizationSpecification
:
Ejemplo 1
{ "type": "PAYMENT_GATEWAY", "parameters": { "gatewayMerchantId": "1247192", "gateway": "cybersource" } }
Ejemplo 2
{ "type": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:version": "2018-10-31", "stripe:publishableKey": "12378127" } }
TransactionInfo
Este objeto describe una transacción que determina la capacidad del pagador para pagar. Se usa para presentar un diálogo de autorización de pago.
En la siguiente tabla, se enumeran las propiedades del tipo TransactionInfo
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
currencyCode |
String | Obligatorio. Código de moneda alfabético ISO 4217. |
|
transactionId |
String |
Es un ID único que identifica un intento de transacción. Los comercios pueden usar un ID existente o generar uno específico para los intentos de transacción de Google Pay. Este campo es obligatorio cuando envías devoluciones de llamada a la API de Google Transaction Events. |
|
totalPriceStatus |
Const. | Obligatorio. Utiliza “ESTIMATED” de forma predeterminada. El precio total puede ajustarse según los detalles de la respuesta, como el impuesto sobre las ventas recaudado en función de una dirección de facturación. Valor: |
|
totalPrice |
String | Obligatorio. Es el valor monetario total de la transacción con una precisión decimal opcional de dos decimales. Este campo debe tener el mismo valor que cart.totalPrice. |
En el siguiente ejemplo, se muestra un elemento TransactionInfo
:
Ejemplo
{ "totalPriceStatus": "ESTIMATED", "totalPrice": "12.34", "currencyCode": "USD" }