Tipos de base
Carrinho
Contém detalhes do pedido, além de indicar 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 objetoCart
é 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: |
|
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 emAppResponse
.
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: |
|
email |
String |
Endereço de e-mail da pessoa que vai receber o pedido. Exemplo: |
|
firstName |
String |
Nome da pessoa que vai receber o pedido. Exemplo: |
|
lastName |
String |
Sobrenome da pessoa que vai receber o pedido. Exemplo: |
|
phoneNumber |
String |
Número de telefone da pessoa que vai receber o pedido, incluindo o código do país. Exemplo: |
|
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 oOrderUpdate
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: |
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: |
|
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 tipoFoodErrorExtension
.
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: |
|
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
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
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: |
|
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: |
|
offerId |
String |
O ID da oferta do item. Exemplo: |
|
name |
String |
O nome da opção. Exemplo: |
|
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: |
|
subOptions |
List<FoodItemOption > |
Subopções para a opção, se houver. Exemplo: |
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 umCheckoutResponse
.
A tabela a seguir lista as propriedades do tipo FoodOrderError
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
error |
Error |
Obrigatório. |
|
id |
String | Obrigatório quando
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
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
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: |
|
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 objetoFulfillmentOption
das seguintes maneiras:
-
Em
Checkout AppRequest
eSubmit AppRequest
, oCart.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
, oProposedOrder.extension.availableFulfillmentOptions
: Define uma ou mais opções de entrega (no momento, apenas uma opção é aceita). Você especifica a opção padrão como umLineItem
emProposedOrder.otherItems
. OofferId
deFulfillmentOption
precisa corresponder ao ID doLineItem
especificado emProposedOrder.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 aFulfillmentInfo
.
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
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
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 preço base de US $5 e um complemento de US $1, o preço seria 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
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 tipoLocation
é 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: |
|
postalAddress |
PostalAddress |
||
zipCode |
String |
Exemplo: |
|
city |
String |
O nome da cidade. Exemplo: |
|
notes |
String |
Observações sobre o local, como códigos de portão. Ele precisa ter 500 caracteres ou menos. Exemplo: |
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: |
|
name |
String | Obrigatório. Nome do comerciante visível para o usuário. Exemplo: |
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: |
|
units |
String |
As unidades inteiras do montante. Por exemplo, se currencyCode for "USD", a unidade "1" será um dólar americano. Exemplo: |
|
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: |
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 umSubmit 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 emAppResponse
.
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
|
|
cancellationInfo |
CancellationInfo |
Obrigatório quando
|
|
inTransitInfo |
InTransitInfo |
O uso deste campo foi descontinuado. |
|
fulfillmentInfo |
FulfillmentInfo |
O uso deste campo foi descontinuado. |
|
receipt |
Receipt |
Obrigatório quando
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: |
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: |
|
postalCode |
String |
É o código postal. Exemplo: |
|
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: |
|
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: |
|
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: |
|
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émOrder
.
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
UmCheckoutRequestMessage
é um AppRequest
com a intent actions.foodordering.intent.CHECKOUT
.
SubmitOrderRequestMessage
UmSubmitOrderRequestMessage
é um AppRequest
com a intent actions.foodordering.intent.TRANSACTION_DECISION
.
Conversa
UmConversation
é 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: |
|
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
UmCheckoutResponseMessage
é um AppResponse
com
um checkoutResponse
ou error
no
StructuredResponse
.
SubmitOrderResponseMessage
UmSubmitOrderResponseMessage
é 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 solicitação 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 emA 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 umAsyncOrderUpdateRequestMessage
, 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: |
|
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: |
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: |
|
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: |
|
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: |
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 aOrderManagementAction
.
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 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: |
O exemplo a seguir mostra um elemento OrderState
:
Exemplo
{ "state": "CONFIRMED", "label": "Provider confirmed" }
OrderStateEnum
Define tipos relacionados aOrderState
.
O tipo OrderStateEnum
tem os seguintes valores possíveis:
CREATED
: pedido criado pelo integrador e aguardando 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 "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 envioAppResponse
,
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 voltado ao 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: |
|
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: |
|
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: |
|
apiVersionMinor |
Const | Obrigatório. Versão secundária da API. Valor: |
|
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 especificado 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: |
|
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 aGoogleProvidedPaymentOptions
.
O tipo SupportedCardNetworks
tem os seguintes valores possíveis:
UNSPECIFIED_CARD_NETWORK
AMEX
DISCOVER
JCB
MASTERCARD
VISA
TokenizationParameters
Define tipos relacionados aGoogleProvidedPaymentOptions
.
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: |
|
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" }