Схема действий по исполнению

На этой странице описываются полезные данные веб-службы выполнения заказов (сквозной API заказа) при работе со встроенным API сквозного действия заказа. Чтобы получить машиночитаемую версию этой информации, вы можете скачать схему JSON .

Базовые типы

Корзина

Содержит подробную информацию о заказе, а также о том, является ли запрос самовывозом или доставкой. В корзине также указаны сведения о доставке, чаевые и адрес доставки. Объект Cart определен в Checkout AppRequest Вы включаете копию корзины в свой Checkout AppResponse

В следующей таблице перечислены свойства типа Cart :

Свойство Тип Описание
@type Конст

Тип этого объекта. Опустите это поле, если родительский объект Cart является частью ProposeOrder.

Значение: type.googleapis.com/google.actions.v2.orders.Cart

id Нить

Необязательный идентификатор корзины.

merchant Merchant

Продавец, связанный с этой корзиной.

lineItems Список< LineItem >

Необходимый.

Список товаров или услуг, которые заказывает пользователь.

Должно быть не менее 1 предмета .

promotions Список< Promotion >

Акция, которая применяется в этой корзине. В настоящее время поддерживается только одна рекламная акция.

notes Нить

Примечания к заказу или инструкции по доставке.

extension FoodCartExtension

Определяет сведения о пользователе, например предпочтения выполнения.

В следующем примере показан элемент Cart :

Пример 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"
    }
  }
}

Пример 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"
    }
  }
}

Контакт

Указывается информация о лице, получающем заказ. Он доступен только в AppResponse .

В следующей таблице перечислены свойства типа Contact :

Свойство Тип Описание
displayName Нить

Имя человека, получающего заказ, как вы хотите, чтобы оно отображалось. Используйте это поле, если имя и фамилия не указаны.

Пример: Lovefood Ordering

email Нить

Адрес электронной почты лица, получившего заказ.

Пример: ilovefood@example.com

firstName Нить

Имя лица, получившего заказ.

Пример: Lovefood

lastName Нить

Фамилия лица, получившего заказ.

Пример: Ordering

phoneNumber Нить

Номер телефона лица, получающего заказ, включая код страны.

Пример: +16501234567 .

emailVerified логическое значение

Указывает, вошел ли человек, получающий заказ, в свою учетную запись Google.

В следующем примере показан элемент Contact :

Пример

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

CustomPushMessage

Содержит OrderUpdate для запроса.

В следующей таблице перечислены свойства типа CustomPushMessage :

Свойство Тип Описание
orderUpdate OrderUpdate

Необходимый.

Обновлена ​​информация по заказу.

В следующем примере показан элемент 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",
    "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 :

Свойство Тип Описание
deliveryTimeIso8601 Нить

Расчетное время доставки в формате отметки времени ISO 8601: "{год}-{месяц}-{день}T{час}:{мин}:{сек}[.{frac_sec}]Z" или в формате продолжительности: "P( n)Y(n)M(n)DT(n)H(n)M(n)S». Например, PT90M соответствует продолжительности 90 минут. Значение по умолчанию «PT0M» указывает на то, что предпочтительное время доставки — как можно скорее. Ссылка: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. Используйте это, чтобы обновить расчетное время доставки во время ответа на оформление заказа.

Пример: PT90M

В следующем примере показан элемент DeliveryInfo :

Пример

{
  "deliveryTimeIso8601": "PT90M"
}

Отказ от ответственности

В следующей таблице перечислены свойства типа Disclaimer :

Свойство Тип Описание
predefinedMessage PredefinedMessage

Необходимый.

Чтобы показывать предопределенные сообщения об отказе от ответственности во время оформления заказа.

feeAmount Money

Партнер взимает с продавца комиссию в размере N за этот заказ.

feeAmountRange FeeAmountRange

Партнер взимает с ресторана комиссию в размере от N до M за заказ.

feePercent Число

Партнер взимает с продавца комиссию в размере N% за этот заказ.

feePercentRange FeePercentRange

Партнер взимает с продавца комиссию от N% до M% за заказ.

В следующем примере показан элемент Disclaimer :

Пример 1

{
  "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER"
}

Пример 2

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE"
}

Пример 3

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

Пример 4

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

Пример 5

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

Пример 6

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

Ошибка

Тип Error имеет следующие возможные значения:

  • CLOSED : Ресторан закрыт на время заказа.
  • NO_CAPACITY : нет доступных мощностей для обслуживания (например, временное отключение из-за часов пик).
  • NO_COURIER_AVAILABLE : Невозможно обработать заказ из-за ограниченного количества сотрудников, занимающихся доставкой.
  • REQUIREMENTS_NOT_MET : не соблюдены ограничения для принятия заказа (например, минимальный размер корзины).
  • UNAVAILABLE_SLOT : заказ не может быть выполнен в заранее заданное время, указанное в DeliveryInfo или PickupInfo.
  • OUT_OF_SERVICE_AREA : заказ не может быть доставлен на адрес пользователя.
  • PROMO_EXPIRED : Не удалось подать заявку, поскольку срок действия акции истек.
  • PROMO_NOT_APPLICABLE : общий код ошибки для отслеживания всех случаев невозможности применения промо-кода, если ни одна из других ошибок промо-кода не подходит.
  • PROMO_NOT_RECOGNIZED : код купона не был распознан.
  • PROMO_ORDER_INELIGIBLE : текущий заказ не имеет права на этот купон.
  • PROMO_USER_INELIGIBLE : текущий пользователь не имеет права на получение этого купона.
  • AVAILABILITY_CHANGED : элемент больше недоступен или недостаточно элементов для выполнения запроса.
  • INCORRECT_PRICE : ошибки в стоимости комиссий или общей суммы.
  • INVALID : LineItem, FulfillmentOption или Promotion содержит недопустимые данные.
  • NOT_FOUND : LineItem, FulfillmentOption или Promotion не найдены.
  • PRICE_CHANGED : цена товара изменилась.

КомиссияСуммаДиапазон

В следующей таблице перечислены свойства типа FeeAmountRange :

Свойство Тип Описание
minFeeAmount Money

Нижняя граница суммы взимаемой комиссии.

maxFeeAmount Money

Верхняя граница суммы взимаемой комиссии..

Комиссия в процентахДиапазон

В следующей таблице перечислены свойства типа FeePercentRange :

Свойство Тип Описание
minFeePercent Число

Нижняя граница взимаемого процента комиссии.

maxFeePercent Число

Верхняя граница взимаемого процента комиссии.

ЕдаКорзинаРасширение

Содержит сведения о пользователе, например настройки выполнения.

В следующей таблице перечислены свойства типа FoodCartExtension :

Свойство Тип Описание
@type Конст

