Esquema de acciones de entrega

En esta página, se describe la carga útil del servicio web de entrega (API de Ordering End-to-End) cuando se trabaja con la API de Ordering End-to-End-in Action. Para obtener una versión procesable de esta información, puedes descargar el esquema JSON.

Tipos de base

Carrito

Contiene detalles del pedido, así como si la solicitud es para retiro o entrega. Un carrito también contiene los detalles de la entrega, las propinas y la dirección de entrega. El objeto Cart se define en un Checkout AppRequest.f. Incluyes una copia del carrito en tu Checkout AppResponse.

En la siguiente tabla, se enumeran las propiedades del tipo Cart:

Propiedad Tipo Descripción
@type Const.

Es el tipo de este objeto. Omite este campo si el objeto Cart principal forma parte de ProposaldOrder.

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

id String

Es el ID opcional del carrito.

merchant Merchant

Comercio afiliado a este carrito.

lineItems Lista<LineItem>

Obligatorio.

Es una lista de los productos o servicios que solicita el usuario.

Debe tener, como mínimo, 1 elemento.

promotions Lista<Promotion>

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 los 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 en AppResponse.

En la siguiente tabla, se enumeran las propiedades del tipo Contact:

Propiedad Tipo Descripción
displayName String

Es el nombre de la persona que recibe el pedido, como deseas que se muestre. Usa este campo si no se especifican firstName y lastName.

Ejemplo: Lovefood Ordering

email String

Dirección de correo electrónico de la persona que recibe el pedido.

Ejemplo: ilovefood@example.com

firstName String

Nombre de la persona que recibe el pedido.

Ejemplo: Lovefood

lastName String

Apellido de la persona que recibe el pedido

Ejemplo: Ordering

phoneNumber String

Número de teléfono de la persona que recibe el pedido, incluido el código de país

Ejemplo: +16501234567

emailVerified Booleano

Indica si la persona que recibe el pedido accedió con su Cuenta de Google.

En el siguiente ejemplo, se muestra un elemento Contact:

Ejemplo

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

CustomPushMessage

Contiene el OrderUpdate de la solicitud.

En la siguiente tabla, se enumeran las propiedades del tipo CustomPushMessage:

Propiedad Tipo Descripción
orderUpdate OrderUpdate

Obligatorio.

Se actualizó la información del pedido.

En el siguiente ejemplo, se muestra un elemento CustomPushMessage:

Ejemplo

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

DeliveryInfo

En la siguiente tabla, se enumeran las propiedades del tipo DeliveryInfo:

Propiedad Tipo Descripción
deliveryTimeIso8601 String

