Esquema de ações de atendimento do pedido

Esta página descreve o payload do serviço da Web de fulfillment (API Ordering End-to-End) ao trabalhar com a API Order-to-End Integrada Action. Se você quiser uma versão legível por máquina dessas informações, faça o download do esquema JSON.

Tipos de base

Carrinho

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

A tabela a seguir lista as propriedades do tipo Cart:

Propriedade Tipo Descrição
@type Const

O tipo desse objeto. Omita esse campo se o objeto Cart pai fizer parte de ProposedOrder.

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

id String

ID opcional do carrinho.

merchant Merchant

Comerciante afiliado a este carrinho.

lineItems Lista<LineItem>

Obrigatório.

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

Não pode ter menos de 1 item.

promotions Lista<Promotion>

Promoção aplicada neste carrinho. No momento, somente uma promoção é aceita.

notes String

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

extension FoodCartExtension

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

O exemplo a seguir mostra um elemento Cart:

Exemplo 1

{
  "@type": "type.googleapis.com/google.actions.v2.orders.Cart",
  "merchant": {
    "id": "https://www.exampleprovider.com/merchant/id1",
    "name": "Cucina Venti"
  },
  "lineItems": [
    {
      "name": "Sizzling Prawns Dinner",
      "type": "REGULAR",
      "id": "sample_item_offer_id_1",
      "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
      "quantity": 1,
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "16",
          "nanos": 750000000
        }
      },
      "subLines": [
        {
          "note": "Notes for this item."
        }
      ],
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
        "options": [
          {
            "id": "sample_addon_offer_id_1",
            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
            "name": "Honey Mustard",
            "price": {
              "currencyCode": "USD"
            },
            "quantity": 1
          },
          {
            "id": "sample_addon_offer_id_2",
            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
            "name": "BBQ Sauce",
            "price": {
              "currencyCode": "USD",
              "nanos": 500000000
            },
            "quantity": 1
          }
        ]
      }
    }
  ],
  "extension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
    "fulfillmentPreference": {
      "fulfillmentInfo": {
        "delivery": {
          "deliveryTimeIso8601": "P0M"
        }
      }
    },
    "location": {
      "coordinates": {
        "latitude": 37.788783,
        "longitude": -122.41384
      },
      "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
      "zipCode": "94043",
      "city": "Mountain View",
      "postalAddress": {
        "regionCode": "US",
        "postalCode": "94043",
        "administrativeArea": "CA",
        "locality": "Mountain View",
        "addressLines": [
          "1350 Charleston Road"
        ]
      },
      "notes": "Gate code is #111"
    }
  }
}

Exemplo 2

{
  "merchant": {
    "id": "https://www.exampleprovider.com/merchant/id1",
    "name": "Falafel Bite"
  },
  "lineItems": [
    {
      "name": "Pita Chips",
      "type": "REGULAR",
      "id": "sample_item_offer_id_1",
      "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
      "quantity": 1,
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "2",
          "nanos": 750000000
        }
      },
      "subLines": [
        {
          "note": "Notes for this item."
        }
      ],
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
        "options": [
          {
            "id": "sample_addon_offer_id_1",
            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
            "name": "Honey Mustard",
            "price": {
              "currencyCode": "USD"
            },
            "quantity": 1
          },
          {
            "id": "sample_addon_offer_id_2",
            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
            "name": "BBQ Sauce",
            "price": {
              "currencyCode": "USD",
              "nanos": 500000000
            },
            "quantity": 1
          }
        ]
      }
    },
    {
      "name": "Chicken Shwarma Wrap",
      "type": "REGULAR",
      "id": "sample_item_offer_id_2",
      "offerId": "https://www.exampleprovider.com/menu/item/offer/id2",
      "quantity": 1,
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "8"
        }
      },
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
      }
    },
    {
      "name": "Greek Salad",
      "type": "REGULAR",
      "id": "sample_item_offer_id_3",
      "offerId": "https://www.exampleprovider.com/menu/item/offer/id3",
      "quantity": 1,
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "9",
          "nanos": 990000000
        }
      },
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
      }
    },
    {
      "name": "Prawns Biryani",
      "type": "REGULAR",
      "id": "sample_item_offer_id_4",
      "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
      "quantity": 1,
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "15",
          "nanos": 990000000
        }
      },
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
      }
    }
  ],
  "extension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
    "fulfillmentPreference": {
      "fulfillmentInfo": {
        "delivery": {
          "deliveryTimeIso8601": "P90M"
        }
      }
    },
    "location": {
      "coordinates": {
        "latitude": 37.788783,
        "longitude": -122.41384
      },
      "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
      "zipCode": "94043",
      "city": "Mountain View",
      "postalAddress": {
        "regionCode": "US",
        "postalCode": "94043",
        "administrativeArea": "CA",
        "locality": "Mountain View",
        "addressLines": [
          "1350 Charleston Road"
        ]
      },
      "notes": "Gate code is #111"
    }
  }
}

Contato

Especifica os detalhes sobre a pessoa que vai receber o pedido. Disponível apenas em AppResponse.

A tabela a seguir lista as propriedades do tipo Contact:

Propriedade Tipo Descrição
displayName String

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

Exemplo: Lovefood Ordering

email String

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

Exemplo: ilovefood@example.com

firstName String

Nome da pessoa que vai receber o pedido.

Exemplo: Lovefood

lastName String

Sobrenome da pessoa que vai receber o pedido.

Exemplo: Ordering

phoneNumber String

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

Exemplo: +16501234567

emailVerified Booleano

Indica se a pessoa que está recebendo o pedido fez login com a própria Conta do Google.

O exemplo a seguir mostra um elemento Contact:

Exemplo

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

CustomPushMessage

Contém o OrderUpdate da solicitação.

A tabela a seguir lista as propriedades do tipo CustomPushMessage:

Propriedade Tipo Descrição
orderUpdate OrderUpdate

Obrigatório.

As informações do pedido foram atualizadas.

O exemplo a seguir mostra um elemento CustomPushMessage:

Exemplo

{
  "orderUpdate": {
    "actionOrderId": "sample_action_order_id",
    "orderState": {
      "state": "IN_TRANSIT",
      "label": "Order is on the way"
    },
    "inTransitInfo": {
      "updatedTime": "2017-07-17T12:00:00Z"
    },
    "updateTime": "2017-07-17T12:00:00Z",
    "orderManagementActions": [
      {
        "type": "CUSTOMER_SERVICE",
        "button": {
          "title": "Contact customer service",
          "openUrlAction": {
            "url": "mailto:support@example.com"
          }
        }
      },
      {
        "type": "EMAIL",
        "button": {
          "title": "Email restaurant",
          "openUrlAction": {
            "url": "mailto:person@example.com"
          }
        }
      },
      {
        "type": "CALL_RESTAURANT",
        "button": {
          "title": "Call restaurant",
          "openUrlAction": {
            "url": "tel:+16505554679"
          }
        }
      }
    ],
    "receipt": {
      "userVisibleOrderId": "userVisibleId1234"
    },
    "infoExtension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
      "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
    }
  }
}

DeliveryInfo

A tabela a seguir lista as propriedades do tipo DeliveryInfo:

Propriedade Tipo Descrição
deliveryTimeIso8601 String

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

Exemplo: PT90M

O exemplo a seguir mostra um elemento DeliveryInfo:

Exemplo

{
  "deliveryTimeIso8601": "PT90M"
}

Exoneração de responsabilidade

A tabela a seguir lista as propriedades do tipo Disclaimer:

Propriedade Tipo Descrição
predefinedMessage PredefinedMessage

Obrigatório.

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

feeAmount Money

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

feeAmountRange FeeAmountRange

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

feePercent Número

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

feePercentRange FeePercentRange

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

O exemplo a seguir mostra um elemento Disclaimer:

Exemplo 1

{
  "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER"
}

Exemplo 2

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE"
}

Exemplo 3

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

Exemplo 4

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

Exemplo 5

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

Exemplo 6

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

Erro

O tipo Error tem estes valores possíveis:

  • CLOSED: o restaurante está fechado no momento do pedido.
  • NO_CAPACITY: não há capacidade de serviço disponível (por exemplo, uma interrupção temporária devido a horários de pico).
  • NO_COURIER_AVAILABLE: não foi possível processar o pedido devido à equipe de entrega limitada.
  • REQUIREMENTS_NOT_MET: as restrições para aceitar o pedido não foram atendidas (por exemplo, tamanho mínimo do carrinho).
  • UNAVAILABLE_SLOT: o pedido não pode ser atendido no horário com antecedência especificado pelo DeliveryInfo ou PickupInfo.
  • OUT_OF_SERVICE_AREA: o pedido não pode ser entregue no endereço do usuário.
  • PROMO_EXPIRED: não foi possível aplicar a promoção porque ela expirou.
  • PROMO_NOT_APPLICABLE: código de erro genérico para capturar todos os casos de falha ao aplicar o código promocional, se nenhum dos outros erros se encaixar.
  • PROMO_NOT_RECOGNIZED: o código do cupom não foi reconhecido.
  • PROMO_ORDER_INELIGIBLE: o pedido atual não está qualificado para este cupom.
  • PROMO_USER_INELIGIBLE: o usuário atual não está qualificado para este cupom.
  • AVAILABILITY_CHANGED: o item não está mais disponível ou não há itens suficientes para atender à solicitação.
  • INCORRECT_PRICE: erros de preço nas taxas ou no total.
  • INVALID: um item de linha, uma FulfillmentOption ou uma promoção contém dados inválidos.
  • NOT_FOUND: um item de linha, uma FulfillmentOption ou uma promoção não foi encontrada.
  • PRICE_CHANGED: o preço de um item mudou.

FeeAmountRange

A tabela a seguir lista as propriedades do tipo FeeAmountRange:

Propriedade Tipo Descrição
minFeeAmount Money

Limite inferior do valor da taxa cobrada.

maxFeeAmount Money

Limite superior do valor da taxa cobrada.

FeePercentRange

A tabela a seguir lista as propriedades do tipo FeePercentRange:

Propriedade Tipo Descrição
minFeePercent Número

