Esquema de ações de atendimento do pedido

Nesta página, descrevemos o payload do serviço da Web de fulfillment (API de pedido de ponta a ponta) ao trabalhar com a API de ações integradas de pedidos de ponta a ponta. Para uma versão legível por máquina dessas informações, faça o download do esquema JSON.

Tipos de base

Carrinho

Contém detalhes do pedido, bem como se a solicitação é para retirada ou entrega. Um carrinho também contém detalhes da entrega, gratificação e entrega endereço IP. O objeto Cart é definido em um arquivo Checkout AppRequest.f Você inclui uma cópia do carrinho no seu Checkout AppResponse

A tabela a seguir lista as propriedades para o tipo Cart:

Propriedade Tipo Descrição
@type Const

O tipo deste objeto. Omita este campo se o objeto Cart pai fizer parte de ProposedOrder.

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

id String

ID opcional do carrinho.

merchant Merchant

Comerciante afiliado a este carrinho.

lineItems Lista<LineItem>

Obrigatório.

Lista de bens ou serviços que o usuário está pedindo.

Não pode ter menos de 1 item.

promotions Lista<Promotion>

Promoção aplicada a este carrinho. Apenas uma promoção é aceita no momento.

notes String

Observações sobre o pedido ou instruções de entrega.

extension FoodCartExtension

Define detalhes sobre o usuário, como preferências de atendimento do pedido.

O exemplo a seguir mostra um elemento Cart:

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

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

Contato

Especifica os detalhes sobre a pessoa que vai receber o pedido. Ele está disponível apenas em AppResponse

A tabela a seguir lista as propriedades para o tipo Contact:

Propriedade Tipo Descrição
displayName String

Nome da pessoa que vai receber o pedido, como você quer que ele seja exibido. Use este campo se firstName e lastName não forem especificados.

Exemplo: Lovefood Ordering

email String

Endereço de e-mail da pessoa que vai receber o pedido.

Exemplo: ilovefood@example.com

firstName String

Nome da pessoa que vai receber o pedido.

Exemplo: Lovefood

lastName String

Sobrenome da pessoa que vai receber o pedido.

Exemplo: Ordering

phoneNumber String

Número de telefone da pessoa que vai receber o pedido, incluindo o código do país.

Exemplo: +16501234567

emailVerified Booleano

Indica se a pessoa que recebe o pedido fez login com a Conta do Google.

O exemplo a seguir mostra um elemento Contact:

Exemplo

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

CustomPushMessage

Contém o OrderUpdate da solicitação.

A tabela a seguir lista as propriedades para o tipo CustomPushMessage:

Propriedade Tipo Descrição
orderUpdate OrderUpdate

Obrigatório.

As informações do pedido foram atualizadas.

O exemplo a seguir mostra um elemento CustomPushMessage:

Exemplo

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

A tabela a seguir lista as propriedades para o tipo DeliveryInfo:

Propriedade Tipo Descrição
deliveryTimeIso8601 String

Tempo de entrega estimado, no formato de carimbo de data/hora ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" ou formato de duração: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Por exemplo, PT90M representa uma duração de 90 minutos. O valor padrão, "PT0M", indica que o tempo de entrega preferencial é o mais rápido possível. Referência: https://pt.wikipedia.org/wiki/ISO_8601 Use essa informação para atualizar o tempo de entrega estimado durante a resposta da finalização da compra.

Exemplo: PT90M

O exemplo a seguir mostra um elemento DeliveryInfo:

Exemplo

{
  "deliveryTimeIso8601": "PT90M"
}

Exoneração de responsabilidade

A tabela a seguir lista as propriedades para o tipo Disclaimer:

Propriedade Tipo Descrição
predefinedMessage PredefinedMessage

Obrigatório.

Para mostrar mensagens predefinidas de exoneração de responsabilidade durante a finalização da compra.

feeAmount Money

O parceiro cobrará do comerciante uma taxa de valor N por esse pedido.

feeAmountRange FeeAmountRange

O parceiro vai cobrar do restaurante uma taxa de N a M por pedido.

feePercent Número

O parceiro cobrará do comerciante uma taxa de N% pelo pedido.

feePercentRange FeePercentRange

O parceiro cobrará do comerciante uma taxa de N% a M% por pedido.

O exemplo a seguir mostra um elemento Disclaimer:

Exemplo 1

{
  "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER"
}

Exemplo 2

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE"
}

Exemplo 3

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

Exemplo 4

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

Exemplo 5

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

Exemplo 6

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

Erro

O tipo Error tem os seguintes valores possíveis:

  • CLOSED: o restaurante está fechado no horário do pedido.
  • NO_CAPACITY: não há capacidade de serviço disponível (por exemplo, uma interrupção temporária devido a horários de pico).
  • NO_COURIER_AVAILABLE: não é possível processar o pedido por causa de um número limitado de funcionários na entrega.
  • REQUIREMENTS_NOT_MET: as restrições para aceitar o pedido não foram cumpridas (por exemplo, tamanho mínimo da cesta).
  • UNAVAILABLE_SLOT: o pedido não pode ser concluído no horário especificado por DeliveryInfo ou PickupInfo.
  • OUT_OF_SERVICE_AREA: o pedido não pode ser entregue no endereço do usuário.
  • PROMO_EXPIRED: não foi possível aplicar porque a promoção expirou.
  • PROMO_NOT_APPLICABLE: código de erro genérico para capturar todos os casos de falha na aplicação do código promocional, se nenhum dos outros erros for adequado.
  • PROMO_NOT_RECOGNIZED: o código do cupom não foi reconhecido.
  • PROMO_ORDER_INELIGIBLE: o pedido atual não está qualificado para este cupom.
  • PROMO_USER_INELIGIBLE: o usuário atual não está qualificado para este cupom.
  • AVAILABILITY_CHANGED: o item não está mais disponível ou não há itens suficientes para atender à solicitação.
  • INCORRECT_PRICE: erros de preço em taxas ou no total.
  • INVALID: um item de linha, FulfillmentOption ou promoção contém dados inválidos.
  • NOT_FOUND: um item de linha, FulfillmentOption ou promoção não pode ser encontrado.
  • PRICE_CHANGED: o preço de um item mudou.

FeeAmountRange

A tabela a seguir lista as propriedades para o tipo FeeAmountRange:

Propriedade Tipo Descrição
minFeeAmount Money

Limite inferior do valor da taxa cobrada.

maxFeeAmount Money

Limite superior do valor da taxa cobrada.

FeePercentRange

A tabela a seguir lista as propriedades para o tipo FeePercentRange:

Propriedade Tipo Descrição
minFeePercent Número

Limite inferior da porcentagem da taxa cobrada.

maxFeePercent Número

Limite superior da porcentagem da taxa cobrada.

FoodCartExtension

Contém detalhes sobre o usuário, como preferências de fulfillment.

A tabela a seguir lista as propriedades para o tipo FoodCartExtension:

Propriedade Tipo Descrição
@type Const

Tipo de extensão. Esse campo está sempre definido como "type.googleapis.com/google.actions.v2.orders.FoodCartExtension".

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

