Esquema de ações de fulfillment

Esta página descreve o payload do serviço da Web de fulfillment (API de finalização de pedidos completa) ao trabalhar com a API de ação integrada de finalização de pedidos. 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 de entrega, gorjeta e o endereço de entrega. O objeto Cart é definido em um Checkout AppRequest.f. Você inclui uma cópia do carrinho no Checkout AppResponse.

A tabela a seguir lista as propriedades do tipo Cart:

Propriedade Tipo Descrição
@type Const

O tipo do objeto. Omita esse campo se o objeto pai "Cart" 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 List<LineItem>

Obrigatório.

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

Precisa ter pelo menos 1 item.

promotions List<Promotion>

Promoção aplicada a este carrinho. No momento, só é possível usar uma promoção.

notes String

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

extension FoodCartExtension

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

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 detalhes sobre a pessoa que recebe o pedido. Ele está disponível apenas em AppResponse.

A tabela a seguir lista as propriedades do tipo Contact:

Propriedade Tipo Descrição
displayName String

Nome da pessoa que recebe o pedido, como você quer que ele apareça. Use esse 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 recebeu 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 do tipo CustomPushMessage:

Propriedade Tipo Descrição
orderUpdate OrderUpdate

Obrigatório.

Informações atualizadas do pedido.

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 do 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 no 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 preferido é o mais rápido possível. Referência: https://pt.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. Use essa informação para atualizar o tempo de entrega estimado durante a resposta do pagamento.

Exemplo: PT90M

O exemplo a seguir mostra um elemento DeliveryInfo:

Exemplo

{
  "deliveryTimeIso8601": "PT90M"
}

Exoneração de responsabilidade

A tabela a seguir lista as propriedades do tipo Disclaimer:

Propriedade Tipo Descrição
predefinedMessage PredefinedMessage

Obrigatório.

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

feeAmount Money

O parceiro vai cobrar do comerciante uma taxa de N valor por este pedido.

feeAmountRange FeeAmountRange

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

feePercent Número

O parceiro vai cobrar uma taxa de N% do comerciante por esse pedido.

feePercentRange FeePercentRange

O parceiro vai cobrar 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 momento 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 foi possível processar o pedido devido à falta de entregadores.
  • REQUIREMENTS_NOT_MET: as restrições para aceitar o pedido não foram atendidas (por exemplo, tamanho mínimo do carrinho).
  • UNAVAILABLE_SLOT: o pedido não pode ser atendido no horário de pedido antecipado 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 detectar todos os casos de falha na aplicação do código promocional, se nenhum dos outros erros de código promocional se encaixar.
  • PROMO_NOT_RECOGNIZED: O código do cupom não foi reconhecido.
  • PROMO_ORDER_INELIGIBLE: o pedido atual não se qualifica 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 nas taxas ou no total.
  • INVALID: um item de linha, uma opção de atendimento ou uma promoção contém dados inválidos.
  • NOT_FOUND: não foi possível encontrar um item de linha, uma opção de fulfillment ou uma promoção.
  • PRICE_CHANGED: o preço de um item mudou.

FeeAmountRange

A tabela a seguir lista as propriedades do tipo FeeAmountRange:

Propriedade Tipo Descrição
minFeeAmount Money

Limite mínimo do valor da taxa cobrada.

maxFeeAmount Money

Limite máximo do valor da taxa cobrada.

FeePercentRange

A tabela a seguir lista as propriedades do tipo FeePercentRange:

Propriedade Tipo Descrição
minFeePercent Número

Limite mínimo da porcentagem da taxa cobrada.

maxFeePercent Número

Limite máximo da porcentagem da taxa cobrada.

FoodCartExtension

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

A tabela a seguir lista as propriedades do tipo FoodCartExtension:

Propriedade Tipo Descrição
@type Const

Tipo desta extensão. Esse campo é 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 fulfillment do usuário.

location Location

Na CheckoutRequestMessage, esse campo especifica o endereço de entrega, que é obrigatório se o pedido for para entrega. Para pedidos de retirada ou entrega, 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 do tipo FoodErrorExtension:

Propriedade Tipo Descrição
@type Const

Obrigatório.

Tipo desta extensão.

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

foodOrderErrors List<FoodOrderError>

Obrigatório.

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

Precisa ter pelo menos 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".

Uma nova proposta de pedido com correções. Retorne esse objeto se houver erros recuperáveis na ProposedOrder original. Por exemplo, uma mudança no preço de um ou mais itens de linha no carrinho é um erro recuperável. Erros recuperáveis com uma ProposedOrder válida são avançados para a etapa 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 List<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 itens alimentares.

A tabela a seguir lista as propriedades do tipo FoodItemExtension:

Propriedade Tipo Descrição
@type Const

Obrigatório.

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

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

options List<FoodItemOption>

Uma opção pode ser um item ou grupo de complementos que contém 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 do tipo FoodItemOption:

Propriedade Tipo Descrição
id String

ID exclusivo atribuído pelo Google. Ao enviar um FoodOrderError ou AsyncOrderUpdateRequest, use esse campo para diferenciar os casos em que um carrinho contém mais de um item com o mesmo offerId.

Exemplo: 39231093

offerId String

O 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 List<FoodItemOption>

Subopções para a 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 um CheckoutResponse.

A tabela a seguir lista as propriedades do 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. É o ID do item de linha atribuído pelo Google para itens de menu ou FoodItemOption.id para complementos.

description String

Descrição do erro. Essa descrição é para registro interno e não é visível para os usuários.

updatedPrice Money

Obrigatório quando error = "PRICE_CHANGED".

Novo preço de um item que causou o erro. Isso é necessário apenas 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 precisa 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 atendimento do pedido.

A tabela a seguir lista as propriedades do tipo FoodOrderExtension:

Propriedade Tipo Descrição
@type Const

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

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

availableFulfillmentOptions List<FulfillmentOption>

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

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 a opção optinForRemarketing for falsa ou não estiver presente, mantenha o status da assinatura no seu sistema como está. Os usuários não podem desativar o recurso pelo Google, apenas por uma função de cancelamento de assinatura fornecida nos seus canais de marketing. Essa flag 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, o Cart.extension.fulfillmentPreference: armazena a preferência do usuário (entrega ou retirada). O preço é sempre 0 quando a solicitação de finalização de compra é enviada.
  • Em Checkout AppResponse, o ProposedOrder.extension.availableFulfillmentOptions: Define uma ou mais opções de entrega. Atualmente, apenas uma opção é aceita. Você especifica a opção padrão como um LineItem em ProposedOrder.otherItems. O offerId de FulfillmentOption precisa corresponder ao ID do LineItem especificado em ProposedOrder.otherItems.

A tabela a seguir lista as propriedades do tipo FulfillmentOption:

Propriedade Tipo Descrição
offerId String

Identificador exclusivo para essa opção de atendimento, se houver.

fulfillmentInfo FulfillmentOptionInfo

Obrigatório.

expiresAt Carimbo de data/hora ISO

Hora em que essa opção de fulfillment 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 a FulfillmentInfo.

A tabela a seguir lista as propriedades do tipo FulfillmentOptionInfo:

Propriedade Tipo Descrição
É necessário exatamente um dos seguintes grupos de propriedades.
delivery Grupo 1 DeliveryInfo

Se presente, indica o pedido de entrega.

pickup Grupo 2 PickupInfo

Se presente, indica um pedido de retirada.

Imagem

A tabela a seguir lista as propriedades do tipo Image:

Propriedade Tipo Descrição
sourceUrl String

Obrigatório.

URL da imagem. A imagem precisa ter pelo menos 72 x 72 pixels. Para garantir os melhores resultados, use uma imagem com 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 de um pedido (ProposedOrder.otherItems).

