Tipos de base
Carrito
Contiene detalles del pedido, así como si la solicitud es para retiro o entrega. Un carrito también contiene detalles de la entrega, propinas y dirección. El objetoCart
se define en un Checkout AppRequest
.f
Debes incluir una copia del carrito en tu Checkout AppResponse
En la siguiente tabla, se enumeran las propiedades para el tipo Cart
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
@type |
Const |
El tipo de este objeto. Omite este campo si el objeto del carrito principal forma parte de ProposaldOrder. Valor: |
|
id |
String |
ID opcional del carrito. |
|
merchant |
Merchant |
Comercio afiliado a este carrito |
|
lineItems |
ListaLineItem |
Obligatorio. Es una lista de los bienes o servicios que solicita el usuario. Debe tener al menos 1 elemento. |
|
promotions |
ListaPromotion |
Promoción que se aplica en este carrito. Por el momento, solo se admite una promoción. |
|
notes |
String |
Notas sobre el pedido o las instrucciones de entrega. |
|
extension |
FoodCartExtension |
Define detalles sobre el 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 de la persona que recibe el pedido. Solo está disponible enAppResponse
.
En la siguiente tabla, se enumeran las propiedades para el tipo Contact
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
displayName |
String |
Nombre de la persona que recibe el pedido, tal como desea 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 accede con su cuenta de Google. |
En el siguiente ejemplo, se muestra un elemento Contact
:
Ejemplo
{ "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" }
Mensaje push personalizado
Contiene elOrderUpdate
de la solicitud.
En la siguiente tabla, se enumeran las propiedades para el 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" } } }
Información de entrega
En la siguiente tabla, se enumeran las propiedades para el tipo DeliveryInfo
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
deliveryTimeIso8601 |
String |
Tiempo de entrega estimado en formato de marca de tiempo ISO 8601: &{t};{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z o 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 cuanto antes. Referencia: https://es.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. Use 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 para el 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 comerciante una tarifa N por este pedido. |
|
feeAmountRange |
FeeAmountRange |
El socio cobrará al restaurante una tarifa por cantidad de N a M por pedido. |
|
feePercent |
Número |
El socio cobrará al comerciante una tarifa del N% por este pedido. |
|
feePercentRange |
FeePercentRange |
El socio cobrará al comerciante 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 durante la hora de pedido.NO_CAPACITY
: No hay capacidad de servicio disponible (por ejemplo, una interrupción temporal debido a las horas pico).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, tamaño mínimo del carrito).UNAVAILABLE_SLOT
: No se puede completar el pedido en el plazo especificado por 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
: Código de error genérico para detectar todos los casos en los que no se pueda aplicar el código promocional, si no corresponde ninguno de los demás erroresPROMO_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 este cupón.AVAILABILITY_CHANGED
: El artículo ya no está disponible o no hay suficientes elementos para completar la solicitud.INCORRECT_PRICE
: Errores de precio en tarifas o totales.INVALID
: Una línea de pedido, opción de entrega o promoción contiene datos no válidos.NOT_FOUND
: No se puede encontrar una línea de pedido, una opción de entrega ni una promoción.PRICE_CHANGED
: Cambió el precio de un artículo.
RangodeTarifas
En la siguiente tabla, se enumeran las propiedades para el tipo FeeAmountRange
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
minFeeAmount |
Money |
Se aplicó un límite inferior al importe de la tarifa. |
|
maxFeeAmount |
Money |
Se aplican límites de cargos. |
Rango de porcentaje de tarifa
En la siguiente tabla, se enumeran las propiedades para el tipo FeePercentRange
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
minFeePercent |
Número |
Se cobró el límite inferior de la tarifa. |
|
maxFeePercent |
Número |
Se cargó el límite superior de la tarifa. |
Extensión FoodCart
Contiene detalles sobre el usuario, como las preferencias de entrega.
En la siguiente tabla, se enumeran las propiedades para el tipo FoodCartExtension
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
@type |
Const |
Tipo de esta extensión. Este campo siempre está configurado en "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 cumplimiento del usuario |
|
location |
Location |
En CheckoutRequestMessage, este campo especifica la dirección de entrega, que es necesaria si el pedido es para entrega. En el caso de los pedidos de comida para llevar o retiro, 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" } }
Extensión de error de comida
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 para el tipo FoodErrorExtension
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
@type |
Const | Obligatorio. Tipo de esta extensión. Valor: |
|
foodOrderErrors |
ListaFoodOrderError |
Obligatorio. Arreglo de objetos FoodOrderError que describe los errores que ocurrieron. Se recomienda un error por carrito o artículo. Debe tener al menos 1 elemento. |
|
correctedProposedOrder |
ProposedOrder |
Obligatorio cuando Un nuevo pedido propuesto con correcciones. Muestra este objeto si hay errores recuperables en la propuesta propuesta 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 Propuesta propuesto válido se avanza a la etapa de confirmación, en lugar de requerir que el usuario revise su carrito. |
|
paymentOptions |
PaymentOptions |
Obligatorio cuando Opciones de pago predeterminadas seleccionadas para el usuario. |
|
additionalPaymentOptions |
ListaPaymentOptions |
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 } } }
Extensión FoodItem
Define los complementos para los alimentos.
En la siguiente tabla, se enumeran las propiedades para el tipo FoodItemExtension
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
@type |
Const | Obligatorio. Tipo de esta extensión. Este campo siempre está configurado en "type.googleapis.com/google.actions.v2.orders.FoodItemExtension". Valor: |
|
options |
ListaFoodItemOption |
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 } ] } ] }
Opción Comida
En la siguiente tabla, se enumeran las propiedades para el tipo FoodItemOption
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
id |
String |
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 ID de oferta. Ejemplo: |
|
offerId |
String |
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 |
Para las opciones que son elementos, es la cantidad de elementos. Ejemplo: |
|
subOptions |
ListaFoodItemOption |
Subopciones para la opción, si corresponde. 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 } ] }
Error de pedido de comida
Contiene detalles sobre los errores en unCheckoutResponse
.
En la siguiente tabla, se enumeran las propiedades para el tipo FoodOrderError
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
error |
Error |
Obligatorio. |
|
id |
String | Obligatorio cuando Este campo es obligatorio para los errores en el nivel del artículo. Es el LineItem asignado por Google para los elementos del menú o 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 de un artículo que causó el error. Esto es necesario solo cuando el error "PRICE_CHANGED". |
|
availableQuantity |
Número entero | Obligatorio cuando Nueva cantidad disponible del artículo que causó el error. Esto es necesario solo cuando el error es "NO VÁLIDO" o "NOT_FOUND". El valor debe ser cero para "NO" y "NO_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 } }
Extensión de pedido de comida
Contiene información de entrega sobre el pedido.
En la siguiente tabla, se enumeran las propiedades para el tipo FoodOrderExtension
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
@type |
Const |
Tipo de esta extensión. Este campo siempre está configurado en "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension". Valor: |
|
availableFulfillmentOptions |
ListaFulfillmentOption |
Representa las opciones de entrega disponibles para el pedido. |
|
optinForRemarketing |
Booleano |
Solicitud del usuario para habilitar sus canales de marketing De forma predeterminada, no puedes enviar contenido de marketing sin el consentimiento del usuario. Si optinForRemarketing es “true”, puede suscribir al usuario. Si la habilitación del remarketing es falsa o no está presente, debe mantener el estado de la suscripción en su sistema tal como está. Los usuarios no pueden inhabilitar esta opción a través de Google, sino solo mediante la función para anular la suscripción que se proporciona en sus canales de marketing. 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 }
Opción de entrega
Puedes usar un objetoFulfillmentOption
de las siguientes maneras:
-
En
Checkout AppRequest
ySubmit AppRequest
,Cart.extension.fulfillmentPreference
: Almacena las preferencias del usuario (entrega o retiro). El precio siempre es 0 cuando se envía la solicitud de confirmación de la compra. -
En
Checkout AppResponse
,ProposedOrder.extension.availableFulfillmentOptions
: Define una o más opciones de entrega (por el momento, solo se admite una opción). Debes especificar la opción predeterminada comoLineItem
enProposedOrder.otherItems
. ElofferId
deFulfillmentOption
debe coincidir con el ID deLineItem
especificado enProposedOrder.otherItems
.
En la siguiente tabla, se enumeran las propiedades para el tipo FulfillmentOption
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
offerId |
String |
Identificador único para 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 para el 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 pedido de entrega. |
pickup |
Grupo 2 | PickupInfo |
Si está presente, indica un pedido para retirar. |
De imagen
En la siguiente tabla, se enumeran las propiedades para el tipo Image
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
sourceUrl |
String | Obligatorio. URL de la imagen. La imagen debe tener, como mínimo, 72 x 72 píxeles. Para obtener mejores resultados, usa una imagen de al menos 216 × 216 píxeles. La imagen debe tener un tamaño inferior a 6 MB y 64 megapíxeles. |
LineItem
Define el contenido de un carrito (Cart.lineItems
) o cargos adicionales por un pedido (ProposedOrder.otherItems
).
En la siguiente tabla, se enumeran las propiedades para el tipo LineItem
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
id |
String | Obligatorio cuando En el caso de una línea de pedido en un carrito (propuesto.cart.lineItems[0].id), este es el ID único que creó Google cuando creó el pedido. En el caso de una línea de pedido de un ProposaldOrder (ProposaldOrder.otherItems[0].id), que se usa para agregar artículos, como tarifas de envío e impuestos, el proveedor define el valor del ID. Por ejemplo, en un carrito hay dos de los mismos artículos con diferentes instrucciones de preparación (como dos pizzas medianas con diferentes ingredientes). En este caso, ambos artículos tienen el mismo ID de oferta base. Cuando envíe una solicitud de actualización de pedido para indicar que se rechazó un artículo, use este ID como desambiguador. En otras palabras, si se rechaza una de las pizzas porque no tiene un ingrediente particular, el ID ayuda a Google a determinar a qué artículo del pedido se refiere. Este campo es obligatorio, excepto en otherItems. |
|
name |
String | Obligatorio. Nombre de la línea de pedido. Este es un string visible para el usuario y debe escribirse siempre en mayúscula cuando sea posible (por ejemplo, "Cargo de entrega", "Cargo del servicio", "Impuestos"). Este campo tiene 100 caracteres truncados para los usuarios. |
|
type |
LineItemType |
Obligatorio. |
|
quantity |
Número entero | Obligatorio cuando Cantidad de elementos incluidos. No aplicable a ProposaldOrder.otherItems. |
|
description |
String |
Es la descripción del artículo. |
|
price |
Price |
Obligatorio. Es el precio de uno o varios elementos. Este valor refleja el precio total de todos los bienes o servicios de esta línea de pedido (en otras palabras, sumar el costo de cualquier complemento y multiplicarlo por la cantidad). Por ejemplo, si un artículo de USD 10 tiene una cantidad de 3, el precio sería USD 30. Para una pizza con un 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 elemento de una sola línea debe tener un precio, incluso si el precio es "0". Cuando el tipo es DISCOUNT, especifique el valor como negativo (por ejemplo, "-2"). |
|
subLines |
ListaSublineNote |
Opcional y solo válido si el tipo es ®TAR;REGULAR Se puede enviar una nota específica del artículo por parte del usuario en este campo en la solicitud de confirmación de la compra y la solicitud de envío del pedido. Asegúrese de que el comercio reciba la nota cuando se la proporcione. Estará en la solicitud como subLines[0].note, que es el único valor proporcionado en este campo cuando está presente en una solicitud. Debe contener como máximo 1 elemento. |
|
offerId |
String | Obligatorio cuando El ID de oferta del elemento MenuMenu para el elemento. No 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 } ] } }
TipoDeLíneaDePedido
El tipo LineItemType
tiene los siguientes valores posibles:
REGULAR
: Línea de pedido de productos. Se aplica a CartLine.LineItems.TAX
: Es la línea de pedido de impuestos. Se aplica a ProposaldOrder.otherItems.DISCOUNT
: Línea de pedido con descuento. Tenga en cuenta que el precio debe ser negativo. Se aplica a ProposaldOrder.otherItems.GRATUITY
: Línea de pedido de gravedad. Por lo general, se reserva para el envío de RequestRequestMessage de una propina seleccionada por el usuario. Se aplica a ProposaldOrder.otherItems.DELIVERY
: Línea de pedido de publicación. Se aplica a ProposaldOrder.otherItems.SUBTOTAL
: Subtotal de la línea de pedido. Se aplica a ProposaldOrder.otherItems.FEE
: Es la línea de pedido adicional que no abarca los otros tipos. Se aplica 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 final también está presente en TransactionDecisionValue
si el usuario realiza el pedido. Para los pedidos que especifican retiro, no se incluye ninguna ubicación (ni siquiera una vacía).
En la siguiente tabla, se enumeran las propiedades para el tipo Location
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
coordinates |
Coordinates |
||
formattedAddress |
String |
Muestra la dirección de la ubicación. Ejemplo: |
|
postalAddress |
PostalAddress |
||
zipCode |
String |
Ejemplo: |
|
city |
String |
El nombre de la ciudad. Ejemplo: |
|
notes |
String |
Notas sobre la ubicación, como códigos de puerta. 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 para el tipo Merchant
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
id |
String |
Es el ID del comercio. Si se especifica, coincide con Restaurant.@id en el feed del restaurante. Ejemplo: |
|
name |
String | Obligatorio. Es el nombre visible del usuario para el 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 para el 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" significa que "1" es un 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. Use 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 negativos 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 cargos de entrega, además de la información de pago. Tu acción recibe este objeto en unSubmit AppRequest
.
En la siguiente tabla, se enumeran las propiedades para el tipo Order
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
finalOrder |
ProposedOrder |
Obligatorio. El pedido propuesto que provocó el pedido. |
|
googleOrderId |
String | Obligatorio. ID de pedido que asignó 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. 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" } }
Actualización de pedidos
En la siguiente tabla, se describen los campos del tipo OrderUpdate que se incluyen enAppResponse
.
En la siguiente tabla, se enumeran las propiedades para el tipo OrderUpdate
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
actionOrderId |
String | Obligatorio. ID único del pedido en el sistema del integrador que se utiliza para identificar el orden para el cual se envía la actualización. Si no se proporciona el parámetro recibo.user_visible_order_id al menos una vez en OrderUpdate para un pedido de tipo "CREATED", este ID será el ID visible del usuario ingresado que se muestra en la tarjeta del pedido de Google. |
|
orderState |
OrderState |
Obligatorio. El nuevo estado del pedido. |
|
lineItemUpdates |
String y mapa, LineItemUpdate > |
||
updateTime |
Marca de tiempo ISO | Obligatorio. La hora a la que se actualizó el pedido. |
|
orderManagementActions |
ListaOrderManagementAction |
Acciones posteriores al pedido, como comunicarse con el equipo de asistencia y ver los detalles del pedido. Debe tener 1 elemento como mínimo y 6 elementos como máximo. |
|
rejectionInfo |
RejectionInfo |
Obligatorio cuando |
|
cancellationInfo |
CancellationInfo |
Obligatorio cuando |
|
inTransitInfo |
InTransitInfo |
Este campo ya no está disponible. |
|
fulfillmentInfo |
FulfillmentInfo |
Este campo ya no está disponible. |
|
receipt |
Receipt |
Obligatorio cuando Proporciona el ID de pedido visible para el usuario en un recibo. |
|
totalPrice |
Price |
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" } }
Información de retiro
En la siguiente tabla, se enumeran las propiedades para el tipo PickupInfo
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
pickupTimeIso8601 |
String |
Hora de retiro estimada, en formato de marca de tiempo ISO 8601: &{t};{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z o 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 la hora de recogida preferida es lo antes posible. Referencia: https://es.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. Úsalo 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 para el 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 |
La ciudad o el pueblo para 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 utiliza el campo addressLines en su lugar. 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> |
Lista de los 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 para el tipo Price
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
type |
Enum [
"ESTIMATE",
"ACTUAL"
] |
Obligatorio. El código del cupón promocional. |
|
amount |
Money |
Obligatorio. |
Promoción
En la siguiente tabla, se enumeran las propiedades para el tipo Promotion
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
coupon |
String | Obligatorio. El código del cupón promocional. |
Pedido propuesto
En la siguiente tabla, se enumeran las propiedades para el tipo ProposedOrder
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
id |
String |
ID opcional del pedido propuesto. |
|
cart |
Cart |
Obligatorio. Elementos del usuario. |
|
otherItems |
ListaLineItem |
Elementos agregados por el proveedor, como cargos de envío, otras tarifas e impuestos. Otros artículos también pueden contener propinas o descuentos agregados por el usuario. No debe tener más de 10 elementos. |
|
image |
Image |
Imagen asociada con el pedido propuesto. |
|
totalPrice |
Price |
Obligatorio. Precio total del pedido propuesto. |
|
extension |
FoodOrderExtension |
Obligatorio. Define la información de entrega para los pedidos de comida. |
|
disclaimers |
ListaDisclaimer |
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" } ] } }
Nota secundaria
En la siguiente tabla, se enumeran las propiedades para el tipo SublineNote
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
note |
String | Obligatorio. |
Marca de tiempo
La fecha y la hora en el siguiente formato:
"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
Valor de la decisión de transacción
Contiene el elementoOrder
.
En la siguiente tabla, se enumeran las propiedades para el tipo TransactionDecisionValue
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
order |
Order |
Obligatorio. El pedido se debe 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
Solicitud de la app
En la siguiente tabla, se enumeran las propiedades para el 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 |
ListaInput |
Obligatorio. Contiene los argumentos esperados para pagar un carrito. Debe contener exactamente 1 elemento. |
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
.
EnviarPedidoDeSolicitud
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 de Checkout
y SubmitOrder
si es necesario.
En la siguiente tabla, se enumeran las propiedades para el tipo Conversation
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
conversationId |
String | Obligatorio. 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 para el tipo Input
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
intent |
Enum [
"actions.foodordering.intent.CHECKOUT",
"actions.intent.TRANSACTION_DECISION"
] |
Obligatorio. Se establece en &actions.foodordering.intent.CHECKOUT para el mensaje de solicitud de confirmación de la compra O "actions.intent.TRANSACTION_DECISION" para enviar el mensaje de solicitud de pedido. |
|
arguments |
ListaArgument |
Obligatorio. Contiene el carrito que se debe pagar o el pedido que se realizará Debe contener exactamente 1 elemento. |
Argument
Contiene detalles sobre los alimentos que el usuario desea pagar. Para la confirmación de la compra, solo se aplica la extensión. Para el pedido de envío, solo se aplica transactionDecisionValue
En la siguiente tabla, se enumeran las propiedades para el 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 quiere pagar. |
transactionDecisionValue |
Grupo 2 | TransactionDecisionValue |
Contiene el pedido que se realizará junto con los detalles del pago. |
Respuesta a la entrega
Respuesta de la aplicación
En la siguiente tabla, se enumeran las propiedades para el tipo AppResponse
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
expectUserResponse |
Const |
Se configura como falso. Valor: |
|
finalResponse |
FinalResponse |
Obligatorio. Contiene tu respuesta a la confirmación de la compra. |
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 } } } } } ] } } }
Mensaje de respuesta de Checkout
UnCheckoutResponseMessage
es un AppResponse
con un checkoutResponse
o error
en el StructuredResponse
.
EnviarPedidoDeRespuestaRespuesta
UnSubmitOrderResponseMessage
es un AppResponse
con un orderUpdate
en el StructuredResponse
.
Respuesta final
Tu respuesta a la confirmación de la compra o a SendOrderRequestMessage.
En la siguiente tabla, se enumeran las propiedades para el tipo FinalResponse
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
richResponse |
RichResponse |
Obligatorio. Contiene tu respuesta a CheckoutRequestMessage o SubmitOrderRequestMessage. |
Respuesta de Checkout
En la siguiente tabla, se enumeran las propiedades para el tipo CheckoutResponse
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
proposedOrder |
ProposedOrder |
Obligatorio. Pedido propuesto para usar en la transacción. |
|
paymentOptions |
PaymentOptions |
Obligatorio. Opción de pago predeterminada seleccionada para el usuario. |
|
additionalPaymentOptions |
ListaPaymentOptions |
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 la confirmación de una compra o a SendOrderRequestMessage.
En la siguiente tabla, se enumeran las propiedades para el tipo Item
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
structuredResponse |
StructuredResponse |
Obligatorio. |
Respuesta enriquecida
Contiene tu respuesta a la confirmación de una compra.
En la siguiente tabla, se enumeran las propiedades para el tipo RichResponse
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
items |
ListaItem |
Obligatorio. Debe contener exactamente 1 elemento. |
Respuesta estructurada
Para CheckoutResponseMessage, puede ser una de las siguientes opciones: CheckoutResponse indica una confirmación de la compra exitosa. OR FoodErrorExtension: indica un error durante la confirmación de la compra. La respuesta puede incluir una propuesta de OrderdOrder y PaymentOptions o un mensaje de error sin PaymentOptions. En el caso de SubmitOrderResponseMessage, solo es aplicable orderUpdate.
En la siguiente tabla, se enumeran las propiedades para el tipo StructuredResponse
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
Se requiere exactamente uno de los siguientes grupos de propiedades. | |||
checkoutResponse |
Grupo 1 | CheckoutResponse |
Artículos pagados, impuestos y descuentos |
error |
Grupo 2 | FoodErrorExtension |
Se detectaron errores en los artículos del carrito. Según la naturaleza del error, esta propiedad puede incluir una propuesta de pedido propuesto y opciones de pago, o solo un mensaje de error sin PaymentOptions. |
orderUpdate |
Grupo 3 | OrderUpdate |
Actualizaciones de pedido asíncronas
En esta sección, se describen los tipos de alto nivel que conforman las solicitudes y respuestas de una interacción típica de pedido de comida integrada.Mensaje de solicitud de actualización asíncrona
Notifica al usuario sobre los cambios después de que se envía y se confirma un pedido. Por ejemplo, puedes notificar al usuario que el pedido está en tránsito o si el precio cambió. Para obtener más información, consultaEn la siguiente tabla, se enumeran las propiedades para el 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" } } } }
Mensaje de respuesta de actualización de pedido asíncrono
Después de enviar correctamente unAsyncOrderUpdateRequestMessage
, Google responde con un estado HTTP 200 y un cuerpo vacío. Si la actualización no se realizó correctamente, Google responde con los detalles del motivo del error.
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 para el tipo Button
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
title |
String | Obligatorio. 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" } }
Información de cancelación
En la siguiente tabla, se enumeran las propiedades para el tipo CancellationInfo
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
reason |
String | Obligatorio. Motivo de texto que se muestra para el rechazo cuando OrderState.state es & CANCELTD. Ejemplo: |
En el siguiente ejemplo, se muestra un elemento CancellationInfo
:
Ejemplo
{ "reason": "Insufficient inventory" }
Extensión de pedidos de comida
Este tipo proporciona a un usuario un intervalo estimado para la entrega o preparación del pedido. Envía esta extensión en un OrderUpdate
siempre que la información esté disponible o haya cambiado desde la última vez que se envió.
Proporciona una estimación conservadora del intervalo de entrega para que las expectativas de los usuarios se cumplan de forma coherente. Por ejemplo, si se estima que el pedido se entregará hoy a las 13:00, debes enviar un intervalo estimado que sea coherente con las variaciones debido a las condiciones del tráfico, como hoy a las 12:45 a 13:15.
Una duración o marca de tiempo ISO 8601 se interpreta como el intervalo desde el updateTime
del OrderUpdate
(en esencia, &ahora) hasta el updateTime
más duration
.
No utilice este formato, a menos que "actualmente" sea una expectativa razonable.
Un intervalo ISO 8601 se interpreta como el intervalo desde el inicio hasta el final del intervalo.
En la siguiente tabla, se enumeran las propiedades para el tipo FoodOrderUpdateExtension
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
@type |
Const |
Tipo de esta extensión. Este campo siempre está configurado en "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension". Valor: |
|
estimatedFulfillmentTimeIso8601 |
String |
La hora estimada en la que se entregará el pedido o estará listo para retirarlo. La string debe estar en formato ISO 8601 y corresponder a un intervalo en lugar de a una hora fija. Las convenciones aceptables son: Intervalos, Duración y Fecha/Horario. Este campo se puede enviar en SubmitOrderResponseMessage o AsyncOrderUpdateRequestMessage cuando la información está disponible o hay un cambio, como llegadas anticipados o retrasados. Ejemplo: |
|
foodOrderErrors |
ListaFoodOrderError |
Describe los errores que se produjeron después del pedido. Se recomienda un error por carrito o artículo. Usa FoodOrderUpdateExtension.FoodOrderErrors en caso de que los errores no estén cubiertos por RechazarionInfo. Debe tener al menos 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 para el tipo FulfillmentInfo
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
Se requiere exactamente uno de los siguientes grupos de propiedades. | |||
deliveryTime |
Grupo 1 | Marca de tiempo ISO |
Usa el valor estimadoFulfillmentTimeIso8601 en el mensaje de FoodOrderingUpdateExtension |
pickupTime |
Grupo 2 | Marca de tiempo ISO |
Usa el valor estimadoFulfillmentTimeIso8601 en el mensaje de 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" }
Información de InTransit
En la siguiente tabla, se enumeran las propiedades para el tipo InTransitInfo
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
updatedTime |
Marca de tiempo ISO |
Usa el valor estimadoFulfillmentTimeIso8601 en el mensaje de FoodOrderingUpdateExtension |
En el siguiente ejemplo, se muestra un elemento InTransitInfo
:
Ejemplo
{ "updatedTime": "2017-05-10T02:36:38.803Z" }
Actualización de línea de pedido
En la siguiente tabla, se enumeran las propiedades para el tipo LineItemUpdate
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
orderState |
OrderState |
||
price |
Price |
||
reason |
String |
Motivo del cambio. Es 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." }
AcciónOpenUrl
En la siguiente tabla, se enumeran las propiedades para el 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 EMAIL: El prefijo debe ser “mailto”. &CALL; CALL": El prefijo debe ser &telt;tel". "CUSTOMER_SERVICE]: El prefijo debe ser “mailto” &telt;tel", “http” o “https”. Ejemplo: |
Acción para administrar pedidos
La administración de pedidos permite a los usuarios obtener asistencia para pedidos posteriores y debe enviarse en cada OrderUpdate
dentro del pedido de envío AppResponse
y cada AsyncOrderUpdateRequestMessage
posterior que se envía para un pedido en particular puede variar según el estado.
Por ejemplo, en el estado "CREATED" CUSTOMER_SERVICE
puede hacer referencia a tu teléfono de atención al cliente. Luego, en el estado CONFIRMADO, CUSTOMER_SERVICE
puede cambiar al número de teléfono del restaurante si ese se convierte en el mejor punto de contacto para el cliente. Del mismo modo, una vez que el pedido se encuentra en estado "FULFILLED", CUSTOMER_SERVICE
puede hacer referencia a tus direcciones de correo electrónico de asistencia.
En la siguiente tabla, se enumeran las propiedades para el 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" } } }
TipoDeAcciónDePedido
Define los tipos relacionados conOrderManagementAction
.
El tipo OrderManagementActionType
tiene los siguientes valores posibles:
CUSTOMER_SERVICE
: Correo electrónico o número de contacto del servicio de atención al cliente que se mostrará en la página de confirmación del pedido. Esto es obligatorio. El prefijo openUrlAction.url debe ser “mailto", “tel", “http"” o “https”.EMAIL
: Solo el correo electrónico de acción en la página de detalles del pedido. El prefijo openUrlAction.url debe ser "mailto".CALL_DRIVER
: Solo la acción de llamada en la página de detalles del pedido. El prefijo openUrlAction.url debe ser &telt;tel".CALL_RESTAURANT
: Solo la acción de llamada en la página de detalles del pedido. El prefijo openUrlAction.url debe ser &telt;tel".
Estado del pedido
El estado actual del pedido. Cada valor de state
de OrderState
también corresponde a un estado de compra en myaccount.google.com.
En la siguiente tabla, se enumeran las propiedades para el tipo OrderState
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
state |
OrderStateEnum |
Obligatorio. |
|
label |
String | Obligatorio. La string de visualización visible para el usuario del estado. 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
: Pedido creado por el integrador y esperando la confirmación del proveedor. Corresponde al estado de compra "Ordenado".CONFIRMED
: Pedido confirmado por el proveedor y activo. Corresponde al estado de compra "Aceptado".REJECTED
: Pedido rechazado por integrador o proveedor. Corresponde al estado de compra "Rechazado".CANCELLED
: el usuario canceló el pedido. Corresponde al estado de compra "Cancelado".IN_PREPARATION
: Se está preparando la comida. Corresponde al estado de compra "Estado desconocido".READY_FOR_PICKUP
: Ya se puede retirar la comida. Corresponde al estado de compra "Listo para retirar".IN_TRANSIT
: el pedido se está entregando. Corresponde al estado de compra "En curso".FULFILLED
: El usuario recibió el pedido. Corresponde al estado de compra "Retirada".
Recibo
Envía este tipo en un orden de envíoAppResponse
, en el que OrderState
sea "CONFIRMED", "FULFILLED" o "IN_TRANSIT". Enviar el recibo en el momento en que userVisibleOrderId
esté disponible No es necesario que sigas enviando el recibo en actualizaciones posteriores.
En la siguiente tabla, se enumeran las propiedades para el tipo Receipt
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
userVisibleOrderId |
String | Obligatorio. Obligatorio si el pedido es "CONFIRMED", "IN_TRANSIT" o "FULFILLED". Este campo es el único ID que ve el usuario 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 cualquier OrderUpdate. 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" }
Información de rechazo
En la siguiente tabla, se enumeran las propiedades para el 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." }
Tipo de rechazo
El tipo RejectionType
tiene los siguientes valores posibles:
INELIGIBLE
: El usuario no es apto debido a problemas relacionados con la política o el riesgo.PAYMENT_DECLINED
: Hay un problema con el procesamiento del pago.UNAVAILABLE_SLOT
: No se puede completar el pedido en el plazo especificado por 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 pagos que se usan para la entrega de los pedidos de comida.Opciones de pago de acciones
Requisitos para una forma de pago proporcionada por la acción.
En la siguiente tabla, se enumeran las propiedades para el tipo ActionProvidedPaymentOptions
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
paymentType |
PaymentType |
Obligatorio. |
|
displayName |
String | Obligatorio. 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
: Método de autenticación asociado a las tarjetas de pago almacenadas en los archivos de la Cuenta de Google del usuario. Los datos de pagos devueltos incluyen el número de cuenta personal (PAN) junto con el mes y el año de vencimiento.
AllowedCardNetworks
El tipo AllowedCardNetworks
tiene los siguientes valores posibles:
AMEX
DISCOVER
INTERAC
JCB
MASTERCARD
VISA
Parámetros de la tarjeta
Usa este objeto para configurar la compatibilidad de tu sitio con la API de Google Pay.
En la siguiente tabla, se enumeran las propiedades para el tipo CardParameters
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
allowedAuthMethods |
Lista | Obligatorio. Campos admitidos para autenticar una transacción con tarjeta Debe tener al menos 1 elemento. |
|
allowedCardNetworks |
ListaAllowedCardNetworks |
Obligatorio. Una o más redes de tarjetas que admites y que también son compatibles con la API de Google Pay. Debe tener al menos 1 elemento. |
|
billingAddressRequired |
Booleano |
Configúralo como verdadero si necesitas una dirección de facturación. Solo solicita una dirección de facturación 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. |
|
cvcRequired |
Booleano |
Se establece como verdadero si se usa TimesofMoney y el valor falso para todos los demás procesadores de pagos. |
En el siguiente ejemplo, se muestra un elemento CardParameters
:
Ejemplo
{ "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "AMEX", "DISCOVER" ], "billingAddressRequired": false, "cvcRequired": false }
Instrumento de pago proporcionado por Google
En la siguiente tabla, se enumeran las propiedades para el tipo GoogleProvidedPaymentInstrument
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
instrumentToken |
String | Obligatorio. String codificada en base 64 que contiene el token de pago para cobrar al usuario con un procesador de Google Pay participante, según las opciones de 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" ] } }
Opciones de pago de Google
Requisitos para la forma de pago proporcionada por Google.
En la siguiente tabla, se enumeran las propiedades para el tipo GoogleProvidedPaymentOptions
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
facilitationSpecification |
String |
Un JSON de PaymentDataRequest como string. Usa este objeto para configurar la compatibilidad de tu sitio con la API de Google Pay. |
|
supportedCardNetworks |
ListaSupportedCardNetworks |
En su lugar, use facilitationSpecification. Tipo de redes de tarjeta admitidas por el agente. Este campo ya no está disponible. |
|
prepaidCardDisallowed |
Booleano |
En su lugar, use facilitationSpecification. Indica si se admite o no una tarjeta prepagada como tipo de pago. Este campo ya no está disponible. |
|
billingAddressRequired |
Booleano |
En su lugar, use facilitationSpecification. Indica si se requiere una dirección de facturación. Este campo ya no está disponible. |
|
tokenizationParameters |
TokenizationParameters |
Este campo ya no está 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 }
Información del comerciante
Usa este objeto para configurar la compatibilidad de tu sitio con la API de Google Pay.
En la siguiente tabla, se enumeran las propiedades para el tipo MerchantInfo
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
merchantId |
String |
Es el identificador de comerciante de Google que te emitió Google Pay. |
|
merchantName |
String | Obligatorio. Nombre del comerciante codificado como UTF-8. El nombre del comerciante aparece en la hoja de pago. |
OnFulfillmentPaymentData
Usa este objeto a fin de enviar datos adicionales para el PaymentType "ON_FULFILLMENT".
En la siguiente tabla, se enumeran las propiedades para el tipo OnFulfillmentPaymentData
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
supportedPaymentOptions |
ListaPaymentOptionsEnums |
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 para el 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" }
SolicitudDeDatosDePago
Usa este objeto para configurar la compatibilidad de tu sitio con la API de Google Pay.
En la siguiente tabla, se enumeran las propiedades para el tipo PaymentDataRequest
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
apiVersion |
Const | Obligatorio. Versión principal de API Valor: |
|
apiVersionMinor |
Const | Obligatorio. Versión de API secundaria. Valor: |
|
merchantInfo |
MerchantInfo |
Obligatorio. (ID de comerciante de Google Pay) Información sobre el comercio que solicita datos de pago. |
|
allowedPaymentMethods |
ListaPaymentMethod |
Obligatorio. Especifica la compatibilidad con una o más formas de pago compatibles con la API de Google Pay. |
|
transactionInfo |
TransactionInfo |
Obligatorio. 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, "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" } }
Información de pago
Información relacionada con el pago de un pedido.
En la siguiente tabla, se enumeran las propiedades para el tipo PaymentInfo
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
displayName |
String | Obligatorio. Nombre visible del usuario para el instrumento de pago que se mostrará en el recibo. |
|
paymentType |
PaymentType |
Obligatorio. |
|
googleProvidedPaymentInstrument |
GoogleProvidedPaymentInstrument |
El token que la acción puede usar. Solo debes especificarlo 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" }
Forma de pago
Usa este objeto para configurar la compatibilidad de tu sitio con la API de Google Pay.
En la siguiente tabla, se enumeran las propiedades para el 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. Los parámetros necesarios para configurar el tipo de forma de pago proporcionada. |
|
tokenizationSpecification |
TokenizationSpecification |
Obligatorio. Configura una cuenta o 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" } } }
Opciones de pago
En la siguiente tabla, se enumeran las propiedades para el tipo PaymentOptions
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
Se requiere exactamente uno de los siguientes grupos de propiedades. | |||
googleProvidedOptions |
Grupo 1 | GoogleProvidedPaymentOptions |
Es mutuamente exclusivo con ActionProvidedOptions. Use este método para realizar pagos en línea con gPay. |
actionProvidedOptions |
Grupo 2 | ActionProvidedPaymentOptions |
Es mutuamente exclusivo con googleProvidedOptions. Úsalo para pagar en efectivo o pagar en la 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
{ "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } } }
Opciones de pago
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.
Redes de tarjetas admitidas
Define los tipos relacionados conGoogleProvidedPaymentOptions
.
El tipo SupportedCardNetworks
tiene los siguientes valores posibles:
UNSPECIFIED_CARD_NETWORK
AMEX
DISCOVER
JCB
MASTERCARD
VISA
Parámetros de tokenización
Define los tipos relacionados conGoogleProvidedPaymentOptions
.
En la siguiente tabla, se enumeran las propiedades para el tipo TokenizationParameters
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
tokenizationType |
Enum [
"UNSPECIFIED_TOKENIZATION_TYPE",
"PAYMENT_GATEWAY"
] |
Obligatorio. En su lugar, use facilitationSpecification. Tipo de tokens aceptables. |
|
parameters |
Parameters |
En su lugar, use facilitationSpecification. |
Especificación de la asignación de token
Este objeto te permite configurar una cuenta para recibir información de pago cobrable.
En la siguiente tabla, se enumeran las propiedades para el 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 de pago de un pagador. Se usa para presentar un diálogo de autorización de pago.
En la siguiente tabla, se enumeran las propiedades para el tipo TransactionInfo
:
Propiedad | Tipo | Descripción | |
---|---|---|---|
currencyCode |
String | Obligatorio. Código de moneda alfabético ISO 4217. |
|
transactionId |
String |
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 transacciones de Google Pay. Este campo es obligatorio cuando envías devoluciones de llamada a la Google Transaction Events API. |
|
totalPriceStatus |
Const | Obligatorio. Usar &ESTTTED;ESTIMATED" como opción predeterminada. El precio total puede ajustarse según los detalles de la respuesta, como el impuesto sobre las ventas que se cobra en función de una dirección de facturación. Valor: |
|
totalPrice |
String | Obligatorio. 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" }