Tiempo de entrega estimado, en formato de marca de tiempo ISO 8601: “{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z” o con el formato de duración: “P(n)Y(n)M(n)DT(n)H(n)M(n)S”. Por ejemplo, PT90M representa una duración de 90 minutos. El valor predeterminado “PT0M” indica que el tiempo de entrega preferido es lo más pronto posible. Referencia: https://en.wikipedia.org/wiki/ISO_8601#combine_date_and_time_representations. Usa esta opción para actualizar el tiempo de entrega estimado durante la respuesta de la confirmación de la compra.

Ejemplo: PT90M

En el siguiente ejemplo, se muestra un elemento DeliveryInfo:

Ejemplo

{
  "deliveryTimeIso8601": "PT90M"
}

Renuncia de responsabilidad

En la siguiente tabla, se enumeran las propiedades del tipo Disclaimer:

Propiedad Tipo Descripción
predefinedMessage PredefinedMessage

Obligatorio.

Para mostrar mensajes de renuncia de responsabilidad predefinidos durante la confirmación de la compra.

feeAmount Money

El socio cobrará al comercio una tarifa de N por este pedido.

feeAmountRange FeeAmountRange

El socio cobrará al restaurante una tarifa 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 comercio una tarifa del N% al 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 al momento del pedido.
  • NO_CAPACITY: No hay capacidad de servicio disponible (por ejemplo, una interrupción temporal debido a horas de mayor demanda).
  • NO_COURIER_AVAILABLE: No se puede procesar el pedido porque el personal de entrega es limitado.
  • REQUIREMENTS_NOT_MET: No se cumplieron las restricciones para aceptar el pedido (por ejemplo, tamaño mínimo de la cesta).
  • UNAVAILABLE_SLOT: No se puede completar el pedido en el plazo de entrega especificado en DeliveryInfo o PickupInfo.
  • OUT_OF_SERVICE_AREA: El pedido no puede entregarse a la dirección del usuario.
  • PROMO_EXPIRED: No se pudo aplicar porque la promoción venció.
  • PROMO_NOT_APPLICABLE: Es un código de error genérico para detectar todos los casos de error en la aplicación del código promocional si ninguno de los demás errores de código promocional es adecuado.
  • PROMO_NOT_RECOGNIZED: No se reconoció el código del cupón.
  • PROMO_ORDER_INELIGIBLE: El pedido actual no es apto para este cupón.
  • PROMO_USER_INELIGIBLE: El usuario actual no es apto para este cupón.
  • AVAILABILITY_CHANGED: El artículo ya no está disponible o no hay suficientes para completar la solicitud.
  • INCORRECT_PRICE: Hay errores de precio en las tarifas o el total.
  • INVALID: Un elemento LineItem, FulfillmentOption o promoción contiene datos no válidos.
  • NOT_FOUND: No se puede encontrar un elemento LineItem, FulfillmentOption o promoción.
  • PRICE_CHANGED: Cambió el precio de un elemento.

FeeAmountRange

En la siguiente tabla, se enumeran las propiedades del tipo FeeAmountRange:

Propiedad Tipo Descripción
minFeeAmount Money

Límite inferior del importe de la tarifa cobrada.

maxFeeAmount Money

Límite superior del importe de la tarifa cobrada.

FeePercentRange

En la siguiente tabla, se enumeran las propiedades del tipo FeePercentRange:

Propiedad Tipo Descripción
minFeePercent Número

Límite inferior del porcentaje de tarifa cobrado.

maxFeePercent Número

Límite superior del porcentaje de tarifa cobrado.

FoodCartExtension

Contiene detalles sobre el usuario, como preferencias de entrega.

En la siguiente tabla, se enumeran las propiedades del tipo FoodCartExtension:

Propiedad Tipo Descripción
@type Const.

Es el tipo de esta extensión. Este campo siempre se establece como "type.googleapis.com/google.actions.v2.orders.FoodCartExtension".

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

contact Contact

Es la información de contacto de la persona que recibe el pedido. Los detalles incluyen el nombre, el número de teléfono y la dirección de correo electrónico de la persona.

fulfillmentPreference FulfillmentOption

Obligatorio.

Preferencia de entrega del usuario.

location Location

En este campo de CheckoutRequestMessage, se especifica la dirección de entrega, que es obligatoria si el pedido es para entrega. En el caso de los pedidos para llevar o retirar, este campo no se incluye en el mensaje.

En el siguiente ejemplo, se muestra un elemento FoodCartExtension:

Ejemplo 1

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

Ejemplo 2

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

FoodErrorExtension

Identifica uno o más errores que se produjeron mientras se procesaba una solicitud. En la siguiente tabla, se describen los campos del tipo FoodErrorExtension. Los errores se pueden enviar en un CheckoutResponse.

En la siguiente tabla, se enumeran las propiedades del tipo FoodErrorExtension:

Propiedad Tipo Descripción
@type Const.

Obligatorio.

Es el tipo de esta extensión.

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

foodOrderErrors Lista<FoodOrderError>

Obligatorio.

Arreglo de objetos FoodOrderError que describe los errores que se produjeron. Se recomienda un error por carrito o por artículo.

Debe tener, como mínimo, 1 elemento.

correctedProposedOrder ProposedOrder

Es obligatorio cuando foodOrderErrors.error = "UNAVAILABLE_SLOT", "PROMO_EXPIRED", "PROMO_NOT_APPLICABLE", "PROMO_NOT_RECOGNIZED", "PROMO_ORDER_INELIGIBLE", "PROMO_USER_INELIGIBLE", "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "INVALID", "NOT_FOUND", or "PRICE_CHANGED".

Un nuevo pedido propuesto con correcciones. Muestra este objeto si hay errores recuperables en el objeto ProposaldOrder original. Por ejemplo, un cambio en el precio de uno o más elementos de una sola línea del carrito es un error recuperable. Los errores recuperables con un ProposaldOrder válido se avanzan a la etapa de confirmación, en lugar de requerir que el usuario revise el carrito.

paymentOptions PaymentOptions

Es obligatorio cuando foodOrderErrors.error = "UNAVAILABLE_SLOT", "PROMO_EXPIRED", "PROMO_NOT_APPLICABLE", "PROMO_NOT_RECOGNIZED", "PROMO_ORDER_INELIGIBLE", "PROMO_USER_INELIGIBLE", "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "INVALID", "NOT_FOUND", or "PRICE_CHANGED".

Son las opciones de pago predeterminadas seleccionadas para el usuario.

additionalPaymentOptions Lista<PaymentOptions>

Opciones de pago alternativas disponibles para el usuario.

En el siguiente ejemplo, se muestra un elemento FoodErrorExtension:

Ejemplo

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

FoodItemExtension

Define complementos para alimentos.

En la siguiente tabla, se enumeran las propiedades del tipo FoodItemExtension:

Propiedad Tipo Descripción
@type Const.

Obligatorio.

Es el tipo de esta extensión. Este campo siempre se establece como "type.googleapis.com/google.actions.v2.orders.FoodItemExtension".

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

options Lista<FoodItemOption>

Una opción puede ser un elemento complementario o un grupo de complementos que contenga un conjunto de complementos.

En el siguiente ejemplo, se muestra un elemento FoodItemExtension:

Ejemplo

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

FoodItemOption

En la siguiente tabla, se enumeran las propiedades del tipo FoodItemOption:

Propiedad Tipo Descripción
id String

Es el ID único asignado por Google. Cuando envíes un FoodOrderError o AsyncOrderUpdateRequest, usa este campo para diferenciar los casos en los que un carrito contenga más de un artículo con el mismo offerId.

Ejemplo: 39231093

offerId String

Es el ID de oferta del artículo.

Ejemplo: 912835081

name String

Es el nombre de la opción.

Ejemplo: Honey Mustard

price Money
note String

Nota relacionada con la opción.

quantity Número

En el caso de las opciones que son elementos, la cantidad de elementos.

Ejemplo: 3

subOptions Lista<FoodItemOption>

Subopciones para la opción, si las hubiera.

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

En el siguiente ejemplo, se muestra un elemento FoodItemOption:

Ejemplo 1

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

Ejemplo 2

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

FoodOrderError

Contiene detalles sobre los errores en una CheckoutResponse.

En la siguiente tabla, se enumeran las propiedades del tipo FoodOrderError:

Propiedad Tipo Descripción
error Error

Obligatorio.

id String

Es obligatorio cuando error = "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "PRICE_CHANGED", "INVALID", or "NOT_FOUND".

Este campo es obligatorio para los errores a nivel de artículo. Es el LineItem.id asignado por Google para los elementos de 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

Es obligatorio cuando error = "PRICE_CHANGED".

Es el nuevo precio de un artículo que causó el error. Esto es obligatorio solo cuando el error es "PRICE_CHANGED".

availableQuantity Número entero

Es obligatorio cuando error = "INVALID", or "NOT_FOUND".

Nueva cantidad disponible del elemento que causó el error. Esto es obligatorio solo cuando el error es "INVALID" o "NOT_FOUND". El valor debe ser cero para "INVALID" y "NOT_FOUND".

En el siguiente ejemplo, se muestra un elemento FoodOrderError:

Ejemplo 1

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

Ejemplo 2

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

FoodOrderExtension

Contiene información de entrega sobre el pedido.

En la siguiente tabla, se enumeran las propiedades del tipo FoodOrderExtension:

Propiedad Tipo Descripción
@type Const.

Es el tipo de esta extensión. Este campo siempre se establece como "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension".

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

availableFulfillmentOptions Lista<FulfillmentOption>

Representa las opciones de entrega disponibles para el pedido.

optinForRemarketing Booleano

Solicitud del usuario para habilitar tus canales de distribución. De forma predeterminada, no puedes enviar contenido de marketing sin el consentimiento de los usuarios. Si optinForRemarketing es verdadero, puedes suscribir al usuario. Si optinForRemarketing es falso 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, solo mediante la función para anular la suscripción que se proporciona en sus canales de distribución. Esta marca solo está presente en SubmitOrderRequestMessage.

En el siguiente ejemplo, se muestra un elemento FoodOrderExtension:

Ejemplo 1

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

Ejemplo 2

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

FulfillmentOption

Puedes usar un objeto FulfillmentOption de las siguientes maneras:
  • En Checkout AppRequest y Submit AppRequest, Cart.extension.fulfillmentPreference: Almacena la preferencia 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 como LineItem en ProposedOrder.otherItems. El offerId de FulfillmentOption debe coincidir con el ID del LineItem especificado en ProposedOrder.otherItems.

En la siguiente tabla, se enumeran las propiedades del tipo FulfillmentOption:

Propiedad Tipo Descripción
offerId String

Es el identificador único de esta opción de entrega, si corresponde.

fulfillmentInfo FulfillmentOptionInfo

Obligatorio.

expiresAt Marca de tiempo ISO

Es la hora a la que vence esta opción de entrega.

price Money

Es 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 con FulfillmentInfo.

En la siguiente tabla, se enumeran las propiedades del tipo FulfillmentOptionInfo:

Propiedad Tipo Descripción
Se requiere exactamente uno de los siguientes grupos de propiedades.
delivery Grupo 1 DeliveryInfo

Si está presente, indica el orden de entrega.

pickup Grupo 2 PickupInfo

Si está presente, indica un pedido para retirar.

Imagen

En la siguiente tabla, se enumeran las propiedades del tipo Image:

Propiedad Tipo Descripción
sourceUrl String

Obligatorio.

URL de la imagen. Como mínimo, la imagen debe tener 72 x 72 píxeles. Para obtener mejores resultados, usa una imagen de al menos 216 x 216 píxeles. La imagen debe tener menos de 6 MB y 64 megapíxeles.

LineItem

Define el contenido de un carrito (Cart.lineItems) o los cargos adicionales de un pedido (ProposedOrder.otherItems).

En la siguiente tabla, se enumeran las propiedades del tipo LineItem:

Propiedad Tipo Descripción
id String

Es obligatorio cuando type = "REGULAR".

Para un elemento de una sola línea en un carrito (ProposaldOrder.cart.lineItems[0].id), este es el ID único que creó Google cuando creó el pedido. En el caso de los elementos de una sola línea de un objeto ProposaldOrder (ProposaldOrder.otherItems[0].id), que se usan a fin de agregar elementos, como impuestos y gastos de envío, el proveedor define el valor del atributo id [id]. Por ejemplo, en un carrito hay dos de los mismos artículos con diferentes instrucciones de preparación (por ejemplo, dos pizzas medianas con diferentes conjuntos de ingredientes). En este caso, ambos elementos tienen el mismo OfferId base. Cuando envíes una solicitud de actualización de pedido para indicar que se rechazó un artículo, usa este ID como desambiguador. En otras palabras, si una de las pizzas se rechaza porque carece de un ingrediente en particular, el ID ayuda a Google a determinar a qué artículo del pedido te refieres. Este campo es obligatorio, excepto en otherItems.

name String

Obligatorio.

Es el nombre de la línea de pedido. Esta es una string visible para el usuario y debe usar mayúscula inicial cuando sea posible (como "Tarifa de entrega", "Cargo por servicio" o "Impuesto"). Este campo se trunca en 100 caracteres para los usuarios.

type LineItemType

Obligatorio.

quantity Número entero

Es obligatorio cuando type = "REGULAR".

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 los artículos. Este valor refleja el precio total de todos los bienes o servicios de esta línea de pedido (es decir, debe 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 de 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 sea DISCOUNT, especifica el valor como un valor negativo (por ejemplo, "-2").

subLines Lista<SublineNote>

Opcional y solo válido si el tipo es "REGULAR". Es posible que se envíe una nota específica del artículo del usuario en este campo en la solicitud de confirmación de la compra y en la solicitud de envío del pedido. Asegúrese de que el comercio reciba la nota cuando se le proporcione. Se encontrará en la solicitud como subLines[0].note, que es el único valor proporcionado en este campo cuando está presente en una solicitud.

Debe tener como máximo 1 elemento.

offerId String

Es obligatorio cuando type = "REGULAR".

Es el ID de oferta del MenuItem para el elemento. No aplicable a ProposaldOrder.otherItems.

extension FoodItemExtension

Define complementos para alimentos.

En el siguiente ejemplo, se muestra un elemento LineItem:

Ejemplo 1

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

Ejemplo 2

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

LineItemType

El tipo LineItemType tiene los siguientes valores posibles:

  • REGULAR: Línea de pedido de artículos. Se aplica a Cart.lineItems.
  • TAX: Elemento de una sola línea de impuestos Se aplica a ProposaldOrder.otherItems.
  • DISCOUNT: Línea de pedido de descuento. Ten en cuenta que el precio debe ser negativo. Se aplica a ProposaldOrder.otherItems.
  • GRATUITY: Línea de pedido de propinas. Generalmente, se reserva para SubmitOrderRequestMessage y para una propina que selecciona el usuario. Se aplica a ProposaldOrder.otherItems.
  • DELIVERY: Línea de pedido de publicación. Se aplica a ProposaldOrder.otherItems.
  • SUBTOTAL: Línea de pedido del subtotal. Se aplica a ProposaldOrder.otherItems.
  • FEE: Línea de pedido adicional que no se incluye en otros tipos. Se aplica a ProposaldOrder.otherItems.

Location

Especifica una dirección para pedir comida. El tipo Location 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. En el caso de los pedidos que especifican el retiro, no se incluye la ubicación (ni siquiera una vacía).

En la siguiente tabla, se enumeran las propiedades del tipo Location:

Propiedad Tipo Descripción
coordinates Coordinates
formattedAddress String

Mostrar la dirección de la ubicación.

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

postalAddress PostalAddress
zipCode String

Ejemplo: 90210

city String

Es el nombre de la ciudad.

Ejemplo: Los Angeles

notes String

Notas sobre la ubicación, como los códigos de puerta Debe tener 500 caracteres o menos.

Ejemplo: Gate code is #111

En el siguiente ejemplo, se muestra un elemento Location:

Ejemplo

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

Merchant

En la siguiente tabla, se enumeran las propiedades del tipo Merchant:

Propiedad Tipo Descripción
id String

Es el ID del comercio. Si se especifica, coincide con Restaurant.@id en el feed de Restaurante.

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

name String

Obligatorio.

Es el nombre visible del usuario del comercio.

Ejemplo: Falafel Bite

En el siguiente ejemplo, se muestra un elemento Merchant:

Ejemplo

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

Dinero

En la siguiente tabla, se enumeran las propiedades del tipo Money:

Propiedad Tipo Descripción
currencyCode String

Obligatorio.

Un código de moneda de 3 letras en formato ISO 4217.

Ejemplo: USD

units String

La unidad entera del importe. Por ejemplo, si currencyCode es “USD”, la unidad “1” es un dólar estadounidense.

Ejemplo: 36

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, inclusive. Usa las siguientes reglas: Si la cantidad de unidades es positiva, 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: 730000000

En el siguiente ejemplo, se muestra un elemento Money:

Ejemplo 1

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

Ejemplo 2

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

Pedidos

Contiene el pedido final, incluidos los impuestos, las tarifas y los cargos de envío, además de la información de pago. Tu acción recibe este objeto en un Submit AppRequest.

En la siguiente tabla, se enumeran las propiedades del tipo Order:

Propiedad Tipo Descripción
finalOrder ProposedOrder

Obligatorio.

Es el pedido propuesto que generó el pedido.

googleOrderId String

Obligatorio.

Es el ID de pedido asignado por Google. 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"
  }
}