A tabela a seguir lista as propriedades do 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), esse é o ID exclusivo criado pelo Google ao criar o pedido. Para um item de linha em um pedido proposto (ProposedOrder.otherItems[0].id), que é usado para adicionar itens como taxas de entrega e tributos, o valor do ID é definido pelo provedor. Por exemplo, em um carrinho, há dois itens iguais com instruções de preparo diferentes, como duas pizzas médias com coberturas diferentes. Nesse caso, os dois itens têm o mesmo offerId de base. Quando você envia uma solicitação de atualização de pedido para indicar que um item foi rejeitado, use esse ID como o elemento de distinção. Em outras palavras, se uma das pizzas for rejeitada por não ter um determinado recheio, o ID vai ajudar o Google a determinar qual item do pedido você está se referindo. Este campo é obrigatório, exceto em otherItems.

name String

Obrigatório.

Nome do item de linha. Essa é uma string visível para o usuário e precisa estar em maiúsculas quando possível (como "Taxa de entrega", "Custo do serviço", "Imposto"). Este campo é truncado em 100 caracteres para 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 do item ou 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 US $10 tiver uma quantidade de 3, o preço será US $30. Para uma pizza com um preço base de US $5 e um complemento de US $1, o preço seria de US $6. Para duas pizzas (quantidade = 2) com um preço base de US $5 e um complemento de US $1, o preço seria de US $12. Cada item de linha precisa ter um preço, mesmo que seja "0". Quando o tipo é DESCONTO, especifique o valor como negativo (por exemplo, "-2").

subLines List<SublineNote>

Opcional e válido apenas se o tipo for "REGULAR". Uma observação específica do item do usuário pode ser enviada neste campo na solicitação de finalização da compra e na solicitação de envio do pedido. Confira se o comerciante recebe a observação quando ela é enviada. Ele vai estar na solicitação como subLines[0].note, que é o único valor fornecido neste campo quando ele está presente em uma solicitação.

Não pode ter mais de 1 item.

offerId String

Obrigatório quando type = "REGULAR".

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

extension FoodItemExtension

Define complementos para itens alimentares.

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 imposto. 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 cortesia. Geralmente reservado para a SubmitOrderRequestMessage de uma dica selecionada pelo usuário. Aplicável a ProposedOrder.otherItems.
  • DELIVERY: item de linha de entrega. Aplicável a ProposedOrder.otherItems.
  • SUBTOTAL: item de linha do 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 pedir comida. O tipo Location é usado em um Cart para indicar apenas o destino de um pedido de entrega. O local finalizado também está presente em TransactionDecisionValue se o usuário fizer o pedido. Para pedidos que especificam a retirada, nenhum local é incluído, nem mesmo um vazio.

A tabela a seguir lista as propriedades do tipo Location:

Propriedade Tipo Descrição
coordinates Coordinates
formattedAddress String

Mostrar 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 de portão. Ele precisa 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 do tipo Merchant:

Propriedade Tipo Descrição
id String

O ID do comerciante. Se especificado, corresponde a Restaurant.@id no feed do 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 do 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 currencyCode for "USD", a unidade "1" será um dólar americano.

Exemplo: 36

nanos Número inteiro

Número de unidades nano (10^-9) do montante. O valor precisa ficar entre -999.999.999 e +999.999.999. Use as seguintes regras: se "units" for positivo, "nanos" será positivo ou zero. Se "units" for zero, "nanos" poderá ser positivo, zero ou negativo. Se forem negativas, o valor deverá ser negativo ou zero. Por exemplo,US $-1,75 é representado como units = -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 tributos, taxas e custos de entrega, além de informações de pagamento. Esse objeto é recebido pela sua ação em um Submit AppRequest.

A tabela a seguir lista as propriedades do tipo Order:

Propriedade Tipo Descrição
finalOrder ProposedOrder

Obrigatório.

A ordem proposta que causou o pedido.

googleOrderId String

Obrigatório.

É o 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 do 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 do tipo OrderUpdate:

Propriedade Tipo Descrição
actionOrderId String

Obrigatório.

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

orderState OrderState

Obrigatório.

O novo estado do pedido.

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

Obrigatório.