Тип этого расширения. Для этого поля всегда установлено значение «type.googleapis.com/google.actions.v2.orders.FoodCartExtension».

Значение: type.googleapis.com/google.actions.v2.orders.FoodCartExtension

contact Contact

Контактная информация лица, получившего заказ. Подробная информация включает имя человека, номер телефона и адрес электронной почты.

fulfillmentPreference FulfillmentOption

Необходимый.

Предпочтения выполнения пользователя.

location Location

В сообщении CheckoutRequestMessage в этом поле указывается адрес доставки, который необходим, если заказ предназначен для доставки. Для заказов на вынос или самовывоз это поле не включается в сообщение.

В следующем примере показан элемент FoodCartExtension :

Пример 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"
  }
}

Пример 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

Идентифицирует одну или несколько ошибок, произошедших при обработке запроса. В следующей таблице описаны поля типа FoodErrorExtension . Ошибки можно отправлять в CheckoutResponse .

В следующей таблице перечислены свойства типа FoodErrorExtension :

Свойство Тип Описание
@type Конст

Необходимый.

Тип этого расширения.

Значение: type.googleapis.com/google.actions.v2.orders.FoodErrorExtension

foodOrderErrors Список FoodOrderError

Необходимый.

Массив объектов FoodOrderError, описывающих произошедшие ошибки. Рекомендуется одна ошибка на корзину или на товар.

Должно быть не менее 1 предмета .

correctedProposedOrder ProposedOrder

Требуется, когда 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" .

Новый предлагаемый заказ с исправлениями. Верните этот объект, если в исходном ProposeOrder есть исправимые ошибки. Например, изменение цены одной или нескольких позиций в корзине является исправимой ошибкой. Устранимые ошибки с действительным ProposeOrder переходят на стадию подтверждения, вместо того, чтобы требовать от пользователя просмотра своей корзины.

paymentOptions PaymentOptions

Требуется, когда 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" .

Варианты оплаты по умолчанию, выбранные для пользователя.

additionalPaymentOptions Список < PaymentOptions >

Пользователю доступны альтернативные варианты оплаты.

В следующем примере показан элемент FoodErrorExtension :

Пример

