Tipos de base
Carrinho
Contém detalhes do pedido, além de informar se a solicitação é de retirada ou entrega. Um carrinho também contém detalhes da entrega, gratuidade e o endereço de entrega. O objetoCart
é definido em um Checkout AppRequest
.f
Você inclui uma cópia do carrinho no seu Checkout AppResponse
A tabela a seguir lista as propriedades do tipo Cart
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
@type |
Const |
O tipo desse objeto. Omita esse campo se o objeto Cart pai fizer parte de ProposedOrder. Valor: |
|
id |
String |
ID opcional do carrinho. |
|
merchant |
Merchant |
Comerciante afiliado a este carrinho. |
|
lineItems |
Lista<LineItem > |
Obrigatório. Lista de produtos ou serviços que o usuário está pedindo. Não pode ter menos de 1 item. |
|
promotions |
Lista<Promotion > |
Promoção aplicada neste carrinho. No momento, somente uma promoção é aceita. |
|
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 de pedidos. |
O exemplo a seguir mostra um elemento Cart
:
Exemplo 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.Cart", "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Cucina Venti" }, "lineItems": [ { "name": "Sizzling Prawns Dinner", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "16", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }
Exemplo 2
{ "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }
Contato
Especifica os detalhes sobre a pessoa que vai receber o pedido. Disponível apenas emAppResponse
.
A tabela a seguir lista as propriedades do tipo Contact
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
displayName |
String |
Nome da pessoa que vai receber o pedido, como você gostaria que ele fosse exibido. Use este campo se firstName e lastName não estiverem 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 está recebendo o pedido fez login com a própria 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. As informações do pedido foram atualizadas. |
O exemplo a seguir mostra um elemento CustomPushMessage
:
Exemplo
{ "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "IN_TRANSIT", "label": "Order is on the way" }, "inTransitInfo": { "updatedTime": "2017-07-17T12:00:00Z" }, "updateTime": "2017-07-17T12:00:00Z", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } }
DeliveryInfo
A tabela a seguir lista as propriedades 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 formato de duração: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Por exemplo, PT90M representa uma duração de 90 minutos. O valor padrão "PT0M" indica que o tempo de entrega preferencial é o mais rápido possível. Referência: https://pt.wikipedia.org/wiki/ISO_8601#representações_de_data_e_hora_combinadas. Use essa informação para atualizar o tempo de entrega estimado durante a resposta da finalização da compra. 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 predefinidas de exoneração de responsabilidade durante a finalização da compra. |
|
feeAmount |
Money |
O parceiro cobrará do comerciante uma taxa no valor de N por esse pedido. |
|
feeAmountRange |
FeeAmountRange |
O parceiro vai cobrar do restaurante uma taxa de N a M por pedido. |
|
feePercent |
Número |
O parceiro cobrará do comerciante uma taxa de N% por esse pedido. |
|
feePercentRange |
FeePercentRange |
O parceiro cobrará do comerciante uma taxa de N% a M% por pedido. |
O exemplo a seguir mostra um elemento Disclaimer
:
Exemplo 1
{ "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER" }
Exemplo 2
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE" }
Exemplo 3
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feePercent": 25 }
Exemplo 4
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feePercentRange": { "minFeePercent": 20, "maxFeePercent": 30 } }
Exemplo 5
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feeAmount": { "currencyCode": "AUD", "units": 2, "nanos": 500000000 } }
Exemplo 6
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feeAmountRange": { "minFeeAmount": { "currencyCode": "AUD", "units": 2, "nanos": 500000000 }, "maxFeeAmount": { "currencyCode": "AUD", "units": 10, "nanos": 0 } } }
Erro
O tipo Error
tem estes 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 à equipe de entrega limitada.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 com antecedência especificado pelo 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 a promoção porque ela expirou.PROMO_NOT_APPLICABLE
: código de erro genérico para capturar todos os casos de falha ao aplicar o código promocional, se nenhum dos outros erros se encaixar.PROMO_NOT_RECOGNIZED
: o código do cupom não foi reconhecido.PROMO_ORDER_INELIGIBLE
: o pedido atual não está qualificado para este cupom.PROMO_USER_INELIGIBLE
: o usuário atual não está qualificado para este cupom.AVAILABILITY_CHANGED
: o item não está mais disponível ou não há itens suficientes para atender à solicitação.INCORRECT_PRICE
: erros de preço nas taxas ou no total.INVALID
: um item de linha, uma FulfillmentOption ou uma promoção contém dados inválidos.NOT_FOUND
: um item de linha, uma FulfillmentOption ou uma promoção não foi encontrada.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 inferior do valor da taxa cobrada. |
|
maxFeeAmount |
Money |
Limite superior do valor da taxa cobrada. |
FeePercentRange
A tabela a seguir lista as propriedades do tipo FeePercentRange
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
minFeePercent |
Número |
Limite inferior da porcentagem cobrada da taxa. |
|
maxFeePercent |
Número |
Limite superior da porcentagem cobrada da taxa. |
FoodCartExtension
Contém detalhes sobre o usuário, como preferências de atendimento de pedidos.
A tabela a seguir lista as propriedades do tipo FoodCartExtension
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
@type |
Const |
Tipo dessa 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 nome, número de telefone e endereço de e-mail da pessoa. |
|
fulfillmentPreference |
FulfillmentOption |
Obrigatório. Preferência de fulfillment do usuário. |
|
location |
Location |
Em CheckoutRequestMessage, este campo especifica o endereço de entrega, que é obrigatório se o pedido for para entrega. Para pedidos para retirada ou retirada, este 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 dessa extensão. Valor: |
|
foodOrderErrors |
Lista<FoodOrderError > |
Obrigatório. Matriz de objetos FoodOrderError que descrevem os erros que ocorreram. Recomendamos um erro por carrinho ou item. Não pode ter menos de 1 item. |
|
correctedProposedOrder |
ProposedOrder |
Obrigatório quando
Um novo ProposedOrder com correções. Retorna esse objeto se houver erros recuperáveis no ProposedOrder original. Por exemplo, uma alteração no preço de um ou mais itens de linha no carrinho é um erro recuperável. Erros recuperáveis com um ProposedOrder válido são encaminhados para o estágio de confirmação, em vez de exigirem que o usuário analise o carrinho. |
|
paymentOptions |
PaymentOptions |
Obrigatório quando
Opções de pagamento padrão selecionadas para o usuário. |
|
additionalPaymentOptions |
Lista<PaymentOptions > |
Opções de pagamento alternativas disponíveis para o usuário. |
O exemplo a seguir mostra um elemento FoodErrorExtension
:
Exemplo
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension", "foodOrderErrors": [ { "error": "PRICE_CHANGED", "id": "sample_item_offer_id_1", "description": "The price has changed.", "updatedPrice": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, { "error": "PRICE_CHANGED", "id": "sample_item_offer_id_2", "description": "The price has changed.", "updatedPrice": { "currencyCode": "USD", "units": "8" } } ], "correctedProposedOrder": { "id": "sample_corrected_proposed_order_id_1", "otherItems": [ { "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }, { "name": "Delivery fee", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 500000000 } }, "type": "TAX" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "36", "nanos": 730000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:publishableKey": "pk_live_stripe_client_key", "stripe:version": "2017-04-06" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "JCB", "VISA" ], "prepaidCardDisallowed": true } } }
FoodItemExtension
Define complementos para alimentos.
A tabela a seguir lista as propriedades do tipo FoodItemExtension
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
@type |
Const | Obrigatório. Tipo dessa extensão. Esse campo é sempre definido como "type.googleapis.com/google.actions.v2.orders.FoodItemExtension". Valor: |
|
options |
Lista<FoodItemOption > |
Uma opção pode ser um item de complemento ou um grupo de complementos com um conjunto de complementos. |
O exemplo a seguir mostra um elemento FoodItemExtension
:
Exemplo
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1, "subOptions": [ { "id": "10239138", "offerId": "912391723", "name": "Fries", "price": { "currencyCode": "USD", "units": "2", "nanos": 230000000 }, "quantity": 1 } ] } ] }
FoodItemOption
A tabela a seguir lista as propriedades do tipo FoodItemOption
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
id |
String |
ID exclusivo atribuído pelo Google. Quando você 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 |
ID da oferta do item. Exemplo: |
|
name |
String |
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 |
Lista<FoodItemOption > |
Subopções da 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 umaCheckoutResponse
.
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 item.id atribuído pelo Google para itens de menu ou FoodItemOption.id para complementos. |
|
description |
String |
Descrição do erro. Essa descrição é usada para registros internos e não fica 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. Só é necessário quando o erro é "INVALID" ou "NOT_FOUND". O valor deve ser zero para "INVALID" e "NOT_FOUND". |
O exemplo a seguir mostra um elemento FoodOrderError
:
Exemplo 1
{ "error": "CLOSED", "description": "This store is currently reachable. Please try again later." }
Exemplo 2
{ "error": "PRICE_CHANGED", "id": "french_fries", "description": "The price has changed.", "updatedPrice": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }
FoodOrderExtension
Contém informações de fulfillment sobre o pedido.
A tabela a seguir lista as propriedades do tipo FoodOrderExtension
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
@type |
Const |
Tipo dessa extensão. Esse campo é sempre definido como "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension". Valor: |
|
availableFulfillmentOptions |
Lista<FulfillmentOption > |
Representa as opções de atendimento do pedido disponíveis. |
|
optinForRemarketing |
Booleano |
O usuário pediu para ativar os canais de marketing. Por padrão, não é possível enviar conteúdo de marketing sem o consentimento do usuário. Se optinForRemarketing for verdadeiro, você poderá inscrever o usuário. Se optinForRemarketing for falso ou não estiver presente, você deverá manter o status da assinatura no seu sistema como está. Os usuários não poderão desativar pelo Google, somente por meio de uma função de cancelamento de assinatura fornecida nos seus canais de marketing. Essa sinalização só está presente em SubmitOrderRequestMessage. |
O exemplo a seguir mostra um elemento FoodOrderExtension
:
Exemplo 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] }
Exemplo 2
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2020-08-20T11:41:00Z" } ], "optinForRemarketing": true }
FulfillmentOption
Você pode 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 no momento em que a solicitação de finalização da compra é enviada. -
Em
Checkout AppResponse
, oProposedOrder.extension.availableFulfillmentOptions
: define uma ou mais opções de entrega (atualmente, apenas uma opção é aceita). Especifique 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 dessa opção de atendimento de pedidos, se houver. |
|
fulfillmentInfo |
FulfillmentOptionInfo |
Obrigatório. |
|
expiresAt |
Carimbo de data/hora ISO |
Hora em que esta opção de atendimento do pedido expira. |
|
price |
Money |
Custo dessa opção. |
O exemplo a seguir mostra um elemento FulfillmentOption
:
Exemplo
{ "offerId": "offer5", "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2019-05-02T00:00:00-07:00", "price": { "currencyCode": "USD", "units": "5", "nanos": 230000000 } }
FulfillmentOptionInfo
Define as informações relacionadas aoFulfillmentInfo
.
A tabela a seguir lista as propriedades do tipo FulfillmentOptionInfo
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
É necessário exatamente um dos grupos de propriedades a seguir. | |||
delivery |
Grupo 1 | DeliveryInfo |
Se presente, indica a ordem de entrega. |
pickup |
Grupo 2 | PickupInfo |
Se presente, indica um pedido para retirada. |
Imagem
A tabela a seguir lista as propriedades do tipo Image
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
sourceUrl |
String | Obrigatório. URL da imagem. A imagem precisa ter, no mínimo, 72 x 72 pixels. Para melhores resultados, use uma imagem de pelo menos 216 x 216 pixels. A imagem precisa ter menos de 6 MB e 64 megapixels. |
LineItem
Define o conteúdo de um carrinho (Cart.lineItems
) ou cobranças extras 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 ProposedOrder (ProposedOrder.otherItems[0].id), que é usado para adicionar itens como taxas de entrega e impostos, 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 diferentes recheios). Nesse caso, os dois itens têm o mesmo OfferId base. Quando você enviar uma solicitação de atualização do pedido para indicar que um item foi rejeitado, use esse código para desambiguar. Em outras palavras, se uma das pizzas for rejeitada por falta de um sabor específico, o ID ajuda o Google a determinar a qual item no 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 ao usuário e, sempre que possível, ela precisa ter letras maiúsculas e minúsculas (como "Taxa de entrega", "Taxa de serviço" e "Tributos"). 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. Preço dos itens. Esse valor reflete o preço total de todos os produtos ou serviços do item de linha. Em outras palavras, adicione o custo dos complementos e multiplique pela quantidade. Por exemplo: se um item de R $10 tiver a quantidade 3, o preço será de R $30. Para uma pizza com preço base de R $5,00 e um complemento de R $1,00, o preço seria de R $6,00. Para duas pizzas (quantidade = 2) com preço base de US $5 e cada uma com um complemento de US $1, o preço seria de US $12. Cada item de linha deve ter um preço, mesmo que ele seja "0". Quando o tipo for DISCOUNT, especifique o valor como negativo (por exemplo, "-2"). |
|
subLines |
Lista<SublineNote > |
Opcional e válido somente se o tipo for "REGULAR". Uma observação do usuário específica para o item pode ser enviada nesse campo na solicitação de finalização da compra e na solicitação de envio do pedido. É importante que o comerciante receba a observação, assim que ela for enviada. Ele estará na solicitação como subLines[0].note, que é o único valor fornecido nesse campo quando estiver presente em uma solicitação. Não é possível ter mais de 1 item. |
|
offerId |
String | Obrigatório quando
O ID da oferta do MenuItem do item. Não aplicável a ProposedOrder.otherItems. |
|
extension |
FoodItemExtension |
Define complementos para alimentos. |
O exemplo a seguir mostra um elemento LineItem
:
Exemplo 1
{ "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }
Exemplo 2
{ "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }
LineItemType
O tipo LineItemType
tem estes valores possíveis:
REGULAR
: item de linha de produtos. Aplicável a Cart.lineItems.TAX
: item de linha de tributos. Aplicável a ProposedOrder.otherItems.DISCOUNT
: item de linha de desconto. O preço precisa ser negativo. Aplicável a ProposedOrder.otherItems.GRATUITY
: item de linha de gravidade. Geralmente reservado para SubmitOrderRequestMessage para uma gorjeta selecionada pelo usuário. Aplicável a ProposedOrder.otherItems.DELIVERY
: item de linha de exibição. Aplicável a ProposedOrder.otherItems.SUBTOTAL
: subtotal do item de linha. 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 entrega de comida. O tipoLocation
é usado em uma
Cart
para indicar apenas o destino de um pedido de entrega.
O local finalizado também estará presente no
TransactionDecisionValue
se o usuário fizer o pedido. Para pedidos que especificam a retirada, um local não é incluído (nem mesmo um vazio).
A tabela a seguir lista as propriedades do tipo Location
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
coordinates |
Coordinates |
||
formattedAddress |
String |
Mostra 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 deve 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 |
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 com três letras no formato ISO 4217. Exemplo: |
|
units |
String |
As unidades inteiras do montante. Por exemplo, se ocurrencyCode for "USD", a unidade "1" equivale a um dólar americano. Exemplo: |
|
nanos |
Número inteiro |
Número de unidades nano (10^-9) do montante. É necessário que o valor esteja entre -999.999.999 e +999.999.999. Use as seguintes regras: se "Units" for positivo, o valor de "nanos" deverá ser positivo ou zero. Se "unidades" for zero, "nanos" poderá ser positivo, zero ou negativo. Se "Units" for negativo, "nanos" precisará ser negativo ou zero. Por exemplo,US $-1,75 é representado como unidades = -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, cobranças de entrega, bem como 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. O pedido proposto que causou o pedido. |
|
googleOrderId |
String | Obrigatório. Código do pedido atribuído pelo Google. Esse ID precisa ser estável durante todo o ciclo de vida de um pedido. Esse ID não fica visível para o usuário final. |
|
orderDate |
Carimbo de data/hora ISO | Obrigatório. Data e hora em que o pedido foi criado. |
|
paymentInfo |
PaymentInfo |
Obrigatório. Informações de pagamento correspondentes ao pagamento desse pedido. |
O exemplo a seguir mostra um elemento Order
:
Exemplo
{ "finalOrder": { "cart": { "notes": "Guest prefers their food to be hot when it is delivered.", "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Cucina Venti" }, "lineItems": [ { "name": "Sizzling Prawns Dinner", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "16", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } }, "contact": { "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" } } }, "otherItems": [ { "name": "Service fee", "type": "FEE", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } } }, { "name": "Tax", "type": "TAX", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 370000000 } } }, { "name": "Tip", "type": "GRATUITY", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 590000000 } } } ], "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "23", "nanos": 710000000 } }, "id": "sample_final_order_id", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ], "optinForRemarketing": true } }, "googleOrderId": "sample_google_order_id", "orderDate": "2017-07-17T12:00:00Z", "paymentInfo": { "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd" }, "paymentType": "PAYMENT_CARD" } }
OrderUpdate
A tabela a seguir descreve os campos do tipo OrderUpdate que está 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 a ordem de envio da atualização. Se recibo.user_visible_order_id não for fornecido pelo menos uma vez no OrderUpdate para um pedido "CREATED", esse ID vai ser o código visível ao usuário inserido que aparece no cartão do pedido do Google. |
|
orderState |
OrderState |
Obrigatório. O novo estado do pedido. |
|
lineItemUpdates |
Map<String, LineItemUpdate > |
||
updateTime |
Carimbo de data/hora ISO | Obrigatório. A hora em que o pedido foi atualizado. |
|
orderManagementActions |
Lista<OrderManagementAction > |
Ações pós-pedido, como entrar em contato com o suporte e ver detalhes do pedido É preciso ter no mínimo 1 item e no máximo 6 itens. |
|
rejectionInfo |
RejectionInfo |
Obrigatório quando
|
|
cancellationInfo |
CancellationInfo |
Obrigatório quando
|
|
inTransitInfo |
InTransitInfo |
O uso desse campo foi descontinuado. |
|
fulfillmentInfo |
FulfillmentInfo |
O uso desse campo foi descontinuado. |
|
receipt |
Receipt |
Obrigatório quando
Forneça o código do pedido visível ao usuário em um recibo. |
|
totalPrice |
Price |
Preço total do pedido. |
|
infoExtension |
FoodOrderUpdateExtension |
Define mais detalhes da atualização do pedido, como o intervalo de entrega ou retirada estimada. |
O exemplo a seguir mostra um elemento OrderUpdate
:
Exemplo
{ "actionOrderId": "sample_action_order_id", "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "41", "nanos": 600000000 } }, "lineItemUpdates": { "sample_item_id_1": { "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "reason": "This item has an updated price." } }, "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "updateTime": "2017-07-17T12:00:00Z", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } }
PickupInfo
A tabela a seguir lista as propriedades do tipo PickupInfo
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
pickupTimeIso8601 |
String |
Horário de retirada estimado, no formato de carimbo de data/hora ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" ou formato de duração: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Por exemplo, PT90M representa uma duração de 90 minutos. O valor padrão "PT0M" indica que o horário de retirada preferido é o mais rápido possível. Referência: https://pt.wikipedia.org/wiki/ISO_8601#representações_de_data_e_hora_combinadas. Use essa informação para atualizar o tempo estimado de retirada na resposta da finalização da compra. 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, um oblast ou uma prefeitura. Exemplo: |
|
locality |
String |
A cidade deste local. Nas regiões em que as localidades não são bem definidas ou não se encaixam nessa estrutura, não especifique a localidade e use o campo addressLines. Exemplo: |
|
addressLines |
List<String> |
Uma ou mais linhas para especificar o endereço. Este campo não deve ser modificado porque pode conter localidades pouco claras. Exemplo: |
|
recipients |
List<String> |
Lista dos destinatários de um pedido. Este 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 do pedido proposto. |
|
cart |
Cart |
Obrigatório. Itens do usuário. |
|
otherItems |
Lista<LineItem > |
Itens adicionados pelo fornecedor, como taxas de entrega, outras taxas e impostos. Outros itens também podem conter gratuidade e/ou desconto adicionados pelo usuário. Não é possível 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 de pedidos de comida. |
|
disclaimers |
Lista<Disclaimer > |
Corresponde a mensagens de exoneração de responsabilidade que serão mostradas na interface antes do pedido ser feito. |
O exemplo a seguir mostra um elemento ProposedOrder
:
Exemplo
{ "id": "sample_proposed_order_id_1", "otherItems": [ { "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }, { "name": "Delivery fee", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 500000000 } }, "type": "TAX" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "36", "nanos": 730000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] } }
SublineNote
A tabela a seguir lista as propriedades do tipo SublineNote
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
note |
String | Obrigatório. |
Carimbo de data/hora
A data e a hora no seguinte formato:
"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
TransactionDecisionValue
Contém oOrder
.
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" } } }
Solicitação de atendimento
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 feitas em um ambiente de sandbox. |
|
conversation |
Conversation |
||
inputs |
Lista<Input > |
Obrigatório. Contém os argumentos esperados para o check-out de um carrinho. É preciso ter exatamente 1 item. |
O exemplo a seguir mostra um elemento AppRequest
:
Exemplo 1
{ "isInSandbox": true, "inputs": [ { "intent": "actions.foodordering.intent.CHECKOUT", "arguments": [ { "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.Cart", "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Cucina Venti" }, "lineItems": [ { "name": "Sizzling Prawns Dinner", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "16", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } } } ] } ] }
Exemplo 2
{ "isInSandbox": true, "inputs": [ { "intent": "actions.intent.TRANSACTION_DECISION", "arguments": [ { "transactionDecisionValue": { "order": { "finalOrder": { "cart": { "notes": "Guest prefers their food to be hot when it is delivered.", "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Cucina Venti" }, "lineItems": [ { "name": "Sizzling Prawns Dinner", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "16", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } }, "contact": { "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" } } }, "otherItems": [ { "name": "Service fee", "type": "FEE", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } } }, { "name": "Tax", "type": "TAX", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 370000000 } } }, { "name": "Tip", "type": "GRATUITY", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 590000000 } } } ], "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "23", "nanos": 710000000 } }, "id": "sample_final_order_id", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ], "optinForRemarketing": true } }, "googleOrderId": "sample_google_order_id", "orderDate": "2017-07-17T12:00:00Z", "paymentInfo": { "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd" }, "paymentType": "PAYMENT_CARD" } } } } ] } ] }
CheckoutRequestMessage
UmCheckoutRequestMessage
é uma AppRequest
com a intent actions.foodordering.intent.CHECKOUT
.
SubmitOrderRequestMessage
UmSubmitOrderRequestMessage
é uma AppRequest
com a intent actions.foodordering.intent.TRANSACTION_DECISION
.
Conversa
UmConversation
é exclusivo para apenas 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 enviar a mensagem de solicitação de finalização de compra OU "actions.intent.TRANSACTION_DECISION" para enviar a mensagem de solicitação de pedido. |
|
arguments |
Lista<Argument > |
Obrigatório. Contém o carrinho a ser verificado ou o pedido a ser feito É preciso ter exatamente 1 item. |
Argumento
Contém detalhes sobre os alimentos que o usuário quer finalizar. Somente a extensão é aplicável ao pagamento. Para enviar um pedido, somente transactionDecisionValue é aplicável
A tabela a seguir lista as propriedades do tipo Argument
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
É necessário exatamente um dos grupos de propriedades a seguir. | |||
extension |
Grupo 1 | Cart |
detalha os alimentos que o usuário quer finalizar. |
transactionDecisionValue |
Grupo 2 | TransactionDecisionValue |
Contém o pedido a ser feito, além dos detalhes de pagamento. |
Resposta ao atendimento do pedido
AppResponse
A tabela a seguir lista as propriedades do tipo AppResponse
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
expectUserResponse |
Const |
Defina como falso. Valor: |
|
finalResponse |
FinalResponse |
Obrigatório. Contém sua resposta ao pagamento do carrinho. |
O exemplo a seguir mostra um elemento AppResponse
:
Exemplo 1
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "checkoutResponse": { "proposedOrder": { "id": "sample_proposed_order_id_1", "otherItems": [ { "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }, { "name": "Delivery fee", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 500000000 } }, "type": "TAX" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "36", "nanos": 730000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }, "additionalPaymentOptions": [ { "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Cash on delivery." } } ] } } } ] } } }
Exemplo 2
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "updateTime": "2017-07-17T12:00:00Z", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "CUSTOMER_SERVICE", "button": { "title": "Call customer service", "openUrlAction": { "url": "tel:+18005554679" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } } } ] } } }
Exemplo 3
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "error": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension", "foodOrderErrors": [ { "error": "CLOSED", "description": "The restaurant is closed." } ] } } } ] } } }
Exemplo 4
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "checkoutResponse": { "proposedOrder": { "otherItems": [ { "name": "Delivery Fees", "subLines": [], "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "subLines": [], "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 370000000 } }, "type": "TAX" }, { "name": "Promotion", "subLines": [], "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": 0 } }, "id": "OWG_ACTIVE_CODE", "type": "DISCOUNT" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "promotions": [ { "coupon": "OWG_ACTIVE_CODE" } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "14", "nanos": 860000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2018-04-10T01:20:08.471Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:publishableKey": "pk_live_stripe_client_key", "stripe:version": "2017-04-06" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "VISA", "JCB" ], "prepaidCardDisallowed": true, "billingAddressRequired": true } } } } } ] } } }
CheckoutResponseMessage
UmCheckoutResponseMessage
é um AppResponse
com
um checkoutResponse
ou error
no
StructuredResponse
.
SubmitOrderResponseMessage
UmSubmitOrderResponseMessage
é um AppResponse
com
um orderUpdate
na StructuredResponse
.
FinalResponse
Sua resposta para a finalização da compra ou SubmitOrderRequestMessage.
A tabela a seguir lista as propriedades do tipo FinalResponse
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
richResponse |
RichResponse |
Obrigatório. Contém sua resposta para CheckoutRequestMessage ou SubmitOrderRequestMessage. |
CheckoutResponse
A tabela a seguir lista as propriedades do tipo CheckoutResponse
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
proposedOrder |
ProposedOrder |
Obrigatório. Pedido proposto para ser usado na transação. |
|
paymentOptions |
PaymentOptions |
Obrigatório. Opção de pagamento padrão selecionada para o usuário. |
|
additionalPaymentOptions |
Lista<PaymentOptions > |
Opções de pagamento alternativas disponíveis para o usuário. |
O exemplo a seguir mostra um elemento CheckoutResponse
:
Exemplo
{ "proposedOrder": { "id": "sample_proposed_order_id_1", "otherItems": [ { "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }, { "name": "Delivery fee", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 500000000 } }, "type": "TAX" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "36", "nanos": 730000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }, "additionalPaymentOptions": [ { "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Cash on delivery." } } ] }
Item
Contém sua resposta para uma finalização de compra ou SubmitOrderRequestMessage.
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 no carrinho.
A tabela a seguir lista as propriedades do tipo RichResponse
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
items |
Lista<Item > |
Obrigatório. É preciso ter exatamente 1 item. |
StructuredResponse
Para CheckoutResponseMessage, pode ser um dos seguintes: CheckoutResponse Indica um checkout bem-sucedido. OR FoodErrorExtension: indica uma falha durante a finalização da compra. A resposta pode incluir um ProposedOrder e PaymentOptions corrigidos 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 grupos de propriedades a seguir. | |||
checkoutResponse |
Grupo 1 | CheckoutResponse |
Finalizamos itens com tributos e descontos. |
error |
Grupo 2 | FoodErrorExtension |
Erros observados nos itens do carrinho. Dependendo da natureza do erro, essa propriedade pode incluir um ProposedOrder e PaymentOptions corrigidos ou apenas uma mensagem de erro sem PaymentOptions. |
orderUpdate |
Grupo 3 | OrderUpdate |
Atualizações de pedidos assíncronos
Esta seção descreve os tipos de alto nível que compõem as solicitações e respostas de uma interação típica de pedido de comida.AsyncOrderUpdateRequestMessage
Notifica o usuário sobre alterações após o envio e a confirmação de um pedido. Por exemplo, é possível notificar o usuário que o pedido está em trânsito ou se o preço mudou. Para mais informações, consulteA tabela a seguir lista as propriedades do tipo AsyncOrderUpdateRequestMessage
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
isInSandbox |
Booleano |
Indica que o pedido para o qual essa atualização foi enviada é um pagamento sandbox. |
|
customPushMessage |
CustomPushMessage |
Obrigatório. Contém o OrderUpdate da solicitação. |
O exemplo a seguir mostra um elemento AsyncOrderUpdateRequestMessage
:
Exemplo
{ "isInSandbox": true, "customPushMessage": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "IN_TRANSIT", "label": "Order is on the way" }, "inTransitInfo": { "updatedTime": "2017-07-17T12:00:00Z" }, "updateTime": "2017-07-17T12:00:00Z", "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } } }
AsyncOrderUpdateResponseMessage
Depois que você envia umAsyncOrderUpdateRequestMessage
, o Google responde com um status HTTP 200 e um corpo vazio. Se a atualização não for bem-sucedida, o Google responderá com detalhes sobre o motivo da falha.
Tipos de atualização de pedidos
Botão
Define um elemento da interface do usuário que você pode adicionar 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 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. Motivo da rejeição exibido em texto quando OrderState.state é "CANCELLED". Exemplo: |
O exemplo a seguir mostra um elemento CancellationInfo
:
Exemplo
{ "reason": "Insufficient inventory" }
FoodOrderUpdateExtension
Esse tipo fornece ao usuário um intervalo estimado para 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 sido alteradas desde o último envio.
Forneça uma estimativa conservadora para o intervalo de atendimento de pedidos para que as expectativas do usuário sejam atendidas de maneira consistente. Por exemplo, se o pedido está estimado para ser entregue hoje às 13h, envie um intervalo estimado que seja consistente com as variações devido às condições de trânsito, como hoje das 12h45 às 13h15.
Uma duração ou um carimbo de data/hora ISO 8601 é interpretado como o intervalo entre o updateTime
do OrderUpdate
(em essência, "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 dessa extensão. Esse campo é sempre definido como "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension". Valor: |
|
estimatedFulfillmentTimeIso8601 |
String |
O horário estimado de entrega ou retirada do pedido. A string precisa estar no formato ISO 8601 e corresponder a um intervalo em vez de um único tempo fixo. As convenções aceitáveis são: intervalos, durações e datas/horas. Este campo pode ser enviado em SubmitOrderResponseMessage ou AsyncOrderUpdateRequestMessage quando as informações ficarem disponíveis ou houver uma mudança, como chegadas antecipadas ou atrasadas. Exemplo: |
|
foodOrderErrors |
Lista<FoodOrderError > |
Descreve os erros que ocorreram após o pedido. Recomendamos um erro por carrinho ou item. Use FoodOrderUpdateExtension.FoodOrderErrors para todos os erros não cobertos por RejectionInfo. Não pode ter menos de 1 item. |
O exemplo a seguir mostra um elemento FoodOrderUpdateExtension
:
Exemplo 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" }
Exemplo 2
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "foodOrderErrors": [ { "error": "NO_CAPACITY", "description": "Sorry, the restaurant cannot take your order right now." } ] }
FulfillmentInfo
A tabela a seguir lista as propriedades do tipo FulfillmentInfo
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
É necessário exatamente um dos grupos de propriedades a seguir. | |||
deliveryTime |
Grupo 1 | Carimbo de data/hora ISO |
Uso deestimatedFulfillmentTimeIso8601 na mensagem de FoodOrderingUpdateExtension |
pickupTime |
Grupo 2 | Carimbo de data/hora ISO |
Uso deestimatedFulfillmentTimeIso8601 na mensagem de 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 |
Uso deestimatedFulfillmentTimeIso8601 na mensagem de 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 alteração. 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 deve ser "tel". "CUSTOMER_SERVICE": o prefixo deve ser "mailto", "tel", "http" ou "https". Exemplo: |
OrderManagementAction
Com o gerenciamento de pedidos, os usuários recebem suporte pós-pedido e ele precisa ser enviado em
cada OrderUpdate
no pedido de envio
AppResponse
e em cada
AsyncOrderUpdateRequestMessage
ação subsequente enviada para um pedido específico pode 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 "CONFIRMADO", 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 "FULFILLED",
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 os tipos relacionados aOrderManagementAction
.
O tipo OrderManagementActionType
tem estes valores possíveis:
CUSTOMER_SERVICE
: e-mail e/ou número de contato do atendimento ao cliente a ser exibido na página de confirmação do pedido. Isto é obrigatório. O prefixo openUrlAction.url precisa ser "mailto", "tel", "http" ou "https".EMAIL
: ação de e-mail apenas na página de detalhes do pedido. O prefixo openUrlAction.url precisa ser "mailto".CALL_DRIVER
: ação de chamada apenas na página de detalhes do pedido. O prefixo openUrlAction.url precisa ser "tel".CALL_RESTAURANT
: ação de chamada apenas na página de detalhes do pedido. O prefixo openUrlAction.url precisa ser "tel".
OrderState
O estado atual do pedido. Cada valor de 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 ao 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 os tipos relacionados aOrderState
.
O tipo OrderStateEnum
tem estes valores possíveis:
CREATED
: pedido criado pelo integrador e aguardando a confirmação do provedor. Corresponde ao status de compra "Pedido".CONFIRMED
: pedido confirmado pelo fornecedor e ativo. Corresponde ao status de compra "Aceita".REJECTED
: pedido rejeitado pelo integrador ou provedor. Corresponde ao status de compra "Recusada".CANCELLED
: o usuário cancelou o pedido. Corresponde ao status de compra "Cancelada".IN_PREPARATION
: a comida está sendo preparada. Corresponde ao status de compra "Status desconhecido".READY_FOR_PICKUP
: comida 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 "Retirado".
Comprovante
Envie esse tipo em um pedido de envioAppResponse
, em que OrderState
é "CONFIRMED", "FULFILLED" ou "IN_cla". Envie o comprovante quando o userVisibleOrderId
estiver disponível. Não é necessário continuar
enviando o comprovante nas 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 for "CONFIRMED", "IN_TRANSPORTE" ou "FULFILLED". Este campo é o único ID do pedido (geralmente o código do pedido do restaurante) mostrado no recibo do integrador e no cartão de pedido do Google. O usuário precisa usar esse ID para fazer referência ao 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 será o userVisibleOrderId. Por exemplo, talvez você só tenha um userVisibleOrderId até que o pedido seja confirmado pelo restaurante. Após a confirmação, você deverá enviar uma AsyncOrderUpdateRequestMessage com um 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. Este campo não é visível para os usuários. |
O exemplo a seguir mostra um elemento RejectionInfo
:
Exemplo
{ "type": "PAYMENT_DECLINED", "reason": "There is an issue with payment processing." }
RejectionType
O tipo RejectionType
tem estes valores possíveis:
INELIGIBLE
: o usuário não está qualificado devido a preocupações relacionadas à política ou a riscos.PAYMENT_DECLINED
: ocorreu um problema no processamento do pagamento.UNAVAILABLE_SLOT
: o pedido não pode ser atendido no horário com antecedência especificado pelo DeliveryInfo ou PickupInfo.PROMO_NOT_APPLICABLE
: há um problema com a promoção.UNKNOWN
: qualquer outro motivo.
Tipos relacionados a pagamentos
Nesta seção, descrevemos os tipos relacionados a pagamento usados para o atendimento de pedidos de comida.ActionProvidedPaymentOptions
Requisitos para uma forma de pagamento fornecida pela 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 comprovante. Exemplo: |
|
onFulfillmentPaymentData |
OnFulfillmentPaymentData |
Dados adicionais para o paymentType "ON_FULFILLMENT". Por exemplo, é possível usar esse campo para especificar se dinheiro ou cartão é aceito no atendimento do pedido. |
O exemplo a seguir mostra um elemento ActionProvidedPaymentOptions
:
Exemplo
{ "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } }
AllowedAuthMethods
O tipo AllowedAuthMethods
tem estes valores possíveis:
PAN_ONLY
: método de autenticação associado aos 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) com o mês e o ano de validade.
AllowedCardNetworks
O tipo AllowedCardNetworks
tem estes valores possíveis:
AMEX
DISCOVER
INTERAC
JCB
MASTERCARD
VISA
BillingAddressParameters
Esse objeto permite definir campos adicionais 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, localização, região, código do país e código postal. |
O exemplo a seguir mostra um elemento BillingAddressParameters
:
Exemplo 1
{ "format": "MIN" }
Exemplo 2
{ "format": "FULL" }
CardParameters
Use esse objeto para configurar o suporte do seu site para a API Google Pay.
A tabela a seguir lista as propriedades do tipo CardParameters
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
allowedAuthMethods |
List<Const> | Obrigatório. Campos compatíveis para autenticar uma transação com cartão. Não pode ter menos de 1 item. |
|
allowedCardNetworks |
Lista<AllowedCardNetworks > |
Obrigatório. Uma ou mais redes de cartões aceitas por você que também são aceitas pela API Google Pay. Não pode ter menos de 1 item. |
|
billingAddressRequired |
Booleano |
Defina como verdadeiro se você precisar de um endereço de faturamento. Solicite um endereço de faturamento somente se for necessário para processar a transação. Outras solicitações de dados podem aumentar o atrito no processo de finalização da compra e gerar taxas de conversão mais baixas. |
|
billingAddressParameters |
BillingAddressParameters |
Os campos esperados retornados se billingAddressRequired estiver definido como verdadeiro. |
|
cvcRequired |
Booleano |
Defina como "true" se estiver usando TimesofMoney. É "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 base 64 contendo 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 esse objeto para configurar o suporte do seu site para a API Google Pay. |
|
supportedCardNetworks |
Lista<SupportedCardNetworks > |
Use facilitationSpecification. Tipo de redes de cartões compatíveis com o agente. O uso desse campo foi descontinuado. |
|
prepaidCardDisallowed |
Booleano |
Use facilitationSpecification. Indica se um cartão pré-pago é permitido como tipo de pagamento. O uso desse campo foi descontinuado. |
|
billingAddressRequired |
Booleano |
Use facilitationSpecification. Indica se um endereço de faturamento é obrigatório ou não. O uso desse campo foi descontinuado. |
|
tokenizationParameters |
TokenizationParameters |
O uso desse campo foi descontinuado. |
O exemplo a seguir mostra um elemento GoogleProvidedPaymentOptions
:
Exemplo 1
{ "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" }
Exemplo 2
{ "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "braintree", "braintree:apiVersion": "v1", "braintree:sdkVersion": "1.4.0", "braintree:merchantId": "a1b2c3d4e5", "braintree:clientKey": "production_braintree_client_key", "braintree:authorizationFingerprint": "same_as_client_key" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "JCB", "VISA" ], "prepaidCardDisallowed": true }
Exemplo 3
{ "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:publishableKey": "pk_live_stripe_client_key", "stripe:version": "2017-04-06" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "VISA", "JCB" ], "prepaidCardDisallowed": true, "billingAddressRequired": true }
MerchantInfo
Use esse objeto para configurar o suporte do seu site para a 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 é renderizado 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 |
Lista<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 os 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 | Outros pares de chave-valor |
O exemplo a seguir mostra um elemento Parameters
:
Exemplo 1
{ "gatewayMerchantId": "90412491", "gateway": "olo" }
Exemplo 2
{ "gateway": "braintree", "braintree:apiVersion": "v1", "braintree:sdkVersion": "1.4.0", "braintree:merchantId": "YOUR_MERCHANT_ID", "braintree:clientKey": "YOUR_BRAINTREE_SANDVOX_OR_PRODUCTION_KEY" }
PaymentDataRequest
Use esse objeto para configurar o suporte do seu site para a 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 |
Lista<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 se o usuário concorda ou não com ela. Esse campo inclui o preço total e o status do preço. |
O exemplo a seguir mostra um elemento PaymentDataRequest
:
Exemplo
{ "apiVersion": 2, "apiVersionMinor": 0, "merchantInfo": { "merchantId": "10391231", "merchantName": "Burrito Town" }, "allowedPaymentMethods": [ { "type": "CARD", "parameters": { "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "VISA", "AMEX", "MASTERCARD" ], "billingAddressRequired": true, "billingAddressParameters": { "format": "FULL" }, "cvcRequired": false }, "tokenizationSpecification": { "type": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:version": "2019-05-16", "stripe:publishableKey": "pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA" } } } ], "transactionInfo": { "currencyCode": "INR", "totalPriceStatus": "ESTIMATED", "totalPrice": "185.00" } }
PaymentInfo
Informações relacionadas ao pagamento de um pedido.
A tabela a seguir lista as propriedades do tipo PaymentInfo
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
displayName |
String | Obrigatório. Nome do instrumento de pagamento visível para o usuário que será exibido no comprovante. |
|
paymentType |
PaymentType |
Obrigatório. |
|
googleProvidedPaymentInstrument |
GoogleProvidedPaymentInstrument |
Token que pode ser usado pela ação. Só especifique isso se você tiver especificado GoogleProvidedPaymentOptions como uma opção de pagamento em CheckoutResponseMessage. |
O exemplo a seguir mostra um elemento PaymentInfo
:
Exemplo 1
{ "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd" }, "paymentType": "PAYMENT_CARD" }
Exemplo 2
{ "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd", "billingAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "123 Random Street", "Unit ABC" ], "recipients": [ "sample_receipient" ] } }, "paymentType": "PAYMENT_CARD" }
PaymentMethod
Use esse objeto para configurar o suporte do seu site para a 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 da forma de pagamento fornecida. |
|
tokenizationSpecification |
TokenizationSpecification |
Obrigatório. Configurar uma conta ou um provedor de descriptografia para receber informações de pagamento. Esta propriedade é obrigatória para a forma de pagamento CARD. |
O exemplo a seguir mostra um elemento PaymentMethod
:
Exemplo
{ "type": "CARD", "parameters": { "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "VISA", "AMEX", "MASTERCARD" ], "billingAddressRequired": false }, "tokenizationSpecification": { "type": "PAYMENT_GATEWAY", "parameters": { "gatewayMerchantId": "90412491", "gateway": "olo" } } }
PaymentOptions
A tabela a seguir lista as propriedades do tipo PaymentOptions
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
É necessário exatamente um dos grupos de propriedades a seguir. | |||
googleProvidedOptions |
Grupo 1 | GoogleProvidedPaymentOptions |
Mutuamente exclusivo com actionProvidedOptions. Use para fazer pagamentos on-line com o gPay. |
actionProvidedOptions |
Grupo 2 | ActionProvidedPaymentOptions |
Mutuamente exclusivo com googleProvidedOptions. Use para "dinheiro 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 estes valores possíveis:
Cash
Card
UPI
Paytm
PaymentType
O tipo PaymentType
tem estes valores possíveis:
PAYMENT_CARD
: para GoogleProvidedPaymentOptions.ON_FULFILLMENT
: para ActionProvidedPaymentOptions.
SupportedCardNetworks
Define os tipos relacionados aGoogleProvidedPaymentOptions
.
O tipo SupportedCardNetworks
tem estes valores possíveis:
UNSPECIFIED_CARD_NETWORK
AMEX
DISCOVER
JCB
MASTERCARD
VISA
TokenizationParameters
Define os tipos relacionados aoGoogleProvidedPaymentOptions
.
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 aceitos. |
|
parameters |
Parameters |
Use facilitationSpecification. |
TokenizationSpecification
Este objeto permite configurar uma conta para receber informações de pagamento sujeitas a cobrança.
A tabela a seguir lista as propriedades 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 de moeda em ordem alfabética 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 decimal opcional de duas casas decimais. Este campo precisa ter o mesmo valor que "cart.totalPrice". |
O exemplo a seguir mostra um elemento TransactionInfo
:
Exemplo
{ "totalPriceStatus": "ESTIMATED", "totalPrice": "12.34", "currencyCode": "USD" }