O horário em que o pedido foi atualizado.

orderManagementActions List<OrderManagementAction>

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

Precisa 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 deste campo foi descontinuado.

fulfillmentInfo FulfillmentInfo

O uso deste campo foi descontinuado.

receipt Receipt

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

Forneça o ID 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 estimado.

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 do tipo PickupInfo:

Propriedade Tipo Descrição
pickupTimeIso8601 String

Hora de retirada estimada, no formato de carimbo de data/hora ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" ou no 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 retirada preferido é o mais rápido possível. Referência: https://pt.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. Use essa opção para atualizar o horário de retirada estimado durante a resposta do pagamento.

Exemplo: PT90M

O exemplo a seguir mostra um elemento PickupInfo:

Exemplo

{
  "pickupTimeIso8601": "PT90M"
}

PostalAddress

A tabela a seguir lista as propriedades do 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 zona ou uma prefeitura.

Exemplo: CA

locality String

A cidade ou município do local. Em regiões administrativas que não são claramente definidas ou não se encaixam bem nessa estrutura, não especifique a localidade e use o campo addressLines.

Exemplo: Mountain View

addressLines List<String>

Uma ou mais linhas que podem ser usadas para especificar o endereço da rua. Não modifique este campo, porque ele pode conter localidades pouco claras.

Exemplo: [ "1350 Charleston Road" ]

recipients List<String>

Lista de destinatários de um pedido. Esse campo só está disponível em 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 do tipo Price:

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

Obrigatório.

O código do cupom promocional.

amount Money

Obrigatório.

Promoção

A tabela a seguir lista as propriedades do tipo Promotion:

Propriedade Tipo Descrição
coupon String

Obrigatório.

O código do cupom promocional.

ProposedOrder

A tabela a seguir lista as propriedades do tipo ProposedOrder:

Propriedade Tipo Descrição
id String

ID opcional para o pedido proposto.

cart Cart

Obrigatório.

Itens do usuário.

otherItems List<LineItem>

Itens adicionados pelo provedor, como taxas de entrega, outras taxas e tributos. Os outros itens também podem conter gorjeta e/ou desconto adicionados pelo usuário.

Não pode ter 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 List<Disclaimer>

Corresponde às mensagens de exoneração de responsabilidade que vão aparecer 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 do 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 Order.

A tabela a seguir lista as propriedades do 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"
    }
  }
}

Pedido de fulfillment

AppRequest

A tabela a seguir lista as propriedades do tipo AppRequest:

Propriedade Tipo Descrição
isInSandbox Booleano

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

conversation Conversation
inputs List<Input>

Obrigatório.

Contém os argumentos esperados para finalizar um carrinho.

Precisa 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 uma sessão. Você pode usá-lo para vincular várias ações Checkout e SubmitOrder, se necessário.

A tabela a seguir lista as propriedades do 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 do 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 da compra OU "actions.intent.TRANSACTION_DECISION" para a mensagem de envio de solicitação de pedido.

arguments List<Argument>

Obrigatório.

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

Precisa ter exatamente 1 item.

Argumento

Contém detalhes sobre os itens de comida que o usuário quer comprar. Para a finalização da compra, apenas a extensão é aplicável. Para enviar o pedido, apenas transactionDecisionValue é aplicável.

A tabela a seguir lista as propriedades do tipo Argument:

Propriedade Tipo Descrição
É necessário exatamente um dos seguintes grupos de propriedades.
extension Grupo 1 Cart

Detalhes dos itens de comida que o usuário quer conferir.

transactionDecisionValue Grupo 2 TransactionDecisionValue

Contém o pedido a ser feito e os detalhes de pagamento.

Resposta de fulfillment

AppResponse

A tabela a seguir lista as propriedades do tipo AppResponse:

Propriedade Tipo Descrição
expectUserResponse Const

Definido como falso.

Valor: False

finalResponse FinalResponse

Obrigatório.

Contém sua resposta à finalização da compra 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 à finalização da compra do carrinho ou à SubmitOrderRequestMessage.