{
  "@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

Определяет надстройки для продуктов питания.

В следующей таблице перечислены свойства типа FoodItemExtension :

Свойство Тип Описание
@type Конст

Необходимый.

Тип этого расширения. Для этого поля всегда установлено значение «type.googleapis.com/google.actions.v2.orders.FoodItemExtension».

Значение: type.googleapis.com/google.actions.v2.orders.FoodItemExtension

options Список FoodItemOption

Опцией может быть элемент дополнения или группа дополнений, содержащая набор дополнений.

В следующем примере показан элемент FoodItemExtension :

Пример

{
  "@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

В следующей таблице перечислены свойства типа FoodItemOption :

Свойство Тип Описание
id Нить

Уникальный идентификатор, присвоенный Google. Когда вы отправляете FoodOrderError или AsyncOrderUpdateRequest, используйте это поле, чтобы различать случаи, когда корзина содержит более одного товара с одинаковым OfferId.

Пример: 39231093

offerId Нить

Идентификатор предложения для товара.

Пример: 912835081

name Нить

Имя опции.

Пример: Honey Mustard

price Money
note Нить

Примечание, связанное с опцией.

quantity Число

Для опций, являющихся элементами, количество элементов.

Пример: 3

subOptions Список FoodItemOption

Подопции для опции, если таковые имеются.

Пример: [ { "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 } ]

В следующем примере показан элемент FoodItemOption :

Пример 1

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

Пример 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

Содержит сведения об ошибках в CheckoutResponse .

В следующей таблице перечислены свойства типа FoodOrderError :

Свойство Тип Описание
error Error

Необходимый.

id Нить

Требуется, если error = "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "PRICE_CHANGED", "INVALID", or "NOT_FOUND" .

Это поле является обязательным для ошибок на уровне элемента. Это присвоенный Google LineItem.id для пунктов меню или FoodItemOption.id для надстроек.

description Нить

Описание ошибки. Это описание предназначено для внутреннего ведения журнала и не видно пользователям.

updatedPrice Money

Требуется, если error = "PRICE_CHANGED" .

Новая цена товара, вызвавшего ошибку. Это требуется только в случае ошибки «PRICE_CHANGED».

availableQuantity Целое число

Требуется, если error = "INVALID", or "NOT_FOUND" .

Новое доступное количество товара, вызвавшего ошибку. Это требуется только в том случае, если ошибка «INVALID» или «NOT_FOUND». Значение должно быть равно нулю для «INVALID» и «NOT_FOUND».

В следующем примере показан элемент FoodOrderError :

Пример 1

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

Пример 2

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

Расширение заказа еды

Содержит информацию о выполнении заказа.

В следующей таблице перечислены свойства типа FoodOrderExtension :

Свойство Тип Описание
@type Конст

Тип этого расширения. Для этого поля всегда установлено значение «type.googleapis.com/google.actions.v2.orders.FoodOrderExtension».

Значение: type.googleapis.com/google.actions.v2.orders.FoodOrderExtension

availableFulfillmentOptions Список < FulfillmentOption >

Представляет доступные варианты выполнения заказа.

optinForRemarketing логическое значение

Запрос пользователя на участие в ваших маркетинговых каналах. По умолчанию вы не можете отправлять маркетинговый контент без согласия пользователя. Если параметр optinForRemarketing имеет значение true, вы можете подписаться на пользователя. Если параметр optinForRemarketing имеет значение false или отсутствует, вы должны сохранить статус подписки в своей системе как есть. Пользователи не могут отказаться от подписки через Google, только с помощью функции отказа от подписки, предоставляемой в ваших маркетинговых каналах. Этот флаг присутствует только в SubmitOrderRequestMessage.

В следующем примере показан элемент FoodOrderExtension :

Пример 1

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

Пример 2

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

Вариант исполнения

Вы можете использовать объект FulfillmentOption следующими способами:
  • В Checkout AppRequest и Submit AppRequest Cart.extension.fulfillmentPreference : сохраняет предпочтения пользователя (доставка или самовывоз). Цена всегда равна 0 при отправке запроса на оформление заказа.
  • В Checkout AppResponse ProposedOrder.extension.availableFulfillmentOptions определяет один или несколько вариантов доставки (в настоящее время поддерживается только один вариант). Вы указываете опцию по умолчанию как LineItem в ProposedOrder.otherItems . offerId FulfillmentOption должен соответствовать идентификатору LineItem указанному в ProposedOrder.otherItems .

В следующей таблице перечислены свойства типа FulfillmentOption :

Свойство Тип Описание
offerId Нить

Уникальный идентификатор этого варианта выполнения, если таковой имеется.

fulfillmentInfo FulfillmentOptionInfo

Необходимый.

expiresAt Временная метка ISO

Время, когда истекает срок действия этой возможности выполнения.

price Money

Стоимость этого варианта.

В следующем примере показан элемент FulfillmentOption :

Пример

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

Информация о выполнении параметра

Определяет информацию, связанную с FulfillmentInfo .

В следующей таблице перечислены свойства типа FulfillmentOptionInfo :

Свойство Тип Описание
Требуется ровно одна из следующих групп свойств.
delivery Группа 1 DeliveryInfo

Если присутствует, указывает порядок доставки.

pickup Группа 2 PickupInfo

Если присутствует, указывает на заказ самовывоза.

Изображение

В следующей таблице перечислены свойства типа Image :

Свойство Тип Описание
sourceUrl Нить

Необходимый.

URL-адрес изображения. Минимальный размер изображения должен составлять 72x72 пикселя. Для достижения наилучших результатов используйте изображение размером не менее 216x216 пикселей. Изображение должно быть меньше 6 МБ и 64 мегапикселя.

Линейный элемент

Определяет содержимое корзины ( Cart.lineItems ) или дополнительные расходы за заказ ( ProposedOrder.otherItems ).

В следующей таблице перечислены свойства типа LineItem :

Свойство Тип Описание
id Нить

Требуется, если type = "REGULAR" .

Для элемента строки в корзине (ProposeOrder.cart.lineItems[0].id) это уникальный идентификатор, созданный Google при создании заказа. Для LineItem в ProposeOrder (ProposeOrder.otherItems[0].id), который используется для добавления таких элементов, как плата за доставку и налоги, значение id определяется поставщиком. Например, в корзине есть два одинаковых товара с разными инструкциями по приготовлению (например, две средние пиццы с разными наборами начинок). В этом случае оба товара имеют одинаковый базовый идентификатор предложения. Когда вы отправляете запрос на обновление заказа, чтобы указать, что товар отклонен, используйте этот идентификатор в качестве средства устранения неоднозначности. Другими словами, если одна из пицц отклонена из-за отсутствия определенной начинки, идентификатор поможет Google определить, о каком товаре в заказе вы говорите. Это поле является обязательным, за исключением других элементов.

name Нить

Необходимый.

Название позиции. Это строка, видимая пользователю, и по возможности она должна содержать предложения (например, «Стоимость доставки», «Сбор за обслуживание», «Налог»). Для пользователей это поле сокращается до 100 символов.

type LineItemType

Необходимый.

quantity Целое число

Требуется, если type = "REGULAR" .

Количество включенных предметов. Неприменимо к ProposeOrder.otherItems.

description Нить

Описание предмета.

price Price

Необходимый.

Цена предмета или предметов. Это значение отражает общую цену всех товаров или услуг для этой позиции (другими словами, добавьте стоимость любых дополнений и умножьте на количество). Например: если количество товара стоимостью 10 долларов США равно 3, цена составит 30 долларов США. За одну пиццу с базовой ценой в 5 долларов и надбавкой в ​​1 доллар цена составит 6 долларов. Для двух пицц (количество = 2) с базовой ценой 5 долларов США и каждой с надбавкой в ​​1 доллар цена составит 12 долларов США. Каждый элемент строки должен иметь цену, даже если цена равна «0». Если типом является СКИДКА, укажите отрицательное значение (например, «-2»).

subLines Список < SublineNote >

Необязательно и допустимо только в том случае, если тип «ОБЫЧНЫЙ». В этом поле в запросе на оформление заказа и запросе на отправку заказа может быть отправлено примечание пользователя по конкретному товару. Убедитесь, что продавец получил примечание после его предоставления. В запросе оно будет указано как subLines[0].note — единственное значение, указанное в этом поле, когда оно присутствует в запросе.

Должно быть не более 1 предмета .

offerId Нить

Требуется, если type = "REGULAR" .

Идентификатор предложения MenuItem для элемента. Неприменимо к ProposeOrder.otherItems.

extension FoodItemExtension

Определяет надстройки для продуктов питания.

В следующем примере показан элемент LineItem :

Пример 1

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

Пример 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

Тип LineItemType имеет следующие возможные значения:

  • REGULAR : Товарная позиция. Применимо к Cart.lineItems.
  • TAX : налоговая позиция. Применимо к ProposeOrder.otherItems.
  • DISCOUNT : позиция со скидкой. Обратите внимание, что цена должна быть отрицательной. Применимо к ProposeOrder.otherItems.
  • GRATUITY : позиция, посвященная безвозмездным выплатам. Обычно зарезервировано для SubmitOrderRequestMessage для подсказки, выбранной пользователем. Применимо к ProposeOrder.otherItems.
  • DELIVERY : позиция доставки. Применимо к ProposeOrder.otherItems.
  • SUBTOTAL : позиция промежуточного итога. Применимо к ProposeOrder.otherItems.
  • FEE : дополнительная позиция, не охваченная другими типами. Применимо к ProposeOrder.otherItems.

Расположение

Указывает адрес для заказа еды. Тип Location используется в Cart только для указания места назначения заказа на доставку. Окончательное местоположение также присутствует в TransactionDecisionValue , если пользователь размещает заказ. Для заказов, в которых указано самовывоз, пункт вообще не указывается (даже пустой).

В следующей таблице перечислены свойства типа Location :

Свойство Тип Описание
coordinates Coordinates
formattedAddress Нить

Отобразить адрес места.

Пример: 1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States

postalAddress PostalAddress
zipCode Нить

Пример: 90210

city Нить

Название города.

Пример: Los Angeles

notes Нить

Примечания о местоположении, например коды ворот. Оно должно быть не более 500 символов.

Пример: Gate code is #111

В следующем примере показан элемент 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"
}

Торговец

В следующей таблице перечислены свойства типа Merchant :

Свойство Тип Описание
id Нить

Идентификатор продавца. Если указано, соответствует идентификатору Restaurant.@id в ленте ресторанов.

Пример: https://www.exampleprovider.com/merchant/id1

name Нить

Необходимый.

Видимое пользователю имя продавца.

Пример: Falafel Bite

В следующем примере показан элемент Merchant :

Пример

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

Деньги

В следующей таблице перечислены свойства типа « Money :

Свойство Тип Описание
currencyCode Нить

Необходимый.

Трехбуквенный код валюты в формате ISO 4217.

Пример: USD

units Нить

Целые единицы суммы. Например, если код валюты равен «USD», то единица «1» равна одному доллару США.

Пример: 36

nanos Целое число

Количество нано (10^-9) единиц суммы. Значение должно находиться в диапазоне от -999 999 999 до +999 999 999 включительно. Используйте следующие правила: Если единицы измерения положительны, наносы должны быть положительными или нулевыми. Если единицы измерения равны нулю, нанос может быть положительным, нулевым или отрицательным. Если единицы измерения отрицательные, нано должно быть отрицательным или нулевым. Например, -1,75 доллара США представлены как единицы = -1 и нано = -750 000 000.

Пример: 730000000

В следующем примере показан элемент Money :

Пример 1

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

Пример 2

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

Заказ

Содержит окончательный заказ, включая налоги, сборы и стоимость доставки, а также информацию об оплате. Этот объект получен вашим действием в Submit AppRequest .

В следующей таблице перечислены свойства типа Order :

Свойство Тип Описание
finalOrder ProposedOrder

Необходимый.

Предлагаемый приказ, вызвавший приказ.

googleOrderId Нить

Необходимый.

Идентификатор заказа, присвоенный Google. Этот идентификатор должен быть стабильным на протяжении всего жизненного цикла заказа. Этот идентификатор не виден конечному пользователю.

orderDate Временная метка ISO

Необходимый.

Дата и время создания заказа.

paymentInfo PaymentInfo

Необходимый.

Платежная информация, соответствующая оплате данного заказа.

В следующем примере показан элемент 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"
  }
}

Обновление заказа

В следующей таблице описаны поля типа OrderUpdate, который включен в AppResponse .

В следующей таблице перечислены свойства типа OrderUpdate :

Свойство Тип Описание
actionOrderId Нить

Необходимый.

Уникальный идентификатор заказа в системе интегратора, используемый для идентификации заказа, для которого отправляется обновление. Если в OrderUpdate не указан хотя бы один раз для «СОЗДАННОГО» заказа «CREATED», этим идентификатором будет введенный видимый идентификатор пользователя, отображаемый в карточке заказа Google.

orderState OrderState

Необходимый.

Новое состояние порядка.

lineItemUpdates Карта<String, LineItemUpdate >
updateTime Временная метка ISO

Необходимый.

Время обновления заказа.

orderManagementActions Список< OrderManagementAction >

Действия после заказа, такие как обращение в службу поддержки и просмотр сведений о заказе.

Должно быть не менее 1 и не более 6 предметов .

rejectionInfo RejectionInfo

Требуется, если orderState.state = "REJECTED" .

cancellationInfo CancellationInfo

Требуется, если orderState.state = "CANCELLED" .

inTransitInfo InTransitInfo

Это поле устарело.

fulfillmentInfo FulfillmentInfo

Это поле устарело.

receipt Receipt

Требуется, когда orderState.state = "CONFIRMED", "IN_PREPARATION", or "READY_FOR_PICKUP" .

Укажите видимый пользователю идентификатор заказа в квитанции.

totalPrice Price

Общая стоимость заказа.

infoExtension FoodOrderUpdateExtension

Определяет более подробную информацию об обновлении заказа, например интервал предполагаемой доставки или самовывоза.

В следующем примере показан элемент OrderUpdate :

Пример

{
  "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 :

Свойство Тип Описание
pickupTimeIso8601 Нить

Расчетное время получения в формате отметки времени ISO 8601: "{год}-{месяц}-{день}T{час}:{мин}:{сек}[.{frac_sec}]Z" или в формате продолжительности: "P( n)Y(n)M(n)DT(n)H(n)M(n)S". Например, PT90M соответствует продолжительности 90 минут. Значение по умолчанию «PT0M» указывает на то, что предпочтительное время получения — как можно скорее. Ссылка: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. Используйте это, чтобы обновить расчетное время получения во время ответа на оформление заказа.

Пример: PT90M

В следующем примере показан элемент PickupInfo :

Пример

{
  "pickupTimeIso8601": "PT90M"
}

Почтовый адрес

В следующей таблице перечислены свойства типа PostalAddress :

Свойство Тип Описание
regionCode Нить

Необходимый.

Двухбуквенный код страны.

Пример: US

postalCode Нить

Почтовый индекс.

Пример: 94043

administrativeArea Нить

Высшее административное подразделение, используемое для почтовых адресов страны или региона. Это может быть штат, провинция, область или префектура.

Пример: CA

locality Нить

Город или поселок для этого местоположения. В регионах мира, где населенные пункты не определены четко или не вписываются в эту структуру, не указывайте местоположение и вместо этого используйте поле AddressLines.

Пример: Mountain View

addressLines Список<Строка>

Одна или несколько строк, которые можно использовать для указания почтового адреса. Это поле не следует изменять, поскольку оно может содержать неясные местоположения.

Пример: [ "1350 Charleston Road" ]

recipients Список<Строка>

Список получателей заказа. Это поле доступно только в BillingAddress.

В следующем примере показан элемент PostalAddress :

Пример

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

Цена

В следующей таблице перечислены свойства типа Price :

Свойство Тип Описание
type Enum [ "ESTIMATE", "ACTUAL" ]

Необходимый.

Код промо-купона.

amount Money

Необходимый.

Повышение

В следующей таблице перечислены свойства типа Promotion :

Свойство Тип Описание
coupon Нить

Необходимый.

Код промо-купона.

Предлагаемый заказ

В следующей таблице перечислены свойства типа ProposedOrder :

Свойство Тип Описание
id Нить

Необязательный идентификатор предлагаемого заказа.

cart Cart

Необходимый.

Предметы пользователя.

otherItems Список< LineItem >

Элементы, добавленные поставщиком, такие как стоимость доставки, другие сборы и налоги. OtherItems также может содержать чаевые и/или скидки, добавленные пользователем.

Должно быть не более 10 предметов .

image Image

Изображение, связанное с предлагаемым заказом.

totalPrice Price

Необходимый.

Общая стоимость предлагаемого заказа.

extension FoodOrderExtension

Необходимый.

Определяет информацию о выполнении заказов на еду.

disclaimers Список < Disclaimer >

Соответствует сообщениям об отказе от ответственности, которые будут отображаться в пользовательском интерфейсе перед размещением заказа.

В следующем примере показан элемент 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"
      }
    ]
  }
}