contact Contact

Dados de contato da pessoa que vai receber o pedido. Os detalhes incluem o nome, o número de telefone e o endereço de e-mail da pessoa.

fulfillmentPreference FulfillmentOption

Obrigatório.

Preferência de atendimento do usuário.

location Location

Na CheckoutRequestMessage, este campo especifica o endereço de entrega, obrigatório se o pedido for para entrega. No caso de pedidos para retirada ou retirada, esse campo não é incluído na mensagem.

O exemplo a seguir mostra um elemento FoodCartExtension:

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

Exemplo 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 um ou mais erros que ocorreram durante o processamento de uma solicitação. A tabela a seguir descreve os campos do tipo FoodErrorExtension. Os erros podem ser enviados em um CheckoutResponse.

A tabela a seguir lista as propriedades para o tipo FoodErrorExtension:

Propriedade Tipo Descrição
@type Const

Obrigatório.

Tipo de extensão.

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

foodOrderErrors Lista<FoodOrderError>

Obrigatório.

Matriz de objetos FoodOrderError que descreve os erros que ocorreram. Recomendamos um erro por carrinho ou item.

Não pode ter menos de 1 item.

correctedProposedOrder ProposedOrder

Obrigatório quando foodOrderErrors.error = "UNAVAILABLE_SLOT", "PROMO_EXPIRED", "PROMO_NOT_APPLICABLE", "PROMO_NOT_RECOGNIZED", "PROMO_ORDER_INELIGIBLE", "PROMO_USER_INELIGIBLE", "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "INVALID", "NOT_FOUND", or "PRICE_CHANGED":

Um novo ProposedOrder com correções. Retorne esse objeto se houver erros recuperáveis no ProposedOrder original. Por exemplo, uma alteração no preço de um ou mais itens de linha no carrinho é um erro recuperável. Os erros recuperáveis com um ProposedOrder válido passam para o estágio de confirmação, em vez de exigir que o usuário revise o carrinho.

paymentOptions PaymentOptions

Obrigatório quando foodOrderErrors.error = "UNAVAILABLE_SLOT", "PROMO_EXPIRED", "PROMO_NOT_APPLICABLE", "PROMO_NOT_RECOGNIZED", "PROMO_ORDER_INELIGIBLE", "PROMO_USER_INELIGIBLE", "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "INVALID", "NOT_FOUND", or "PRICE_CHANGED":

Opções de pagamento padrão selecionadas para o usuário.

additionalPaymentOptions Lista<PaymentOptions>

Opções de pagamento alternativas disponíveis para o usuário.

O exemplo a seguir mostra um elemento FoodErrorExtension:

Exemplo