Limite inferior da porcentagem cobrada da taxa.

maxFeePercent Número

Limite superior da porcentagem cobrada da taxa.

FoodCartExtension

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

A tabela a seguir lista as propriedades do tipo FoodCartExtension:

Propriedade Tipo Descrição
@type Const

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

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

contact Contact

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

fulfillmentPreference FulfillmentOption

Obrigatório.

Preferência de fulfillment do usuário.

location Location

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

O exemplo a seguir mostra um elemento FoodCartExtension:

Exemplo 1

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
  "fulfillmentPreference": {
    "fulfillmentInfo": {
      "delivery": {
        "deliveryTimeIso8601": "P0M"
      }
    }
  },
  "location": {
    "coordinates": {
      "latitude": 37.788783,
      "longitude": -122.41384
    },
    "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
    "zipCode": "94043",
    "city": "Mountain View",
    "postalAddress": {
      "regionCode": "US",
      "postalCode": "94043",
      "administrativeArea": "CA",
      "locality": "Mountain View",
      "addressLines": [
        "1350 Charleston Road"
      ]
    },
    "notes": "Gate code is #111"
  }
}

Exemplo 2

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
  "fulfillmentPreference": {
    "fulfillmentInfo": {
      "pickup": {
        "pickupTimeIso8601": "P0M"
      }
    }
  },
  "contact": {
    "displayName": "Lovefood Ordering",
    "email": "ilovefood@example.com",
    "phoneNumber": "+16501234567"
  }
}

FoodErrorExtension

Identifica um ou mais erros que ocorreram durante o processamento de uma solicitação. A tabela a seguir descreve os campos do tipo FoodErrorExtension. Os erros podem ser enviados em um CheckoutResponse.

A tabela a seguir lista as propriedades do tipo FoodErrorExtension:

Propriedade Tipo Descrição
@type Const

Obrigatório.

Tipo dessa extensão.

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

foodOrderErrors Lista<FoodOrderError>

Obrigatório.

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

Não pode ter menos de 1 item.

correctedProposedOrder ProposedOrder

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

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

paymentOptions PaymentOptions

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

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

additionalPaymentOptions Lista<PaymentOptions>

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

O exemplo a seguir mostra um elemento FoodErrorExtension:

Exemplo

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension",
  "foodOrderErrors": [
    {
      "error": "PRICE_CHANGED",
      "id": "sample_item_offer_id_1",
      "description": "The price has changed.",
      "updatedPrice": {
        "currencyCode": "USD",
        "units": "2",
        "nanos": 750000000
      }
    },
    {
      "error": "PRICE_CHANGED",
      "id": "sample_item_offer_id_2",
      "description": "The price has changed.",
      "updatedPrice": {
        "currencyCode": "USD",
        "units": "8"
      }
    }
  ],
  "correctedProposedOrder": {
    "id": "sample_corrected_proposed_order_id_1",
    "otherItems": [
      {
        "name": "New customer discount",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "-5",
            "nanos": -500000000
          }
        },
        "type": "DISCOUNT"
      },
      {
        "name": "Delivery fee",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "3",
            "nanos": 500000000
          }
        },
        "type": "DELIVERY"
      },
      {
        "name": "Tax",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "1",
            "nanos": 500000000
          }
        },
        "type": "TAX"
      }
    ],
    "cart": {
      "merchant": {
        "id": "https://www.exampleprovider.com/merchant/id1",
        "name": "Falafel Bite"
      },
      "lineItems": [
        {
          "name": "Pita Chips",
          "type": "REGULAR",
          "id": "sample_item_offer_id_1",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "2",
              "nanos": 750000000
            }
          },
          "subLines": [
            {
              "note": "Notes for this item."
            }
          ],
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
            "options": [
              {
                "id": "sample_addon_offer_id_1",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                "name": "Honey Mustard",
                "price": {
                  "currencyCode": "USD"
                },
                "quantity": 1
              },
              {
                "id": "sample_addon_offer_id_2",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                "name": "BBQ Sauce",
                "price": {
                  "currencyCode": "USD",
                  "nanos": 500000000
                },
                "quantity": 1
              }
            ]
          }
        },
        {
          "name": "Chicken Shwarma Wrap",
          "type": "REGULAR",
          "id": "sample_item_offer_id_2",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id2",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "8"
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        },
        {
          "name": "Greek Salad",
          "type": "REGULAR",
          "id": "sample_item_offer_id_3",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id3",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "9",
              "nanos": 990000000
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        },
        {
          "name": "Prawns Biryani",
          "type": "REGULAR",
          "id": "sample_item_offer_id_4",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "15",
              "nanos": 990000000
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        }
      ],
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
        "fulfillmentPreference": {
          "fulfillmentInfo": {
            "delivery": {
              "deliveryTimeIso8601": "P90M"
            }
          }
        },
        "location": {
          "coordinates": {
            "latitude": 37.788783,
            "longitude": -122.41384
          },
          "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
          "zipCode": "94043",
          "city": "Mountain View",
          "postalAddress": {
            "regionCode": "US",
            "postalCode": "94043",
            "administrativeArea": "CA",
            "locality": "Mountain View",
            "addressLines": [
              "1350 Charleston Road"
            ]
          },
          "notes": "Gate code is #111"
        }
      }
    },
    "totalPrice": {
      "type": "ESTIMATE",
      "amount": {
        "currencyCode": "USD",
        "units": "36",
        "nanos": 730000000
      }
    },
    "extension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
      "availableFulfillmentOptions": [
        {
          "fulfillmentInfo": {
            "delivery": {
              "deliveryTimeIso8601": "P90M"
            }
          },
          "expiresAt": "2017-07-17T12:30:00Z"
        }
      ]
    }
  },
  "paymentOptions": {
    "googleProvidedOptions": {
      "tokenizationParameters": {
        "tokenizationType": "PAYMENT_GATEWAY",
        "parameters": {
          "gateway": "stripe",
          "stripe:publishableKey": "pk_live_stripe_client_key",
          "stripe:version": "2017-04-06"
        }
      },
      "supportedCardNetworks": [
        "AMEX",
        "DISCOVER",
        "MASTERCARD",
        "JCB",
        "VISA"
      ],
      "prepaidCardDisallowed": true
    }
  }
}

FoodItemExtension

Define complementos para alimentos.

A tabela a seguir lista as propriedades do tipo FoodItemExtension:

Propriedade Tipo Descrição
@type Const

Obrigatório.

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

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

options Lista<FoodItemOption>

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

O exemplo a seguir mostra um elemento FoodItemExtension:

Exemplo

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
  "options": [
    {
      "id": "sample_addon_offer_id_1",
      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
      "name": "Honey Mustard",
      "price": {
        "currencyCode": "USD"
      },
      "quantity": 1
    },
    {
      "id": "sample_addon_offer_id_2",
      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
      "name": "BBQ Sauce",
      "price": {
        "currencyCode": "USD",
        "nanos": 500000000
      },
      "quantity": 1,
      "subOptions": [
        {
          "id": "10239138",
          "offerId": "912391723",
          "name": "Fries",
          "price": {
            "currencyCode": "USD",
            "units": "2",
            "nanos": 230000000
          },
          "quantity": 1
        }
      ]
    }
  ]
}

FoodItemOption

A tabela a seguir lista as propriedades do tipo FoodItemOption:

Propriedade Tipo Descrição
id String

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

Exemplo: 39231093

offerId String

ID da oferta do item.

Exemplo: 912835081

name String

Nome da opção.

Exemplo: Honey Mustard

price Money
note String

Observação relacionada à opção.

quantity Número

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

Exemplo: 3

subOptions Lista<FoodItemOption>

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

Exemplo: [ { "id": "71283712", "offerId": "51209121", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "units": "3", "nanos": 780000000 }, "quantity": 2 }, { "id": "102941024", "offerId": "12084102", "name": "Ketchup", "price": { "currencyCode": "USD", "units": "2", "nanos": 980000000 }, "quantity": 6 } ]

O exemplo a seguir mostra um elemento FoodItemOption:

Exemplo 1

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

Exemplo 2

{
  "id": "123166552",
  "offerId": "912849184",
  "name": "Make It A Meal",
  "price": {
    "currencyCode": "USD",
    "units": "3",
    "nanos": 730000000
  },
  "quantity": 1,
  "subOptions": [
    {
      "id": "10239138",
      "offerId": "912391723",
      "name": "Fries",
      "price": {
        "currencyCode": "USD",
        "units": "2",
        "nanos": 230000000
      },
      "quantity": 1
    },
    {
      "id": "57159183",
      "offerId": "81837123",
      "name": "Drink",
      "price": {
        "currencyCode": "USD",
        "units": "3",
        "nanos": 130000000
      },
      "quantity": 1
    }
  ]
}

FoodOrderError

Contém detalhes sobre erros em uma CheckoutResponse.

A tabela a seguir lista as propriedades do tipo FoodOrderError:

Propriedade Tipo Descrição
error Error

Obrigatório.

id String

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

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

description String

Descrição do erro. Essa descrição é usada para registros internos e não fica visível para os usuários.

updatedPrice Money

Obrigatório quando error = "PRICE_CHANGED".

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

availableQuantity Número inteiro

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

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

O exemplo a seguir mostra um elemento FoodOrderError:

Exemplo 1

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

Exemplo 2

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

FoodOrderExtension

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

A tabela a seguir lista as propriedades do tipo FoodOrderExtension:

Propriedade Tipo Descrição
@type Const

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

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

availableFulfillmentOptions Lista<FulfillmentOption>

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

optinForRemarketing Booleano

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

O exemplo a seguir mostra um elemento FoodOrderExtension:

Exemplo 1

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

Exemplo 2

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

FulfillmentOption

Você pode usar um objeto FulfillmentOption das seguintes maneiras:
  • Em Checkout AppRequest e Submit AppRequest, o Cart.extension.fulfillmentPreference: armazena a preferência do usuário (entrega ou retirada). O preço é sempre 0 no momento em que a solicitação de finalização da compra é enviada.
  • Em Checkout AppResponse, o ProposedOrder.extension.availableFulfillmentOptions: define uma ou mais opções de entrega (atualmente, apenas uma opção é aceita). Especifique a opção padrão como um LineItem em ProposedOrder.otherItems. O offerId de FulfillmentOption precisa corresponder ao ID do LineItem especificado em ProposedOrder.otherItems.