ПодстрокаПримечание

В следующей таблице перечислены свойства типа SublineNote :

Свойство Тип Описание
note Нить

Необходимый.

Временная метка

Дата и время в следующем формате: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"

Значение решения транзакции

Содержит Order .

В следующей таблице перечислены свойства типа TransactionDecisionValue :

Свойство Тип Описание
order Order

Необходимый.

Заказ оформляется с указанием платежных реквизитов.

В следующем примере показан элемент 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"
    }
  }
}

Запрос на выполнение

AppRequest

В следующей таблице перечислены свойства типа AppRequest :

Свойство Тип Описание
isInSandbox логическое значение

Указывает, выполняются ли последующие транзакции в изолированной среде.

conversation Conversation
inputs Список < Input >

Необходимый.

Содержит ожидаемые аргументы для оформления корзины.

Должно быть ровно 1 предмет .

В следующем примере показан элемент AppRequest :

Пример 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"
              }
            }
          }
        }
      ]
    }
  ]
}

Пример 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 — это AppRequest с намерением actions.foodordering.intent.CHECKOUT .

ОтправитьЗаказЗапросСообщение

SubmitOrderRequestMessage — это AppRequest с намерением actions.foodordering.intent.TRANSACTION_DECISION .

Беседа

Conversation уникален только для одного сеанса. При необходимости вы можете использовать его для связывания нескольких действий Checkout и SubmitOrder .