{
  "@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.

A tabela a seguir lista as propriedades para o tipo FoodItemExtension:

Propriedade Tipo Descrição
@type Const

Obrigatório.

Tipo de extensão. Esse campo está sempre definido como "type.googleapis.com/google.actions.v2.orders.FoodItemExtension".

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

options Lista<FoodItemOption>

Uma opção pode ser um item de complemento ou um grupo de complementos com um conjunto de complementos.

O exemplo a seguir mostra um elemento FoodItemExtension:

Exemplo

{
  "@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

A tabela a seguir lista as propriedades para o tipo FoodItemOption:

Propriedade Tipo Descrição
id String

ID exclusivo atribuído pelo Google. Ao enviar um FoodOrderError ou AsyncOrderUpdateRequest, use este campo para fazer a diferenciação nos casos em que um carrinho contém mais de um item com o mesmo offerId.

Exemplo: 39231093

offerId String

ID da oferta do item.

Exemplo: 912835081

name String

O nome da opção.

Exemplo: Honey Mustard

price Money
note String

Observação relacionada à opção.

quantity Número

Para opções que são itens, o número de itens.

Exemplo: 3

subOptions Lista<FoodItemOption>

Subopções da opção, se houver.

Exemplo: [ { "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 } ]

O exemplo a seguir mostra um elemento FoodItemOption:

Exemplo 1

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

Exemplo 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

Contém detalhes sobre erros em uma CheckoutResponse.

A tabela a seguir lista as propriedades para o tipo FoodOrderError:

Propriedade Tipo Descrição
error Error

Obrigatório.

id String

Obrigatório quando error = "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "PRICE_CHANGED", "INVALID", or "NOT_FOUND":

Este campo é obrigatório para erros no nível do item. Ele é o Order.id atribuído pelo Google para os itens de menu e o FoodItemOption.id para os complementos.

description String

Descrição do erro. Essa descrição se destina à geração de registros internos e não é visível aos usuários.

updatedPrice Money

Obrigatório quando error = "PRICE_CHANGED":

Novo preço de um item que causou o erro. Isso é necessário somente quando o erro é "PRICE_CHANGED".

availableQuantity Número inteiro

Obrigatório quando error = "INVALID", or "NOT_FOUND":

Nova quantidade disponível do item que causou o erro. Isso é necessário apenas quando o erro é "INVALID" ou "NOT_FOUND". O valor deve ser zero para "INVALID" e "NOT_FOUND".

O exemplo a seguir mostra um elemento FoodOrderError:

Exemplo 1

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

Exemplo 2

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

FoodOrderExtension

Contém informações de fulfillment sobre o pedido.

A tabela a seguir lista as propriedades para o tipo FoodOrderExtension:

Propriedade Tipo Descrição
@type Const

Tipo de extensão. Esse campo está sempre definido como "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension".

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

availableFulfillmentOptions Lista<FulfillmentOption>

Representa as opções de atendimento do pedido disponíveis.

optinForRemarketing Booleano

Solicitação do usuário para ativar seus canais de marketing. Por padrão, não é possível enviar conteúdo de marketing sem o consentimento do usuário. Se optinForRemarketing for verdadeiro, você poderá inscrever o usuário. Se optinForRemarketing for falso ou não estiver presente, você deverá manter o status da inscrição no seu sistema como está. Os usuários não podem desativar o recurso no Google, somente por meio de uma função de cancelamento de assinatura fornecida nos seus canais de marketing. Essa sinalização só está presente em SubmitOrderRequestMessage.

O exemplo a seguir mostra um elemento FoodOrderExtension:

Exemplo 1

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

Exemplo 2

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

FulfillmentOption

É possível usar um objeto FulfillmentOption das seguintes maneiras:
  • Em Checkout AppRequest e Submit AppRequest, os Cart.extension.fulfillmentPreference: armazena a preferência do usuário (exibição) ou retirada). O preço é sempre 0 quando a solicitação de checkout é enviada.
  • No Checkout AppResponse, a ProposedOrder.extension.availableFulfillmentOptions: Define uma ou mais opções de entrega (atualmente, apenas uma opção é compatíveis). Você especifica a opção padrão como LineItem ProposedOrder.otherItems. A offerId de FulfillmentOption precisa corresponder ao ID do LineItem especificado em ProposedOrder.otherItems.

A tabela a seguir lista as propriedades para o tipo FulfillmentOption:

Propriedade Tipo Descrição
offerId String

Identificador exclusivo dessa opção de fulfillment, se houver.

fulfillmentInfo FulfillmentOptionInfo

Obrigatório.

expiresAt Carimbo de data/hora ISO

Horário em que essa opção de atendimento do pedido expira.

price Money

Custo dessa opção.

O exemplo a seguir mostra um elemento FulfillmentOption:

Exemplo

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

FulfillmentOptionInfo

Define informações relacionadas ao FulfillmentInfo.

A tabela a seguir lista as propriedades para o tipo FulfillmentOptionInfo:

Propriedade Tipo Descrição
Exatamente um dos seguintes grupos de propriedades é obrigatório.
delivery Grupo 1 DeliveryInfo

Se presente, indica a ordem de entrega.

pickup Grupo 2 PickupInfo

Se presente, indica um pedido para retirada.

Imagem

A tabela a seguir lista as propriedades para o tipo Image:

Propriedade Tipo Descrição
sourceUrl String

Obrigatório.

URL da imagem. A imagem precisa ter, no mínimo, 72 x 72 pixels. Para melhores resultados, use uma imagem de pelo menos 216 x 216 pixels. A imagem precisa ter menos de 6 MB e 64 megapixels.

LineItem

Define o conteúdo de um carrinho (Cart.lineItems) ou cobranças adicionais por um pedido (ProposedOrder.otherItems).

A tabela a seguir lista as propriedades para o tipo LineItem:

Propriedade Tipo Descrição
id String

Obrigatório quando type = "REGULAR":

Para um item de linha em um carrinho (ProposedOrder.cart.lineItems[0].id), este é o ID exclusivo criado pelo Google ao criar o pedido. Para um item de linha em um ProposedOrder (ProposedOrder.otherItems[0].id), que é usado para adicionar itens como taxas de entrega e impostos, o valor de id é definido pelo fornecedor. Por exemplo, em um carrinho há dois itens iguais com instruções de preparação diferentes (como duas pizzas médias com diferentes conjuntos de coberturas). Nesse caso, os dois itens têm o mesmo offerId base. Ao enviar uma solicitação de atualização de pedido para indicar que um item foi rejeitado, use esse ID como desambiguador. Em outras palavras, se uma das pizzas for rejeitada porque não tem um recheio específico, o ID vai ajudar o Google a determinar a qual item do pedido você está se referindo. Este campo é obrigatório, exceto em otherItems.

name String

Obrigatório.

É o nome do item de linha. Essa é uma string visível para o usuário e precisa ser escrita com a primeira letra maiúscula quando possível (como "Taxa de entrega", "Taxa de serviço", "Tributo"). Este campo está truncado em 100 caracteres para os usuários.

type LineItemType

Obrigatório.

quantity Número inteiro

Obrigatório quando type = "REGULAR":

Número de itens incluídos. Não aplicável a ProposedOrder.otherItems.

description String

Descrição do item.

price Price

Obrigatório.

O preço dos itens. Esse valor reflete o preço total de todos os produtos ou serviços do item de linha. Em outras palavras, adicione o custo de todos os complementos e multiplique pela quantidade. Por exemplo: se um item de R $10 tiver a quantidade 3, o preço será de R $30. Para uma pizza com preço base de R $5 e um complemento de R $1, o preço seria de R $6. Para duas pizzas (quantidade = 2) com preço base de R $5 e cada uma com complemento de R $1, o preço será de R $12. Cada item de linha deve ter um preço, mesmo que seja "0". Quando o tipo for DESCONTO, especifique o valor como negativo (por exemplo, "-2").

subLines Lista<SublineNote>

Opcional e válido somente se o tipo for "REGULAR". Uma observação específica do item do usuário pode ser enviada nesse campo na solicitação de checkout e na solicitação de envio do pedido. Garantir que o comerciante receba a nota quando ela for fornecida. Ele estará na solicitação como subLines[0].note, que é o único valor fornecido nesse campo quando está presente em uma solicitação.

Não pode haver mais de 1 item.

offerId String

Obrigatório quando type = "REGULAR":

O ID da oferta do MenuItem do item. Não aplicável a ProposedOrder.otherItems.

extension FoodItemExtension

Define complementos para alimentos.

O exemplo a seguir mostra um elemento LineItem:

Exemplo 1

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

Exemplo 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

O tipo LineItemType tem os seguintes valores possíveis:

  • REGULAR: item de linha de produtos. Aplicável a Cart.lineItems.
  • TAX: item de linha de tributos. Aplicável a ProposedOrder.otherItems.
  • DISCOUNT: item de linha de desconto. O preço precisa ser negativo. Aplicável a ProposedOrder.otherItems.
  • GRATUITY: item de linha de gratificação. Geralmente reservado para SubmitOrderRequestMessage para uma dica selecionada pelo usuário. Aplicável a ProposedOrder.otherItems.
  • DELIVERY: item de linha de exibição. Aplicável a ProposedOrder.otherItems.
  • SUBTOTAL: item de linha subtotal. Aplicável a ProposedOrder.otherItems.
  • FEE: item de linha adicional não coberto pelos outros tipos. Aplicável a ProposedOrder.otherItems.

Local

Especifica um endereço para pedidos de comida. O tipo Location é usado em uma Cart para indicar somente o destino de um pedido de entrega. O local finalizado também está presente no TransactionDecisionValue se o usuário fizer o pedido. Para pedidos que especificam retirada, um local é incluídos (nem mesmo um vazio).

A tabela a seguir lista as propriedades para o tipo Location:

Propriedade Tipo Descrição
coordinates Coordinates
formattedAddress String

Exibir o endereço do local.

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

postalAddress PostalAddress
zipCode String

Exemplo: 90210

city String

O nome da cidade.

Exemplo: Los Angeles

notes String

Observações sobre o local, como códigos do portão. Ele deve ter 500 caracteres ou menos.

Exemplo: Gate code is #111

O exemplo a seguir mostra um elemento Location:

Exemplo

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

Comerciante

A tabela a seguir lista as propriedades para o tipo Merchant:

Propriedade Tipo Descrição
id String

O ID do comerciante. Se especificado, corresponde a Restaurant.@id no feed de restaurante.

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

name String

Obrigatório.

Nome do comerciante visível para o usuário.

Exemplo: Falafel Bite

O exemplo a seguir mostra um elemento Merchant:

Exemplo

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

Dinheiro

A tabela a seguir lista as propriedades para o tipo Money:

Propriedade Tipo Descrição
currencyCode String

Obrigatório.

Um código de moeda de três letras no formato ISO 4217.

Exemplo: USD

units String

As unidades inteiras do montante. Por exemplo, se o currencyCode for "USD", então "1" unidade é um dólar americano.

Exemplo: 36

nanos Número inteiro

Número de unidades nano (10^-9) do montante. O valor precisa estar entre -999.999.999 e +999.999.999. Use as seguintes regras: se "units" for positivo, "nanos" deverá ser positivo ou zero. Se "units" for zero, "nanos" poderá ser positivo, zero ou negativo. Se "units" for negativo, "nanos" deverá ser negativo ou zero. Por exemplo,$-1,75 é representado como unidades = -1 e nanos = -750.000.000.

Exemplo: 730000000

O exemplo a seguir mostra um elemento Money:

Exemplo 1

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

Exemplo 2

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

Pedido

Contém o pedido final, incluindo impostos, taxas e cobranças de entrega, conforme e as informações de pagamento. Esse objeto é recebido pela sua ação em um Submit AppRequest:

A tabela a seguir lista as propriedades para o tipo Order:

Propriedade Tipo Descrição
finalOrder ProposedOrder

Obrigatório.

O pedido proposto que gerou o pedido.

googleOrderId String

Obrigatório.

ID do pedido atribuído pelo Google. Esse ID precisa ser estável durante todo o ciclo de vida de um pedido. Esse ID não fica visível para o usuário final.

orderDate Carimbo de data/hora ISO

Obrigatório.

Data e hora em que o pedido foi criado.

paymentInfo PaymentInfo

Obrigatório.

Informações de pagamento correspondentes ao pagamento desse pedido.

O exemplo a seguir mostra um elemento Order:

Exemplo

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

A tabela a seguir descreve os campos do tipo OrderUpdate que é incluído em AppResponse.

A tabela a seguir lista as propriedades para o tipo OrderUpdate:

Propriedade Tipo Descrição
actionOrderId String

Obrigatório.

ID exclusivo do pedido no sistema do integrador usado para identificar o pedido de envio da atualização. Se recibo.user_visible_order_id não for fornecido pelo menos uma vez em OrderUpdate para um "CREATED" pedido, esse será o ID visível do usuário inserido e exibido no card do pedido do Google.

orderState OrderState

Obrigatório.

O novo estado do pedido.

lineItemUpdates Map<String, LineItemUpdate>
updateTime Carimbo de data/hora ISO

Obrigatório.

A hora em que o pedido foi atualizado.

orderManagementActions Lista<OrderManagementAction>

Ações pós-pedido, como entrar em contato com o suporte e visualizar detalhes do pedido.

Deve ter pelo menos 1 item e no máximo 6 itens.

rejectionInfo RejectionInfo

Obrigatório quando orderState.state = "REJECTED":

cancellationInfo CancellationInfo

Obrigatório quando orderState.state = "CANCELLED":

inTransitInfo InTransitInfo

O uso desse campo foi descontinuado.

fulfillmentInfo FulfillmentInfo

O uso desse campo foi descontinuado.

receipt Receipt

Obrigatório quando orderState.state = "CONFIRMED", "IN_PREPARATION", or "READY_FOR_PICKUP":

Forneça o código do pedido visível ao usuário em um recibo.

totalPrice Price

Preço total do pedido.

infoExtension FoodOrderUpdateExtension

Define mais detalhes da atualização do pedido, como o intervalo de entrega ou retirada estimada.

O exemplo a seguir mostra um elemento OrderUpdate:

Exemplo

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

A tabela a seguir lista as propriedades para o tipo PickupInfo:

Propriedade Tipo Descrição
pickupTimeIso8601 String

Horário estimado de retirada, no formato de carimbo de data/hora ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" ou formato de duração: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Por exemplo, PT90M representa uma duração de 90 minutos. O valor padrão, "PT0M", indica que o horário de embarque preferencial é o mais rápido possível. Referência: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations (em inglês). Use essa informação para atualizar o tempo estimado de retirada durante a resposta da finalização da compra.

Exemplo: PT90M

O exemplo a seguir mostra um elemento PickupInfo:

Exemplo

{
  "pickupTimeIso8601": "PT90M"
}

PostalAddress

A tabela a seguir lista as propriedades para o tipo PostalAddress:

Propriedade Tipo Descrição
regionCode String

Obrigatório.

Um código de país com duas letras.

Exemplo: US

postalCode String

É o código postal.

Exemplo: 94043

administrativeArea String

A maior subdivisão administrativa que é usada para endereços postais de um país ou uma região. Pode ser um estado, uma província, uma oblast ou um município.

Exemplo: CA

locality String

A cidade deste local. Em regiões do mundo onde as localidades não são bem definidas ou não se encaixam nesta estrutura, não especifique a localidade e use o campo addressLines.

Exemplo: Mountain View

addressLines Lista<String>

Uma ou mais linhas que você pode usar para especificar o endereço. Este campo não deve ser modificado porque pode conter localidades pouco claras.

Exemplo: [ "1350 Charleston Road" ]

recipients Lista<String>

Lista dos destinatários de um pedido. Esse campo só está disponível no billingAddress.

O exemplo a seguir mostra um elemento PostalAddress:

Exemplo

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

Preço

A tabela a seguir lista as propriedades para o tipo Price:

Propriedade Tipo Descrição
type Enum [ "ESTIMATE", "ACTUAL" ]

Obrigatório.

Código do cupom promocional.

amount Money

Obrigatório.

Promoção

A tabela a seguir lista as propriedades para o tipo Promotion:

Propriedade Tipo Descrição
coupon String

Obrigatório.

Código do cupom promocional.

ProposedOrder

A tabela a seguir lista as propriedades para o tipo ProposedOrder:

Propriedade Tipo Descrição
id String

ID opcional do pedido proposto.

cart Cart

Obrigatório.

Itens do usuário.

otherItems Lista<LineItem>

Itens adicionados pelo fornecedor, como taxas de entrega, outras taxas e tributos. otherItems também podem conter gratificações e/ou descontos adicionados pelo usuário.

Não pode haver mais de 10 itens.

image Image

Imagem associada ao pedido proposto.

totalPrice Price

Obrigatório.

Preço total do pedido proposto.

extension FoodOrderExtension

Obrigatório.

Define informações de atendimento para pedidos de comida.

disclaimers Lista<Disclaimer>

Corresponde a mensagens de exoneração de responsabilidade que serão exibidas na interface antes do pedido ser feito.

O exemplo a seguir mostra um elemento ProposedOrder:

Exemplo

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

A tabela a seguir lista as propriedades para o tipo SublineNote:

Propriedade Tipo Descrição
note String

Obrigatório.

Carimbo de data/hora

A data e a hora no seguinte formato: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"

TransactionDecisionValue

Contém o Order.

A tabela a seguir lista as propriedades para o tipo TransactionDecisionValue:

Propriedade Tipo Descrição
order Order

Obrigatório.

Pedido a ser feito com detalhes de pagamento.

O exemplo a seguir mostra um elemento TransactionDecisionValue:

Exemplo

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

Solicitação de atendimento

AppRequest

A tabela a seguir lista as propriedades para o tipo AppRequest:

Propriedade Tipo Descrição
isInSandbox Booleano

Indica se as transações subsequentes são feitas em um ambiente de sandbox.

conversation Conversation
inputs Lista<Input>

Obrigatório.

Contém os argumentos esperados para finalizar a compra de um carrinho.

É preciso ter exatamente 1 item.

O exemplo a seguir mostra um elemento AppRequest:

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

Exemplo 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

Um CheckoutRequestMessage é um AppRequest. com a intent actions.foodordering.intent.CHECKOUT.

SubmitOrderRequestMessage

Um SubmitOrderRequestMessage é um AppRequest. com a intent actions.foodordering.intent.TRANSACTION_DECISION.

Conversa

Um Conversation é exclusivo para apenas uma sessão. É possível usá-lo para vincular vários Checkout e SubmitOrder ações juntas, se necessário.

A tabela a seguir lista as propriedades para o tipo Conversation:

Propriedade Tipo Descrição
conversationId String

Obrigatório.

ID exclusivo da conversa.

O exemplo a seguir mostra um elemento Conversation:

Exemplo

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

Entrada

Os argumentos esperados para finalizar a compra de um carrinho.

A tabela a seguir lista as propriedades para o tipo Input:

Propriedade Tipo Descrição
intent Enum [ "actions.foodordering.intent.CHECKOUT", "actions.intent.TRANSACTION_DECISION" ]

Obrigatório.

Defina como "actions.foodordering.intent.CHECKOUT" para a mensagem de solicitação de finalização de compra OU "actions.intent.TRANSACTION_DECISION" para a mensagem de solicitação de envio do pedido.

arguments Lista<Argument>

Obrigatório.

Contém o carrinho a ser comprado ou o pedido a ser feito

É preciso ter exatamente 1 item.

Argumento

Contém detalhes sobre os alimentos que o usuário quer conferir. Para finalização de compra, somente a extensão é aplicável. Para pedidos de envio, somente transactionDecisionValue é aplicável

A tabela a seguir lista as propriedades para o tipo Argument:

Propriedade Tipo Descrição
Exatamente um dos seguintes grupos de propriedades é obrigatório.
extension Grupo 1 Cart

Detalha os alimentos que o usuário quer finalizar.

transactionDecisionValue Grupo 2 TransactionDecisionValue

Contém o pedido a ser feito, bem como os detalhes de pagamento.

Resposta de atendimento do pedido

AppResponse

A tabela a seguir lista as propriedades para o tipo AppResponse:

Propriedade Tipo Descrição
expectUserResponse Const

Defina como falso.

Valor: False

finalResponse FinalResponse

Obrigatório.

Contém sua resposta ao pagamento do carrinho.

O exemplo a seguir mostra um elemento AppResponse:

Exemplo 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."
                  }
                }
              ]
            }
          }
        }
      ]
    }
  }
}

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