A tabela a seguir lista as propriedades do tipo FinalResponse:

Propriedade Tipo Descrição
richResponse RichResponse

Obrigatório.

Contém sua resposta à CheckoutRequestMessage ou SubmitOrderRequestMessage.

CheckoutResponse

A tabela a seguir lista as propriedades do tipo CheckoutResponse:

Propriedade Tipo Descrição
proposedOrder ProposedOrder

Obrigatório.

Ordem proposta para a transação.

paymentOptions PaymentOptions

Obrigatório.

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

additionalPaymentOptions List<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 a um carrinho de finalização da compra ou a uma mensagem de envio de pedido.

A tabela a seguir lista as propriedades do tipo Item:

Propriedade Tipo Descrição
structuredResponse StructuredResponse

Obrigatório.

RichResponse

Contém sua resposta a uma finalização de compra.

A tabela a seguir lista as propriedades do tipo RichResponse:

Propriedade Tipo Descrição
items List<Item>

Obrigatório.

Precisa ter exatamente 1 item.

StructuredResponse

Para CheckoutResponseMessage, pode ser uma das seguintes: CheckoutResponse Indica que a finalização da compra foi concluída. OR FoodErrorExtension: indica uma falha durante o pagamento. A resposta pode incluir uma ProposedOrder e PaymentOptions corrigidas ou uma mensagem de erro sem PaymentOptions. Para SubmitOrderResponseMessage, apenas orderUpdate é aplicável.

A tabela a seguir lista as propriedades do tipo StructuredResponse:

Propriedade Tipo Descrição
É necessário exatamente um dos seguintes grupos de propriedades.
checkoutResponse Grupo 1 CheckoutResponse

Itens comprados, tributos e descontos.

error Grupo 2 FoodErrorExtension

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

orderUpdate Grupo 3 OrderUpdate

Atualizações de pedidos assíncronas

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

AsyncOrderUpdateRequestMessage

Notifica o usuário sobre mudanças após o envio e a confirmação de um pedido. Por exemplo, você pode notificar o usuário de que o pedido está em trânsito ou se o preço mudou. Consulte mais informações em

A tabela a seguir lista as propriedades do tipo AsyncOrderUpdateRequestMessage:

Propriedade Tipo Descrição
isInSandbox Booleano

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

customPushMessage CustomPushMessage

Obrigatório.

Contém a OrderUpdate para a 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 de enviar um AsyncOrderUpdateRequestMessage, o Google responde com um status HTTP 200 e um corpo vazio. Se a atualização não for bem-sucedida, o Google vai responder com detalhes sobre o motivo da falha na atualização do pedido.

Tipos de atualização de pedidos

Botão

Define um elemento da interface do usuário que pode ser adicionado para oferecer interação com o usuário.

A tabela a seguir lista as propriedades do tipo Button:

Propriedade Tipo Descrição
title String

Obrigatório.

O rótulo de exibição. Use letras maiúsculas e minúsculas de forma adequada e até 30 caracteres para garantir a 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 do tipo CancellationInfo:

Propriedade Tipo Descrição
reason String

Obrigatório.

Texto visível para a razão da rejeição quando OrderState.state é "CANCELLED".

Exemplo: Restaurant closed

O exemplo a seguir mostra um elemento CancellationInfo:

Exemplo

{
  "reason": "Insufficient inventory"
}

FoodOrderUpdateExtension

Esse tipo informa ao usuário um intervalo estimado de quando o pedido será entregue ou estará pronto para retirada. Envie essa extensão em um OrderUpdate sempre que as informações estiverem disponíveis ou tiverem mudado desde o último envio.

Forneça uma estimativa conservadora para o intervalo de atendimento para que as expectativas do usuário sejam atendidas de forma consistente. Por exemplo, se a estimativa é de que o pedido será entregue hoje às 13h, envie um intervalo estimado que seja consistente com as variações devido às condições de tráfego, como hoje às 12h45 e 13h15.

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