В следующей таблице перечислены свойства типа Conversation :

Свойство Тип Описание
conversationId Нить

Необходимый.

Уникальный идентификатор беседы.

В следующем примере показан элемент Conversation :

Пример

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

Вход

Ожидаемые аргументы для оформления корзины.

В следующей таблице перечислены свойства типа Input :

Свойство Тип Описание
intent Enum [ "actions.foodordering.intent.CHECKOUT", "actions.intent.TRANSACTION_DECISION" ]

Необходимый.

Установите значение «actions.foodordering.intent.CHECKOUT» для сообщения с запросом на оформление заказа ИЛИ «actions.intent.TRANSACTION_DECISION» для сообщения с запросом на отправку заказа.

arguments Список< Argument >

Необходимый.

Содержит корзину для оформления заказа или заказ для размещения.

Должно быть ровно 1 предмет .

Аргумент

Содержит подробную информацию о продуктах питания, которые пользователь хочет проверить. Для оформления заказа применимо только расширение. Для отправки заказа применимо только значение транзакцииDecisionValue.

В следующей таблице перечислены свойства типа Argument :

Свойство Тип Описание
Требуется ровно одна из следующих групп свойств.
extension Группа 1 Cart

Подробно описывает продукты питания, которые пользователь хочет проверить.

transactionDecisionValue Группа 2 TransactionDecisionValue

Содержит заказ, который необходимо разместить, а также детали платежа.

Ответ на выполнение

AppResponse

В следующей таблице перечислены свойства типа AppResponse :

Свойство Тип Описание
expectUserResponse Конст

Установите значение «ложь».

Значение: False

finalResponse FinalResponse

Необходимый.

Содержит ваш ответ на оформление корзины.

В следующем примере показан элемент AppResponse :

Пример 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."
                  }
                }
              ]
            }
          }
        }
      ]
    }
  }
}

Пример 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"
              }
            }
          }
        }
      ]
    }
  }
}

Пример 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."
                }
              ]
            }
          }
        }
      ]
    }
  }
}

Пример 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 — это AppResponse с checkoutResponse или error в StructuredResponse .

ОтправитьЗаказОтветСообщение

SubmitOrderResponseMessage — это AppResponse с orderUpdate в StructuredResponse .

Окончательный ответ

Ваш ответ на оформление корзины или сообщение SubmitOrderRequestMessage.

В следующей таблице перечислены свойства типа FinalResponse :

Свойство Тип Описание
richResponse RichResponse

Необходимый.

Содержит ваш ответ на CheckoutRequestMessage или SubmitOrderRequestMessage.

Оформить заказОтвет

В следующей таблице перечислены свойства типа CheckoutResponse :

Свойство Тип Описание
proposedOrder ProposedOrder

Необходимый.

Предлагаемый ордер для транзакции.

paymentOptions PaymentOptions

Необходимый.

Для пользователя выбран вариант оплаты по умолчанию.

additionalPaymentOptions Список < PaymentOptions >

Пользователю доступны альтернативные варианты оплаты.

В следующем примере показан элемент 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."
      }
    }
  ]
}

Элемент

Содержит ваш ответ на оформление корзины или SubmitOrderRequestMessage.

В следующей таблице перечислены свойства типа Item :

Свойство Тип Описание
structuredResponse StructuredResponse

Необходимый.

РичОтклик

Содержит ваш ответ на оформление корзины.

В следующей таблице перечислены свойства типа RichResponse :

Свойство Тип Описание
items Список < Item >

Необходимый.

Должно быть ровно 1 предмет .

Структурированный ответ

Для CheckoutResponseMessage это может быть одно из следующих значений: CheckoutResponse Указывает на успешную проверку. ИЛИ FoodErrorExtension: указывает на ошибку во время оформления заказа. Ответ может включать исправленные ProposeOrder и PaymentOptions или сообщение об ошибке без PaymentOptions. Для SubmitOrderResponseMessage применим только orderUpdate.

В следующей таблице перечислены свойства типа StructuredResponse :

Свойство Тип Описание
Требуется ровно одна из следующих групп свойств.
checkoutResponse Группа 1 CheckoutResponse

Проверенные товары плюс налоги и скидки.

error Группа 2 FoodErrorExtension

В товарах корзины обнаружены ошибки. В зависимости от характера ошибки это свойство может включать исправленные ProposeOrder и PaymentOptions или просто сообщение об ошибке без PaymentOptions.

orderUpdate Группа 3 OrderUpdate

Асинхронное обновление заказов

В этом разделе описываются типы высокого уровня, которые составляют запросы и ответы типичного встроенного взаимодействия действий при заказе еды.

Асинкордерупдатерекуестмессаже

Уведомляет пользователя об изменениях после отправки и подтверждения заказа. Например, вы можете уведомить пользователя о том, что заказ находится в пути или изменилась цена. Для получения дополнительной информации см.

В следующей таблице перечислены свойства типа AsyncOrderUpdateRequestMessage :

Свойство Тип Описание
isInSandbox логическое значение

Указывает, что заказ, для которого было отправлено это обновление, является платежом в песочнице.

customPushMessage CustomPushMessage

Необходимый.

Содержит OrderUpdate для запроса.

В следующем примере показан элемент AsyncOrderUpdateRequestMessage :

Пример

{
  "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"
      }
    }
  }
}

Асинкордерупдатеответмессаже

После успешной отправки AsyncOrderUpdateRequestMessage Google отвечает статусом HTTP 200 и пустым телом. Если обновление не удалось, Google ответит подробной информацией о том, почему обновление заказа не удалось.

Типы обновления заказов

Кнопка

Определяет элемент пользовательского интерфейса, который можно добавить для обеспечения взаимодействия с пользователем.

В следующей таблице перечислены свойства типа Button .

Свойство Тип Описание
title Нить

Необходимый.

Метка дисплея. Используйте регистр предложений длиной не более 30 символов, чтобы обеспечить правильное отображение.

Пример: Contact us

openUrlAction OpenUrlAction

Необходимый.

В следующем примере показан элемент Button :

Пример

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

Информация об отмене

