Tipos de base
Carrinho
Contém detalhes do pedido, bem como se a solicitação é para retirada ou entrega. Um carrinho também contém detalhes da entrega, gratificação e entrega endereço IP. O objetoCart
é definido em um arquivo Checkout AppRequest
.f
Você inclui uma cópia do carrinho no seu Checkout AppResponse
A tabela a seguir lista as propriedades para o tipo Cart
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
@type |
Const |
O tipo deste objeto. Omita este campo se o objeto Cart pai fizer parte de ProposedOrder. Valor: |
|
id |
String |
ID opcional do carrinho. |
|
merchant |
Merchant |
Comerciante afiliado a este carrinho. |
|
lineItems |
Lista<LineItem > |
Obrigatório. Lista de bens ou serviços que o usuário está pedindo. Não pode ter menos de 1 item. |
|
promotions |
Lista<Promotion > |
Promoção aplicada a este carrinho. Apenas uma promoção é aceita no momento. |
|
notes |
String |
Observações sobre o pedido ou instruções de entrega. |
|
extension |
FoodCartExtension |
Define detalhes sobre o usuário, como preferências de atendimento do pedido. |
O exemplo a seguir mostra um elemento Cart
:
Exemplo 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.Cart", "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Cucina Venti" }, "lineItems": [ { "name": "Sizzling Prawns Dinner", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "16", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }
Exemplo 2
{ "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }
Contato
Especifica os detalhes sobre a pessoa que vai receber o pedido. Ele está disponível apenas emAppResponse
A tabela a seguir lista as propriedades para o tipo Contact
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
displayName |
String |
Nome da pessoa que vai receber o pedido, como você quer que ele seja exibido. Use este campo se firstName e lastName não forem especificados. Exemplo: |
|
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 recebe o pedido fez login com a Conta do Google. |
O exemplo a seguir mostra um elemento Contact
:
Exemplo
{ "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" }
CustomPushMessage
Contém oOrderUpdate
da solicitação.
A tabela a seguir lista as propriedades para o tipo CustomPushMessage
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
orderUpdate |
OrderUpdate |
Obrigatório. As informações do pedido foram atualizadas. |
O exemplo a seguir mostra um elemento CustomPushMessage
:
Exemplo
{ "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "IN_TRANSIT", "label": "Order is on the way" }, "inTransitInfo": { "updatedTime": "2017-07-17T12:00:00Z" }, "updateTime": "2017-07-17T12:00:00Z", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } }
DeliveryInfo
A tabela a seguir lista as propriedades para o tipo DeliveryInfo
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
deliveryTimeIso8601 |
String |
Tempo de entrega estimado, no formato de carimbo de data/hora ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" ou formato de duração: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Por exemplo, PT90M representa uma duração de 90 minutos. O valor padrão, "PT0M", indica que o tempo de entrega preferencial é o mais rápido possível. Referência: https://pt.wikipedia.org/wiki/ISO_8601 Use essa informação para atualizar o tempo de entrega estimado durante a resposta da finalização da compra. Exemplo: |
O exemplo a seguir mostra um elemento DeliveryInfo
:
Exemplo
{ "deliveryTimeIso8601": "PT90M" }
Exoneração de responsabilidade
A tabela a seguir lista as propriedades para o tipo Disclaimer
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
predefinedMessage |
PredefinedMessage |
Obrigatório. Para mostrar mensagens predefinidas de exoneração de responsabilidade durante a finalização da compra. |
|
feeAmount |
Money |
O parceiro cobrará do comerciante uma taxa de valor N por esse pedido. |
|
feeAmountRange |
FeeAmountRange |
O parceiro vai cobrar do restaurante uma taxa de N a M por pedido. |
|
feePercent |
Número |
O parceiro cobrará do comerciante uma taxa de N% pelo pedido. |
|
feePercentRange |
FeePercentRange |
O parceiro cobrará do comerciante uma taxa de N% a M% por pedido. |
O exemplo a seguir mostra um elemento Disclaimer
:
Exemplo 1
{ "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER" }
Exemplo 2
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE" }
Exemplo 3
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feePercent": 25 }
Exemplo 4
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feePercentRange": { "minFeePercent": 20, "maxFeePercent": 30 } }
Exemplo 5
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feeAmount": { "currencyCode": "AUD", "units": 2, "nanos": 500000000 } }
Exemplo 6
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feeAmountRange": { "minFeeAmount": { "currencyCode": "AUD", "units": 2, "nanos": 500000000 }, "maxFeeAmount": { "currencyCode": "AUD", "units": 10, "nanos": 0 } } }
Erro
O tipo Error
tem os seguintes valores possíveis:
CLOSED
: o restaurante está fechado no horário do pedido.NO_CAPACITY
: não há capacidade de serviço disponível (por exemplo, uma interrupção temporária devido a horários de pico).NO_COURIER_AVAILABLE
: não é possível processar o pedido por causa de um número limitado de funcionários na entrega.REQUIREMENTS_NOT_MET
: as restrições para aceitar o pedido não foram cumpridas (por exemplo, tamanho mínimo da cesta).UNAVAILABLE_SLOT
: o pedido não pode ser concluído no horário especificado por DeliveryInfo ou PickupInfo.OUT_OF_SERVICE_AREA
: o pedido não pode ser entregue no endereço do usuário.PROMO_EXPIRED
: não foi possível aplicar porque a promoção expirou.PROMO_NOT_APPLICABLE
: código de erro genérico para capturar todos os casos de falha na aplicação do código promocional, se nenhum dos outros erros for adequado.PROMO_NOT_RECOGNIZED
: o código do cupom não foi reconhecido.PROMO_ORDER_INELIGIBLE
: o pedido atual não está qualificado para este cupom.PROMO_USER_INELIGIBLE
: o usuário atual não está qualificado para este cupom.AVAILABILITY_CHANGED
: o item não está mais disponível ou não há itens suficientes para atender à solicitação.INCORRECT_PRICE
: erros de preço em taxas ou no total.INVALID
: um item de linha, FulfillmentOption ou promoção contém dados inválidos.NOT_FOUND
: um item de linha, FulfillmentOption ou promoção não pode ser encontrado.PRICE_CHANGED
: o preço de um item mudou.
FeeAmountRange
A tabela a seguir lista as propriedades para o tipo FeeAmountRange
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
minFeeAmount |
Money |
Limite inferior do valor da taxa cobrada. |
|
maxFeeAmount |
Money |
Limite superior do valor da taxa cobrada. |
FeePercentRange
A tabela a seguir lista as propriedades para o tipo FeePercentRange
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
minFeePercent |
Número |
Limite inferior da porcentagem da taxa cobrada. |
|
maxFeePercent |
Número |
Limite superior da porcentagem da taxa cobrada. |
FoodCartExtension
Contém detalhes sobre o usuário, como preferências de fulfillment.
A tabela a seguir lista as propriedades para o tipo FoodCartExtension
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
@type |
Const |
Tipo de extensão. Esse campo está sempre definido como "type.googleapis.com/google.actions.v2.orders.FoodCartExtension". Valor: |
|
contact |
Contact |
Dados de contato da pessoa que vai receber o pedido. Os detalhes incluem o nome, o número de telefone e o endereço de e-mail da pessoa. |
|
fulfillmentPreference |
FulfillmentOption |
Obrigatório. Preferência de atendimento do usuário. |
|
location |
Location |
Na CheckoutRequestMessage, este campo especifica o endereço de entrega, obrigatório se o pedido for para entrega. No caso de pedidos para retirada ou retirada, esse campo não é incluído na mensagem. |
O exemplo a seguir mostra um elemento FoodCartExtension
:
Exemplo 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } }
Exemplo 2
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } }, "contact": { "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" } }
FoodErrorExtension
Identifica um ou mais erros que ocorreram durante o processamento de uma solicitação. A tabela a seguir descreve os campos do tipoFoodErrorExtension
.
Os erros podem ser enviados em um CheckoutResponse
.
A tabela a seguir lista as propriedades para o tipo FoodErrorExtension
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
@type |
Const | Obrigatório. Tipo de extensão. Valor: |
|
foodOrderErrors |
Lista<FoodOrderError > |
Obrigatório. Matriz de objetos FoodOrderError que descreve os erros que ocorreram. Recomendamos um erro por carrinho ou item. Não pode ter menos de 1 item. |
|
correctedProposedOrder |
ProposedOrder |
Obrigatório quando
Um novo ProposedOrder com correções. Retorne esse objeto se houver erros recuperáveis no ProposedOrder original. Por exemplo, uma alteração no preço de um ou mais itens de linha no carrinho é um erro recuperável. Os erros recuperáveis com um ProposedOrder válido passam para o estágio de confirmação, em vez de exigir que o usuário revise o carrinho. |
|
paymentOptions |
PaymentOptions |
Obrigatório quando
Opções de pagamento padrão selecionadas para o usuário. |
|
additionalPaymentOptions |
Lista<PaymentOptions > |
Opções de pagamento alternativas disponíveis para o usuário. |
O exemplo a seguir mostra um elemento FoodErrorExtension
:
Exemplo
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension", "foodOrderErrors": [ { "error": "PRICE_CHANGED", "id": "sample_item_offer_id_1", "description": "The price has changed.", "updatedPrice": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, { "error": "PRICE_CHANGED", "id": "sample_item_offer_id_2", "description": "The price has changed.", "updatedPrice": { "currencyCode": "USD", "units": "8" } } ], "correctedProposedOrder": { "id": "sample_corrected_proposed_order_id_1", "otherItems": [ { "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }, { "name": "Delivery fee", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 500000000 } }, "type": "TAX" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "36", "nanos": 730000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:publishableKey": "pk_live_stripe_client_key", "stripe:version": "2017-04-06" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "JCB", "VISA" ], "prepaidCardDisallowed": true } } }
FoodItemExtension
Define complementos para alimentos.
A tabela a seguir lista as propriedades para o tipo FoodItemExtension
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
@type |
Const | Obrigatório. Tipo de extensão. Esse campo está sempre definido como "type.googleapis.com/google.actions.v2.orders.FoodItemExtension". Valor: |
|
options |
Lista<FoodItemOption > |
Uma opção pode ser um item de complemento ou um grupo de complementos com um conjunto de complementos. |
O exemplo a seguir mostra um elemento FoodItemExtension
:
Exemplo
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1, "subOptions": [ { "id": "10239138", "offerId": "912391723", "name": "Fries", "price": { "currencyCode": "USD", "units": "2", "nanos": 230000000 }, "quantity": 1 } ] } ] }
FoodItemOption
A tabela a seguir lista as propriedades para o tipo FoodItemOption
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
id |
String |
ID exclusivo atribuído pelo Google. Ao enviar um FoodOrderError ou AsyncOrderUpdateRequest, use este campo para fazer a diferenciação nos casos em que um carrinho contém mais de um item com o mesmo offerId. Exemplo: |
|
offerId |
String |
ID da oferta do item. Exemplo: |
|
name |
String |
O nome da opção. Exemplo: |
|
price |
Money |
||
note |
String |
Observação relacionada à opção. |
|
quantity |
Número |
Para opções que são itens, o número de itens. Exemplo: |
|
subOptions |
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 para o 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. Ele é o Order.id atribuído pelo Google para os itens de menu e o FoodItemOption.id para os complementos. |
|
description |
String |
Descrição do erro. Essa descrição se destina à geração de registros internos e não é visível aos usuários. |
|
updatedPrice |
Money |
Obrigatório quando
Novo preço de um item que causou o erro. Isso é necessário somente quando o erro é "PRICE_CHANGED". |
|
availableQuantity |
Número inteiro | Obrigatório quando
Nova quantidade disponível do item que causou o erro. Isso é necessário apenas quando o erro é "INVALID" ou "NOT_FOUND". O valor deve ser zero para "INVALID" e "NOT_FOUND". |
O exemplo a seguir mostra um elemento FoodOrderError
:
Exemplo 1
{ "error": "CLOSED", "description": "This store is currently reachable. Please try again later." }
Exemplo 2
{ "error": "PRICE_CHANGED", "id": "french_fries", "description": "The price has changed.", "updatedPrice": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }
FoodOrderExtension
Contém informações de fulfillment sobre o pedido.
A tabela a seguir lista as propriedades para o tipo FoodOrderExtension
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
@type |
Const |
Tipo de extensão. Esse campo está sempre definido como "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension". Valor: |
|
availableFulfillmentOptions |
Lista<FulfillmentOption > |
Representa as opções de atendimento do pedido disponíveis. |
|
optinForRemarketing |
Booleano |
Solicitação do usuário para ativar seus canais de marketing. Por padrão, não é possível enviar conteúdo de marketing sem o consentimento do usuário. Se optinForRemarketing for verdadeiro, você poderá inscrever o usuário. Se optinForRemarketing for falso ou não estiver presente, você deverá manter o status da inscrição no seu sistema como está. Os usuários não podem desativar o recurso no Google, somente por meio de uma função de cancelamento de assinatura fornecida nos seus canais de marketing. Essa sinalização só está presente em SubmitOrderRequestMessage. |
O exemplo a seguir mostra um elemento FoodOrderExtension
:
Exemplo 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] }
Exemplo 2
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2020-08-20T11:41:00Z" } ], "optinForRemarketing": true }
FulfillmentOption
É possível usar um objetoFulfillmentOption
das seguintes maneiras:
-
Em
Checkout AppRequest
eSubmit AppRequest
, osCart.extension.fulfillmentPreference
: armazena a preferência do usuário (exibição) ou retirada). O preço é sempre 0 quando a solicitação de checkout é enviada. -
No
Checkout AppResponse
, aProposedOrder.extension.availableFulfillmentOptions
: Define uma ou mais opções de entrega (atualmente, apenas uma opção é compatíveis). Você especifica a opção padrão comoLineItem
ProposedOrder.otherItems
. AofferId
deFulfillmentOption
precisa corresponder ao ID doLineItem
especificado emProposedOrder.otherItems
.
A tabela a seguir lista as propriedades para o tipo FulfillmentOption
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
offerId |
String |
Identificador exclusivo dessa opção de fulfillment, se houver. |
|
fulfillmentInfo |
FulfillmentOptionInfo |
Obrigatório. |
|
expiresAt |
Carimbo de data/hora ISO |
Horário em que essa opção de atendimento do pedido expira. |
|
price |
Money |
Custo dessa opção. |
O exemplo a seguir mostra um elemento FulfillmentOption
:
Exemplo
{ "offerId": "offer5", "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2019-05-02T00:00:00-07:00", "price": { "currencyCode": "USD", "units": "5", "nanos": 230000000 } }
FulfillmentOptionInfo
Define informações relacionadas aoFulfillmentInfo
.
A tabela a seguir lista as propriedades para o tipo FulfillmentOptionInfo
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
Exatamente um dos seguintes grupos de propriedades é obrigatório. | |||
delivery |
Grupo 1 | DeliveryInfo |
Se presente, indica a ordem de entrega. |
pickup |
Grupo 2 | PickupInfo |
Se presente, indica um pedido para retirada. |
Imagem
A tabela a seguir lista as propriedades para o tipo Image
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
sourceUrl |
String | Obrigatório. URL da imagem. A imagem precisa ter, no mínimo, 72 x 72 pixels. Para melhores resultados, use uma imagem de pelo menos 216 x 216 pixels. A imagem precisa ter menos de 6 MB e 64 megapixels. |
LineItem
Define o conteúdo de um carrinho (Cart.lineItems
) ou cobranças adicionais por um
pedido (ProposedOrder.otherItems
).
A tabela a seguir lista as propriedades para o tipo LineItem
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
id |
String | Obrigatório quando
Para um item de linha em um carrinho (ProposedOrder.cart.lineItems[0].id), este é o ID exclusivo criado pelo Google ao criar o pedido. Para um item de linha em um ProposedOrder (ProposedOrder.otherItems[0].id), que é usado para adicionar itens como taxas de entrega e impostos, o valor de id é definido pelo fornecedor. Por exemplo, em um carrinho há dois itens iguais com instruções de preparação diferentes (como duas pizzas médias com diferentes conjuntos de coberturas). Nesse caso, os dois itens têm o mesmo offerId base. Ao enviar uma solicitação de atualização de pedido para indicar que um item foi rejeitado, use esse ID como desambiguador. Em outras palavras, se uma das pizzas for rejeitada porque não tem um recheio específico, o ID vai ajudar o Google a determinar a qual item do pedido você está se referindo. Este campo é obrigatório, exceto em otherItems. |
|
name |
String | Obrigatório. É o nome do item de linha. Essa é uma string visível para o usuário e precisa ser escrita com a primeira letra maiúscula quando possível (como "Taxa de entrega", "Taxa de serviço", "Tributo"). Este campo está truncado em 100 caracteres para os usuários. |
|
type |
LineItemType |
Obrigatório. |
|
quantity |
Número inteiro | Obrigatório quando
Número de itens incluídos. Não aplicável a ProposedOrder.otherItems. |
|
description |
String |
Descrição do item. |
|
price |
Price |
Obrigatório. O preço dos itens. Esse valor reflete o preço total de todos os produtos ou serviços do item de linha. Em outras palavras, adicione o custo de todos os complementos e multiplique pela quantidade. Por exemplo: se um item de R $10 tiver a quantidade 3, o preço será de R $30. Para uma pizza com preço base de R $5 e um complemento de R $1, o preço seria de R $6. Para duas pizzas (quantidade = 2) com preço base de R $5 e cada uma com complemento de R $1, o preço será de R $12. Cada item de linha deve ter um preço, mesmo que seja "0". Quando o tipo for DESCONTO, especifique o valor como negativo (por exemplo, "-2"). |
|
subLines |
Lista<SublineNote > |
Opcional e válido somente se o tipo for "REGULAR". Uma observação específica do item do usuário pode ser enviada nesse campo na solicitação de checkout e na solicitação de envio do pedido. Garantir que o comerciante receba a nota quando ela for fornecida. Ele estará na solicitação como subLines[0].note, que é o único valor fornecido nesse campo quando está presente em uma solicitação. Não pode haver mais de 1 item. |
|
offerId |
String | Obrigatório quando
O ID da oferta do MenuItem do item. Não aplicável a ProposedOrder.otherItems. |
|
extension |
FoodItemExtension |
Define complementos para alimentos. |
O exemplo a seguir mostra um elemento LineItem
:
Exemplo 1
{ "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }
Exemplo 2
{ "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }
LineItemType
O tipo LineItemType
tem os seguintes valores possíveis:
REGULAR
: item de linha de produtos. Aplicável a Cart.lineItems.TAX
: item de linha de tributos. Aplicável a ProposedOrder.otherItems.DISCOUNT
: item de linha de desconto. O preço precisa ser negativo. Aplicável a ProposedOrder.otherItems.GRATUITY
: item de linha de gratificação. Geralmente reservado para SubmitOrderRequestMessage para uma dica selecionada pelo usuário. Aplicável a ProposedOrder.otherItems.DELIVERY
: item de linha de exibição. Aplicável a ProposedOrder.otherItems.SUBTOTAL
: item de linha subtotal. Aplicável a ProposedOrder.otherItems.FEE
: item de linha adicional não coberto pelos outros tipos. Aplicável a ProposedOrder.otherItems.
Local
Especifica um endereço para pedidos de comida. O tipoLocation
é usado em uma
Cart
para indicar somente o destino de um pedido de entrega.
O local finalizado também está presente no
TransactionDecisionValue
se o usuário fizer o pedido. Para pedidos que especificam retirada, um local é
incluídos (nem mesmo um vazio).
A tabela a seguir lista as propriedades para o tipo Location
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
coordinates |
Coordinates |
||
formattedAddress |
String |
Exibir o endereço do local. Exemplo: |
|
postalAddress |
PostalAddress |
||
zipCode |
String |
Exemplo: |
|
city |
String |
O nome da cidade. Exemplo: |
|
notes |
String |
Observações sobre o local, como códigos do 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 para o tipo Merchant
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
id |
String |
O ID do comerciante. Se especificado, corresponde a Restaurant.@id no feed de restaurante. Exemplo: |
|
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 para o tipo Money
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
currencyCode |
String | Obrigatório. Um código de moeda de três letras no formato ISO 4217. Exemplo: |
|
units |
String |
As unidades inteiras do montante. Por exemplo, se o currencyCode for "USD", então "1" unidade é um dólar americano. Exemplo: |
|
nanos |
Número inteiro |
Número de unidades nano (10^-9) do montante. O valor precisa estar entre -999.999.999 e +999.999.999. Use as seguintes regras: se "units" for positivo, "nanos" deverá ser positivo ou zero. Se "units" for zero, "nanos" poderá ser positivo, zero ou negativo. Se "units" for negativo, "nanos" deverá ser negativo ou zero. Por exemplo,$-1,75 é representado como unidades = -1 e nanos = -750.000.000. Exemplo: |
O exemplo a seguir mostra um elemento Money
:
Exemplo 1
{ "currencyCode": "USD", "units": "36", "nanos": 730000000 }
Exemplo 2
{ "currencyCode": "EUR", "units": "10" }
Pedido
Contém o pedido final, incluindo impostos, taxas e cobranças de entrega, conforme e as informações de pagamento. Esse objeto é recebido pela sua ação em umSubmit AppRequest
:
A tabela a seguir lista as propriedades para o tipo Order
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
finalOrder |
ProposedOrder |
Obrigatório. O pedido proposto que gerou o pedido. |
|
googleOrderId |
String | Obrigatório. ID do pedido atribuído pelo Google. Esse ID precisa ser estável durante todo o ciclo de vida de um pedido. Esse ID não fica visível para o usuário final. |
|
orderDate |
Carimbo de data/hora ISO | Obrigatório. Data e hora em que o pedido foi criado. |
|
paymentInfo |
PaymentInfo |
Obrigatório. Informações de pagamento correspondentes ao pagamento desse pedido. |
O exemplo a seguir mostra um elemento Order
:
Exemplo
{ "finalOrder": { "cart": { "notes": "Guest prefers their food to be hot when it is delivered.", "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Cucina Venti" }, "lineItems": [ { "name": "Sizzling Prawns Dinner", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "16", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } }, "contact": { "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" } } }, "otherItems": [ { "name": "Service fee", "type": "FEE", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } } }, { "name": "Tax", "type": "TAX", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 370000000 } } }, { "name": "Tip", "type": "GRATUITY", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 590000000 } } } ], "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "23", "nanos": 710000000 } }, "id": "sample_final_order_id", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ], "optinForRemarketing": true } }, "googleOrderId": "sample_google_order_id", "orderDate": "2017-07-17T12:00:00Z", "paymentInfo": { "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd" }, "paymentType": "PAYMENT_CARD" } }
OrderUpdate
A tabela a seguir descreve os campos do tipo OrderUpdate que é incluído emAppResponse
.
A tabela a seguir lista as propriedades para o tipo OrderUpdate
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
actionOrderId |
String | Obrigatório. ID exclusivo do pedido no sistema do integrador usado para identificar o pedido de envio da atualização. Se recibo.user_visible_order_id não for fornecido pelo menos uma vez em OrderUpdate para um "CREATED" pedido, esse será o ID visível do usuário inserido e exibido no card do pedido do Google. |
|
orderState |
OrderState |
Obrigatório. O novo estado do pedido. |
|
lineItemUpdates |
Map<String, LineItemUpdate > |
||
updateTime |
Carimbo de data/hora ISO | Obrigatório. A hora em que o pedido foi atualizado. |
|
orderManagementActions |
Lista<OrderManagementAction > |
Ações pós-pedido, como entrar em contato com o suporte e visualizar detalhes do pedido. Deve ter pelo menos 1 item e no máximo 6 itens. |
|
rejectionInfo |
RejectionInfo |
Obrigatório quando
|
|
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 para o tipo PickupInfo
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
pickupTimeIso8601 |
String |
Horário estimado de retirada, no formato de carimbo de data/hora ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" ou formato de duração: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Por exemplo, PT90M representa uma duração de 90 minutos. O valor padrão, "PT0M", indica que o horário de embarque preferencial é o mais rápido possível. Referência: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations (em inglês). Use essa informação para atualizar o tempo estimado de retirada durante a resposta da finalização da compra. Exemplo: |
O exemplo a seguir mostra um elemento PickupInfo
:
Exemplo
{ "pickupTimeIso8601": "PT90M" }
PostalAddress
A tabela a seguir lista as propriedades para o tipo PostalAddress
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
regionCode |
String | Obrigatório. Um código de país com duas letras. Exemplo: |
|
postalCode |
String |
É o código postal. Exemplo: |
|
administrativeArea |
String |
A maior subdivisão administrativa que é usada para endereços postais de um país ou uma região. Pode ser um estado, uma província, uma oblast ou um município. Exemplo: |
|
locality |
String |
A cidade deste local. Em regiões do mundo onde as localidades não são bem definidas ou não se encaixam nesta estrutura, não especifique a localidade e use o campo addressLines. Exemplo: |
|
addressLines |
Lista<String> |
Uma ou mais linhas que você pode usar para especificar o endereço. Este campo não deve ser modificado porque pode conter localidades pouco claras. Exemplo: |
|
recipients |
Lista<String> |
Lista dos destinatários de um pedido. Esse campo só está disponível no billingAddress. |
O exemplo a seguir mostra um elemento PostalAddress
:
Exemplo
{ "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }
Preço
A tabela a seguir lista as propriedades para o tipo Price
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
type |
Enum [
"ESTIMATE",
"ACTUAL"
] |
Obrigatório. Código do cupom promocional. |
|
amount |
Money |
Obrigatório. |
Promoção
A tabela a seguir lista as propriedades para o tipo Promotion
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
coupon |
String | Obrigatório. Código do cupom promocional. |
ProposedOrder
A tabela a seguir lista as propriedades para o tipo ProposedOrder
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
id |
String |
ID opcional do pedido proposto. |
|
cart |
Cart |
Obrigatório. Itens do usuário. |
|
otherItems |
Lista<LineItem > |
Itens adicionados pelo fornecedor, como taxas de entrega, outras taxas e tributos. otherItems também podem conter gratificações e/ou descontos adicionados pelo usuário. Não pode haver mais de 10 itens. |
|
image |
Image |
Imagem associada ao pedido proposto. |
|
totalPrice |
Price |
Obrigatório. Preço total do pedido proposto. |
|
extension |
FoodOrderExtension |
Obrigatório. Define informações de atendimento para pedidos de comida. |
|
disclaimers |
Lista<Disclaimer > |
Corresponde a mensagens de exoneração de responsabilidade que serão exibidas na interface antes do pedido ser feito. |
O exemplo a seguir mostra um elemento ProposedOrder
:
Exemplo
{ "id": "sample_proposed_order_id_1", "otherItems": [ { "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }, { "name": "Delivery fee", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 500000000 } }, "type": "TAX" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "36", "nanos": 730000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] } }
SublineNote
A tabela a seguir lista as propriedades para o tipo SublineNote
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
note |
String | Obrigatório. |
Carimbo de data/hora
A data e a hora no seguinte formato:
"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
TransactionDecisionValue
Contém oOrder
.
A tabela a seguir lista as propriedades para o tipo TransactionDecisionValue
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
order |
Order |
Obrigatório. Pedido a ser feito com detalhes de pagamento. |
O exemplo a seguir mostra um elemento TransactionDecisionValue
:
Exemplo
{ "order": { "finalOrder": { "cart": { "notes": "Guest prefers their food to be hot when it is delivered.", "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Cucina Venti" }, "lineItems": [ { "name": "Sizzling Prawns Dinner", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "16", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } }, "contact": { "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" } } }, "otherItems": [ { "name": "Service fee", "type": "FEE", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } } }, { "name": "Tax", "type": "TAX", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 370000000 } } }, { "name": "Tip", "type": "GRATUITY", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 590000000 } } } ], "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "23", "nanos": 710000000 } }, "id": "sample_final_order_id", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ], "optinForRemarketing": true } }, "googleOrderId": "sample_google_order_id", "orderDate": "2017-07-17T12:00:00Z", "paymentInfo": { "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd" }, "paymentType": "PAYMENT_CARD" } } }
Solicitação de atendimento
AppRequest
A tabela a seguir lista as propriedades para o tipo AppRequest
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
isInSandbox |
Booleano |
Indica se as transações subsequentes são feitas em um ambiente de sandbox. |
|
conversation |
Conversation |
||
inputs |
Lista<Input > |
Obrigatório. Contém os argumentos esperados para finalizar a compra de um carrinho. É preciso ter exatamente 1 item. |
O exemplo a seguir mostra um elemento AppRequest
:
Exemplo 1
{ "isInSandbox": true, "inputs": [ { "intent": "actions.foodordering.intent.CHECKOUT", "arguments": [ { "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.Cart", "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Cucina Venti" }, "lineItems": [ { "name": "Sizzling Prawns Dinner", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "16", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } } } ] } ] }
Exemplo 2
{ "isInSandbox": true, "inputs": [ { "intent": "actions.intent.TRANSACTION_DECISION", "arguments": [ { "transactionDecisionValue": { "order": { "finalOrder": { "cart": { "notes": "Guest prefers their food to be hot when it is delivered.", "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Cucina Venti" }, "lineItems": [ { "name": "Sizzling Prawns Dinner", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "16", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } }, "contact": { "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" } } }, "otherItems": [ { "name": "Service fee", "type": "FEE", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } } }, { "name": "Tax", "type": "TAX", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 370000000 } } }, { "name": "Tip", "type": "GRATUITY", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 590000000 } } } ], "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "23", "nanos": 710000000 } }, "id": "sample_final_order_id", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ], "optinForRemarketing": true } }, "googleOrderId": "sample_google_order_id", "orderDate": "2017-07-17T12:00:00Z", "paymentInfo": { "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd" }, "paymentType": "PAYMENT_CARD" } } } } ] } ] }
CheckoutRequestMessage
UmCheckoutRequestMessage
é um AppRequest
.
com a intent actions.foodordering.intent.CHECKOUT
.
SubmitOrderRequestMessage
UmSubmitOrderRequestMessage
é um AppRequest
.
com a intent actions.foodordering.intent.TRANSACTION_DECISION
.
Conversa
UmConversation
é exclusivo para apenas uma sessão. É possível usá-lo para vincular vários
Checkout
e SubmitOrder
ações juntas, se necessário.
A tabela a seguir lista as propriedades para o tipo Conversation
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
conversationId |
String | Obrigatório. ID exclusivo da conversa. |
O exemplo a seguir mostra um elemento Conversation
:
Exemplo
{ "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ" }
Entrada
Os argumentos esperados para finalizar a compra de um carrinho.
A tabela a seguir lista as propriedades para o tipo Input
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
intent |
Enum [
"actions.foodordering.intent.CHECKOUT",
"actions.intent.TRANSACTION_DECISION"
] |
Obrigatório. Defina como "actions.foodordering.intent.CHECKOUT" para a mensagem de solicitação de finalização de compra OU "actions.intent.TRANSACTION_DECISION" para a mensagem de solicitação de envio do pedido. |
|
arguments |
Lista<Argument > |
Obrigatório. Contém o carrinho a ser comprado ou o pedido a ser feito É preciso ter exatamente 1 item. |
Argumento
Contém detalhes sobre os alimentos que o usuário quer conferir. Para finalização de compra, somente a extensão é aplicável. Para pedidos de envio, somente transactionDecisionValue é aplicável
A tabela a seguir lista as propriedades para o tipo Argument
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
Exatamente um dos seguintes grupos de propriedades é obrigatório. | |||
extension |
Grupo 1 | Cart |
Detalha os alimentos que o usuário quer finalizar. |
transactionDecisionValue |
Grupo 2 | TransactionDecisionValue |
Contém o pedido a ser feito, bem como os detalhes de pagamento. |
Resposta de atendimento do pedido
AppResponse
A tabela a seguir lista as propriedades para o tipo AppResponse
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
expectUserResponse |
Const |
Defina como falso. Valor: |
|
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
no StructuredResponse
.
FinalResponse
Sua resposta ao pagamento do carrinho ou SubmitOrderRequestMessage.
A tabela a seguir lista as propriedades para o tipo FinalResponse
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
richResponse |
RichResponse |
Obrigatório. Contém sua resposta para CheckoutRequestMessage ou SubmitOrderRequestMessage. |
CheckoutResponse
A tabela a seguir lista as propriedades para o tipo CheckoutResponse
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
proposedOrder |
ProposedOrder |
Obrigatório. Pedido proposto a ser usado para a transação. |
|
paymentOptions |
PaymentOptions |
Obrigatório. Opção de pagamento padrão selecionada para o usuário. |
|
additionalPaymentOptions |
Lista<PaymentOptions > |
Opções de pagamento alternativas disponíveis para o usuário. |
O exemplo a seguir mostra um elemento CheckoutResponse
:
Exemplo
{ "proposedOrder": { "id": "sample_proposed_order_id_1", "otherItems": [ { "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }, { "name": "Delivery fee", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 500000000 } }, "type": "TAX" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "36", "nanos": 730000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }, "additionalPaymentOptions": [ { "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Cash on delivery." } } ] }
Item
Contém sua resposta para um pagamento no carrinho ou SubmitOrderRequestMessage.
A tabela a seguir lista as propriedades para o tipo Item
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
structuredResponse |
StructuredResponse |
Obrigatório. |
RichResponse
Contém sua resposta a um pagamento no carrinho.
A tabela a seguir lista as propriedades para o tipo RichResponse
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
items |
Lista<Item > |
Obrigatório. É preciso ter exatamente 1 item. |
StructuredResponse
Para CheckoutResponseMessage, pode ser um dos seguintes: CheckoutResponse Indica um checkout bem-sucedido. OR FoodErrorExtension: indica uma falha durante o checkout. A resposta pode incluir um ProposedOrder e PaymentOptions corrigidos ou uma mensagem de erro sem PaymentOptions. Para SubmitOrderResponseMessage, somente orderUpdate é aplicável.
A tabela a seguir lista as propriedades para o tipo StructuredResponse
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
Exatamente um dos seguintes grupos de propriedades é obrigatório. | |||
checkoutResponse |
Grupo 1 | CheckoutResponse |
Itens comprados, impostos e descontos. |
error |
Grupo 2 | FoodErrorExtension |
Erros observados nos itens do carrinho. Dependendo da natureza do erro, essa propriedade pode incluir ProposedOrder e PaymentOptions corrigidos ou apenas uma mensagem de erro sem PaymentOptions. |
orderUpdate |
Grupo 3 | OrderUpdate |
Atualizações de pedidos assíncronos
Esta seção descreve os tipos gerais que compõem as solicitações e respostas de uma interação de ação integrada típica para pedidos de comida.AsyncOrderUpdateRequestMessage
Notifica o usuário sobre as alterações depois que um pedido é enviado e confirmado. Por exemplo, você pode notificar o usuário de que o pedido está em trânsito ou se o o preço mudou. Para mais informações, consulteA tabela a seguir lista as propriedades para o tipo AsyncOrderUpdateRequestMessage
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
isInSandbox |
Booleano |
Indica que o pedido para o qual esta atualização foi enviada é um pagamento de sandbox. |
|
customPushMessage |
CustomPushMessage |
Obrigatório. Contém o OrderUpdate da solicitação. |
O exemplo a seguir mostra um elemento AsyncOrderUpdateRequestMessage
:
Exemplo
{ "isInSandbox": true, "customPushMessage": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "IN_TRANSIT", "label": "Order is on the way" }, "inTransitInfo": { "updatedTime": "2017-07-17T12:00:00Z" }, "updateTime": "2017-07-17T12:00:00Z", "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } } }
AsyncOrderUpdateResponseMessage
Depois que você enviar umAsyncOrderUpdateRequestMessage
, o Google vai responder
com um status HTTP 200 e um corpo vazio. Se a atualização não for bem-sucedida,
O Google responde com detalhes sobre o motivo da falha na atualização do pedido.
Tipos de atualização de pedidos
Botão
Define um elemento de interface do usuário que você pode adicionar para oferecer interação com o usuário.
A tabela a seguir lista as propriedades para o tipo Button
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
title |
String | Obrigatório. O rótulo de exibição. Use letras maiúsculas de até 30 caracteres para garantir uma renderização adequada. Exemplo: |
|
openUrlAction |
OpenUrlAction |
Obrigatório. |
O exemplo a seguir mostra um elemento Button
:
Exemplo
{ "title": "Send us feedback", "openUrlAction": { "url": "mailto:person@example.com" } }
CancellationInfo
A tabela a seguir lista as propriedades para o tipo CancellationInfo
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
reason |
String | Obrigatório. Motivo do texto que pode ser exibido para a rejeição quando OrderState.state é "CANCELLED". Exemplo: |
O exemplo a seguir mostra um elemento CancellationInfo
:
Exemplo
{ "reason": "Insufficient inventory" }
FoodOrderUpdateExtension
Esse tipo oferece ao usuário um intervalo estimado para quando o pedido será
entregues ou prontos para retirada. Envie essa extensão em uma
OrderUpdate
sempre que as informações estiverem disponíveis ou tiverem sido alteradas desde o último envio.
Forneça uma estimativa conservadora do intervalo de atendimento do pedido para que o usuário expectativas sejam atendidas com frequência. Por exemplo, se o pedido for estimado como entregue hoje às 13h, você deve enviar um intervalo estimado que é consistente com as variações devido às condições de trânsito, como hoje às 12h45 às 13h15.
Uma duração ou um carimbo de data/hora ISO 8601 é interpretado como sendo o intervalo do
updateTime
do OrderUpdate
(em essência, "agora") para o
updateTime
mais duration
.
Não use esse formato, a menos que seja "agora" é de fato uma expectativa razoável.
Um intervalo ISO 8601 é interpretado como sendo o intervalo entre o início e o final do intervalo.
A tabela a seguir lista as propriedades para o tipo FoodOrderUpdateExtension
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
@type |
Const |
Tipo de extensão. Esse campo está sempre definido como "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension". Valor: |
|
estimatedFulfillmentTimeIso8601 |
String |
O tempo estimado para que o pedido seja entregue ou esteja pronto para retirada. A string precisa estar no formato ISO 8601 e corresponder a um intervalo em vez de um único horário fixo. As convenções aceitáveis são: intervalos, durações e datas/horas. Este campo pode ser enviado em SubmitOrderResponseMessage ou AsyncOrderUpdateRequestMessage quando as informações ficam disponíveis ou há uma alteração, como chegadas antecipadas ou atrasadas. Exemplo: |
|
foodOrderErrors |
Lista<FoodOrderError > |
Descreve os erros que ocorreram após o pedido. Recomendamos um erro por carrinho ou item. Use FoodOrderUpdateExtension.FoodOrderErrors para erros não cobertos por RejeitarionInfo. Não pode ter menos de 1 item. |
O exemplo a seguir mostra um elemento FoodOrderUpdateExtension
:
Exemplo 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" }
Exemplo 2
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "foodOrderErrors": [ { "error": "NO_CAPACITY", "description": "Sorry, the restaurant cannot take your order right now." } ] }
FulfillmentInfo
A tabela a seguir lista as propriedades para o tipo FulfillmentInfo
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
Exatamente um dos seguintes grupos de propriedades é obrigatório. | |||
deliveryTime |
Grupo 1 | Carimbo de data/hora ISO |
Use predictedFulfillmentTimeIso8601 na mensagem FoodOrderingUpdateExtension |
pickupTime |
Grupo 2 | Carimbo de data/hora ISO |
Use predictedFulfillmentTimeIso8601 na mensagem FoodOrderingUpdateExtension |
O exemplo a seguir mostra um elemento FulfillmentInfo
:
Exemplo 1
{ "deliveryTime": "2017-05-10T02:36:38.803Z" }
Exemplo 2
{ "pickupTime": "2019-12-26T07:24:27.803Z" }
InTransitInfo
A tabela a seguir lista as propriedades para o tipo InTransitInfo
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
updatedTime |
Carimbo de data/hora ISO |
Use predictedFulfillmentTimeIso8601 na mensagem FoodOrderingUpdateExtension |
O exemplo a seguir mostra um elemento InTransitInfo
:
Exemplo
{ "updatedTime": "2017-05-10T02:36:38.803Z" }
LineItemUpdate
A tabela a seguir lista as propriedades para o tipo LineItemUpdate
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
orderState |
OrderState |
||
price |
Price |
||
reason |
String |
O motivo da alteração. Obrigatório para alterações de preço. |
O exemplo a seguir mostra um elemento LineItemUpdate
:
Exemplo
{ "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "5", "nanos": 500000000 } }, "reason": "Menu updated prices." }
OpenUrlAction
A tabela a seguir lista as propriedades para o tipo OpenUrlAction
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
url |
String | Obrigatório. A ação acionada ao clicar ou tocar no botão. A lista de prefixos aplicáveis depende do orderManagementActionType. "EMAIL": o prefixo precisa ser "mailto". "CALL": o prefixo precisa ser "tel". "CUSTOMER_SERVICE": o prefixo deve ser "mailto", "tel", "http" ou "https". Exemplo: |
OrderManagementAction
O gerenciamento de pedidos permite que os usuários recebam suporte pós-pedido e deve ser enviado
cada OrderUpdate
no pedido de envio
AppResponse
e cada módulo subsequente
AsyncOrderUpdateRequestMessage
As ações de gerenciamento de pedidos enviadas para um pedido específico podem variar com base no
estado.
Por exemplo, na coluna "CREATED" estado, CUSTOMER_SERVICE
pode fazer referência ao seu
pelo telefone de suporte ao cliente. Em seguida, na caixa "CONFIRMED", estado, CUSTOMER_SERVICE
pode mudar para o telefone do restaurante se esse for o melhor ponto de
contato para o cliente. Da mesma forma, assim que o pedido estiver na fase "CONCLUÍDA", estado,
CUSTOMER_SERVICE
pode fazer referência aos seus endereços de e-mail de suporte.
A tabela a seguir lista as propriedades para o tipo OrderManagementAction
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
type |
OrderManagementActionType |
Obrigatório. |
|
button |
Button |
Obrigatório. |
O exemplo a seguir mostra um elemento OrderManagementAction
:
Exemplo 1
{ "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }
Exemplo 2
{ "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }
OrderManagementActionType
Define os tipos relacionados aoOrderManagementAction
.
O tipo OrderManagementActionType
tem os seguintes valores possíveis:
CUSTOMER_SERVICE
: e-mail e/ou número de contato do atendimento ao cliente a ser exibido na página de confirmação do pedido. Obrigatório. O prefixo openUrlAction.url precisa ser "mailto", "tel", "http" ou "https".EMAIL
: ação de e-mail apenas na página de detalhes do pedido. O prefixo openUrlAction.url precisa ser "mailto".CALL_DRIVER
: ação de chamada apenas na página de detalhes do pedido. O prefixo openUrlAction.url deve ser "tel".CALL_RESTAURANT
: ação de chamada apenas na página de detalhes do pedido. O prefixo openUrlAction.url deve ser "tel".
OrderState
O estado atual do pedido. Cada valor state
de OrderState
também
corresponde a um status de compra
myaccount.google.com.
A tabela a seguir lista as propriedades para o tipo OrderState
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
state |
OrderStateEnum |
Obrigatório. |
|
label |
String | Obrigatório. A string de exibição visível ao usuário para o estado. Use letra maiúscula apenas na primeira palavra. Exemplo: |
O exemplo a seguir mostra um elemento OrderState
:
Exemplo
{ "state": "CONFIRMED", "label": "Provider confirmed" }
OrderStateEnum
Define os tipos relacionados aoOrderState
.
O tipo OrderStateEnum
tem os seguintes valores possíveis:
CREATED
: pedido criado pelo integrador e aguardando a confirmação do provedor. Corresponde a "Ordenado" status de compra.CONFIRMED
: pedido confirmado pelo provedor e ativo. Corresponde ao campo "Aceito" status de compra.REJECTED
: pedido rejeitado pelo integrador ou provedor. Corresponde a "Recusado" status de compra.CANCELLED
: o usuário cancelou o pedido. Corresponde ao campo "Cancelled" status de compra.IN_PREPARATION
: a comida está sendo preparada. Corresponde ao "Status desconhecido" status de compra.READY_FOR_PICKUP
: o alimento está pronto para retirada. Corresponde a "Pronto para retirada" status de compra.IN_TRANSIT
: o pedido está sendo entregue. Corresponde à mensagem "Em andamento" status de compra.FULFILLED
: o usuário recebeu o que foi pedido. Corresponde ao valor "Retirado" status de compra.
Comprovante
Envie esse tipo em um pedido de envioAppResponse
,
em que OrderState
é "CONFIRMED", "FULFILLED" ou "IN_transit". Enviar comprovante em
o horário em que o userVisibleOrderId
fica disponível. Você não precisa manter
enviando a confirmação nas próximas atualizações.
A tabela a seguir lista as propriedades para o tipo Receipt
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
userVisibleOrderId |
String | Obrigatório. Obrigatório se o pedido for "CONFIRMED", "IN_Transition" ou "FULFILLED". Este campo é o ID único do usuário para esse pedido (geralmente o código do pedido do restaurante), exibido no recibo do integrador e no cartão do pedido do Google. O usuário precisa conseguir usar esse ID para consultar o pedido de atendimento ao cliente com o provedor e o integrador. Você só precisa fornecer esse ID uma vez em cada OrderUpdate. Até que seja fornecido, o actionOrderId é o userVisibleOrderId. Por exemplo, não é possível ter um userVisibleOrderId até que o pedido seja confirmado pelo restaurante. Após a confirmação, é necessário enviar uma AsyncOrderUpdateRequestMessage com um OrderUpdate e um Receipt. |
O exemplo a seguir mostra um elemento Receipt
:
Exemplo
{ "userVisibleOrderId": "userVisibleId1234" }
RejectionInfo
A tabela a seguir lista as propriedades para o tipo RejectionInfo
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
type |
RejectionType |
Obrigatório. |
|
reason |
String |
Motivo da rejeição usado para geração de registros internos. Este campo não é visível para os usuários. |
O exemplo a seguir mostra um elemento RejectionInfo
:
Exemplo
{ "type": "PAYMENT_DECLINED", "reason": "There is an issue with payment processing." }
RejectionType
O tipo RejectionType
tem os seguintes valores possíveis:
INELIGIBLE
: o usuário não está qualificado devido a preocupações relacionadas a políticas ou riscos.PAYMENT_DECLINED
: há um problema com o processamento do pagamento.UNAVAILABLE_SLOT
: o pedido não pode ser concluído no horário especificado por DeliveryInfo ou PickupInfo.PROMO_NOT_APPLICABLE
: há um problema com a promoção.UNKNOWN
: qualquer outro motivo.
Tipos relacionados a pagamentos
Esta seção descreve os tipos relacionados a pagamentos usados para pedidos de comida o atendimento do pedido.ActionProvidedPaymentOptions
Requisitos para uma forma de pagamento fornecida por ação.
A tabela a seguir lista as propriedades para o tipo ActionProvidedPaymentOptions
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
paymentType |
PaymentType |
Obrigatório. |
|
displayName |
String | Obrigatório. Nome do instrumento de pagamento exibido no recibo. Exemplo: |
|
onFulfillmentPaymentData |
OnFulfillmentPaymentData |
Dados adicionais para o tipo de pagamento "ON_FULFILLMENT". Por exemplo, é possível usar esse campo para especificar se dinheiro ou cartão é aceito no processamento do pedido. |
O exemplo a seguir mostra um elemento ActionProvidedPaymentOptions
:
Exemplo
{ "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } }
AllowedAuthMethods
O tipo AllowedAuthMethods
tem os seguintes valores possíveis:
PAN_ONLY
: método de autenticação associado a cartões de pagamento armazenados em arquivo com a Conta do Google do usuário. Os dados de pagamento retornados incluem o número da conta pessoal (PAN, na sigla em inglês) com o mês e o ano de vencimento.
AllowedCardNetworks
O tipo AllowedCardNetworks
tem os seguintes valores possíveis:
AMEX
DISCOVER
INTERAC
JCB
MASTERCARD
VISA
BillingAddressParameters
Este objeto permite definir campos adicionais a serem retornados para um endereço de faturamento solicitado.
A tabela a seguir lista as propriedades para o tipo BillingAddressParameters
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
format |
String |
Formato do endereço de faturamento necessário para concluir a transação. MÍNIMO: nome, código do país e código postal. COMPLETO: nome, endereço, localização, região, código do país e código postal. |
O exemplo a seguir mostra um elemento BillingAddressParameters
:
Exemplo 1
{ "format": "MIN" }
Exemplo 2
{ "format": "FULL" }
CardParameters
Use esse objeto para configurar a compatibilidade do seu site com a API Google Pay.
A tabela a seguir lista as propriedades para o tipo CardParameters
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
allowedAuthMethods |
List<Const> (Lista) | Obrigatório. Campos aceitos para autenticar uma transação de cartão. Não pode ter menos de 1 item. |
|
allowedCardNetworks |
Lista<AllowedCardNetworks > |
Obrigatório. Uma ou mais redes de cartões aceitas por você e pela API Google Pay. Não pode ter menos de 1 item. |
|
billingAddressRequired |
Booleano |
Defina como "true" se você precisar de um endereço de faturamento. Solicite um endereço de faturamento apenas se for necessário para processar a transação. Outras solicitações de dados podem aumentar o atrito no processo de finalização da compra e gerar taxas de conversão mais baixas. |
|
billingAddressParameters |
BillingAddressParameters |
Os campos esperados retornados se billingAddressRequired está definido como verdadeiro. |
|
cvcRequired |
Booleano |
Defina como verdadeiro se estiver usando TimesofMoney, como falso para todos os outros processadores de pagamento. |
O exemplo a seguir mostra um elemento CardParameters
:
Exemplo 1
{ "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "AMEX", "DISCOVER" ], "billingAddressRequired": false, "cvcRequired": false }
Exemplo 2
{ "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "AMEX", "DISCOVER" ], "billingAddressRequired": true, "billingAddressParameters": { "format": "MIN" }, "cvcRequired": false }
GoogleProvidedPaymentInstrument
A tabela a seguir lista as propriedades para o tipo GoogleProvidedPaymentInstrument
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
instrumentToken |
String | Obrigatório. String codificada de base 64 contendo o token de pagamento para cobrar o usuário com um processador do Google Pay participante, de acordo com o GoogleProvidedPaymentOptions especificado anteriormente. |
|
billingAddress |
PostalAddress |
Endereço de faturamento para o pagamento. |
O exemplo a seguir mostra um elemento GoogleProvidedPaymentInstrument
:
Exemplo
{ "instrumentToken": "abcd", "billingAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] } }
GoogleProvidedPaymentOptions
Requisitos para a forma de pagamento fornecida pelo Google.
A tabela a seguir lista as propriedades para o tipo GoogleProvidedPaymentOptions
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
facilitationSpecification |
String |
Um JSON PaymentDataRequest como uma string. Use esse objeto para configurar a compatibilidade do seu site com a API Google Pay. |
|
supportedCardNetworks |
Lista<SupportedCardNetworks > |
Em vez disso, use facilitationSpecification. Tipo de redes de cartões aceitas pelo agente. O uso desse campo foi descontinuado. |
|
prepaidCardDisallowed |
Booleano |
Em vez disso, use facilitationSpecification. Se um cartão pré-pago é permitido como tipo de pagamento. O uso desse campo foi descontinuado. |
|
billingAddressRequired |
Booleano |
Em vez disso, use facilitationSpecification. Se um endereço de faturamento é necessário ou não. O uso desse campo foi descontinuado. |
|
tokenizationParameters |
TokenizationParameters |
O uso desse campo foi descontinuado. |
O exemplo a seguir mostra um elemento GoogleProvidedPaymentOptions
:
Exemplo 1
{ "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" }
Exemplo 2
{ "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "braintree", "braintree:apiVersion": "v1", "braintree:sdkVersion": "1.4.0", "braintree:merchantId": "a1b2c3d4e5", "braintree:clientKey": "production_braintree_client_key", "braintree:authorizationFingerprint": "same_as_client_key" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "JCB", "VISA" ], "prepaidCardDisallowed": true }
Exemplo 3
{ "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:publishableKey": "pk_live_stripe_client_key", "stripe:version": "2017-04-06" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "VISA", "JCB" ], "prepaidCardDisallowed": true, "billingAddressRequired": true }
MerchantInfo
Use esse objeto para configurar a compatibilidade do seu site com a API Google Pay.
A tabela a seguir lista as propriedades para o tipo MerchantInfo
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
merchantId |
String |
O identificador do comerciante do Google emitido para você pelo Google Pay. |
|
merchantName |
String | Obrigatório. Nome do comerciante codificado como UTF-8. O nome do comerciante é processado na página de pagamento. |
OnFulfillmentPaymentData
Use este objeto para enviar dados adicionais para o PaymentType "ON_FULFILLMENT".
A tabela a seguir lista as propriedades para o tipo OnFulfillmentPaymentData
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
supportedPaymentOptions |
Lista<PaymentOptionsEnums > |
Lista de opções de pagamento disponíveis para o usuário no momento da conclusão do pedido. |
O exemplo a seguir mostra um elemento OnFulfillmentPaymentData
:
Exemplo
{ "supportedPaymentOptions": [ "Cash", "Card" ] }
Parâmetros
Define os tipos relacionados ao TokenizationParameters
.
A tabela a seguir lista as propriedades para o tipo Parameters
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
gateway |
String | Obrigatório. Exemplo: |
|
gatewayMerchantId |
String | ||
[additionalKey: string] |
String | Outros pares de chave-valor |
O exemplo a seguir mostra um elemento Parameters
:
Exemplo 1
{ "gatewayMerchantId": "90412491", "gateway": "olo" }
Exemplo 2
{ "gateway": "braintree", "braintree:apiVersion": "v1", "braintree:sdkVersion": "1.4.0", "braintree:merchantId": "YOUR_MERCHANT_ID", "braintree:clientKey": "YOUR_BRAINTREE_SANDVOX_OR_PRODUCTION_KEY" }
PaymentDataRequest
Use esse objeto para configurar a compatibilidade do seu site com a API Google Pay.
A tabela a seguir lista as propriedades para o tipo PaymentDataRequest
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
apiVersion |
Const | Obrigatório. Versão principal da API. Valor: |
|
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 a compatibilidade com uma ou mais formas de pagamento compatíveis com a API Google Pay. |
|
transactionInfo |
TransactionInfo |
Obrigatório. Detalhes sobre a autorização da transação, dependendo de o usuário concordar ou não com ela. Esse campo inclui o preço total e o status do preço. |
O exemplo a seguir mostra um elemento PaymentDataRequest
:
Exemplo
{ "apiVersion": 2, "apiVersionMinor": 0, "merchantInfo": { "merchantId": "10391231", "merchantName": "Burrito Town" }, "allowedPaymentMethods": [ { "type": "CARD", "parameters": { "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "VISA", "AMEX", "MASTERCARD" ], "billingAddressRequired": true, "billingAddressParameters": { "format": "FULL" }, "cvcRequired": false }, "tokenizationSpecification": { "type": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:version": "2019-05-16", "stripe:publishableKey": "pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA" } } } ], "transactionInfo": { "currencyCode": "INR", "totalPriceStatus": "ESTIMATED", "totalPrice": "185.00" } }
PaymentInfo
Informações relacionadas ao pagamento de um pedido.
A tabela a seguir lista as propriedades para o tipo PaymentInfo
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
displayName |
String | Obrigatório. Nome visível para o usuário do instrumento de pagamento a ser exibido no recibo. |
|
paymentType |
PaymentType |
Obrigatório. |
|
googleProvidedPaymentInstrument |
GoogleProvidedPaymentInstrument |
Token que pode ser usado pela ação. Só especifique isso se você especificou GoogleProvidedPaymentOptions como uma opção de pagamento em CheckoutResponseMessage. |
O exemplo a seguir mostra um elemento PaymentInfo
:
Exemplo 1
{ "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd" }, "paymentType": "PAYMENT_CARD" }
Exemplo 2
{ "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd", "billingAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "123 Random Street", "Unit ABC" ], "recipients": [ "sample_receipient" ] } }, "paymentType": "PAYMENT_CARD" }
PaymentMethod
Use esse objeto para configurar a compatibilidade do seu site com a API Google Pay.
A tabela a seguir lista as propriedades para o tipo PaymentMethod
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
type |
Const | Obrigatório. Identificador curto da forma de pagamento aceita. No momento, apenas CARD é aceito. Valor: |
|
parameters |
CardParameters |
Obrigatório. Parâmetros necessários para configurar o tipo de forma de pagamento fornecido. |
|
tokenizationSpecification |
TokenizationSpecification |
Obrigatório. Configure uma conta ou um provedor de descriptografia para receber informações de pagamento. Esta propriedade é obrigatória para a forma de pagamento CARD. |
O exemplo a seguir mostra um elemento PaymentMethod
:
Exemplo
{ "type": "CARD", "parameters": { "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "VISA", "AMEX", "MASTERCARD" ], "billingAddressRequired": false }, "tokenizationSpecification": { "type": "PAYMENT_GATEWAY", "parameters": { "gatewayMerchantId": "90412491", "gateway": "olo" } } }
PaymentOptions
A tabela a seguir lista as propriedades para o tipo PaymentOptions
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
Exatamente um dos seguintes grupos de propriedades é obrigatório. | |||
googleProvidedOptions |
Grupo 1 | GoogleProvidedPaymentOptions |
Mutuamente exclusivo com actionProvidedOptions. Use essa opção para fazer pagamentos on-line com o gPay. |
actionProvidedOptions |
Grupo 2 | ActionProvidedPaymentOptions |
Mutuamente exclusivo com googleProvidedOptions. Use para "dinheiro na entrega" ou "pagamento no processamento do pedido". |
O exemplo a seguir mostra um elemento PaymentOptions
:
Exemplo 1
{ "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }
Exemplo 2
{ "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\":true, \"billingAddressParameters\": { \"format\":\"MIN\" } }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }
Exemplo 3
{ "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } } }
PaymentOptionsEnums
O tipo PaymentOptionsEnums
tem os seguintes valores possíveis:
Cash
Card
UPI
Paytm
PaymentType
O tipo PaymentType
tem os seguintes valores possíveis:
PAYMENT_CARD
: para GoogleProvidedPaymentOptions.ON_FULFILLMENT
: para ActionProvidedPaymentOptions.
SupportedCardNetworks
Define os tipos relacionados aoGoogleProvidedPaymentOptions
.
O tipo SupportedCardNetworks
tem os seguintes valores possíveis:
UNSPECIFIED_CARD_NETWORK
AMEX
DISCOVER
JCB
MASTERCARD
VISA
TokenizationParameters
. Define os tipos relacionados aGoogleProvidedPaymentOptions
.
A tabela a seguir lista as propriedades para o tipo TokenizationParameters
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
tokenizationType |
Enum [
"UNSPECIFIED_TOKENIZATION_TYPE",
"PAYMENT_GATEWAY"
] |
Obrigatório. Em vez disso, use facilitationSpecification. Tipo de tokens aceitável. |
|
parameters |
Parameters |
Em vez disso, use facilitationSpecification. |
TokenizationSpecification
Este objeto permite configurar uma conta para receber informações de pagamento sujeitas a cobrança.
A tabela a seguir lista as propriedades para o tipo TokenizationSpecification
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
type |
Const | Obrigatório. |
|
parameters |
Parameters |
Obrigatório. |
O exemplo a seguir mostra um elemento TokenizationSpecification
:
Exemplo 1
{ "type": "PAYMENT_GATEWAY", "parameters": { "gatewayMerchantId": "1247192", "gateway": "cybersource" } }
Exemplo 2
{ "type": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:version": "2018-10-31", "stripe:publishableKey": "12378127" } }
TransactionInfo
Este objeto descreve uma transação que determina a capacidade de pagamento do pagador. Ele é usado para apresentar uma caixa de diálogo de autorização de pagamento.
A tabela a seguir lista as propriedades para o tipo TransactionInfo
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
currencyCode |
String | Obrigatório. Código de moeda ISO 4217 em ordem alfabética. |
|
transactionId |
String |
ID exclusivo que identifica uma tentativa de transação. Os comerciantes podem usar um ID existente ou gerar um ID específico para as tentativas de transação do Google Pay. Esse campo é obrigatório quando você envia callbacks para a API Transaction Events do Google. |
|
totalPriceStatus |
Const | Obrigatório. Usar "ESTIMATED" como padrão. O preço total pode ser ajustado com base nos detalhes da resposta, como o tributo sobre vendas coletado com base em um endereço de faturamento. Valor: |
|
totalPrice |
String | Obrigatório. Valor monetário total da transação com uma precisão decimal opcional de duas casas decimais. Esse campo deve ter o mesmo valor que cart.totalPrice. |
O exemplo a seguir mostra um elemento TransactionInfo
:
Exemplo
{ "totalPriceStatus": "ESTIMATED", "totalPrice": "12.34", "currencyCode": "USD" }