OrderUpdate

En la siguiente tabla, se describen los campos del tipo OrderUpdate que se incluye en AppResponse.

En la siguiente tabla, se enumeran las propiedades del tipo OrderUpdate:

Propiedad Tipo Descripción
actionOrderId String

Obligatorio.

Es el ID único del pedido en el sistema del integrador que se usa para identificar el orden por el que se envía la actualización. Si recibo.user_visible_order_id no se proporciona al menos una vez en OrderUpdate para un pedido "CREATED", este ID será el ID visible para el usuario ingresado que se muestra en la tarjeta de pedido de Google.

orderState OrderState

Obligatorio.

Es el nuevo estado del pedido.

lineItemUpdates Map<String, LineItemUpdate>
updateTime Marca de tiempo ISO

Obligatorio.

La hora a la que se actualizó el pedido.

orderManagementActions Lista<OrderManagementAction>

Acciones posteriores al pedido, como comunicarse con el equipo de asistencia y ver los detalles del pedido

Debe tener, como mínimo, 1 elemento y no más de 6 elementos.

rejectionInfo RejectionInfo

Es obligatorio cuando orderState.state = "REJECTED".

cancellationInfo CancellationInfo

Es obligatorio cuando orderState.state = "CANCELLED".

inTransitInfo InTransitInfo