A tabela a seguir lista as propriedades do tipo FulfillmentOption:

Propriedade Tipo Descrição
offerId String

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

fulfillmentInfo FulfillmentOptionInfo

Obrigatório.

expiresAt Carimbo de data/hora ISO

Hora em que esta opção de atendimento do pedido expira.

price Money

Custo dessa opção.

O exemplo a seguir mostra um elemento FulfillmentOption:

Exemplo

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

FulfillmentOptionInfo

Define as informações relacionadas ao FulfillmentInfo.

A tabela a seguir lista as propriedades do tipo FulfillmentOptionInfo:

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

Se presente, indica a ordem de entrega.

pickup Grupo 2 PickupInfo

Se presente, indica um pedido para retirada.

Imagem

A tabela a seguir lista as propriedades do tipo Image:

Propriedade Tipo Descrição
sourceUrl String

Obrigatório.

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

LineItem

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

A tabela a seguir lista as propriedades do tipo LineItem:

Propriedade Tipo Descrição
id String

Obrigatório quando type = "REGULAR".

Para um item de linha em um carrinho (ProposedOrder.cart.lineItems[0].id), esse é o ID exclusivo criado pelo Google ao criar o pedido. Para um item de linha em um ProposedOrder (ProposedOrder.otherItems[0].id), que é usado para adicionar itens como taxas de entrega e impostos, o valor do ID é definido pelo provedor. Por exemplo, em um carrinho, há dois itens iguais com instruções de preparo diferentes (como duas pizzas médias com diferentes recheios). Nesse caso, os dois itens têm o mesmo OfferId base. Quando você enviar uma solicitação de atualização do pedido para indicar que um item foi rejeitado, use esse código para desambiguar. Em outras palavras, se uma das pizzas for rejeitada por falta de um sabor específico, o ID ajuda o Google a determinar a qual item no pedido você está se referindo. Este campo é obrigatório, exceto em otherItems.

name String

Obrigatório.

Nome do item de linha. Essa é uma string visível ao usuário e, sempre que possível, ela precisa ter letras maiúsculas e minúsculas (como "Taxa de entrega", "Taxa de serviço" e "Tributos"). Este campo é truncado em 100 caracteres para usuários.

type LineItemType

Obrigatório.

quantity Número inteiro

Obrigatório quando type = "REGULAR".

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

description String

Descrição do item.

price Price

Obrigatório.

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

subLines Lista<SublineNote>

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

Não é possível ter mais de 1 item.

offerId String

Obrigatório quando type = "REGULAR".

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

extension FoodItemExtension

Define complementos para alimentos.

O exemplo a seguir mostra um elemento LineItem:

Exemplo 1

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

Exemplo 2

{
  "name": "Pita Chips",
  "type": "REGULAR",
  "id": "sample_item_offer_id_1",
  "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
  "quantity": 1,
  "price": {
    "type": "ESTIMATE",
    "amount": {
      "currencyCode": "USD",
      "units": "2",
      "nanos": 750000000
    }
  },
  "subLines": [
    {
      "note": "Notes for this item."
    }
  ],
  "extension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
    "options": [
      {
        "id": "sample_addon_offer_id_1",
        "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
        "name": "Honey Mustard",
        "price": {
          "currencyCode": "USD"
        },
        "quantity": 1
      },
      {
        "id": "sample_addon_offer_id_2",
        "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
        "name": "BBQ Sauce",
        "price": {
          "currencyCode": "USD",
          "nanos": 500000000
        },
        "quantity": 1
      }
    ]
  }
}

LineItemType

O tipo LineItemType tem estes valores possíveis:

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

Local

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

A tabela a seguir lista as propriedades do tipo Location:

Propriedade Tipo Descrição
coordinates Coordinates
formattedAddress String

Mostra o endereço do local.

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

postalAddress PostalAddress
zipCode String

Exemplo: 90210

city String

É o nome da cidade.

Exemplo: Los Angeles

notes String

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

Exemplo: Gate code is #111

O exemplo a seguir mostra um elemento Location:

Exemplo

{
  "coordinates": {
    "latitude": 37.788783,
    "longitude": -122.41384
  },
  "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
  "zipCode": "94043",
  "city": "Mountain View",
  "postalAddress": {
    "regionCode": "US",
    "postalCode": "94043",
    "administrativeArea": "CA",
    "locality": "Mountain View",
    "addressLines": [
      "1350 Charleston Road"
    ]
  },
  "notes": "Gate code is #111"
}

Comerciante

A tabela a seguir lista as propriedades do tipo Merchant:

Propriedade Tipo Descrição
id String

ID do comerciante. Se especificado, corresponde a Restaurant.@id no feed do Restaurante.

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

name String

Obrigatório.

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

Exemplo: Falafel Bite

O exemplo a seguir mostra um elemento Merchant:

Exemplo

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

Dinheiro

A tabela a seguir lista as propriedades do tipo Money:

Propriedade Tipo Descrição
currencyCode String

Obrigatório.

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

Exemplo: USD

units String

As unidades inteiras do montante. Por exemplo, se ocurrencyCode for "USD", a unidade "1" equivale a um dólar americano.

Exemplo: 36

nanos Número inteiro

Número de unidades nano (10^-9) do montante. É necessário que o valor esteja entre -999.999.999 e +999.999.999. Use as seguintes regras: se "Units" for positivo, o valor de "nanos" deverá ser positivo ou zero. Se "unidades" for zero, "nanos" poderá ser positivo, zero ou negativo. Se "Units" for negativo, "nanos" precisará ser negativo ou zero. Por exemplo,US $-1,75 é representado como unidades = -1 e nanos = -750.000.000.

Exemplo: 730000000

O exemplo a seguir mostra um elemento Money:

Exemplo 1

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

Exemplo 2

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

Pedido

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

A tabela a seguir lista as propriedades do tipo Order:

Propriedade Tipo Descrição
finalOrder ProposedOrder

Obrigatório.

O pedido proposto que causou o pedido.

googleOrderId String

Obrigatório.

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

orderDate Carimbo de data/hora ISO

Obrigatório.

Data e hora em que o pedido foi criado.

paymentInfo PaymentInfo

Obrigatório.

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

O exemplo a seguir mostra um elemento Order:

Exemplo

{
  "finalOrder": {
    "cart": {
      "notes": "Guest prefers their food to be hot when it is delivered.",
      "merchant": {
        "id": "https://www.exampleprovider.com/merchant/id1",
        "name": "Cucina Venti"
      },
      "lineItems": [
        {
          "name": "Sizzling Prawns Dinner",
          "type": "REGULAR",
          "id": "sample_item_offer_id_1",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "16",
              "nanos": 750000000
            }
          },
          "subLines": [
            {
              "note": "Notes for this item."
            }
          ],
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
            "options": [
              {
                "id": "sample_addon_offer_id_1",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                "name": "Honey Mustard",
                "price": {
                  "currencyCode": "USD"
                },
                "quantity": 1
              },
              {
                "id": "sample_addon_offer_id_2",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                "name": "BBQ Sauce",
                "price": {
                  "currencyCode": "USD",
                  "nanos": 500000000
                },
                "quantity": 1
              }
            ]
          }
        }
      ],
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
        "fulfillmentPreference": {
          "fulfillmentInfo": {
            "pickup": {
              "pickupTimeIso8601": "P0M"
            }
          }
        },
        "contact": {
          "displayName": "Lovefood Ordering",
          "email": "ilovefood@example.com",
          "phoneNumber": "+16501234567"
        }
      }
    },
    "otherItems": [
      {
        "name": "Service fee",
        "type": "FEE",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "3",
            "nanos": 500000000
          }
        }
      },
      {
        "name": "Tax",
        "type": "TAX",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "1",
            "nanos": 370000000
          }
        }
      },
      {
        "name": "Tip",
        "type": "GRATUITY",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "2",
            "nanos": 590000000
          }
        }
      }
    ],
    "totalPrice": {
      "type": "ESTIMATE",
      "amount": {
        "currencyCode": "USD",
        "units": "23",
        "nanos": 710000000
      }
    },
    "id": "sample_final_order_id",
    "extension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
      "availableFulfillmentOptions": [
        {
          "fulfillmentInfo": {
            "pickup": {
              "pickupTimeIso8601": "P0M"
            }
          },
          "expiresAt": "2017-07-17T12:30:00Z"
        }
      ],
      "optinForRemarketing": true
    }
  },
  "googleOrderId": "sample_google_order_id",
  "orderDate": "2017-07-17T12:00:00Z",
  "paymentInfo": {
    "displayName": "Visa\u2006****\u20061111",
    "googleProvidedPaymentInstrument": {
      "instrumentToken": "abcd"
    },
    "paymentType": "PAYMENT_CARD"
  }
}

OrderUpdate

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

A tabela a seguir lista as propriedades do tipo OrderUpdate:

Propriedade Tipo Descrição
actionOrderId String

Obrigatório.

ID exclusivo do pedido no sistema do integrador usado para identificar a ordem de envio da atualização. Se recibo.user_visible_order_id não for fornecido pelo menos uma vez no OrderUpdate para um pedido "CREATED", esse ID vai ser o código visível ao usuário inserido que aparece no cartão do pedido do Google.

orderState OrderState

Obrigatório.

O novo estado do pedido.

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

Obrigatório.

A hora em que o pedido foi atualizado.

orderManagementActions Lista<OrderManagementAction>

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

É preciso ter no mínimo 1 item e no máximo 6 itens.

rejectionInfo RejectionInfo

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

cancellationInfo CancellationInfo

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

inTransitInfo InTransitInfo

O uso desse campo foi descontinuado.

fulfillmentInfo FulfillmentInfo

O uso desse campo foi descontinuado.

receipt Receipt

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

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

totalPrice Price

Preço total do pedido.