Exemplo 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."
                }
              ]
            }
          }
        }
      ]
    }
  }
}

Exemplo 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

Um CheckoutResponseMessage é um AppResponse com um checkoutResponse ou error no StructuredResponse.

SubmitOrderResponseMessage

Um SubmitOrderResponseMessage é um AppResponse com um orderUpdate no StructuredResponse.

FinalResponse

Sua resposta ao pagamento do carrinho ou SubmitOrderRequestMessage.

A tabela a seguir lista as propriedades para o tipo FinalResponse:

Propriedade Tipo Descrição
richResponse RichResponse

Obrigatório.

Contém sua resposta para CheckoutRequestMessage ou SubmitOrderRequestMessage.

CheckoutResponse

A tabela a seguir lista as propriedades para o tipo CheckoutResponse:

Propriedade Tipo Descrição
proposedOrder ProposedOrder

Obrigatório.

Pedido proposto a ser usado para a transação.

paymentOptions PaymentOptions

Obrigatório.

Opção de pagamento padrão selecionada para o usuário.

additionalPaymentOptions Lista<PaymentOptions>

Opções de pagamento alternativas disponíveis para o usuário.

O exemplo a seguir mostra um elemento CheckoutResponse:

Exemplo

{
  "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."
      }
    }
  ]
}