Este campo dejó de estar disponible.

fulfillmentInfo FulfillmentInfo

Este campo dejó de estar disponible.

receipt Receipt

Es obligatorio cuando orderState.state = "CONFIRMED", "IN_PREPARATION", or "READY_FOR_PICKUP".

Proporciona el ID de pedido visible para el usuario en un recibo.

totalPrice Price

Indica el precio total del pedido.

infoExtension FoodOrderUpdateExtension

Define más detalles de la actualización del pedido, como el intervalo para la entrega o el retiro estimados.

En el siguiente ejemplo, se muestra un elemento OrderUpdate:

Ejemplo

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

PickupInfo

En la siguiente tabla, se enumeran las propiedades del tipo PickupInfo:

Propiedad Tipo Descripción
pickupTimeIso8601 String

Hora de retiro estimada, en formato de marca de tiempo ISO 8601: “{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z” o con el formato de duración: “P(n)Y(n)M(n)DT(n)H(n)M(n)S”. Por ejemplo, PT90M representa una duración de 90 minutos. El valor predeterminado "PT0M" indica que el horario preferido de partida es lo antes posible. Referencia: https://en.wikipedia.org/wiki/ISO_8601#combine_date_and_time_representations. Úsalo para actualizar el tiempo de retiro estimado durante la respuesta de la confirmación de la compra.

Ejemplo: PT90M

En el siguiente ejemplo, se muestra un elemento PickupInfo:

Ejemplo

{
  "pickupTimeIso8601": "PT90M"
}

PostalAddress

En la siguiente tabla, se enumeran las propiedades del tipo PostalAddress:

Propiedad Tipo Descripción
regionCode String

Obligatorio.

Un código de país de dos letras.

Ejemplo: US

postalCode String

Corresponde al código postal,

Ejemplo: 94043

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, un óblast o una prefectura.

Ejemplo: CA

locality String

Es la ciudad o el pueblo de esta ubicación. En las regiones del mundo donde las localidades no están bien definidas o no se ajustan a esta estructura, no especifiques la localidad y, en su lugar, utiliza el campo addressLines.

Ejemplo: Mountain View

addressLines List<String>

Una o más líneas que puedes usar para especificar la dirección. Este campo no se debe modificar porque puede contener localidades poco claras.

Ejemplo: [ "1350 Charleston Road" ]

recipients List<String>

Es la lista de destinatarios de un pedido. Este campo solo está disponible en billingAddress.

En el siguiente ejemplo, se muestra un elemento PostalAddress:

Ejemplo

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

Precio

En la siguiente tabla, se enumeran las propiedades del tipo Price:

Propiedad Tipo Descripción
type Enum [ "ESTIMATE", "ACTUAL" ]

Obligatorio.

Es el código del cupón promocional.

amount Money

Obligatorio.

Promoción

En la siguiente tabla, se enumeran las propiedades del tipo Promotion:

Propiedad Tipo Descripción
coupon String

Obligatorio.

Es el código del cupón promocional.

ProposedOrder

En la siguiente tabla, se enumeran las propiedades del tipo ProposedOrder:

Propiedad Tipo Descripción
id String

Es el ID opcional para el pedido propuesto.

cart Cart

Obligatorio.

Artículos del usuario

otherItems Lista<LineItem>

Artículos agregados por el proveedor, como gastos de envío, impuestos y otras tarifas. Otros artículos también pueden incluir propinas o descuentos que agregue el usuario.

Debe tener un máximo de 10 artículos.

image Image

Imagen asociada con el pedido propuesto.

totalPrice Price

Obligatorio.

Es el precio total del pedido propuesto.

extension FoodOrderExtension

Obligatorio.

Define la información de entrega para los pedidos de comida.

disclaimers Lista<Disclaimer>

Corresponde a los mensajes de renuncia de responsabilidad que se mostrarán en la IU antes de realizar el pedido.

En el siguiente ejemplo, se muestra un elemento ProposedOrder:

Ejemplo

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

SublineNote

En la siguiente tabla, se enumeran las propiedades del tipo SublineNote:

Propiedad Tipo Descripción
note String

Obligatorio.

Marca de tiempo

La fecha y la hora, en el siguiente formato: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"

TransactionDecisionValue

Contiene el Order.

En la siguiente tabla, se enumeran las propiedades del tipo TransactionDecisionValue:

Propiedad Tipo Descripción
order Order

Obligatorio.

El pedido se realizará con los detalles del pago.

En el siguiente ejemplo, se muestra un elemento TransactionDecisionValue:

Ejemplo

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

Solicitud de entrega

AppRequest

En la siguiente tabla, se enumeran las propiedades del tipo AppRequest:

Propiedad Tipo Descripción
isInSandbox Booleano

Indica si las transacciones posteriores se realizan en un entorno de zona de pruebas.

conversation Conversation
inputs Lista<Input>

Obligatorio.

Contiene los argumentos esperados para pagar un carrito.

Debe tener exactamente 1 artículo.

En el siguiente ejemplo, se muestra un elemento AppRequest:

Ejemplo 1

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

Ejemplo 2

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

CheckoutRequestMessage

Un CheckoutRequestMessage es un AppRequest con el intent actions.foodordering.intent.CHECKOUT.

SubmitOrderRequestMessage

Un SubmitOrderRequestMessage es un AppRequest con el intent actions.foodordering.intent.TRANSACTION_DECISION.

Conversación

Un Conversation es exclusivo de una sesión. Puedes usarlo para vincular varias acciones Checkout y SubmitOrder si es necesario.

En la siguiente tabla, se enumeran las propiedades del tipo Conversation:

Propiedad Tipo Descripción
conversationId String

Obligatorio.

Es el ID único de la conversación.

En el siguiente ejemplo, se muestra un elemento Conversation:

Ejemplo

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

Entrada

Los argumentos esperados para pagar un carrito.

En la siguiente tabla, se enumeran las propiedades del tipo Input:

Propiedad Tipo Descripción
intent Enum [ "actions.foodordering.intent.CHECKOUT", "actions.intent.TRANSACTION_DECISION" ]

Obligatorio.

Configúralo como “actions.foodordering.intent.CheckOUT” para el mensaje de solicitud de confirmación de la compra O “actions.intent.TRANSACTION_DECISION” para el mensaje de solicitud de envío de pedido.

arguments Lista<Argument>

Obligatorio.

Contiene el carrito que se revisará o el pedido que se debe realizar.

Debe tener exactamente 1 artículo.

Argumento

Contiene detalles sobre los alimentos que el usuario quiere consultar. Para la confirmación de la compra, solo se aplica la extensión. Para el envío de pedidos, solo se aplica transactionDecisionValue

En la siguiente tabla, se enumeran las propiedades del tipo Argument:

Propiedad Tipo Descripción
Se requiere exactamente uno de los siguientes grupos de propiedades.
extension Grupo 1 Cart

Detalla los alimentos que el usuario quiere pagar.

transactionDecisionValue Grupo 2 TransactionDecisionValue

Contiene el pedido que se realizará junto con los detalles del pago.

Respuesta de entrega

AppResponse

En la siguiente tabla, se enumeran las propiedades del tipo AppResponse:

Propiedad Tipo Descripción
expectUserResponse Const.

Se establece como false.

Valor: False

finalResponse FinalResponse

Obligatorio.

Contiene tu respuesta a la confirmación de la compra del carrito.

En el siguiente ejemplo, se muestra un elemento AppResponse:

Ejemplo 1

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

Ejemplo 2

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

Ejemplo 3

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

Ejemplo 4

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

CheckoutResponseMessage

Un CheckoutResponseMessage es un AppResponse con un checkoutResponse o un error en el StructuredResponse.

SubmitOrderResponseMessage

Un SubmitOrderResponseMessage es un AppResponse con un orderUpdate en StructuredResponse.

FinalResponse

Su respuesta a la confirmación de la compra del carrito o en SubmitOrderRequestMessage.

En la siguiente tabla, se enumeran las propiedades del tipo FinalResponse:

Propiedad Tipo Descripción
richResponse RichResponse

Obligatorio.

Contiene tu respuesta a CheckoutRequestMessage o SubmitOrderRequestMessage.

CheckoutResponse

En la siguiente tabla, se enumeran las propiedades del tipo CheckoutResponse:

Propiedad Tipo Descripción
proposedOrder ProposedOrder

Obligatorio.

Pedido propuesto para usar en la transacción.

paymentOptions PaymentOptions

Obligatorio.

Es la opción de pago predeterminada seleccionada para el usuario.

additionalPaymentOptions Lista<PaymentOptions>

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 la compra de un carrito o en SubmitOrderRequestMessage.

En la siguiente tabla, se enumeran las propiedades del tipo Item:

Propiedad Tipo Descripción
structuredResponse StructuredResponse

Obligatorio.

RichResponse

Contiene tu respuesta a la confirmación de la compra en un carrito.

En la siguiente tabla, se enumeran las propiedades del tipo RichResponse:

Propiedad Tipo Descripción
items Lista<Item>

Obligatorio.

Debe tener exactamente 1 artículo.

StructuredResponse

Para CheckoutResponseMessage, puede ser uno de los siguientes: CheckoutResponse indica que la confirmación de la compra se realizó correctamente. O FoodErrorExtension: Indica un error durante la confirmación de la compra. La respuesta puede incluir un objeto ProposaldOrder y PaymentOptions corregidos o un mensaje de error sin PaymentOptions. Para SubmitOrderResponseMessage, solo se aplica orderUpdate.

En la siguiente tabla, se enumeran las propiedades del tipo StructuredResponse:

Propiedad Tipo Descripción
Se requiere exactamente uno de los siguientes grupos de propiedades.
checkoutResponse Grupo 1 CheckoutResponse

Artículos pagados más impuestos y descuentos.

error Grupo 2 FoodErrorExtension

Se observaron errores en los artículos del carrito. Según la naturaleza del error, esta propiedad puede incluir una propiedad ProposaldOrder y PaymentOptions corregidas, o solo un mensaje de error sin PaymentOptions.

orderUpdate Grupo 3 OrderUpdate

Actualizaciones asíncronas de pedidos

En esta sección, se describen los tipos de alto nivel que componen las solicitudes y respuestas de una interacción de acción integrada típica de los pedidos de comida.

AsyncOrderUpdateRequestMessage

Notifica al usuario sobre los cambios después de que se envió y confirmó 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, consulta

En la siguiente tabla, se enumeran las propiedades del tipo AsyncOrderUpdateRequestMessage:

Propiedad Tipo Descripción
isInSandbox Booleano

Indica que el pedido por el que se envió esta actualización es un pago de zona de pruebas.

customPushMessage CustomPushMessage

Obligatorio.

Contiene el elemento OrderUpdate para la solicitud.

En el siguiente ejemplo, se muestra un elemento AsyncOrderUpdateRequestMessage:

Ejemplo

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

AsyncOrderUpdateResponseMessage

Después de enviar un AsyncOrderUpdateRequestMessage de forma correcta, Google responde con un estado HTTP 200 y un cuerpo vacío. Si la actualización no se realiza correctamente, Google responde con detalles sobre el 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 al usuario.

En la siguiente tabla, se enumeran las propiedades del tipo Button:

Propiedad Tipo Descripción
title String

Obligatorio.

Es la etiqueta de visualización. Usa mayúscula inicial de 30 caracteres o menos para garantizar una renderización adecuada.

Ejemplo: Contact us

openUrlAction OpenUrlAction

Obligatorio.

En el siguiente ejemplo, se muestra un elemento Button:

Ejemplo

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

CancellationInfo

En la siguiente tabla, se enumeran las propiedades del tipo CancellationInfo:

Propiedad Tipo Descripción
reason String

Obligatorio.

Texto que se muestra para el rechazo cuando OrderState.state es "CANCELLED".

Ejemplo: Restaurant closed

En el siguiente ejemplo, se muestra un elemento CancellationInfo:

Ejemplo

{
  "reason": "Insufficient inventory"
}

FoodOrderUpdateExtension

Este tipo le proporciona al usuario un intervalo estimado en el que el pedido se entregará o estará listo para retirarlo. Envía esta extensión en un OrderUpdate cuando 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 del usuario se cumplan de manera coherente. Por ejemplo, si se estima que el pedido se entregará hoy a las 13:00 p.m., debes enviar un intervalo estimado que sea coherente con las variaciones debido a las condiciones del tráfico, como hoy entre las 12:45 p.m. y las 13:15 p.m.

Una duración o una marca de tiempo en formato ISO 8601 se interpreta como el intervalo desde el updateTime del OrderUpdate (en esencia, "ahora") hasta el updateTime más duration. No uses este formato a menos que "ahora" sea en realidad 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 del tipo FoodOrderUpdateExtension:

Propiedad Tipo Descripción
@type Const.

Es el tipo de esta extensión. Este campo siempre se establece como "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension".

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

estimatedFulfillmentTimeIso8601 String

Es la hora estimada en la que se entregará el pedido o estará listo para su retiro. La string debe estar en formato ISO 8601 y corresponder a un intervalo en lugar de a una única hora fija. Las convenciones aceptables son: Intervalos, Duraciones, Fechas y Horarios. Este campo se puede enviar en SubmitOrderResponseMessage o AsyncOrderUpdateRequestMessage cuando la información esté disponible o haya un cambio, como las llegadas anticipadas o retrasadas.

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

foodOrderErrors Lista<FoodOrderError>

Describe los errores que se produjeron después del pedido. Se recomienda un error por carrito o por artículo. Usa FoodOrderUpdateExtension.FoodOrderErrors para los errores que no estén cubiertos por RechazaionInfo.

Debe tener, como mínimo, 1 elemento.

En el siguiente ejemplo, se muestra un elemento FoodOrderUpdateExtension:

Ejemplo 1

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

Ejemplo 2

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

FulfillmentInfo

En la siguiente tabla, se enumeran las propiedades del tipo FulfillmentInfo:

Propiedad Tipo Descripción
Se requiere exactamente uno de los siguientes grupos de propiedades.
deliveryTime Grupo 1 Marca de tiempo ISO

UsaestimatedFulfillmentTimeIso8601 en el mensaje FoodOrderingUpdateExtension

pickupTime Grupo 2 Marca de tiempo ISO

UsaestimatedFulfillmentTimeIso8601 en el mensaje FoodOrderingUpdateExtension

En el siguiente ejemplo, se muestra un elemento FulfillmentInfo:

Ejemplo 1

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

Ejemplo 2

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

InTransitInfo

En la siguiente tabla, se enumeran las propiedades del tipo InTransitInfo:

Propiedad Tipo Descripción
updatedTime Marca de tiempo ISO

UsaestimatedFulfillmentTimeIso8601 en el mensaje FoodOrderingUpdateExtension

En el siguiente ejemplo, se muestra un elemento InTransitInfo:

Ejemplo

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

LineItemUpdate

En la siguiente tabla, se enumeran las propiedades del tipo LineItemUpdate:

Propiedad Tipo Descripción
orderState OrderState
price Price
reason String

Motivo del cambio. Obligatorio para los cambios de precio.

En el siguiente ejemplo, se muestra un elemento LineItemUpdate:

Ejemplo

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

OpenUrlAction

En la siguiente tabla, se enumeran las propiedades del tipo OpenUrlAction:

Propiedad Tipo Descripción
url String

Obligatorio.

La acción que se activa al hacer clic o tocar el botón. La lista de prefijos aplicables depende de orderManagementActionType. “EMAIL”: El prefijo debe ser “mailto”. "CALL": El prefijo debe ser "tel". "CUSTOMER_SERVICE": El prefijo debe ser "mailto", "tel", "http" o "https".

Ejemplo: https://www.google.com

OrderManagementAction

La administración de pedidos permite a los usuarios obtener asistencia posterior al pedido, y se debe enviar en cada OrderUpdate dentro del pedido de envío AppResponse y en cada AsyncOrderUpdateRequestMessage acción posterior de administración de pedidos enviada para un pedido específico puede variar según el estado.

Por ejemplo, en el estado “CREATED”, CUSTOMER_SERVICE podría hacer referencia a tu teléfono de asistencia al cliente. Luego, en el estado "CONFIRMADO", CUSTOMER_SERVICE puede cambiar al 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 tenga el estado "CUMPLIADO", CUSTOMER_SERVICE podrá hacer referencia a tus direcciones de correo electrónico de asistencia.

En la siguiente tabla, se enumeran las propiedades del tipo OrderManagementAction:

Propiedad Tipo Descripción
type OrderManagementActionType

Obligatorio.

button Button

Obligatorio.

En el siguiente ejemplo, se muestra un elemento OrderManagementAction:

Ejemplo 1

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

Ejemplo 2

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

OrderManagementActionType

Define los tipos relacionados con OrderManagementAction.

El tipo OrderManagementActionType tiene los siguientes valores posibles:

  • CUSTOMER_SERVICE: El correo electrónico o el número de contacto del servicio de atención al cliente que se mostrará en la página de confirmación del pedido Es obligatorio. El prefijo openUrlAction.url debe ser "mailto", "tel", "http" o "https".
  • EMAIL: Acción de correo electrónico solo en la página de detalles del pedido. El prefijo openUrlAction.url debe ser "mailto".
  • CALL_DRIVER: Llama a la acción solo en la página de detalles del pedido. El prefijo openUrlAction.url debe ser "tel".
  • CALL_RESTAURANT: Llama a la acción solo en la página de detalles del pedido. El prefijo openUrlAction.url debe ser "tel".

OrderState

Es el estado actual del pedido. Cada valor state de OrderState también corresponde a un estado de compra en myaccount.google.com.

En la siguiente tabla, se enumeran las propiedades del tipo OrderState:

Propiedad Tipo Descripción
state OrderStateEnum

Obligatorio.

label String

Obligatorio.

Es la cadena de visualización del estado visible para el usuario. Usa mayúscula inicial.

Ejemplo: Your order has been received

En el siguiente ejemplo, se muestra un elemento OrderState:

Ejemplo

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

OrderStateEnum

Define los tipos relacionados con OrderState.

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 "Pedido".
  • CONFIRMED: El proveedor confirmó el pedido y está activo. Corresponde al estado de compra "Aceptada".
  • REJECTED: El integrador o el proveedor rechazó el pedido. Corresponde al estado de compra "Rechazada".
  • CANCELLED: El usuario canceló el pedido. Corresponde al estado de compra "Cancelada".
  • IN_PREPARATION: Se está preparando la comida. Corresponde al estado de compra "Estado desconocido".
  • READY_FOR_PICKUP: La comida está lista para retirarla. Corresponde al estado de compra "Listo para retirar".
  • IN_TRANSIT: Se está entregando el pedido. Corresponde al estado de compra "En curso".
  • FULFILLED: El usuario recibió lo que se pidió. Corresponde al estado de compra "Retirado".

Recibo

Envía este tipo en un pedido de envío AppResponse, en el que OrderState es "CONFIRMED", "FULFILLED" o "IN_TRANSIT". Envía la confirmación 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 del tipo Receipt:

Propiedad Tipo Descripción
userVisibleOrderId String

Obligatorio.

Obligatorio si el pedido es "CONFIRMED", "IN_TRANSIT" o "FULFILLED". Este campo corresponde al ID único que se muestra al usuario para este pedido (por lo general, el ID de pedido del restaurante), que aparece 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 cada OrderUpdate. Hasta que se proporcione, actionOrderId es 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 una OrderUpdate y un recibo.

En el siguiente ejemplo, se muestra un elemento Receipt:

Ejemplo

{
  "userVisibleOrderId": "userVisibleId1234"
}

RejectionInfo

En la siguiente tabla, se enumeran las propiedades del tipo RejectionInfo:

Propiedad Tipo Descripción
type RejectionType

Obligatorio.

reason String

El motivo del rechazo que se usó para el registro interno. Los usuarios no pueden ver este campo.

En el siguiente ejemplo, se muestra un elemento RejectionInfo:

Ejemplo

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

RejectionType

El tipo RejectionType tiene los siguientes valores posibles:

  • INELIGIBLE: El usuario no es apto debido a inquietudes relacionadas con riesgos o políticas.
  • PAYMENT_DECLINED: Hay un problema con el procesamiento del pago.
  • UNAVAILABLE_SLOT: No se puede completar el pedido en el plazo de entrega especificado en DeliveryInfo o PickupInfo.
  • PROMO_NOT_APPLICABLE: Hay un problema con la promoción.
  • UNKNOWN: Cualquier otro motivo.

Tipos relacionados con pagos

En esta sección, se describen los tipos relacionados con los pagos que se usan para la entrega de pedidos de comida.

ActionProvidedPaymentOptions

Requisitos para una forma de pago proporcionada por una acción.

En la siguiente tabla, se enumeran las propiedades del tipo ActionProvidedPaymentOptions:

Propiedad Tipo Descripción
paymentType PaymentType

Obligatorio.

displayName String

Obligatorio.

Es el nombre del instrumento de pago que se muestra en el recibo.

Ejemplo: Taco Points Total

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: Es la forma de autenticación asociada con las tarjetas de pago almacenadas en los registros de la Cuenta de Google del usuario. Los datos de pagos mostrados incluyen el número de cuenta personal (PAN) con el mes y el año de vencimiento.

AllowedCardNetworks

El tipo AllowedCardNetworks tiene los siguientes valores posibles:

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

BillingAddressParameters

Este objeto te permite configurar campos adicionales que se mostrarán para una dirección de facturación solicitada.

En la siguiente tabla, se enumeran las propiedades del tipo BillingAddressParameters:

Propiedad Tipo Descripción
format String

Se requiere el formato de dirección de facturación para completar la transacción. MIN: Nombre, código de país y código postal. FULL: Nombre, dirección, localidad, región, código de país y código postal.

En el siguiente ejemplo, se muestra un elemento BillingAddressParameters:

Ejemplo 1

{
  "format": "MIN"
}

Ejemplo 2

{
  "format": "FULL"
}

CardParameters

Usa este objeto para configurar la compatibilidad de tu sitio con la API de Google Pay.

En la siguiente tabla, se enumeran las propiedades del tipo CardParameters:

Propiedad Tipo Descripción
allowedAuthMethods List<Const>

Obligatorio.

Campos admitidos para autenticar una transacción con tarjeta.

Debe tener, como mínimo, 1 elemento.

allowedCardNetworks Lista<AllowedCardNetworks>

Obligatorio.

Una o más redes de tarjetas que admites y que también admite la API de Google Pay

Debe tener, como mínimo, 1 elemento.

billingAddressRequired Booleano

Se configura 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 las complicaciones en el proceso de confirmación de la compra y reducir los porcentajes de conversiones.

billingAddressParameters BillingAddressParameters

Los campos esperados se muestran si billingAddressRequired se establece como verdadero.

cvcRequired Booleano

Se establece como verdadero si usa TimesofMoney y como falso para todos los demás procesadores de pagos.

En el siguiente ejemplo, se muestra un elemento CardParameters:

Ejemplo 1

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

Ejemplo 2

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

GoogleProvidedPaymentInstrument

En la siguiente tabla, se enumeran las propiedades del tipo GoogleProvidedPaymentInstrument:

Propiedad Tipo Descripción
instrumentToken String

Obligatorio.

Es una cadena codificada en base 64 que contiene el token de pago para cobrarle al usuario mediante un procesador de Google Pay participante, según las opciones GoogleProvidedPaymentOptions especificadas previamente.

billingAddress PostalAddress

Dirección de facturación para el pago.

En el siguiente ejemplo, se muestra un elemento GoogleProvidedPaymentInstrument:

Ejemplo

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

GoogleProvidedPaymentOptions

Requisitos para la forma de pago proporcionada por Google.

En la siguiente tabla, se enumeran las propiedades del tipo GoogleProvidedPaymentOptions:

Propiedad Tipo Descripción
facilitationSpecification String

Un JSON de PaymentDataRequest como una string. Usa este objeto para configurar la compatibilidad de tu sitio con la API de Google Pay.

supportedCardNetworks Lista<SupportedCardNetworks>

En su lugar, usa facilitationSpecification. Tipo de redes de tarjetas que admite el agente.

Este campo dejó de estar disponible.

prepaidCardDisallowed Booleano

En su lugar, usa facilitationSpecification. Indica si se permite o no una tarjeta prepagada como tipo de pago.

Este campo dejó de estar disponible.

billingAddressRequired Booleano

En su lugar, usa facilitationSpecification. Indica si se requiere o no una dirección de facturación.

Este campo dejó de estar disponible.

tokenizationParameters TokenizationParameters

Este campo dejó de estar disponible.

En el siguiente ejemplo, se muestra un elemento GoogleProvidedPaymentOptions:

Ejemplo 1

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

Ejemplo 2

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

Ejemplo 3

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

MerchantInfo

Usa este objeto para configurar la compatibilidad de tu sitio con la API de Google Pay.

En la siguiente tabla, se enumeran las propiedades del tipo MerchantInfo:

Propiedad Tipo Descripción
merchantId String

Identificador de comerciante de Google que Google Pay te emite.

merchantName String

Obligatorio.

Es el nombre del comercio codificado como UTF-8. El nombre del comercio se muestra en la hoja de pagos.

OnFulfillmentPaymentData

Usa este objeto para enviar datos adicionales para el PaymentType "ON_FULFILLMENT".

En la siguiente tabla, se enumeran las propiedades del tipo OnFulfillmentPaymentData:

Propiedad Tipo Descripción
supportedPaymentOptions Lista<PaymentOptionsEnums>

Es la lista de opciones de pago disponibles para el usuario al momento de la entrega del pedido.

En el siguiente ejemplo, se muestra un elemento OnFulfillmentPaymentData:

Ejemplo

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

Parámetros

Define los tipos relacionados con TokenizationParameters.

En la siguiente tabla, se enumeran las propiedades del tipo Parameters:

Propiedad Tipo Descripción
gateway String

Obligatorio.

Ejemplo: braintree

gatewayMerchantId String
[additionalKey: string] String Pares clave-valor adicionales

En el siguiente ejemplo, se muestra un elemento Parameters:

Ejemplo 1

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

Ejemplo 2

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

PaymentDataRequest

Usa este objeto para configurar la compatibilidad de tu sitio con la API de Google Pay.

En la siguiente tabla, se enumeran las propiedades del tipo PaymentDataRequest:

Propiedad Tipo Descripción
apiVersion Const.

Obligatorio.

Versión principal de la API.

Valor: 2

apiVersionMinor Const.

Obligatorio.

Versión secundaria de la API.

Valor: 0

merchantInfo MerchantInfo

Obligatorio.

(ID del comerciante de Google Pay) Información sobre el comercio que solicita datos de pago.

allowedPaymentMethods Lista<PaymentMethod>

Obligatorio.

Especifica la compatibilidad con una o más formas de pago que admite la API de Google Pay.

transactionInfo TransactionInfo

Obligatorio.

Son los detalles sobre la autorización de la transacción según si el usuario acepta la transacción o no. Este campo incluye el precio total y el estado del precio.

En el siguiente ejemplo, se muestra un elemento PaymentDataRequest:

Ejemplo

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

PaymentInfo

Información relacionada con el pago de un pedido.

En la siguiente tabla, se enumeran las propiedades del tipo PaymentInfo:

Propiedad Tipo Descripción
displayName String

Obligatorio.

Es el nombre del instrumento de pago visible para el usuario que se mostrará en el recibo.

paymentType PaymentType

Obligatorio.

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

Es el token que puede usar la acción. Solo especifica esto si especificaste GoogleProvidedPaymentOptions como una opción de pago en CheckoutResponseMessage.

En el siguiente ejemplo, se muestra un elemento PaymentInfo:

Ejemplo 1

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

Ejemplo 2

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

PaymentMethod

Usa este objeto para configurar la compatibilidad de tu sitio con la API de Google Pay.

En la siguiente tabla, se enumeran las propiedades del tipo PaymentMethod:

Propiedad Tipo Descripción
type Const.

Obligatorio.

Es el identificador corto de la forma de pago admitida. Por el momento, solo se admite CARD.

Valor: CARD

parameters CardParameters

Obligatorio.

Son los parámetros necesarios para configurar el tipo de forma de pago proporcionado.

tokenizationSpecification TokenizationSpecification

Obligatorio.

Configura una cuenta o un proveedor de desencriptación para recibir información de pago. Esta propiedad se requiere para la forma de pago CARD.

En el siguiente ejemplo, se muestra un elemento PaymentMethod:

Ejemplo

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

PaymentOptions

En la siguiente tabla, se enumeran las propiedades del tipo PaymentOptions:

Propiedad Tipo Descripción
Se requiere exactamente uno de los siguientes grupos de propiedades.
googleProvidedOptions Grupo 1 GoogleProvidedPaymentOptions

Mutuamente excluyentes con actionProvidedOptions. Úsalo para realizar pagos en línea con gPay.

actionProvidedOptions Grupo 2 ActionProvidedPaymentOptions

Este campo y googleProvidedOptions son mutuamente excluyentes. Úsalo para "pago contra entrega" o "pago por entrega".

En el siguiente ejemplo, se muestra un elemento PaymentOptions:

Ejemplo 1

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

Ejemplo 2

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

Ejemplo 3

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

PaymentOptionsEnums

El tipo PaymentOptionsEnums tiene los siguientes valores posibles:

  • Cash
  • Card
  • UPI
  • Paytm

PaymentType

El tipo PaymentType tiene los siguientes valores posibles:

  • PAYMENT_CARD: Para GoogleProvidedPaymentOptions.
  • ON_FULFILLMENT: Para ActionProvidedPaymentOptions.

SupportedCardNetworks

Define los tipos relacionados con GoogleProvidedPaymentOptions.

El tipo SupportedCardNetworks tiene los siguientes valores posibles:

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

TokenizationParameters

Define los tipos relacionados con GoogleProvidedPaymentOptions.

En la siguiente tabla, se enumeran las propiedades del tipo TokenizationParameters:

Propiedad Tipo Descripción
tokenizationType Enum [ "UNSPECIFIED_TOKENIZATION_TYPE", "PAYMENT_GATEWAY" ]

Obligatorio.

En su lugar, usa facilitationSpecification. El tipo de tokens es aceptable.

parameters Parameters

En su lugar, usa facilitationSpecification.

TokenizationSpecification

Este objeto te permite configurar una cuenta para recibir información de pago cobrable.

En la siguiente tabla, se enumeran las propiedades del tipo TokenizationSpecification:

Propiedad Tipo Descripción
type Const.

Obligatorio.

parameters Parameters

Obligatorio.

En el siguiente ejemplo, se muestra un elemento TokenizationSpecification:

Ejemplo 1

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

Ejemplo 2

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

TransactionInfo

Este objeto describe una transacción que determina la capacidad 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 del tipo TransactionInfo:

Propiedad Tipo Descripción
currencyCode String

Obligatorio.

Es un código alfabético de moneda, según la norma ISO 4217.

transactionId String

Es el ID único que identifica un intento de transacción. Los comercios pueden usar un ID existente o generar uno específico para los intentos de transacción con Google Pay. Este campo es obligatorio cuando envías devoluciones de llamada a la API de Google Transaction Events.

totalPriceStatus Const.

Obligatorio.

Usa “ESTIMATED” como valor predeterminado. Es posible que el precio total se ajuste según los detalles de la respuesta, como el impuesto sobre las ventas recaudado en función de una dirección de facturación.

Valor: ESTIMATED

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