Um intervalo ISO 8601 é interpretado como o intervalo do início ao fim do intervalo.

A tabela a seguir lista as propriedades do tipo FoodOrderUpdateExtension:

Propriedade Tipo Descrição
@type Const

Tipo desta extensão. Esse campo é 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 de entrega ou retirada do pedido. A string precisa estar no formato ISO 8601 e corresponder a um intervalo, e não a um horário fixo. As convenções aceitáveis são: Intervalos, Durações e Datas/Horários. Esse campo pode ser enviado em SubmitOrderResponseMessage ou AsyncOrderUpdateRequestMessage quando as informações estiverem disponíveis ou houver uma mudança, como chegadas antecipadas ou atrasadas.

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

foodOrderErrors List<FoodOrderError>

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

Precisa ter pelo menos 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 do tipo FulfillmentInfo:

Propriedade Tipo Descrição
É necessário exatamente um dos seguintes grupos de propriedades.
deliveryTime Grupo 1 Carimbo de data/hora ISO

Use estimatedFulfillmentTimeIso8601 na mensagem FoodOrderingUpdateExtension

pickupTime Grupo 2 Carimbo de data/hora ISO

Use estimatedFulfillmentTimeIso8601 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 do tipo InTransitInfo:

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

Use estimatedFulfillmentTimeIso8601 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 do tipo LineItemUpdate:

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

Motivo da mudança. Obrigatório para mudanças 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 do 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 de orderManagementActionType. "EMAIL": o prefixo precisa ser "mailto". "CALL": o prefixo precisa ser "tel". "CUSTOMER_SERVICE": o prefixo precisa ser "mailto", "tel", "http" ou "https".

Exemplo: https://www.google.com

OrderManagementAction

O gerenciamento de pedidos permite que os usuários recebam suporte após a compra e precisa ser enviado em cada OrderUpdate no envio de pedidos AppResponse e em cada AsyncOrderUpdateRequestMessage subsequente. As ações de gerenciamento de pedidos enviadas para um pedido específico podem variar de acordo com o estado.

Por exemplo, no estado "CREATED", CUSTOMER_SERVICE pode fazer referência ao seu telefone de suporte ao cliente. Em seguida, no estado "CONFIRMED", CUSTOMER_SERVICE pode mudar para o telefone do restaurante se esse for o melhor ponto de contato para o cliente. Da mesma forma, quando o pedido estiver no estado "CONCLUÍDO", CUSTOMER_SERVICE poderá fazer referência aos seus endereços de e-mail de suporte.

A tabela a seguir lista as propriedades do 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 tipos relacionados a OrderManagementAction.

O tipo OrderManagementActionType tem os seguintes valores possíveis:

  • CUSTOMER_SERVICE: e-mail e/ou número de contato do atendimento ao cliente que será mostrado 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: Chamar ação apenas na página de detalhes do pedido. O prefixo openUrlAction.url precisa ser "tel".
  • CALL_RESTAURANT: Chamar ação apenas na página de detalhes do pedido. O prefixo openUrlAction.url precisa ser "tel".

OrderState

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

A tabela a seguir lista as propriedades do tipo OrderState:

Propriedade Tipo Descrição
state OrderStateEnum

Obrigatório.

label String

Obrigatório.

A string de exibição visível para o 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 tipos relacionados a OrderState.

O tipo OrderStateEnum tem os seguintes valores possíveis:

  • CREATED: o pedido foi criado pelo integrador e está aguardando a confirmação do provedor. Corresponde ao status de compra "Pedido feito".
  • CONFIRMED: o pedido foi confirmado pelo provedor e está ativo. Corresponde ao status de compra "Aceita".
  • REJECTED: pedido rejeitado pelo integrador ou provedor. Corresponde ao status de compra "Recusado".
  • CANCELLED: o usuário cancelou o pedido. Corresponde ao status de compra "Cancelada".
  • IN_PREPARATION: a comida está sendo preparada. Corresponde ao status de compra "Status desconhecido".
  • READY_FOR_PICKUP: A comida está pronta para retirada. Corresponde ao status de compra "Pronto para retirada".
  • IN_TRANSIT: o pedido está sendo entregue. Corresponde ao status de compra "Em andamento".
  • FULFILLED: o usuário recebeu o que foi pedido. Corresponde ao status de compra "Retirada".