Item

Contém sua resposta para um pagamento no carrinho ou SubmitOrderRequestMessage.

A tabela a seguir lista as propriedades para o tipo Item:

Propriedade Tipo Descrição
structuredResponse StructuredResponse

Obrigatório.

RichResponse

Contém sua resposta a um pagamento no carrinho.

A tabela a seguir lista as propriedades para o tipo RichResponse:

Propriedade Tipo Descrição
items Lista<Item>

Obrigatório.

É preciso ter exatamente 1 item.

StructuredResponse

Para CheckoutResponseMessage, pode ser um dos seguintes: CheckoutResponse Indica um checkout bem-sucedido. OR FoodErrorExtension: indica uma falha durante o checkout. A resposta pode incluir um ProposedOrder e PaymentOptions corrigidos ou uma mensagem de erro sem PaymentOptions. Para SubmitOrderResponseMessage, somente orderUpdate é aplicável.

A tabela a seguir lista as propriedades para o tipo StructuredResponse:

Propriedade Tipo Descrição
Exatamente um dos seguintes grupos de propriedades é obrigatório.
checkoutResponse Grupo 1 CheckoutResponse

Itens comprados, impostos e descontos.

error Grupo 2 FoodErrorExtension

Erros observados nos itens do carrinho. Dependendo da natureza do erro, essa propriedade pode incluir ProposedOrder e PaymentOptions corrigidos ou apenas uma mensagem de erro sem PaymentOptions.

orderUpdate Grupo 3 OrderUpdate

Atualizações de pedidos assíncronos

Esta seção descreve os tipos gerais que compõem as solicitações e respostas de uma interação de ação integrada típica para pedidos de comida.

AsyncOrderUpdateRequestMessage

Notifica o usuário sobre as alterações depois que um pedido é enviado e confirmado. Por exemplo, você pode notificar o usuário de que o pedido está em trânsito ou se o o preço mudou. Para mais informações, consulte

A tabela a seguir lista as propriedades para o tipo AsyncOrderUpdateRequestMessage:

Propriedade Tipo Descrição
isInSandbox Booleano

Indica que o pedido para o qual esta atualização foi enviada é um pagamento de sandbox.

customPushMessage CustomPushMessage

Obrigatório.

Contém o OrderUpdate da solicitação.

O exemplo a seguir mostra um elemento AsyncOrderUpdateRequestMessage:

Exemplo

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

Depois que você enviar um AsyncOrderUpdateRequestMessage, o Google vai responder com um status HTTP 200 e um corpo vazio. Se a atualização não for bem-sucedida, O Google responde com detalhes sobre o motivo da falha na atualização do pedido.

Tipos de atualização de pedidos

Botão

Define um elemento de interface do usuário que você pode adicionar para oferecer interação com o usuário.

A tabela a seguir lista as propriedades para o tipo Button:

Propriedade Tipo Descrição
title String

Obrigatório.

O rótulo de exibição. Use letras maiúsculas de até 30 caracteres para garantir uma renderização adequada.

Exemplo: Contact us

openUrlAction OpenUrlAction

Obrigatório.

O exemplo a seguir mostra um elemento Button:

Exemplo

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

CancellationInfo

A tabela a seguir lista as propriedades para o tipo CancellationInfo:

Propriedade Tipo Descrição
reason String

Obrigatório.

Motivo do texto que pode ser exibido para a rejeição quando OrderState.state é "CANCELLED".

Exemplo: Restaurant closed

O exemplo a seguir mostra um elemento CancellationInfo:

Exemplo

{
  "reason": "Insufficient inventory"
}

FoodOrderUpdateExtension