infoExtension FoodOrderUpdateExtension

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

O exemplo a seguir mostra um elemento OrderUpdate:

Exemplo

{
  "actionOrderId": "sample_action_order_id",
  "orderState": {
    "state": "CONFIRMED",
    "label": "Provider confirmed"
  },
  "totalPrice": {
    "type": "ESTIMATE",
    "amount": {
      "currencyCode": "USD",
      "units": "41",
      "nanos": 600000000
    }
  },
  "lineItemUpdates": {
    "sample_item_id_1": {
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "3",
          "nanos": 500000000
        }
      },
      "reason": "This item has an updated price."
    }
  },
  "receipt": {
    "userVisibleOrderId": "userVisibleId1234"
  },
  "updateTime": "2017-07-17T12:00:00Z",
  "orderManagementActions": [
    {
      "type": "CUSTOMER_SERVICE",
      "button": {
        "title": "Contact customer service",
        "openUrlAction": {
          "url": "mailto:support@example.com"
        }
      }
    },
    {
      "type": "EMAIL",
      "button": {
        "title": "Email restaurant",
        "openUrlAction": {
          "url": "mailto:person@example.com"
        }
      }
    },
    {
      "type": "CALL_RESTAURANT",
      "button": {
        "title": "Call restaurant",
        "openUrlAction": {
          "url": "tel:+16505554679"
        }
      }
    }
  ],
  "infoExtension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
    "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
  }
}

PickupInfo

A tabela a seguir lista as propriedades do tipo PickupInfo:

Propriedade Tipo Descrição
pickupTimeIso8601 String

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

Exemplo: PT90M

O exemplo a seguir mostra um elemento PickupInfo:

Exemplo

{
  "pickupTimeIso8601": "PT90M"
}

PostalAddress

A tabela a seguir lista as propriedades do tipo PostalAddress:

Propriedade Tipo Descrição
regionCode String

Obrigatório.

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

Exemplo: US

postalCode String

É o código postal.

Exemplo: 94043

administrativeArea String

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

Exemplo: CA

locality String

A cidade deste local. Nas regiões em que as localidades não são bem definidas ou não se encaixam nessa estrutura, não especifique a localidade e use o campo addressLines.

Exemplo: Mountain View

addressLines List<String>

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

Exemplo: [ "1350 Charleston Road" ]

recipients List<String>

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

O exemplo a seguir mostra um elemento PostalAddress:

Exemplo

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

Preço

A tabela a seguir lista as propriedades do tipo Price:

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

Obrigatório.

O código do cupom promocional.

amount Money

Obrigatório.

Promoção

A tabela a seguir lista as propriedades do tipo Promotion:

Propriedade Tipo Descrição
coupon String

Obrigatório.

O código do cupom promocional.

ProposedOrder

A tabela a seguir lista as propriedades do tipo ProposedOrder:

Propriedade Tipo Descrição
id String

ID opcional do pedido proposto.

cart Cart

Obrigatório.

Itens do usuário.

otherItems Lista<LineItem>

Itens adicionados pelo fornecedor, como taxas de entrega, outras taxas e impostos. Outros itens também podem conter gratuidade e/ou desconto adicionados pelo usuário.

Não é possível ter mais de 10 itens.

image Image

Imagem associada ao pedido proposto.

totalPrice Price

Obrigatório.

Preço total do pedido proposto.

extension FoodOrderExtension

Obrigatório.

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

disclaimers Lista<Disclaimer>

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

O exemplo a seguir mostra um elemento ProposedOrder:

Exemplo

{
  "id": "sample_proposed_order_id_1",
  "otherItems": [
    {
      "name": "New customer discount",
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "-5",
          "nanos": -500000000
        }
      },
      "type": "DISCOUNT"
    },
    {
      "name": "Delivery fee",
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "3",
          "nanos": 500000000
        }
      },
      "type": "DELIVERY"
    },
    {
      "name": "Tax",
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "1",
          "nanos": 500000000
        }
      },
      "type": "TAX"
    }
  ],
  "cart": {
    "merchant": {
      "id": "https://www.exampleprovider.com/merchant/id1",
      "name": "Falafel Bite"
    },
    "lineItems": [
      {
        "name": "Pita Chips",
        "type": "REGULAR",
        "id": "sample_item_offer_id_1",
        "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
        "quantity": 1,
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "2",
            "nanos": 750000000
          }
        },
        "subLines": [
          {
            "note": "Notes for this item."
          }
        ],
        "extension": {
          "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
          "options": [
            {
              "id": "sample_addon_offer_id_1",
              "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
              "name": "Honey Mustard",
              "price": {
                "currencyCode": "USD"
              },
              "quantity": 1
            },
            {
              "id": "sample_addon_offer_id_2",
              "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
              "name": "BBQ Sauce",
              "price": {
                "currencyCode": "USD",
                "nanos": 500000000
              },
              "quantity": 1
            }
          ]
        }
      },
      {
        "name": "Chicken Shwarma Wrap",
        "type": "REGULAR",
        "id": "sample_item_offer_id_2",
        "offerId": "https://www.exampleprovider.com/menu/item/offer/id2",
        "quantity": 1,
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "8"
          }
        },
        "extension": {
          "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
        }
      },
      {
        "name": "Greek Salad",
        "type": "REGULAR",
        "id": "sample_item_offer_id_3",
        "offerId": "https://www.exampleprovider.com/menu/item/offer/id3",
        "quantity": 1,
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "9",
            "nanos": 990000000
          }
        },
        "extension": {
          "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
        }
      },
      {
        "name": "Prawns Biryani",
        "type": "REGULAR",
        "id": "sample_item_offer_id_4",
        "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
        "quantity": 1,
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "15",
            "nanos": 990000000
          }
        },
        "extension": {
          "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
        }
      }
    ],
    "extension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
      "fulfillmentPreference": {
        "fulfillmentInfo": {
          "delivery": {
            "deliveryTimeIso8601": "P90M"
          }
        }
      },
      "location": {
        "coordinates": {
          "latitude": 37.788783,
          "longitude": -122.41384
        },
        "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
        "zipCode": "94043",
        "city": "Mountain View",
        "postalAddress": {
          "regionCode": "US",
          "postalCode": "94043",
          "administrativeArea": "CA",
          "locality": "Mountain View",
          "addressLines": [
            "1350 Charleston Road"
          ]
        },
        "notes": "Gate code is #111"
      }
    }
  },
  "totalPrice": {
    "type": "ESTIMATE",
    "amount": {
      "currencyCode": "USD",
      "units": "36",
      "nanos": 730000000
    }
  },
  "extension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
    "availableFulfillmentOptions": [
      {
        "fulfillmentInfo": {
          "delivery": {
            "deliveryTimeIso8601": "P0M"
          }
        },
        "expiresAt": "2017-07-17T12:30:00Z"
      }
    ]
  }
}

SublineNote

A tabela a seguir lista as propriedades do tipo SublineNote:

Propriedade Tipo Descrição
note String

Obrigatório.

Carimbo de data/hora

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

TransactionDecisionValue

Contém o Order.

A tabela a seguir lista as propriedades do tipo TransactionDecisionValue:

Propriedade Tipo Descrição
order Order

Obrigatório.

Pedido a ser feito com detalhes de pagamento.

O exemplo a seguir mostra um elemento TransactionDecisionValue:

Exemplo

{
  "order": {
    "finalOrder": {
      "cart": {
        "notes": "Guest prefers their food to be hot when it is delivered.",
        "merchant": {
          "id": "https://www.exampleprovider.com/merchant/id1",
          "name": "Cucina Venti"
        },
        "lineItems": [
          {
            "name": "Sizzling Prawns Dinner",
            "type": "REGULAR",
            "id": "sample_item_offer_id_1",
            "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
            "quantity": 1,
            "price": {
              "type": "ESTIMATE",
              "amount": {
                "currencyCode": "USD",
                "units": "16",
                "nanos": 750000000
              }
            },
            "subLines": [
              {
                "note": "Notes for this item."
              }
            ],
            "extension": {
              "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
              "options": [
                {
                  "id": "sample_addon_offer_id_1",
                  "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                  "name": "Honey Mustard",
                  "price": {
                    "currencyCode": "USD"
                  },
                  "quantity": 1
                },
                {
                  "id": "sample_addon_offer_id_2",
                  "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                  "name": "BBQ Sauce",
                  "price": {
                    "currencyCode": "USD",
                    "nanos": 500000000
                  },
                  "quantity": 1
                }
              ]
            }
          }
        ],
        "extension": {
          "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
          "fulfillmentPreference": {
            "fulfillmentInfo": {
              "pickup": {
                "pickupTimeIso8601": "P0M"
              }
            }
          },
          "contact": {
            "displayName": "Lovefood Ordering",
            "email": "ilovefood@example.com",
            "phoneNumber": "+16501234567"
          }
        }
      },
      "otherItems": [
        {
          "name": "Service fee",
          "type": "FEE",
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "3",
              "nanos": 500000000
            }
          }
        },
        {
          "name": "Tax",
          "type": "TAX",
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "1",
              "nanos": 370000000
            }
          }
        },
        {
          "name": "Tip",
          "type": "GRATUITY",
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "2",
              "nanos": 590000000
            }
          }
        }
      ],
      "totalPrice": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "23",
          "nanos": 710000000
        }
      },
      "id": "sample_final_order_id",
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
        "availableFulfillmentOptions": [
          {
            "fulfillmentInfo": {
              "pickup": {
                "pickupTimeIso8601": "P0M"
              }
            },
            "expiresAt": "2017-07-17T12:30:00Z"
          }
        ],
        "optinForRemarketing": true
      }
    },
    "googleOrderId": "sample_google_order_id",
    "orderDate": "2017-07-17T12:00:00Z",
    "paymentInfo": {
      "displayName": "Visa\u2006****\u20061111",
      "googleProvidedPaymentInstrument": {
        "instrumentToken": "abcd"
      },
      "paymentType": "PAYMENT_CARD"
    }
  }
}

Solicitação de atendimento

AppRequest

A tabela a seguir lista as propriedades do tipo AppRequest:

Propriedade Tipo Descrição
isInSandbox Booleano

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

conversation Conversation
inputs Lista<Input>

Obrigatório.

Contém os argumentos esperados para o check-out de um carrinho.

É preciso ter exatamente 1 item.

O exemplo a seguir mostra um elemento AppRequest:

Exemplo 1

{
  "isInSandbox": true,
  "inputs": [
    {
      "intent": "actions.foodordering.intent.CHECKOUT",
      "arguments": [
        {
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.Cart",
            "merchant": {
              "id": "https://www.exampleprovider.com/merchant/id1",
              "name": "Cucina Venti"
            },
            "lineItems": [
              {
                "name": "Sizzling Prawns Dinner",
                "type": "REGULAR",
                "id": "sample_item_offer_id_1",
                "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
                "quantity": 1,
                "price": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "16",
                    "nanos": 750000000
                  }
                },
                "subLines": [
                  {
                    "note": "Notes for this item."
                  }
                ],
                "extension": {
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
                  "options": [
                    {
                      "id": "sample_addon_offer_id_1",
                      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                      "name": "Honey Mustard",
                      "price": {
                        "currencyCode": "USD"
                      },
                      "quantity": 1
                    },
                    {
                      "id": "sample_addon_offer_id_2",
                      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                      "name": "BBQ Sauce",
                      "price": {
                        "currencyCode": "USD",
                        "nanos": 500000000
                      },
                      "quantity": 1
                    }
                  ]
                }
              }
            ],
            "extension": {
              "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
              "fulfillmentPreference": {
                "fulfillmentInfo": {
                  "delivery": {
                    "deliveryTimeIso8601": "P0M"
                  }
                }
              },
              "location": {
                "coordinates": {
                  "latitude": 37.788783,
                  "longitude": -122.41384
                },
                "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
                "zipCode": "94043",
                "city": "Mountain View",
                "postalAddress": {
                  "regionCode": "US",
                  "postalCode": "94043",
                  "administrativeArea": "CA",
                  "locality": "Mountain View",
                  "addressLines": [
                    "1350 Charleston Road"
                  ]
                },
                "notes": "Gate code is #111"
              }
            }
          }
        }
      ]
    }
  ]
}

Exemplo 2

{
  "isInSandbox": true,
  "inputs": [
    {
      "intent": "actions.intent.TRANSACTION_DECISION",
      "arguments": [
        {
          "transactionDecisionValue": {
            "order": {
              "finalOrder": {
                "cart": {
                  "notes": "Guest prefers their food to be hot when it is delivered.",
                  "merchant": {
                    "id": "https://www.exampleprovider.com/merchant/id1",
                    "name": "Cucina Venti"
                  },
                  "lineItems": [
                    {
                      "name": "Sizzling Prawns Dinner",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_1",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "16",
                          "nanos": 750000000
                        }
                      },
                      "subLines": [
                        {
                          "note": "Notes for this item."
                        }
                      ],
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
                        "options": [
                          {
                            "id": "sample_addon_offer_id_1",
                            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                            "name": "Honey Mustard",
                            "price": {
                              "currencyCode": "USD"
                            },
                            "quantity": 1
                          },
                          {
                            "id": "sample_addon_offer_id_2",
                            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                            "name": "BBQ Sauce",
                            "price": {
                              "currencyCode": "USD",
                              "nanos": 500000000
                            },
                            "quantity": 1
                          }
                        ]
                      }
                    }
                  ],
                  "extension": {
                    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
                    "fulfillmentPreference": {
                      "fulfillmentInfo": {
                        "pickup": {
                          "pickupTimeIso8601": "P0M"
                        }
                      }
                    },
                    "contact": {
                      "displayName": "Lovefood Ordering",
                      "email": "ilovefood@example.com",
                      "phoneNumber": "+16501234567"
                    }
                  }
                },
                "otherItems": [
                  {
                    "name": "Service fee",
                    "type": "FEE",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "3",
                        "nanos": 500000000
                      }
                    }
                  },
                  {
                    "name": "Tax",
                    "type": "TAX",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "1",
                        "nanos": 370000000
                      }
                    }
                  },
                  {
                    "name": "Tip",
                    "type": "GRATUITY",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "2",
                        "nanos": 590000000
                      }
                    }
                  }
                ],
                "totalPrice": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "23",
                    "nanos": 710000000
                  }
                },
                "id": "sample_final_order_id",
                "extension": {
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
                  "availableFulfillmentOptions": [
                    {
                      "fulfillmentInfo": {
                        "pickup": {
                          "pickupTimeIso8601": "P0M"
                        }
                      },
                      "expiresAt": "2017-07-17T12:30:00Z"
                    }
                  ],
                  "optinForRemarketing": true
                }
              },
              "googleOrderId": "sample_google_order_id",
              "orderDate": "2017-07-17T12:00:00Z",
              "paymentInfo": {
                "displayName": "Visa\u2006****\u20061111",
                "googleProvidedPaymentInstrument": {
                  "instrumentToken": "abcd"
                },
                "paymentType": "PAYMENT_CARD"
              }
            }
          }
        }
      ]
    }
  ]
}

CheckoutRequestMessage

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

SubmitOrderRequestMessage

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

Conversa

Um Conversation é exclusivo para apenas uma sessão. Você pode usá-lo para vincular várias ações Checkout e SubmitOrder, se necessário.

A tabela a seguir lista as propriedades do tipo Conversation:

Propriedade Tipo Descrição
conversationId String

Obrigatório.

ID exclusivo da conversa.

O exemplo a seguir mostra um elemento Conversation:

Exemplo

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

Entrada

Os argumentos esperados para finalizar a compra de um carrinho.

A tabela a seguir lista as propriedades do tipo Input:

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

Obrigatório.

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

arguments Lista<Argument>

Obrigatório.

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

É preciso ter exatamente 1 item.

Argumento

Contém detalhes sobre os alimentos que o usuário quer finalizar. Somente a extensão é aplicável ao pagamento. Para enviar um pedido, somente transactionDecisionValue é aplicável

A tabela a seguir lista as propriedades do tipo Argument:

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

detalha os alimentos que o usuário quer finalizar.

transactionDecisionValue Grupo 2 TransactionDecisionValue

Contém o pedido a ser feito, além dos detalhes de pagamento.

Resposta ao atendimento do pedido

AppResponse

A tabela a seguir lista as propriedades do tipo AppResponse:

Propriedade Tipo Descrição
expectUserResponse Const

Defina como falso.

Valor: False

finalResponse FinalResponse

Obrigatório.

Contém sua resposta ao pagamento do carrinho.

O exemplo a seguir mostra um elemento AppResponse:

Exemplo 1

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "checkoutResponse": {
              "proposedOrder": {
                "id": "sample_proposed_order_id_1",
                "otherItems": [
                  {
                    "name": "New customer discount",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "-5",
                        "nanos": -500000000
                      }
                    },
                    "type": "DISCOUNT"
                  },
                  {
                    "name": "Delivery fee",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "3",
                        "nanos": 500000000
                      }
                    },
                    "type": "DELIVERY"
                  },
                  {
                    "name": "Tax",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "1",
                        "nanos": 500000000
                      }
                    },
                    "type": "TAX"
                  }
                ],
                "cart": {
                  "merchant": {
                    "id": "https://www.exampleprovider.com/merchant/id1",
                    "name": "Falafel Bite"
                  },
                  "lineItems": [
                    {
                      "name": "Pita Chips",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_1",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "2",
                          "nanos": 750000000
                        }
                      },
                      "subLines": [
                        {
                          "note": "Notes for this item."
                        }
                      ],
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
                        "options": [
                          {
                            "id": "sample_addon_offer_id_1",
                            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                            "name": "Honey Mustard",
                            "price": {
                              "currencyCode": "USD"
                            },
                            "quantity": 1
                          },
                          {
                            "id": "sample_addon_offer_id_2",
                            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                            "name": "BBQ Sauce",
                            "price": {
                              "currencyCode": "USD",
                              "nanos": 500000000
                            },
                            "quantity": 1
                          }
                        ]
                      }
                    },
                    {
                      "name": "Chicken Shwarma Wrap",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_2",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id2",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "8"
                        }
                      },
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
                      }
                    },
                    {
                      "name": "Greek Salad",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_3",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id3",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "9",
                          "nanos": 990000000
                        }
                      },
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
                      }
                    },
                    {
                      "name": "Prawns Biryani",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_4",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "15",
                          "nanos": 990000000
                        }
                      },
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
                      }
                    }
                  ],
                  "extension": {
                    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
                    "fulfillmentPreference": {
                      "fulfillmentInfo": {
                        "delivery": {
                          "deliveryTimeIso8601": "P90M"
                        }
                      }
                    },
                    "location": {
                      "coordinates": {
                        "latitude": 37.788783,
                        "longitude": -122.41384
                      },
                      "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
                      "zipCode": "94043",
                      "city": "Mountain View",
                      "postalAddress": {
                        "regionCode": "US",
                        "postalCode": "94043",
                        "administrativeArea": "CA",
                        "locality": "Mountain View",
                        "addressLines": [
                          "1350 Charleston Road"
                        ]
                      },
                      "notes": "Gate code is #111"
                    }
                  }
                },
                "totalPrice": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "36",
                    "nanos": 730000000
                  }
                },
                "extension": {
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
                  "availableFulfillmentOptions": [
                    {
                      "fulfillmentInfo": {
                        "delivery": {
                          "deliveryTimeIso8601": "P0M"
                        }
                      },
                      "expiresAt": "2017-07-17T12:30:00Z"
                    }
                  ]
                }
              },
              "paymentOptions": {
                "googleProvidedOptions": {
                  "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": {  \"merchantId\": \"Merchant ID\",  \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [  {    \"type\": \"CARD\",    \"parameters\": {      \"allowedAuthMethods\": [        \"PAN_ONLY\"      ],      \"allowedCardNetworks\": [        \"VISA\",        \"AMEX\",        \"MASTERCARD\"      ],      \"billingAddressRequired\": false    },    \"tokenizationSpecification\": {      \"type\": \"PAYMENT_GATEWAY\",      \"parameters\": {        \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\",        \"gateway\": \"stripe\",        \"stripe:version\": \"2019-05-16\"      }    }  }],\"transactionInfo\": {  \"currencyCode\": \"AUD\",  \"totalPriceStatus\": \"ESTIMATED\",  \"totalPrice\": \"1.0\"}}"
                }
              },
              "additionalPaymentOptions": [
                {
                  "actionProvidedOptions": {
                    "paymentType": "ON_FULFILLMENT",
                    "displayName": "Cash on delivery."
                  }
                }
              ]
            }
          }
        }
      ]
    }
  }
}