В следующей таблице перечислены свойства типа CancellationInfo :

Свойство Тип Описание
reason Нить

Необходимый.

Отображаемая текстовая причина отклонения, когда OrderState.state имеет значение «ОТМЕНЕНО».

Пример: Restaurant closed

В следующем примере показан элемент CancellationInfo :

Пример

{
  "reason": "Insufficient inventory"
}

Расширение FoodOrderUpdateExtension

Этот тип предоставляет пользователю расчетный интервал времени, когда заказ будет доставлен или готов к выдаче. Отправляйте это расширение в OrderUpdate всякий раз, когда информация доступна или изменилась с момента ее последней отправки.

Предоставьте консервативную оценку интервала выполнения, чтобы ожидания пользователей постоянно оправдывались. Например, если заказ будет доставлен сегодня в 13:00, вам следует отправить расчетный интервал, соответствующий изменениям в зависимости от условий движения, например сегодня с 12:45 до 13:15.

Длительность или временная метка ISO 8601 интерпретируется как интервал от updateTime OrderUpdate (по сути, «сейчас») до updateTime плюс duration . Не используйте этот формат, если «сейчас» не является разумным ожиданием.

Интервал ISO 8601 интерпретируется как интервал от начала до конца интервала.

В следующей таблице перечислены свойства типа FoodOrderUpdateExtension :

Свойство Тип Описание
@type Конст

Тип этого расширения. Для этого поля всегда установлено значение «type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension».

Значение: type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension

estimatedFulfillmentTimeIso8601 Нить

Расчетное время, когда заказ будет доставлен или готов к самовывозу. Строка должна быть в формате ISO 8601 и соответствовать интервалу, а не одному фиксированному времени. Приемлемые соглашения: интервалы, продолжительность и дата/время. Это поле можно отправить в SubmitOrderResponseMessage или AsyncOrderUpdateRequestMessage, когда информация станет доступной или произойдет изменение, например раннее или задержанное прибытие.

Пример: 2017-07-17T13:00:00Z/2017-07-17T13:30:00Z

foodOrderErrors Список FoodOrderError

Описывает ошибки, возникшие после заказа. Рекомендуется одна ошибка на корзину или на товар. Используйте FoodOrderUpdateExtension.FoodOrderErrors для любых ошибок, не охватываемых RejectionInfo.

Должно быть не менее 1 предмета .

В следующем примере показан элемент FoodOrderUpdateExtension :

Пример 1

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

Пример 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 :

Свойство Тип Описание
Требуется ровно одна из следующих групп свойств.
deliveryTime Группа 1 Временная метка ISO

Используйте AssessmentFulfillmentTimeIso8601 в сообщении FoodOrderingUpdateExtension.

pickupTime Группа 2 Временная метка ISO

Используйте AssessmentFulfillmentTimeIso8601 в сообщении FoodOrderingUpdateExtension.

В следующем примере показан элемент FulfillmentInfo :

Пример 1

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

Пример 2

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

ИнТранзитИнфо

В следующей таблице перечислены свойства типа InTransitInfo :

Свойство Тип Описание
updatedTime Временная метка ISO

Используйте AssessmentFulfillmentTimeIso8601 в сообщении FoodOrderingUpdateExtension.

В следующем примере показан элемент InTransitInfo :

Пример

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

LineItemUpdate

В следующей таблице перечислены свойства типа LineItemUpdate :

Свойство Тип Описание
orderState OrderState
price Price
reason Нить

Причина изменения. Требуется для изменения цен.

В следующем примере показан элемент LineItemUpdate :

Пример

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

Опенурлэкшн

В следующей таблице перечислены свойства типа OpenUrlAction :

Свойство Тип Описание
url Нить

Необходимый.

Действие инициируется нажатием или прикосновением к кнопке. Список применимых префиксов зависит от orderManagementActionType. «EMAIL»: префикс должен быть «mailto». «ЗВОНОК»: префикс должен быть «тел». «CUSTOMER_SERVICE»: префикс должен быть «mailto», «tel», «http» или «https».

Пример: https://www.google.com

Управление заказамиДействие

Управление заказами позволяет пользователям получать поддержку после заказа и должно отправляться в каждом OrderUpdate в заказе на отправку AppResponse и в каждом последующем AsyncOrderUpdateRequestMessage Действия по управлению заказами, отправляемые для конкретного заказа, могут различаться в зависимости от состояния.

Например, в состоянии «CREATED» CUSTOMER_SERVICE может ссылаться на ваш телефон службы поддержки клиентов. Затем, в состоянии «ПОДТВЕРЖДЕНО», CUSTOMER_SERVICE может переключиться на телефон ресторана, если это станет лучшей точкой контакта для клиента. Аналогичным образом, когда заказ находится в состоянии «ИСПОЛНЕН», CUSTOMER_SERVICE может ссылаться на ваши адреса электронной почты службы поддержки.

В следующей таблице перечислены свойства типа OrderManagementAction :

Свойство Тип Описание
type OrderManagementActionType

Необходимый.

button Button

Необходимый.

В следующем примере показан элемент OrderManagementAction :

Пример 1

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

Пример 2

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

Тип управления заказом

Определяет типы, связанные с OrderManagementAction .

Тип OrderManagementActionType имеет следующие возможные значения:

  • CUSTOMER_SERVICE : адрес электронной почты и/или контактный номер службы поддержки клиентов, которые будут отображаться на странице подтверждения заказа. Это необходимо. Префикс openUrlAction.url должен быть «mailto», «tel», «http» или «https».
  • EMAIL : действие по электронной почте только на странице сведений о заказе. Префикс openUrlAction.url должен быть «mailto».
  • CALL_DRIVER : Вызов действия только на странице сведений о заказе. prefix openurlaction.url должен быть «Тель».
  • CALL_RESTAURANT : только страница сведений о сведении в заказа. prefix openurlaction.url должен быть «Тель».

OrderState

Текущее состояние заказа. Каждое значение state OrderState также соответствует статусу покупки на myaccount.google.com .

В следующей таблице перечислены свойства для типа OrderState :

Свойство Тип Описание
state OrderStateEnum

Необходимый.

label Нить

Необходимый.

Пользовательская строка отображения для состояния. Используйте случай предложения.

Пример: Your order has been received

В следующем примере показан элемент OrderState :

Пример

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

OrderStateenum

Определяет типы, связанные с OrderState .