Esse tipo oferece ao usuário um intervalo estimado para quando o pedido será entregues ou prontos para retirada. Envie essa extensão em uma OrderUpdate sempre que as informações estiverem disponíveis ou tiverem sido alteradas desde o último envio.

Forneça uma estimativa conservadora do intervalo de atendimento do pedido para que o usuário expectativas sejam atendidas com frequência. Por exemplo, se o pedido for estimado como entregue hoje às 13h, você deve enviar um intervalo estimado que é consistente com as variações devido às condições de trânsito, como hoje às 12h45 às 13h15.

Uma duração ou um carimbo de data/hora ISO 8601 é interpretado como sendo o intervalo do updateTime do OrderUpdate (em essência, "agora") para o updateTime mais duration. Não use esse formato, a menos que seja "agora" é de fato uma expectativa razoável.

Um intervalo ISO 8601 é interpretado como sendo o intervalo entre o início e o final do intervalo.

A tabela a seguir lista as propriedades para o tipo FoodOrderUpdateExtension:

Propriedade Tipo Descrição
@type Const

Tipo de extensão. Esse campo está sempre definido como "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension".

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

estimatedFulfillmentTimeIso8601 String

O tempo estimado para que o pedido seja entregue ou esteja pronto para retirada. A string precisa estar no formato ISO 8601 e corresponder a um intervalo em vez de um único horário fixo. As convenções aceitáveis são: intervalos, durações e datas/horas. Este campo pode ser enviado em SubmitOrderResponseMessage ou AsyncOrderUpdateRequestMessage quando as informações ficam disponíveis ou há uma alteração, como chegadas antecipadas ou atrasadas.

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

foodOrderErrors Lista<FoodOrderError>

Descreve os erros que ocorreram após o pedido. Recomendamos um erro por carrinho ou item. Use FoodOrderUpdateExtension.FoodOrderErrors para erros não cobertos por RejeitarionInfo.

Não pode ter menos de 1 item.

O exemplo a seguir mostra um elemento FoodOrderUpdateExtension:

Exemplo 1

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

Exemplo 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

A tabela a seguir lista as propriedades para o tipo FulfillmentInfo:

Propriedade Tipo Descrição
Exatamente um dos seguintes grupos de propriedades é obrigatório.
deliveryTime Grupo 1 Carimbo de data/hora ISO

Use predictedFulfillmentTimeIso8601 na mensagem FoodOrderingUpdateExtension

pickupTime Grupo 2 Carimbo de data/hora ISO

Use predictedFulfillmentTimeIso8601 na mensagem FoodOrderingUpdateExtension

O exemplo a seguir mostra um elemento FulfillmentInfo:

Exemplo 1

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

Exemplo 2

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

InTransitInfo

A tabela a seguir lista as propriedades para o tipo InTransitInfo:

Propriedade Tipo Descrição
updatedTime Carimbo de data/hora ISO

Use predictedFulfillmentTimeIso8601 na mensagem FoodOrderingUpdateExtension

O exemplo a seguir mostra um elemento InTransitInfo:

Exemplo

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

LineItemUpdate

A tabela a seguir lista as propriedades para o tipo LineItemUpdate:

Propriedade Tipo Descrição
orderState OrderState
price Price
reason String

O motivo da alteração. Obrigatório para alterações de preço.

O exemplo a seguir mostra um elemento LineItemUpdate:

Exemplo

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

OpenUrlAction

A tabela a seguir lista as propriedades para o tipo OpenUrlAction:

Propriedade Tipo Descrição
url String

Obrigatório.

A ação acionada ao clicar ou tocar no botão. A lista de prefixos aplicáveis depende do orderManagementActionType. "EMAIL": o prefixo precisa ser "mailto". "CALL": o prefixo precisa ser "tel". "CUSTOMER_SERVICE": o prefixo deve ser "mailto", "tel", "http" ou "https".

Exemplo: https://www.google.com

OrderManagementAction

O gerenciamento de pedidos permite que os usuários recebam suporte pós-pedido e deve ser enviado cada OrderUpdate no pedido de envio AppResponse e cada módulo subsequente AsyncOrderUpdateRequestMessage As ações de gerenciamento de pedidos enviadas para um pedido específico podem variar com base no estado.

Por exemplo, na coluna "CREATED" estado, CUSTOMER_SERVICE pode fazer referência ao seu pelo telefone de suporte ao cliente. Em seguida, na caixa "CONFIRMED", estado, CUSTOMER_SERVICE pode mudar para o telefone do restaurante se esse for o melhor ponto de contato para o cliente. Da mesma forma, assim que o pedido estiver na fase "CONCLUÍDA", estado, CUSTOMER_SERVICE pode fazer referência aos seus endereços de e-mail de suporte.

A tabela a seguir lista as propriedades para o tipo OrderManagementAction:

Propriedade Tipo Descrição
type OrderManagementActionType

Obrigatório.

button Button

Obrigatório.

O exemplo a seguir mostra um elemento OrderManagementAction:

Exemplo 1

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

Exemplo 2

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

OrderManagementActionType

Define os tipos relacionados ao OrderManagementAction.

O tipo OrderManagementActionType tem os seguintes valores possíveis:

  • CUSTOMER_SERVICE: e-mail e/ou número de contato do atendimento ao cliente a ser exibido na página de confirmação do pedido. Obrigatório. O prefixo openUrlAction.url precisa ser "mailto", "tel", "http" ou "https".
  • EMAIL: ação de e-mail apenas na página de detalhes do pedido. O prefixo openUrlAction.url precisa ser "mailto".
  • CALL_DRIVER: ação de chamada apenas na página de detalhes do pedido. O prefixo openUrlAction.url deve ser "tel".
  • CALL_RESTAURANT: ação de chamada apenas na página de detalhes do pedido. O prefixo openUrlAction.url deve ser "tel".

OrderState

O estado atual do pedido. Cada valor state de OrderState também corresponde a um status de compra myaccount.google.com.

A tabela a seguir lista as propriedades para o tipo OrderState:

Propriedade Tipo Descrição
state OrderStateEnum

Obrigatório.

label String

Obrigatório.

A string de exibição visível ao usuário para o estado. Use letra maiúscula apenas na primeira palavra.

Exemplo: Your order has been received

O exemplo a seguir mostra um elemento OrderState:

Exemplo

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

OrderStateEnum

Define os tipos relacionados ao OrderState.

O tipo OrderStateEnum tem os seguintes valores possíveis:

  • CREATED: pedido criado pelo integrador e aguardando a confirmação do provedor. Corresponde a "Ordenado" status de compra.
  • CONFIRMED: pedido confirmado pelo provedor e ativo. Corresponde ao campo "Aceito" status de compra.
  • REJECTED: pedido rejeitado pelo integrador ou provedor. Corresponde a "Recusado" status de compra.
  • CANCELLED: o usuário cancelou o pedido. Corresponde ao campo "Cancelled" status de compra.
  • IN_PREPARATION: a comida está sendo preparada. Corresponde ao "Status desconhecido" status de compra.
  • READY_FOR_PICKUP: o alimento está pronto para retirada. Corresponde a "Pronto para retirada" status de compra.
  • IN_TRANSIT: o pedido está sendo entregue. Corresponde à mensagem "Em andamento" status de compra.
  • FULFILLED: o usuário recebeu o que foi pedido. Corresponde ao valor "Retirado" status de compra.