Exemplo 2

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "orderUpdate": {
              "actionOrderId": "sample_action_order_id",
              "orderState": {
                "state": "CONFIRMED",
                "label": "Provider confirmed"
              },
              "receipt": {
                "userVisibleOrderId": "userVisibleId1234"
              },
              "updateTime": "2017-07-17T12:00:00Z",
              "orderManagementActions": [
                {
                  "type": "CUSTOMER_SERVICE",
                  "button": {
                    "title": "Contact customer service",
                    "openUrlAction": {
                      "url": "mailto:support@example.com"
                    }
                  }
                },
                {
                  "type": "CUSTOMER_SERVICE",
                  "button": {
                    "title": "Call customer service",
                    "openUrlAction": {
                      "url": "tel:+18005554679"
                    }
                  }
                },
                {
                  "type": "EMAIL",
                  "button": {
                    "title": "Email restaurant",
                    "openUrlAction": {
                      "url": "mailto:person@example.com"
                    }
                  }
                },
                {
                  "type": "CALL_RESTAURANT",
                  "button": {
                    "title": "Call restaurant",
                    "openUrlAction": {
                      "url": "tel:+16505554679"
                    }
                  }
                }
              ],
              "infoExtension": {
                "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
                "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
              }
            }
          }
        }
      ]
    }
  }
}

Exemplo 3

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "error": {
              "@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension",
              "foodOrderErrors": [
                {
                  "error": "CLOSED",
                  "description": "The restaurant is closed."
                }
              ]
            }
          }
        }
      ]
    }
  }
}

Exemplo 4

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "checkoutResponse": {
              "proposedOrder": {
                "otherItems": [
                  {
                    "name": "Delivery Fees",
                    "subLines": [],
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "3",
                        "nanos": 500000000
                      }
                    },
                    "type": "DELIVERY"
                  },
                  {
                    "name": "Tax",
                    "subLines": [],
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "1",
                        "nanos": 370000000
                      }
                    },
                    "type": "TAX"
                  },
                  {
                    "name": "Promotion",
                    "subLines": [],
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "-5",
                        "nanos": 0
                      }
                    },
                    "id": "OWG_ACTIVE_CODE",
                    "type": "DISCOUNT"
                  }
                ],
                "cart": {
                  "merchant": {
                    "id": "https://www.exampleprovider.com/merchant/id1",
                    "name": "Falafel Bite"
                  },
                  "lineItems": [
                    {
                      "name": "Pita Chips",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_1",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "2",
                          "nanos": 750000000
                        }
                      },
                      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
                      }
                    }
                  ],
                  "promotions": [
                    {
                      "coupon": "OWG_ACTIVE_CODE"
                    }
                  ],
                  "extension": {
                    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
                    "fulfillmentPreference": {
                      "fulfillmentInfo": {
                        "pickup": {
                          "pickupTimeIso8601": "P0M"
                        }
                      }
                    }
                  }
                },
                "totalPrice": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "14",
                    "nanos": 860000000
                  }
                },
                "extension": {
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
                  "availableFulfillmentOptions": [
                    {
                      "fulfillmentInfo": {
                        "pickup": {
                          "pickupTimeIso8601": "P0M"
                        }
                      },
                      "expiresAt": "2018-04-10T01:20:08.471Z"
                    }
                  ]
                }
              },
              "paymentOptions": {
                "googleProvidedOptions": {
                  "tokenizationParameters": {
                    "tokenizationType": "PAYMENT_GATEWAY",
                    "parameters": {
                      "gateway": "stripe",
                      "stripe:publishableKey": "pk_live_stripe_client_key",
                      "stripe:version": "2017-04-06"
                    }
                  },
                  "supportedCardNetworks": [
                    "AMEX",
                    "DISCOVER",
                    "MASTERCARD",
                    "VISA",
                    "JCB"
                  ],
                  "prepaidCardDisallowed": true,
                  "billingAddressRequired": true
                }
              }
            }
          }
        }
      ]
    }
  }
}

CheckoutResponseMessage

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

SubmitOrderResponseMessage

Um SubmitOrderResponseMessage é um AppResponse com um orderUpdate na StructuredResponse.

FinalResponse

Sua resposta para a finalização da compra ou SubmitOrderRequestMessage.

A tabela a seguir lista as propriedades do tipo FinalResponse:

Propriedade Tipo Descrição
richResponse RichResponse

Obrigatório.

Contém sua resposta para CheckoutRequestMessage ou SubmitOrderRequestMessage.

CheckoutResponse

A tabela a seguir lista as propriedades do tipo CheckoutResponse:

Propriedade Tipo Descrição
proposedOrder ProposedOrder

Obrigatório.

Pedido proposto para ser usado na transação.

paymentOptions PaymentOptions

Obrigatório.

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

additionalPaymentOptions Lista<PaymentOptions>

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

O exemplo a seguir mostra um elemento CheckoutResponse:

Exemplo

{
  "proposedOrder": {
    "id": "sample_proposed_order_id_1",
    "otherItems": [
      {
        "name": "New customer discount",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "-5",
            "nanos": -500000000
          }
        },
        "type": "DISCOUNT"
      },
      {
        "name": "Delivery fee",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "3",
            "nanos": 500000000
          }
        },
        "type": "DELIVERY"
      },
      {
        "name": "Tax",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "1",
            "nanos": 500000000
          }
        },
        "type": "TAX"
      }
    ],
    "cart": {
      "merchant": {
        "id": "https://www.exampleprovider.com/merchant/id1",
        "name": "Falafel Bite"
      },
      "lineItems": [
        {
          "name": "Pita Chips",
          "type": "REGULAR",
          "id": "sample_item_offer_id_1",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "2",
              "nanos": 750000000
            }
          },
          "subLines": [
            {
              "note": "Notes for this item."
            }
          ],
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
            "options": [
              {
                "id": "sample_addon_offer_id_1",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                "name": "Honey Mustard",
                "price": {
                  "currencyCode": "USD"
                },
                "quantity": 1
              },
              {
                "id": "sample_addon_offer_id_2",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                "name": "BBQ Sauce",
                "price": {
                  "currencyCode": "USD",
                  "nanos": 500000000
                },
                "quantity": 1
              }
            ]
          }
        },
        {
          "name": "Chicken Shwarma Wrap",
          "type": "REGULAR",
          "id": "sample_item_offer_id_2",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id2",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "8"
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        },
        {
          "name": "Greek Salad",
          "type": "REGULAR",
          "id": "sample_item_offer_id_3",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id3",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "9",
              "nanos": 990000000
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        },
        {
          "name": "Prawns Biryani",
          "type": "REGULAR",
          "id": "sample_item_offer_id_4",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "15",
              "nanos": 990000000
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        }
      ],
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
        "fulfillmentPreference": {
          "fulfillmentInfo": {
            "delivery": {
              "deliveryTimeIso8601": "P90M"
            }
          }
        },
        "location": {
          "coordinates": {
            "latitude": 37.788783,
            "longitude": -122.41384
          },
          "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
          "zipCode": "94043",
          "city": "Mountain View",
          "postalAddress": {
            "regionCode": "US",
            "postalCode": "94043",
            "administrativeArea": "CA",
            "locality": "Mountain View",
            "addressLines": [
              "1350 Charleston Road"
            ]
          },
          "notes": "Gate code is #111"
        }
      }
    },
    "totalPrice": {
      "type": "ESTIMATE",
      "amount": {
        "currencyCode": "USD",
        "units": "36",
        "nanos": 730000000
      }
    },
    "extension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
      "availableFulfillmentOptions": [
        {
          "fulfillmentInfo": {
            "delivery": {
              "deliveryTimeIso8601": "P0M"
            }
          },
          "expiresAt": "2017-07-17T12:30:00Z"
        }
      ]
    }
  },
  "paymentOptions": {
    "googleProvidedOptions": {
      "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": {  \"merchantId\": \"Merchant ID\",  \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [  {    \"type\": \"CARD\",    \"parameters\": {      \"allowedAuthMethods\": [        \"PAN_ONLY\"      ],      \"allowedCardNetworks\": [        \"VISA\",        \"AMEX\",        \"MASTERCARD\"      ],      \"billingAddressRequired\": false    },    \"tokenizationSpecification\": {      \"type\": \"PAYMENT_GATEWAY\",      \"parameters\": {        \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\",        \"gateway\": \"stripe\",        \"stripe:version\": \"2019-05-16\"      }    }  }],\"transactionInfo\": {  \"currencyCode\": \"AUD\",  \"totalPriceStatus\": \"ESTIMATED\",  \"totalPrice\": \"1.0\"}}"
    }
  },
  "additionalPaymentOptions": [
    {
      "actionProvidedOptions": {
        "paymentType": "ON_FULFILLMENT",
        "displayName": "Cash on delivery."
      }
    }
  ]
}

Item

Contém sua resposta para uma finalização de compra ou SubmitOrderRequestMessage.

A tabela a seguir lista as propriedades do tipo Item:

Propriedade Tipo Descrição
structuredResponse StructuredResponse

Obrigatório.

RichResponse

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

A tabela a seguir lista as propriedades do tipo RichResponse:

Propriedade Tipo Descrição
items Lista<Item>

Obrigatório.

É preciso ter exatamente 1 item.

StructuredResponse

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

A tabela a seguir lista as propriedades do tipo StructuredResponse:

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

Finalizamos itens com tributos e descontos.

error Grupo 2 FoodErrorExtension

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