Тип OrderStateEnum имеет следующие возможные значения:

  • CREATED : заказ, созданный интегратором и ожидание подтверждения провайдером. Соответствует статусу «упорядоченного» покупки.
  • CONFIRMED : заказ подтвержден поставщиком и активен. Соответствует «принятому» статусу покупки.
  • REJECTED : заказ отклонен интегратором или поставщиком. Соответствует статусу «отклонено».
  • CANCELLED : пользователь отменил заказ. Соответствует статусу «отмененного» покупки.
  • IN_PREPARATION : еда готовится. Соответствует статусу «Неизвестный статус».
  • READY_FOR_PICKUP : еда готова для пикапа. Соответствует статусу покупки «Готово к выказу».
  • IN_TRANSIT : порядок доставлен. Соответствует статусу покупки «в прогрессе».
  • FULFILLED : Пользователь получил то, что было заказано. Соответствует статусу покупки "забрана".

Квитанция

Отправьте этот тип в AppResponse по заказа отправки, где OrderState «подтвержден», «исполнен» или «in_transit». Отправьте квитанцию ​​в то время, когда userVisibleOrderId становится доступной. Вам не нужно продолжать отправлять квитанцию ​​в последующих обновлениях.

В следующей таблице перечислены свойства для типа Receipt :

Свойство Тип Описание
userVisibleOrderId Нить

Необходимый.

Требуется, если заказ «подтвержден», «in_transit» или «выполнен». Это поле является единственным идентификатором, связанным с пользователем для этого заказа (обычно идентификатор заказа ресторана), отображаемого как в квитанции интегратора, так и в карте заказа Google. Пользователь должен иметь возможность использовать этот идентификатор для ссылки на свой заказ для обслуживания клиентов с поставщиком и интегратором. Вам нужно предоставить этот идентификатор только один раз в любом данном OrderUpdate. Пока это не будет предоставлено, ActionOrderID является USERVIBLEORDORDERID. Например, у вас может не быть UservisibleOrderID, пока ресторан не подтвердит заказ. После подтверждения вы должны отправить AsyncorderupDateRequestMessage с OrderUpdate и квитанцией.

В следующем примере показан элемент Receipt :

Пример

{
  "userVisibleOrderId": "userVisibleId1234"
}

Отказ

В следующей таблице перечислены свойства для типа RejectionInfo :

Свойство Тип Описание
type RejectionType

Необходимый.

reason Нить

Причина отклонения, используемого для внутренней ведения журнала. Это поле не видно для пользователей.

В следующем примере показан элемент RejectionInfo :

Пример

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

DecryType

Тип RejectionType имеет следующие возможные значения:

  • INELIGIBLE : пользователь не имеет права из-за политики или связанных с рисками.
  • PAYMENT_DECLINED : Существует проблема с обработкой платежей.
  • UNAVAILABLE_SLOT : заказ не может быть выполнен в преддверии заказа, указанное Divelinfo или Pickupinfo.
  • PROMO_NOT_APPLICABLE : Есть проблема с продвижением по службе.
  • UNKNOWN : любая другая причина.

Связанные с платежей типы

В этом разделе описываются типы, связанные с оплатой, используемые для выполнения заказа пищи.

ActionProvidePaymentOptions

Требования к предоставляемому действию метод оплаты.

В следующей таблице перечислены свойства для типа ActionProvidedPaymentOptions :

Свойство Тип Описание
paymentType PaymentType

Необходимый.

displayName Нить

Необходимый.

Название платежного инструмента, отображаемого в квитанции.

Пример: Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

Дополнительные данные для платежа "on_fulfillment". Например, вы можете использовать это поле, чтобы указать, поддерживаются ли наличные или карта при выполнении.

В следующем примере показан элемент ActionProvidedPaymentOptions

Пример

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

Разрешены

Тип AllowedAuthMethods имеет следующие возможные значения:

  • PAN_ONLY : метод аутентификации, связанный с платежными картами, хранящимися в файле с учетной записью Google пользователя. Возвращенные данные платежа включают личный номер счета (PAN) с истечением месяца срока действия и годом истечения срока действия.

AldCardnetWorks

Тип AllowedCardNetworks имеет следующие возможные значения:

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

BillingAddressParameters

Этот объект позволяет возвращать дополнительные поля для возврата для запрошенного платежного адреса.

В следующей таблице перечислены свойства для типа BillingAddressParameters :

Свойство Тип Описание
format Нить

Формат биллингового адреса, необходимый для завершения транзакции. Мин: Имя, код страны и почтовый код. Полное: имя, уличный адрес, местоположение, регион, код страны и почтовый код.

В следующем примере показан элемент BillingAddressParameters :

Пример 1

{
  "format": "MIN"
}

Пример 2

{
  "format": "FULL"
}

CardParameters

Используйте этот объект, чтобы настроить поддержку вашего сайта для API Google Pay.

В следующей таблице перечислены свойства для типа CardParameters :

Свойство Тип Описание
allowedAuthMethods Список <const>

Необходимый.

Поля поддерживаются для аутентификации транзакции карты.

Должно быть не менее 1 предмета .

allowedCardNetworks Список AllowedCardNetworks

Необходимый.

Одна или несколько карт, которые вы поддерживаете, которые также поддерживаются API Google Pay.

Должно быть не менее 1 предмета .

billingAddressRequired Логический

Установите True, если вам нужен биллинг -адрес. Запросите платежный адрес только в том случае, если он требуется для обработки транзакции. Дополнительные запросы на данные могут увеличить трение в процессе оформления заказа и привести к более низким показателям конверсии.

billingAddressParameters BillingAddressParameters

Ожидаемые поля, возвращенные, если BillingAddressRequired установлен на True.

cvcRequired Логический

Установите на True, если используйте TimesOfMoney, False для всех других платежных процессоров.

В следующем примере показан элемент CardParameters :

Пример 1

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

Пример 2

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

GoogleProvidePaymentInstrument

В следующей таблице перечислены свойства для типа GoogleProvidedPaymentInstrument :

Свойство Тип Описание
instrumentToken Нить

Необходимый.

База 64-кодированная строка, содержащая платежный токен для зарядки пользователя участвующим процессором Google Pay, в соответствии с ранее указанным Google ProvovidePaymentOptions.

billingAddress PostalAddress

Биллинг адрес для оплаты.

В следующем примере показан элемент GoogleProvidedPaymentInstrument :

Пример

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

GoogleProvidePaymentOptions

Требования к предоставлению Google метод оплаты.

В следующей таблице перечислены свойства для типа GoogleProvidedPaymentOptions :

Свойство Тип Описание
facilitationSpecification Нить

Платеж DATATAREQUEST JSON в качестве строки. Используйте этот объект, чтобы настроить поддержку вашего сайта для API Google Pay.

supportedCardNetworks Список SupportedCardNetworks

Вместо этого используйте облегчение. Тип карточных сетей, поддерживаемых агентом.

Это поле устарело.

prepaidCardDisallowed Логический

Вместо этого используйте облегчение. Разрешена ли предоплаченная карта в качестве типа оплаты.

Это поле устарело.