Comprovante

Envie esse tipo em um pedido de envio AppResponse, em que OrderState é "CONFIRMED", "FULFILLED" ou "IN_transit". Enviar comprovante em o horário em que o userVisibleOrderId fica disponível. Você não precisa manter enviando a confirmação nas próximas atualizações.

A tabela a seguir lista as propriedades para o tipo Receipt:

Propriedade Tipo Descrição
userVisibleOrderId String

Obrigatório.

Obrigatório se o pedido for "CONFIRMED", "IN_Transition" ou "FULFILLED". Este campo é o ID único do usuário para esse pedido (geralmente o código do pedido do restaurante), exibido no recibo do integrador e no cartão do pedido do Google. O usuário precisa conseguir usar esse ID para consultar o pedido de atendimento ao cliente com o provedor e o integrador. Você só precisa fornecer esse ID uma vez em cada OrderUpdate. Até que seja fornecido, o actionOrderId é o userVisibleOrderId. Por exemplo, não é possível ter um userVisibleOrderId até que o pedido seja confirmado pelo restaurante. Após a confirmação, é necessário enviar uma AsyncOrderUpdateRequestMessage com um OrderUpdate e um Receipt.

O exemplo a seguir mostra um elemento Receipt:

Exemplo

{
  "userVisibleOrderId": "userVisibleId1234"
}

RejectionInfo

A tabela a seguir lista as propriedades para o tipo RejectionInfo:

Propriedade Tipo Descrição
type RejectionType

Obrigatório.

reason String

Motivo da rejeição usado para geração de registros internos. Este campo não é visível para os usuários.

O exemplo a seguir mostra um elemento RejectionInfo:

Exemplo

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

RejectionType

O tipo RejectionType tem os seguintes valores possíveis:

  • INELIGIBLE: o usuário não está qualificado devido a preocupações relacionadas a políticas ou riscos.
  • PAYMENT_DECLINED: há um problema com o processamento do pagamento.
  • UNAVAILABLE_SLOT: o pedido não pode ser concluído no horário especificado por DeliveryInfo ou PickupInfo.
  • PROMO_NOT_APPLICABLE: há um problema com a promoção.
  • UNKNOWN: qualquer outro motivo.

Tipos relacionados a pagamentos

Esta seção descreve os tipos relacionados a pagamentos usados para pedidos de comida o atendimento do pedido.

ActionProvidedPaymentOptions

Requisitos para uma forma de pagamento fornecida por ação.

A tabela a seguir lista as propriedades para o tipo ActionProvidedPaymentOptions:

Propriedade Tipo Descrição
paymentType PaymentType

Obrigatório.

displayName String

Obrigatório.

Nome do instrumento de pagamento exibido no recibo.

Exemplo: Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

Dados adicionais para o tipo de pagamento "ON_FULFILLMENT". Por exemplo, é possível usar esse campo para especificar se dinheiro ou cartão é aceito no processamento do pedido.

O exemplo a seguir mostra um elemento ActionProvidedPaymentOptions:

Exemplo

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

AllowedAuthMethods

O tipo AllowedAuthMethods tem os seguintes valores possíveis:

  • PAN_ONLY: método de autenticação associado a cartões de pagamento armazenados em arquivo com a Conta do Google do usuário. Os dados de pagamento retornados incluem o número da conta pessoal (PAN, na sigla em inglês) com o mês e o ano de vencimento.

AllowedCardNetworks

O tipo AllowedCardNetworks tem os seguintes valores possíveis:

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

BillingAddressParameters

Este objeto permite definir campos adicionais a serem retornados para um endereço de faturamento solicitado.

A tabela a seguir lista as propriedades para o tipo BillingAddressParameters:

Propriedade Tipo Descrição
format String

Formato do endereço de faturamento necessário para concluir a transação. MÍNIMO: nome, código do país e código postal. COMPLETO: nome, endereço, localização, região, código do país e código postal.

O exemplo a seguir mostra um elemento BillingAddressParameters:

Exemplo 1

{
  "format": "MIN"
}

Exemplo 2

{
  "format": "FULL"
}

CardParameters

Use esse objeto para configurar a compatibilidade do seu site com a API Google Pay.

A tabela a seguir lista as propriedades para o tipo CardParameters:

Propriedade Tipo Descrição
allowedAuthMethods List<Const> (Lista)

Obrigatório.

Campos aceitos para autenticar uma transação de cartão.

Não pode ter menos de 1 item.

allowedCardNetworks Lista<AllowedCardNetworks>

Obrigatório.

Uma ou mais redes de cartões aceitas por você e pela API Google Pay.

Não pode ter menos de 1 item.

billingAddressRequired Booleano

Defina como "true" se você precisar de um endereço de faturamento. Solicite um endereço de faturamento apenas se for necessário para processar a transação. Outras solicitações de dados podem aumentar o atrito no processo de finalização da compra e gerar taxas de conversão mais baixas.

billingAddressParameters BillingAddressParameters

Os campos esperados retornados se billingAddressRequired está definido como verdadeiro.

cvcRequired Booleano

Defina como verdadeiro se estiver usando TimesofMoney, como falso para todos os outros processadores de pagamento.

O exemplo a seguir mostra um elemento CardParameters:

Exemplo 1

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

Exemplo 2

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

GoogleProvidedPaymentInstrument

A tabela a seguir lista as propriedades para o tipo GoogleProvidedPaymentInstrument:

Propriedade Tipo Descrição
instrumentToken String

Obrigatório.

String codificada de base 64 contendo o token de pagamento para cobrar o usuário com um processador do Google Pay participante, de acordo com o GoogleProvidedPaymentOptions especificado anteriormente.

billingAddress PostalAddress

Endereço de faturamento para o pagamento.

O exemplo a seguir mostra um elemento GoogleProvidedPaymentInstrument:

Exemplo

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

GoogleProvidedPaymentOptions

Requisitos para a forma de pagamento fornecida pelo Google.

A tabela a seguir lista as propriedades para o tipo GoogleProvidedPaymentOptions:

Propriedade Tipo Descrição
facilitationSpecification String

Um JSON PaymentDataRequest como uma string. Use esse objeto para configurar a compatibilidade do seu site com a API Google Pay.

supportedCardNetworks Lista<SupportedCardNetworks>

Em vez disso, use facilitationSpecification. Tipo de redes de cartões aceitas pelo agente.

O uso desse campo foi descontinuado.

prepaidCardDisallowed Booleano

Em vez disso, use facilitationSpecification. Se um cartão pré-pago é permitido como tipo de pagamento.

O uso desse campo foi descontinuado.

billingAddressRequired Booleano

Em vez disso, use facilitationSpecification. Se um endereço de faturamento é necessário ou não.

O uso desse campo foi descontinuado.

tokenizationParameters TokenizationParameters