orderUpdate Grupo 3 OrderUpdate

Atualizações de pedidos assíncronos

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

AsyncOrderUpdateRequestMessage

Notifica o usuário sobre alterações após o envio e a confirmação de um pedido. Por exemplo, é possível notificar o usuário que o pedido está em trânsito ou se o preço mudou. Para mais informações, consulte

A tabela a seguir lista as propriedades do tipo AsyncOrderUpdateRequestMessage:

Propriedade Tipo Descrição
isInSandbox Booleano

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

customPushMessage CustomPushMessage

Obrigatório.

Contém o OrderUpdate da solicitação.

O exemplo a seguir mostra um elemento AsyncOrderUpdateRequestMessage:

Exemplo

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
      "actionOrderId": "sample_action_order_id",
      "orderState": {
        "state": "IN_TRANSIT",
        "label": "Order is on the way"
      },
      "inTransitInfo": {
        "updatedTime": "2017-07-17T12:00:00Z"
      },
      "updateTime": "2017-07-17T12:00:00Z",
      "receipt": {
        "userVisibleOrderId": "userVisibleId1234"
      },
      "orderManagementActions": [
        {
          "type": "CUSTOMER_SERVICE",
          "button": {
            "title": "Contact customer service",
            "openUrlAction": {
              "url": "mailto:support@example.com"
            }
          }
        },
        {
          "type": "EMAIL",
          "button": {
            "title": "Email restaurant",
            "openUrlAction": {
              "url": "mailto:person@example.com"
            }
          }
        },
        {
          "type": "CALL_RESTAURANT",
          "button": {
            "title": "Call restaurant",
            "openUrlAction": {
              "url": "tel:+16505554679"
            }
          }
        }
      ],
      "infoExtension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
        "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
      }
    }
  }
}

AsyncOrderUpdateResponseMessage

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

Tipos de atualização de pedidos

Botão

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

A tabela a seguir lista as propriedades do tipo Button:

Propriedade Tipo Descrição
title String

Obrigatório.

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

Exemplo: Contact us

openUrlAction OpenUrlAction

Obrigatório.

O exemplo a seguir mostra um elemento Button:

Exemplo

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

CancellationInfo

A tabela a seguir lista as propriedades do tipo CancellationInfo:

Propriedade Tipo Descrição
reason String

Obrigatório.

Motivo da rejeição exibido em texto quando OrderState.state é "CANCELLED".

Exemplo: Restaurant closed

O exemplo a seguir mostra um elemento CancellationInfo:

Exemplo

{
  "reason": "Insufficient inventory"
}

FoodOrderUpdateExtension

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

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

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

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

A tabela a seguir lista as propriedades do tipo FoodOrderUpdateExtension:

Propriedade Tipo Descrição
@type Const

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

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

estimatedFulfillmentTimeIso8601 String

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

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

foodOrderErrors Lista<FoodOrderError>

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

Não pode ter menos de 1 item.

O exemplo a seguir mostra um elemento FoodOrderUpdateExtension:

Exemplo 1

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

Exemplo 2

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
  "foodOrderErrors": [
    {
      "error": "NO_CAPACITY",
      "description": "Sorry, the restaurant cannot take your order right now."
    }
  ]
}

FulfillmentInfo

A tabela a seguir lista as propriedades do tipo FulfillmentInfo:

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

Uso deestimatedFulfillmentTimeIso8601 na mensagem de FoodOrderingUpdateExtension

pickupTime Grupo 2 Carimbo de data/hora ISO

Uso deestimatedFulfillmentTimeIso8601 na mensagem de FoodOrderingUpdateExtension

O exemplo a seguir mostra um elemento FulfillmentInfo:

Exemplo 1

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

Exemplo 2

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

InTransitInfo

A tabela a seguir lista as propriedades do tipo InTransitInfo:

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

Uso deestimatedFulfillmentTimeIso8601 na mensagem de FoodOrderingUpdateExtension

O exemplo a seguir mostra um elemento InTransitInfo:

Exemplo

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

LineItemUpdate

A tabela a seguir lista as propriedades do tipo LineItemUpdate:

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

Motivo da alteração. Obrigatório para mudanças de preço.

O exemplo a seguir mostra um elemento LineItemUpdate:

Exemplo

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

OpenUrlAction

A tabela a seguir lista as propriedades do tipo OpenUrlAction:

Propriedade Tipo Descrição
url String

Obrigatório.

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

Exemplo: https://www.google.com

OrderManagementAction

Com o gerenciamento de pedidos, os usuários recebem suporte pós-pedido e ele precisa ser enviado em cada OrderUpdate no pedido de envio AppResponse e em cada AsyncOrderUpdateRequestMessage ação subsequente enviada para um pedido específico pode variar de acordo com o estado.

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

A tabela a seguir lista as propriedades do tipo OrderManagementAction:

Propriedade Tipo Descrição
type OrderManagementActionType

Obrigatório.

button Button

Obrigatório.

O exemplo a seguir mostra um elemento OrderManagementAction:

Exemplo 1

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

Exemplo 2

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

OrderManagementActionType

Define os tipos relacionados a OrderManagementAction.

O tipo OrderManagementActionType tem estes valores possíveis:

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

OrderState

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

A tabela a seguir lista as propriedades do tipo OrderState:

Propriedade Tipo Descrição
state OrderStateEnum

Obrigatório.

label String

Obrigatório.

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

Exemplo: Your order has been received

O exemplo a seguir mostra um elemento OrderState:

Exemplo

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

OrderStateEnum

Define os tipos relacionados a OrderState.

O tipo OrderStateEnum tem estes valores possíveis:

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

Comprovante

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

A tabela a seguir lista as propriedades do tipo Receipt:

Propriedade Tipo Descrição
userVisibleOrderId String

Obrigatório.

Obrigatório se o pedido for "CONFIRMED", "IN_TRANSPORTE" ou "FULFILLED". Este campo é o único ID do pedido (geralmente o código do pedido do restaurante) mostrado no recibo do integrador e no cartão de pedido do Google. O usuário precisa usar esse ID para fazer referência ao pedido de atendimento ao cliente com o provedor e o integrador. Você só precisa fornecer esse ID uma vez em qualquer OrderUpdate. Até que seja fornecido, o actionOrderId será o userVisibleOrderId. Por exemplo, talvez você só tenha um userVisibleOrderId até que o pedido seja confirmado pelo restaurante. Após a confirmação, você deverá enviar uma AsyncOrderUpdateRequestMessage com um OrderUpdate e um recibo.

O exemplo a seguir mostra um elemento Receipt:

Exemplo

{
  "userVisibleOrderId": "userVisibleId1234"
}

RejectionInfo

A tabela a seguir lista as propriedades do tipo RejectionInfo:

Propriedade Tipo Descrição
type RejectionType

Obrigatório.

reason String

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

O exemplo a seguir mostra um elemento RejectionInfo:

Exemplo

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

RejectionType

O tipo RejectionType tem estes valores possíveis:

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

Tipos relacionados a pagamentos

Nesta seção, descrevemos os tipos relacionados a pagamento usados para o atendimento de pedidos de comida.

ActionProvidedPaymentOptions

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

A tabela a seguir lista as propriedades do tipo ActionProvidedPaymentOptions:

Propriedade Tipo Descrição
paymentType PaymentType

Obrigatório.

displayName String

Obrigatório.

Nome do instrumento de pagamento exibido no comprovante.

Exemplo: Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

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

O exemplo a seguir mostra um elemento ActionProvidedPaymentOptions:

Exemplo

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

AllowedAuthMethods

O tipo AllowedAuthMethods tem estes valores possíveis:

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

AllowedCardNetworks

O tipo AllowedCardNetworks tem estes valores possíveis:

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

BillingAddressParameters

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

A tabela a seguir lista as propriedades do tipo BillingAddressParameters:

Propriedade Tipo Descrição
format String

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

O exemplo a seguir mostra um elemento BillingAddressParameters:

Exemplo 1

{
  "format": "MIN"
}

Exemplo 2

{
  "format": "FULL"
}

CardParameters

Use esse objeto para configurar o suporte do seu site para a API Google Pay.

A tabela a seguir lista as propriedades do tipo CardParameters:

Propriedade Tipo Descrição
allowedAuthMethods List<Const>

Obrigatório.

Campos compatíveis para autenticar uma transação com cartão.

Não pode ter menos de 1 item.

allowedCardNetworks Lista<AllowedCardNetworks>

Obrigatório.

Uma ou mais redes de cartões aceitas por você que também são aceitas pela API Google Pay.

Não pode ter menos de 1 item.

billingAddressRequired Booleano

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

billingAddressParameters BillingAddressParameters

Os campos esperados retornados se billingAddressRequired estiver definido como verdadeiro.

cvcRequired Booleano

Defina como "true" se estiver usando TimesofMoney. É "false" para todos os outros processadores de pagamento.

O exemplo a seguir mostra um elemento CardParameters:

Exemplo 1

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

Exemplo 2

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

GoogleProvidedPaymentInstrument

A tabela a seguir lista as propriedades do tipo GoogleProvidedPaymentInstrument:

Propriedade Tipo Descrição
instrumentToken String

Obrigatório.

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

billingAddress PostalAddress

Endereço de faturamento do pagamento.

O exemplo a seguir mostra um elemento GoogleProvidedPaymentInstrument:

Exemplo

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

GoogleProvidedPaymentOptions

Requisitos para a forma de pagamento fornecida pelo Google.

A tabela a seguir lista as propriedades do tipo GoogleProvidedPaymentOptions:

Propriedade Tipo Descrição
facilitationSpecification String

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

supportedCardNetworks Lista<SupportedCardNetworks>

Use facilitationSpecification. Tipo de redes de cartões compatíveis com o agente.

O uso desse campo foi descontinuado.

prepaidCardDisallowed Booleano

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

O uso desse campo foi descontinuado.

billingAddressRequired Booleano

Use facilitationSpecification. Indica se um endereço de faturamento é obrigatório ou não.

O uso desse campo foi descontinuado.

tokenizationParameters TokenizationParameters

O uso desse campo foi descontinuado.