Comprovante

Envie esse tipo em um pedido de envio AppResponse, em que OrderState é "CONFIRMED", "FULFILLED" ou "IN_TRANSIT". Envie o recibo quando o userVisibleOrderId estiver disponível. Não é necessário continuar enviando o recibo em atualizações subsequentes.

A tabela a seguir lista as propriedades do tipo Receipt:

Propriedade Tipo Descrição
userVisibleOrderId String

Obrigatório.

Obrigatório se o pedido estiver "CONFIRMED", "IN_TRANSIT" ou "FULFILLED". Esse campo é o único ID do usuário para esse pedido (geralmente o ID do pedido do restaurante), exibido no recibo do integrador e no card de pedido do Google. O usuário precisa poder usar esse ID para referenciar o pedido de atendimento ao cliente com o provedor e o integrador. Você só precisa fornecer esse ID uma vez em qualquer OrderUpdate. Até que seja fornecido, o actionOrderId é o userVisibleOrderId. Por exemplo, você não pode ter um userVisibleOrderId até que o pedido seja confirmado pelo restaurante. Depois de confirmada, envie uma AsyncOrderUpdateRequestMessage com uma OrderUpdate e um recibo.

O exemplo a seguir mostra um elemento Receipt:

Exemplo

{
  "userVisibleOrderId": "userVisibleId1234"
}

RejectionInfo

A tabela a seguir lista as propriedades do tipo RejectionInfo:

Propriedade Tipo Descrição
type RejectionType

Obrigatório.

reason String

Motivo da rejeição usado para geração de registros internos. Esse campo não fica 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 políticas ou problemas relacionados a riscos.
  • PAYMENT_DECLINED: há um problema no processamento do pagamento.
  • UNAVAILABLE_SLOT: o pedido não pode ser atendido no horário de pedido antecipado 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 a entrega de pedidos de comida.

ActionProvidedPaymentOptions

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

A tabela a seguir lista as propriedades do 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

Outros dados para o paymentType "ON_FULFILLMENT". Por exemplo, você pode usar esse campo para especificar se o pagamento em dinheiro ou cartão é aceito no atendimento.

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 extras a serem retornados para um endereço de faturamento solicitado.

A tabela a seguir lista as propriedades do tipo BillingAddressParameters:

Propriedade Tipo Descrição
format String

Formato do endereço de faturamento necessário para concluir a transação. MIN: nome, código do país e código postal. COMPLETO: nome, endereço, localidade, 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 este objeto para configurar o suporte do seu site à API Google Pay.

A tabela a seguir lista as propriedades do tipo CardParameters:

Propriedade Tipo Descrição
allowedAuthMethods List<Const>

Obrigatório.

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

Precisa ter pelo menos 1 item.

allowedCardNetworks List<AllowedCardNetworks>

Obrigatório.

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

Precisa ter pelo menos 1 item.

billingAddressRequired Booleano

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

billingAddressParameters BillingAddressParameters

Os campos esperados retornados se billingAddressRequired for definido como verdadeiro.

cvcRequired Booleano

Defina como "true" se estiver usando o TimesofMoney e como "false" 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 do tipo GoogleProvidedPaymentInstrument:

Propriedade Tipo Descrição
instrumentToken String

Obrigatório.

String codificada em Base64 que contém o token de pagamento para cobrar o usuário com um processador participante do Google Pay, de acordo com as GoogleProvidedPaymentOptions especificadas anteriormente.

billingAddress PostalAddress

Endereço de faturamento do 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 do tipo GoogleProvidedPaymentOptions:

Propriedade Tipo Descrição
facilitationSpecification String

Um JSON PaymentDataRequest como uma string. Use este objeto para configurar o suporte do seu site à API Google Pay.