O uso desse campo foi descontinuado.

O exemplo a seguir mostra um elemento GoogleProvidedPaymentOptions:

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

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

Exemplo 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

Use esse objeto para configurar a compatibilidade do seu site com a API Google Pay.

A tabela a seguir lista as propriedades para o tipo MerchantInfo:

Propriedade Tipo Descrição
merchantId String

O identificador do comerciante do Google emitido para você pelo Google Pay.

merchantName String

Obrigatório.

Nome do comerciante codificado como UTF-8. O nome do comerciante é processado na página de pagamento.

OnFulfillmentPaymentData

Use este objeto para enviar dados adicionais para o PaymentType "ON_FULFILLMENT".

A tabela a seguir lista as propriedades para o tipo OnFulfillmentPaymentData:

Propriedade Tipo Descrição
supportedPaymentOptions Lista<PaymentOptionsEnums>

Lista de opções de pagamento disponíveis para o usuário no momento da conclusão do pedido.

O exemplo a seguir mostra um elemento OnFulfillmentPaymentData:

Exemplo

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

Parâmetros

Define os tipos relacionados ao TokenizationParameters.

A tabela a seguir lista as propriedades para o tipo Parameters:

Propriedade Tipo Descrição
gateway String

Obrigatório.

Exemplo: braintree

gatewayMerchantId String
[additionalKey: string] String Outros pares de chave-valor

O exemplo a seguir mostra um elemento Parameters:

Exemplo 1

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

Exemplo 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

Use esse objeto para configurar a compatibilidade do seu site com a API Google Pay.

A tabela a seguir lista as propriedades para o tipo PaymentDataRequest:

Propriedade Tipo Descrição
apiVersion Const

Obrigatório.

Versão principal da API.

Valor: 2

apiVersionMinor Const

Obrigatório.

Versão secundária da API.

Valor: 0

merchantInfo MerchantInfo

Obrigatório.

(ID do comerciante do Google Pay) Informações sobre o comerciante que solicita dados de pagamento.

allowedPaymentMethods Lista<PaymentMethod>

Obrigatório.

Especifica a compatibilidade com uma ou mais formas de pagamento compatíveis com a API Google Pay.

transactionInfo TransactionInfo

Obrigatório.

Detalhes sobre a autorização da transação, dependendo de o usuário concordar ou não com ela. Esse campo inclui o preço total e o status do preço.

O exemplo a seguir mostra um elemento PaymentDataRequest:

Exemplo

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

Informações relacionadas ao pagamento de um pedido.

A tabela a seguir lista as propriedades para o tipo PaymentInfo:

Propriedade Tipo Descrição
displayName String

Obrigatório.

Nome visível para o usuário do instrumento de pagamento a ser exibido no recibo.

paymentType PaymentType

Obrigatório.

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

Token que pode ser usado pela ação. Só especifique isso se você especificou GoogleProvidedPaymentOptions como uma opção de pagamento em CheckoutResponseMessage.

O exemplo a seguir mostra um elemento PaymentInfo:

Exemplo 1

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

Exemplo 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

Use esse objeto para configurar a compatibilidade do seu site com a API Google Pay.

A tabela a seguir lista as propriedades para o tipo PaymentMethod:

Propriedade Tipo Descrição
type Const

Obrigatório.

Identificador curto da forma de pagamento aceita. No momento, apenas CARD é aceito.

Valor: CARD

parameters CardParameters

Obrigatório.

Parâmetros necessários para configurar o tipo de forma de pagamento fornecido.

tokenizationSpecification TokenizationSpecification

Obrigatório.

Configure uma conta ou um provedor de descriptografia para receber informações de pagamento. Esta propriedade é obrigatória para a forma de pagamento CARD.

O exemplo a seguir mostra um elemento PaymentMethod:

Exemplo

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

PaymentOptions

A tabela a seguir lista as propriedades para o tipo PaymentOptions:

Propriedade Tipo Descrição
Exatamente um dos seguintes grupos de propriedades é obrigatório.
googleProvidedOptions Grupo 1 GoogleProvidedPaymentOptions

Mutuamente exclusivo com actionProvidedOptions. Use essa opção para fazer pagamentos on-line com o gPay.

actionProvidedOptions Grupo 2 ActionProvidedPaymentOptions

Mutuamente exclusivo com googleProvidedOptions. Use para "dinheiro na entrega" ou "pagamento no processamento do pedido".

O exemplo a seguir mostra um elemento PaymentOptions:

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

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

Exemplo 3

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

PaymentOptionsEnums

O tipo PaymentOptionsEnums tem os seguintes valores possíveis:

  • Cash
  • Card
  • UPI
  • Paytm

PaymentType

O tipo PaymentType tem os seguintes valores possíveis:

  • PAYMENT_CARD: para GoogleProvidedPaymentOptions.
  • ON_FULFILLMENT: para ActionProvidedPaymentOptions.

SupportedCardNetworks

Define os tipos relacionados ao GoogleProvidedPaymentOptions.

O tipo SupportedCardNetworks tem os seguintes valores possíveis:

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

TokenizationParameters

. Define os tipos relacionados a GoogleProvidedPaymentOptions.

A tabela a seguir lista as propriedades para o tipo TokenizationParameters:

Propriedade Tipo Descrição
tokenizationType Enum [ "UNSPECIFIED_TOKENIZATION_TYPE", "PAYMENT_GATEWAY" ]

Obrigatório.

Em vez disso, use facilitationSpecification. Tipo de tokens aceitável.

parameters Parameters

Em vez disso, use facilitationSpecification.

TokenizationSpecification

Este objeto permite configurar uma conta para receber informações de pagamento sujeitas a cobrança.

A tabela a seguir lista as propriedades para o tipo TokenizationSpecification:

Propriedade Tipo Descrição
type Const

Obrigatório.

parameters Parameters

Obrigatório.

O exemplo a seguir mostra um elemento TokenizationSpecification:

Exemplo 1

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

Exemplo 2

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

TransactionInfo

Este objeto descreve uma transação que determina a capacidade de pagamento do pagador. Ele é usado para apresentar uma caixa de diálogo de autorização de pagamento.

A tabela a seguir lista as propriedades para o tipo TransactionInfo:

Propriedade Tipo Descrição
currencyCode String

Obrigatório.

Código de moeda ISO 4217 em ordem alfabética.

transactionId String

ID exclusivo que identifica uma tentativa de transação. Os comerciantes podem usar um ID existente ou gerar um ID específico para as tentativas de transação do Google Pay. Esse campo é obrigatório quando você envia callbacks para a API Transaction Events do Google.

totalPriceStatus Const

Obrigatório.

Usar "ESTIMATED" como padrão. O preço total pode ser ajustado com base nos detalhes da resposta, como o tributo sobre vendas coletado com base em um endereço de faturamento.

Valor: ESTIMATED

totalPrice String

Obrigatório.

Valor monetário total da transação com uma precisão decimal opcional de duas casas decimais. Esse campo deve ter o mesmo valor que cart.totalPrice.

O exemplo a seguir mostra um elemento TransactionInfo:

Exemplo

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