O exemplo a seguir mostra um elemento GoogleProvidedPaymentOptions:

Exemplo 1

{
  "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": {  \"merchantId\": \"Merchant ID\",  \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [  {    \"type\": \"CARD\",    \"parameters\": {      \"allowedAuthMethods\": [        \"PAN_ONLY\"      ],      \"allowedCardNetworks\": [        \"VISA\",        \"AMEX\",        \"MASTERCARD\"      ],      \"billingAddressRequired\": false    },    \"tokenizationSpecification\": {      \"type\": \"PAYMENT_GATEWAY\",      \"parameters\": {        \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\",        \"gateway\": \"stripe\",        \"stripe:version\": \"2019-05-16\"      }    }  }],\"transactionInfo\": {  \"currencyCode\": \"AUD\",  \"totalPriceStatus\": \"ESTIMATED\",  \"totalPrice\": \"1.0\"}}"
}

Exemplo 2

{
  "tokenizationParameters": {
    "tokenizationType": "PAYMENT_GATEWAY",
    "parameters": {
      "gateway": "braintree",
      "braintree:apiVersion": "v1",
      "braintree:sdkVersion": "1.4.0",
      "braintree:merchantId": "a1b2c3d4e5",
      "braintree:clientKey": "production_braintree_client_key",
      "braintree:authorizationFingerprint": "same_as_client_key"
    }
  },
  "supportedCardNetworks": [
    "AMEX",
    "DISCOVER",
    "MASTERCARD",
    "JCB",
    "VISA"
  ],
  "prepaidCardDisallowed": true
}

Exemplo 3

{
  "tokenizationParameters": {
    "tokenizationType": "PAYMENT_GATEWAY",
    "parameters": {
      "gateway": "stripe",
      "stripe:publishableKey": "pk_live_stripe_client_key",
      "stripe:version": "2017-04-06"
    }
  },
  "supportedCardNetworks": [
    "AMEX",
    "DISCOVER",
    "MASTERCARD",
    "VISA",
    "JCB"
  ],
  "prepaidCardDisallowed": true,
  "billingAddressRequired": true
}

MerchantInfo

Use esse objeto para configurar o suporte do seu site para a API Google Pay.

A tabela a seguir lista as propriedades do tipo MerchantInfo:

Propriedade Tipo Descrição
merchantId String

Identificador do comerciante do Google emitido para você pelo Google Pay.

merchantName String

Obrigatório.

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

OnFulfillmentPaymentData

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

A tabela a seguir lista as propriedades do tipo OnFulfillmentPaymentData:

Propriedade Tipo Descrição
supportedPaymentOptions Lista<PaymentOptionsEnums>

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

O exemplo a seguir mostra um elemento OnFulfillmentPaymentData:

Exemplo

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

Parâmetros

Define os tipos relacionados a TokenizationParameters.

A tabela a seguir lista as propriedades do tipo Parameters:

Propriedade Tipo Descrição
gateway String

Obrigatório.

Exemplo: braintree

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

O exemplo a seguir mostra um elemento Parameters:

Exemplo 1

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

Exemplo 2

{
  "gateway": "braintree",
  "braintree:apiVersion": "v1",
  "braintree:sdkVersion": "1.4.0",
  "braintree:merchantId": "YOUR_MERCHANT_ID",
  "braintree:clientKey": "YOUR_BRAINTREE_SANDVOX_OR_PRODUCTION_KEY"
}

PaymentDataRequest

Use esse objeto para configurar o suporte do seu site para a API Google Pay.

A tabela a seguir lista as propriedades do tipo PaymentDataRequest:

Propriedade Tipo Descrição
apiVersion Const

Obrigatório.

Versão principal da API.

Valor: 2

apiVersionMinor Const

Obrigatório.

Versão secundária da API.

Valor: 0

merchantInfo MerchantInfo

Obrigatório.

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

allowedPaymentMethods Lista<PaymentMethod>

Obrigatório.

Especifica o suporte a uma ou mais formas de pagamento aceitas pela API Google Pay.

transactionInfo TransactionInfo

Obrigatório.

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

O exemplo a seguir mostra um elemento PaymentDataRequest:

Exemplo

{
  "apiVersion": 2,
  "apiVersionMinor": 0,
  "merchantInfo": {
    "merchantId": "10391231",
    "merchantName": "Burrito Town"
  },
  "allowedPaymentMethods": [
    {
      "type": "CARD",
      "parameters": {
        "allowedAuthMethods": [
          "PAN_ONLY"
        ],
        "allowedCardNetworks": [
          "VISA",
          "AMEX",
          "MASTERCARD"
        ],
        "billingAddressRequired": true,
        "billingAddressParameters": {
          "format": "FULL"
        },
        "cvcRequired": false
      },
      "tokenizationSpecification": {
        "type": "PAYMENT_GATEWAY",
        "parameters": {
          "gateway": "stripe",
          "stripe:version": "2019-05-16",
          "stripe:publishableKey": "pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA"
        }
      }
    }
  ],
  "transactionInfo": {
    "currencyCode": "INR",
    "totalPriceStatus": "ESTIMATED",
    "totalPrice": "185.00"
  }
}

PaymentInfo

Informações relacionadas ao pagamento de um pedido.

A tabela a seguir lista as propriedades do tipo PaymentInfo:

Propriedade Tipo Descrição
displayName String

Obrigatório.

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

paymentType PaymentType

Obrigatório.

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

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

O exemplo a seguir mostra um elemento PaymentInfo:

Exemplo 1

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

Exemplo 2

{
  "displayName": "Visa\u2006****\u20061111",
  "googleProvidedPaymentInstrument": {
    "instrumentToken": "abcd",
    "billingAddress": {
      "regionCode": "US",
      "postalCode": "94043",
      "administrativeArea": "CA",
      "locality": "Mountain View",
      "addressLines": [
        "123 Random Street",
        "Unit ABC"
      ],
      "recipients": [
        "sample_receipient"
      ]
    }
  },
  "paymentType": "PAYMENT_CARD"
}

PaymentMethod

Use esse objeto para configurar o suporte do seu site para a API Google Pay.

A tabela a seguir lista as propriedades do tipo PaymentMethod:

Propriedade Tipo Descrição
type Const

Obrigatório.

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

Valor: CARD

parameters CardParameters

Obrigatório.

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

tokenizationSpecification TokenizationSpecification

Obrigatório.

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

O exemplo a seguir mostra um elemento PaymentMethod:

Exemplo

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

PaymentOptions

A tabela a seguir lista as propriedades do tipo PaymentOptions:

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

Mutuamente exclusivo com actionProvidedOptions. Use para fazer pagamentos on-line com o gPay.

actionProvidedOptions Grupo 2 ActionProvidedPaymentOptions

Mutuamente exclusivo com googleProvidedOptions. Use para "dinheiro na entrega" ou "pagamento na entrega".

O exemplo a seguir mostra um elemento PaymentOptions:

Exemplo 1

{
  "googleProvidedOptions": {
    "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": {  \"merchantId\": \"Merchant ID\",  \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [  {    \"type\": \"CARD\",    \"parameters\": {      \"allowedAuthMethods\": [        \"PAN_ONLY\"      ],      \"allowedCardNetworks\": [        \"VISA\",        \"AMEX\",        \"MASTERCARD\"      ],      \"billingAddressRequired\": false    },    \"tokenizationSpecification\": {      \"type\": \"PAYMENT_GATEWAY\",      \"parameters\": {        \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\",        \"gateway\": \"stripe\",        \"stripe:version\": \"2019-05-16\"      }    }  }],\"transactionInfo\": {  \"currencyCode\": \"AUD\",  \"totalPriceStatus\": \"ESTIMATED\",  \"totalPrice\": \"1.0\"}}"
  }
}

Exemplo 2

{
  "googleProvidedOptions": {
    "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": {  \"merchantId\": \"Merchant ID\",  \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [  {    \"type\": \"CARD\",    \"parameters\": {      \"allowedAuthMethods\": [        \"PAN_ONLY\"      ],      \"allowedCardNetworks\": [        \"VISA\",        \"AMEX\",        \"MASTERCARD\"      ],      \"billingAddressRequired\":true,   \"billingAddressParameters\": {  \"format\":\"MIN\"  }    },    \"tokenizationSpecification\": {      \"type\": \"PAYMENT_GATEWAY\",      \"parameters\": {        \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\",        \"gateway\": \"stripe\",        \"stripe:version\": \"2019-05-16\"      }    }  }],\"transactionInfo\": {  \"currencyCode\": \"AUD\",  \"totalPriceStatus\": \"ESTIMATED\",  \"totalPrice\": \"1.0\"}}"
  }
}

Exemplo 3

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

PaymentOptionsEnums

O tipo PaymentOptionsEnums tem estes valores possíveis:

  • Cash
  • Card
  • UPI
  • Paytm

PaymentType

O tipo PaymentType tem estes valores possíveis:

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

SupportedCardNetworks

Define os tipos relacionados a GoogleProvidedPaymentOptions.

O tipo SupportedCardNetworks tem estes valores possíveis:

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

TokenizationParameters

Define os tipos relacionados ao GoogleProvidedPaymentOptions.

A tabela a seguir lista as propriedades do tipo TokenizationParameters:

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

Obrigatório.

Use facilitationSpecification. Tipo de tokens aceitos.

parameters Parameters

Use facilitationSpecification.

TokenizationSpecification

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

A tabela a seguir lista as propriedades do tipo TokenizationSpecification:

Propriedade Tipo Descrição
type Const

Obrigatório.

parameters Parameters

Obrigatório.

O exemplo a seguir mostra um elemento TokenizationSpecification:

Exemplo 1

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

Exemplo 2

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

TransactionInfo

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

A tabela a seguir lista as propriedades do tipo TransactionInfo:

Propriedade Tipo Descrição
currencyCode String

Obrigatório.

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

transactionId String

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

totalPriceStatus Const

Obrigatório.

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

Valor: ESTIMATED

totalPrice String

Obrigatório.

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

O exemplo a seguir mostra um elemento TransactionInfo:

Exemplo

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