billingAddressRequired Логический

Вместо этого используйте облегчение. Требуется ли платежный адрес.

Это поле устарело.

tokenizationParameters TokenizationParameters

Это поле устарело.

В следующем примере показан элемент GoogleProvidedPaymentOptions :

Пример 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\"}}"
}

Пример 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
}

Пример 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

Используйте этот объект, чтобы настроить поддержку вашего сайта для API Google Pay.

В следующей таблице перечислены свойства для типа MerchantInfo :

Свойство Тип Описание
merchantId Нить

Google Merchant Identifier, выпущенный вам Google Pay.

merchantName Нить

Необходимый.

Торговое имя, закодированное как UTF-8. Имя торговца отображается в платежном листе.

OnfulFillmentPaymentData

Используйте этот объект, чтобы отправить дополнительные данные для платежа "on_fulfillment".

В следующей таблице перечислены свойства для типа OnFulfillmentPaymentData :

Свойство Тип Описание
supportedPaymentOptions Список < PaymentOptionsEnums >

Список вариантов оплаты, доступных пользователю во время выполнения заказа.

В следующем примере показан элемент OnFulfillmentPaymentData :

Пример

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

Параметры

Определяет типы, связанные с TokenizationParameters .

В следующей таблице перечислены свойства для типа Parameters :

Свойство Тип Описание
gateway Нить

Необходимый.

Пример: braintree

gatewayMerchantId Нить
[additionalKey: string] Нить Дополнительные пары ключей

В следующем примере показан элемент Parameters :

Пример 1

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

Пример 2

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

PAYTERDATAREQUEST

Используйте этот объект, чтобы настроить поддержку вашего сайта для API Google Pay.

В следующей таблице перечислены свойства для типа PaymentDataRequest :

Свойство Тип Описание
apiVersion Конст

Необходимый.

Основная версия API.

Значение: 2

apiVersionMinor Конст

Необходимый.

Незначительная версия API.

Значение: 0

merchantInfo MerchantInfo

Необходимый.

(Google Pay идентификатор продавца) Информация о продавцах, который запрашивает данные о платежах.

allowedPaymentMethods Список < PaymentMethod >

Необходимый.

Определяет поддержку одного или нескольких методов оплаты, поддерживаемых API Google Pay.

transactionInfo TransactionInfo

Необходимый.

Подробная информация об авторизации транзакции на основе того, согласен ли пользователь на транзакцию или нет. Это поле включает в себя общую цену и статус цены.

В следующем примере показан элемент PaymentDataRequest : элемент:

Пример

{
  "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 :

Свойство Тип Описание
displayName Нить

Необходимый.

Пользовательский имени платежный инструмент для отображения в квитанции.

paymentType PaymentType

Необходимый.

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

Токен, который может быть использован действием. Укажите это только в том случае, если вы указали Google ProvovidePaymentOptions как вариант оплаты в проверке.

В следующем примере показан элемент PaymentInfo :

Пример 1

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

Пример 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"
}

Способ оплаты

Используйте этот объект, чтобы настроить поддержку вашего сайта для API Google Pay.

В следующей таблице перечислены свойства для типа PaymentMethod :

Свойство Тип Описание
type Конст

Необходимый.

Короткий идентификатор для поддерживаемого способа оплаты. В настоящее время поддерживается только карта.

Значение: CARD

parameters CardParameters

Необходимый.

Параметры, необходимые для настройки предоставленного типа метода оплаты.

tokenizationSpecification TokenizationSpecification

Необходимый.

Настройте поставщика учетной записи или дешифрования для получения платежной информации. Это свойство требуется для метода оплаты карты.

В следующем примере показан элемент PaymentMethod :

Пример

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

Платежоп

В следующей таблице перечислены свойства для типа PaymentOptions :

Свойство Тип Описание
Требуется именно одна из следующих групп свойств.
googleProvidedOptions Группа 1 GoogleProvidedPaymentOptions

Взаимно эксклюзив с действиями. Используйте это для онлайн -платежа с помощью GPAY.

actionProvidedOptions Группа 2 ActionProvidedPaymentOptions

Взаимно эксклюзив с Google Provovidoptions. Используйте это для «наличных на доставке» или «оплата за выполнение».

В следующем примере показан элемент PaymentOptions :

Пример 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\"}}"
  }
}

Пример 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\"}}"
  }
}

Пример 3

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

Платежон

Тип PaymentOptionsEnums имеет следующие возможные значения:

  • Cash
  • Card
  • UPI
  • Paytm

PAYTERTYPE

Тип PaymentType имеет следующие возможные значения:

  • PAYMENT_CARD : для Google ProvovidePaymentOptions.
  • ON_FULFILLMENT : для Action ProvovidePaymentOptions.

Поддержка CardnetWorks

Определяет типы, связанные с GoogleProvidedPaymentOptions .

Тип SupportedCardNetworks

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

TokenizationParameters

Определяет типы, связанные с GoogleProvidedPaymentOptions .

В следующей таблице перечислены свойства для типа TokenizationParameters :

Свойство Тип Описание
tokenizationType Enum [ "UNSPECIFIED_TOKENIZATION_TYPE", "PAYMENT_GATEWAY" ]

Необходимый.

Вместо этого используйте облегчение. Тип токенов приемлемо.

parameters Parameters

Вместо этого используйте облегчение.

Определение токенизаций

Этот объект позволяет вам настроить учетную запись для получения платежной информации.

В следующей таблице перечислены свойства для типа TokenizationSpecification :

Свойство Тип Описание
type Конст

Необходимый.

parameters Parameters

Необходимый.

В следующем примере показан элемент TokenizationSpecification :

Пример 1

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

Пример 2

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

TransactionInfo

Этот объект описывает транзакцию, которая определяет способность плательщика платить. Он используется для представления диалога авторизации оплаты.

В следующей таблице перечислены свойства для типа TransactionInfo :

Свойство Тип Описание
currencyCode Нить

Необходимый.

ISO 4217 Код алфавитной валюты.

transactionId Нить

Уникальный идентификатор, который определяет попытку транзакции. Торговцы могут использовать существующий идентификатор или генерировать конкретный для попыток Google Pay Transaction. Это поле требуется, когда вы отправляете обратные вызовы в API событий транзакции Google.

totalPriceStatus Конст

Необходимый.

Используйте «оцененный» в качестве дефолта. Общая цена может корректироваться в зависимости от деталей ответа, таких как налог с продаж, собранные в зависимости от выставления счетов.

Значение: ESTIMATED

totalPrice Нить

Необходимый.

Общее денежное значение транзакции с дополнительной десятичной точностью двух десятичных знаков. Это поле должно иметь то же значение, что и cart.totalprice.

В следующем примере показан элемент TransactionInfo :

Пример

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