supportedCardNetworks List<SupportedCardNetworks>

Use facilitationSpecification. Tipo de redes de cartões aceito pelo agente.

O uso deste campo foi descontinuado.

prepaidCardDisallowed Booleano

Use facilitationSpecification. Indica se um cartão pré-pago é permitido como tipo de pagamento.

O uso deste campo foi descontinuado.

billingAddressRequired Booleano

Use facilitationSpecification. Se um endereço de faturamento é obrigatório.

O uso deste campo foi descontinuado.

tokenizationParameters TokenizationParameters

O uso deste 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 este objeto para configurar o suporte do seu site à API Google Pay.

A tabela a seguir lista as propriedades do tipo MerchantInfo:

Propriedade Tipo Descrição
merchantId String

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 esse objeto para enviar dados adicionais para o PaymentType "ON_FULFILLMENT".

A tabela a seguir lista as propriedades do tipo OnFulfillmentPaymentData:

Propriedade Tipo Descrição
supportedPaymentOptions List<PaymentOptionsEnums>

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

O exemplo a seguir mostra um elemento OnFulfillmentPaymentData:

Exemplo

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

Parâmetros

Define tipos relacionados a TokenizationParameters.

A tabela a seguir lista as propriedades do tipo Parameters:

Propriedade Tipo Descrição
gateway String

Obrigatório.

Exemplo: braintree

gatewayMerchantId String
[additionalKey: string] String Pares de chave-valor adicionais

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 este objeto para configurar o suporte do seu site à API Google Pay.

A tabela a seguir lista as propriedades do 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 List<PaymentMethod>

Obrigatório.

Especifica o suporte a uma ou mais formas de pagamento aceitas pela 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. Este 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 a pagamentos de um pedido.

A tabela a seguir lista as propriedades do tipo PaymentInfo:

Propriedade Tipo Descrição
displayName String

Obrigatório.

Nome visível do instrumento de pagamento que vai aparecer no recibo.

paymentType PaymentType

Obrigatório.

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

Token que pode ser usado pela ação. Especifique esse valor somente se você tiver definido GoogleProvidedPaymentOptions como uma opção de pagamento na 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 este objeto para configurar o suporte do seu site à API Google Pay.

A tabela a seguir lista as propriedades do 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. Essa 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 do tipo PaymentOptions:

Propriedade Tipo Descrição
É necessário exatamente um dos seguintes grupos de propriedades.
googleProvidedOptions Grupo 1 GoogleProvidedPaymentOptions

Mutuamente exclusivo com actionProvidedOptions. Use para pagamentos on-line com o Google Pay.

actionProvidedOptions Grupo 2 ActionProvidedPaymentOptions

Mutuamente exclusivo com googleProvidedOptions. Use essa opção para "pagamento na entrega" ou "pagamento na entrega".

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 tipos relacionados a GoogleProvidedPaymentOptions.

O tipo SupportedCardNetworks tem os seguintes valores possíveis:

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

TokenizationParameters

Define tipos relacionados a GoogleProvidedPaymentOptions.

A tabela a seguir lista as propriedades do tipo TokenizationParameters:

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

Obrigatório.

Use facilitationSpecification. Tipo de tokens aceitáveis.

parameters Parameters

Use facilitationSpecification.

TokenizationSpecification

Este objeto permite que você configure uma conta para receber informações de pagamento sujeitas a cobrança.

A tabela a seguir lista as propriedades do 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 do tipo TransactionInfo:

Propriedade Tipo Descrição
currencyCode String

Obrigatório.

Código alfabético de moeda ISO 4217.

transactionId String

ID exclusivo que identifica uma tentativa de transação. Os comerciantes podem usar um ID atual 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.

Use "ESTIMATED" como padrão. O preço total pode ser ajustado de acordo com os 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 opcional de duas casas decimais. Esse campo precisa ter o mesmo valor de cart.totalPrice.

O exemplo a seguir mostra um elemento TransactionInfo:

Exemplo

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