Обзор

Партнеры, участвующие в интеграции предложений, должны завершить настройку учетной записи для этапа интеграции на основе продавца или организации (пилотный проект), прежде чем начать. В данном руководстве подробно описаны внедрение, тестирование и запуск интеграции предложений. Перед началом интеграции ознакомьтесь с этим обзором и правилами использования предложений .

Предложения

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

Примеры предложений:

  • В декабре по средам и четвергам с 12:00 до 17:00 действует скидка 50% на закуски.
  • В честь Дня матери с 18:00 до 22:00 действует акция: купите один десерт и получите второй бесплатно.
  • Каждое воскресенье с 10:00 до 14:00 скидка 5 долларов на основное блюдо для бранча.
  • Скидка 10% при личном посещении, суммируется со скидкой 5% для премиум-подписчиков и 5% при оплате через ваше приложение.

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

Предлагает реализацию

Интеграция предложений включает в себя два потока данных, которые будут загружаться ежедневно или с частотой, обеспечивающей высокую точность (то есть, уменьшающей устаревание):

OfferFeed

Название поля Тип Требование Описание
data массив объектов
(Offer)

Предложение

Название поля Тип Требование Описание
offer_id нить

Необходимый

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

Список продавцов, участвующих в этой акции.
add_on_offer_applicable_to_all_entities логический

Если это правда, то данное предложение распространяется на все организации, входящие в состав агрегатора. Действует только для дополнительных предложений.
offer_source перечисление
(OfferSource)

Необходимый

Предложение может быть предоставлено агрегатором, отдельным продавцом или даже третьей стороной в качестве дополнительной услуги. Обязательно.
action_type перечисление
(ActionType)

Необходимый

Сервис, предоставляющий предложение. Идентификатор предложения (offer_id) может принадлежать только одному типу действия (action_type). Если предложение может использоваться несколькими типами сервисов, то для каждого типа сервиса будут созданы дубликаты предложений с уникальными идентификаторами. Обязательно.
offer_modes массив перечислений
(OfferMode)

Необходимый

Способы получения предложения: лично, по предварительной записи, онлайн и т.д. Обязательно.
offer_category перечисление
(OfferCategory)

Необходимый

Категория предложения. Обязательно.
source_assigned_priority число

Неотрицательное целое число ([1-100], где 1 обозначает наивысший приоритет), указывающее уровень приоритета предложения, присвоенный источником. Если для одного и того же продавца доступно несколько предложений, это будет сигналом для ранжирования предложений. 0 означает, что приоритет не установлен.
offer_details объект
(OfferDetails)

Необходимый

Подробности предложения, такие как скидка, стоимость бронирования и т. д., обязательны.
offer_restrictions объект
(OfferRestrictions)

Необходимый

Описывает ограничения предложения, например, требуется ли подписка/платежный инструмент, можно ли комбинировать это предложение с другими предложениями (и какие именно) и т. д. Обязательно.
coupon объект
(Coupon)

Подробная информация о купоне. Обязательно для категории предложения: OFFER_CATEGORY_ADD_ON_COUPON_OFFER.
payment_instrument объект
(PaymentInstrument)

Детали платежного инструмента. Обязательно для категории предложения: OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER.
subscription объект
(Subscription)

Детали подписки. Обязательно для параметра offer_category: OFFER_CATEGORY_ADD_ON_SUBSCRIPTION_OFFER.
terms объект
(Terms)

Необходимый

Условия предложения. Обязательно.
validity_periods массив объектов
(ValidityPeriod)

Необходимый

Срок действия предложения. Указывается период действия предложения, включая время начала и окончания, дни недели и т. д. Обязательно.
offer_url нить

URL страницы предложения продавца. Обязательно для параметра offer_category: OFFER_CATEGORY_BASE_OFFER.
image_url нить

URL-адрес изображения предложения продавца.
tags массив перечислений
(OfferTag)

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

Подробности предложения

Название поля Тип Требование Описание
offer_display_text нить

Необходимый

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

Необходимый

В этом объекте oneOf можно задать значение только для одного из полей.
max_discount_value объект
(Money)

Максимальная скидка, которую можно получить. Например, 10% скидка до 100 долларов.
min_spend_value объект
(Money)

Минимальная сумма покупки для получения скидки. Например, скидка 10% предоставляется при общей сумме покупки в 100 долларов и более.
booking_cost объект
(Money)

Стоимость бронирования по этому предложению. Например, скидка в 100 долларов на окончательный счет при бронировании столика за 15 долларов.
booking_cost_unit перечисление
(FeeUnit)

Единица измерения стоимости бронирования. Например, за человека, за транзакцию.
convenience_fee объект
(Fee)

booking_cost_adjustable логический

Возможность корректировки стоимости бронирования, то есть вычитание стоимости бронирования из окончательного счета. Например: скидка 30% на ужин при бронировании. Стоимость бронирования 15 долларов, и скидка будет применена к окончательному счету. Таким образом, окончательный счет: Общая сумма расходов - 30% - 15 долларов
additional_fees массив объектов
(AdditionalFee)

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

Деньги

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

Название поля Тип Требование Описание
currency_code нить

Трехбуквенный код валюты, определенный в стандарте ISO 4217.
units нить

Целые единицы суммы. Например, если currencyCode"USD" , то 1 единица — это один доллар США.
nanos число

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

Платеж

Название поля Тип Требование Описание
unit перечисление
(FeeUnit)

type перечисление
(FeeType)

один из
(cost)

В этом объекте oneOf можно задать значение только для одного из полей.

MoneyRange

Название поля Тип Требование Описание
min_amount объект
(Money)

max_amount объект
(Money)

Дополнительный сбор

Название поля Тип Требование Описание
name нить

Необходимый

Название дополнительной платы. Примеры: плата за удобство, плата за обработку и т. д. Обязательно.
fee объект
(Fee)

Ограничения предложения

Название поля Тип Требование Описание
combinable_with_other_offers логический

Можно ли комбинировать это предложение с другими предложениями. Если значение равно true, партнеры могут указать, с какими предложениями это предложение можно комбинировать. Если заданы параметры combinable_offer_categories и combinable_offer_ids, то любое предложение, соответствующее одному из вышеуказанных условий, будет допускать комбинирование.
combinable_offer_categories массив перечислений
(OfferCategory)

Список типов предложений, с которыми это предложение может быть объединено. Например, это предложение может быть объединено с другими купонами. Если combinable_with_other_offers имеет значение true и это поле не задано, все типы предложений будут объединены.
combinable_offer_ids массив строк

Список offer_ids, с которыми можно комбинировать данное предложение. Некоторые предложения могут быть объединены только с определенными другими offer_ids (их можно считать родительскими предложениями). Если combinable_with_other_offers имеет значение true и это поле не задано, все offer_ids будут совместимы.
inclusions массив объектов
(OfferCondition)

Список условий, которые должны быть соблюдены для того, чтобы предложение было действительным (например, безалкогольные напитки, еда).
exclusions массив объектов
(OfferCondition)

Список условий, при которых предложение становится недействительным (например, шведский стол, комплексные обеды и коктейли).
min_guest число

Минимальное количество человек, необходимое для получения предложения.
food_offer_restrictions объект
(FoodOfferRestrictions)

Ограничения, касающиеся предложений продуктов питания.

Условия предложения

Название поля Тип Требование Описание
description нить

Ограничения на предложения продуктов питания

Название поля Тип Требование Описание
meal_types массив перечислений
(MealType)

Укажите, к каким типам блюд может применяться предложение, например, обед или ужин. Если этот параметр не указан, предложение может применяться ко всем типам блюд.
restricted_to_certain_courses логический

Предложение действительно только для определенных курсов.

Купон

Название поля Тип Требование Описание
text нить

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

Необходимый

Для активации предложения необходим промокод. Обязательно.

Платежный инструмент

Название поля Тип Требование Описание
items массив объектов
(PaymentInstrumentItem)

Необходимый

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

Необходимый

Название поставщика платежного инструмента. Это может быть банковский партнер, название банка и т. д. Например: American Express, HDFC, ICICI. Обязательно.

Платежный инструмент

Название поля Тип Требование Описание
type перечисление
(PaymentInstrumentType)

Необходимый

Тип платежного инструмента. Обязательно.
name нить

Необходимый

Название платежного инструмента, например, название кредитной карты. Например: HDFC Infinia, American Express Platinum. Обязательно.

Подписка

Название поля Тип Требование Описание
name нить

Необходимый

Название подписки. Обязательно.
subscription_auto_added логический

Будет ли подписка автоматически добавлена ​​при использовании пользователем этого предложения?
cost объект
(Money)

Необходимый

Стоимость подписки. Обязательно.
subscription_duration объект
(Duration)

Необходимый

Укажите срок действия подписки по указанной стоимости подписки. Обязательно к заполнению.
terms_and_conditions_url нить

URL-адрес условий и положений партнера, относящихся к данной подписке.

Продолжительность

Название поля Тип Требование Описание
seconds нить

Секунды, выраженные знаком, представляют собой промежуток времени. Должны находиться в диапазоне от -315 576 000 000 до +315 576 000 000 включительно. Примечание: эти границы вычисляются по формуле: 60 сек/мин * 60 мин/час * 24 часа/сутки * 365,25 дней/год * 10000 лет
nanos число

Доли секунды со знаком, отображаемые с наносекундным разрешением. Длительности менее одной секунды обозначаются полем 0 seconds и положительным или отрицательным значением поля nanos . Для длительностей в одну секунду и более ненулевое значение поля nanos должно иметь тот же знак, что и поле seconds . Должен находиться в диапазоне от -999 999 999 до +999 999 999 включительно.

Условия

Название поля Тип Требование Описание
url нить

URL-адрес условий и положений партнера.
restricted_to_certain_users логический

Доступно ли данное предложение только определенным пользователям?
terms_and_conditions нить

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

Условия и положения дополняют основные условия и положения партнера.

Срок действия

Название поля Тип Требование Описание
valid_period объект
(ValidityRange)

Укажите время начала и окончания действия предложения. Это время должно соответствовать разным дням, то есть время начала должно быть 00:00 (начало дня), а время окончания — 00:00 (исключительно) в день окончания срока действия предложения.
time_of_day массив объектов
(TimeOfDayWindow)

Указывает допустимый временной интервал в конкретный день и дни, в которые действует предложение. Например: Понедельник: с 10:00 до 17:00 Вторник: с 10:00 до 14:00 Вторник: с 17:00 до 19:00 Среда, Четверг, Пятница, Суббота, Воскресенье: с 15:00 до 19:00 Если параметр не указан, это означает, что предложение действует в течение всего периода valid_period .
time_exceptions массив объектов
(ValidTimeException)

Указывает исключения из вышеуказанных значений valid_period и valid_time_of_week.
date_exceptions массив объектов
(Date)

Указывает исключения в днях из указанных выше значений valid_period и time_of_day.

Диапазон допустимости

Диапазон временных меток (закрытый-открытый).

Название поля Тип Требование Описание
valid_from_time объект
(Timestamp)

Необходимый

Начальное время диапазона (включительно). Обязательно.
valid_through_time объект
(Timestamp)

Время окончания диапазона (исключая указанное время). Если не задано, это означает, что этот период никогда не заканчивается. Необязательно.

Отметка времени

Название поля Тип Требование Описание
seconds нить

Обозначает количество секунд UTC-времени с начала эпохи Unix 1970-01-01T00:00:00Z. Должно находиться в диапазоне от -62135596800 до 253402300799 включительно (что соответствует периоду с 0001-01-01T00:00:00Z по 9999-12-31T23:59:59Z).
nanos число

Неотрицательные доли секунды с разрешением в наносекунды. Это поле представляет собой наносекундную часть длительности, а не альтернативу секундам. Отрицательные значения секунд с дробными долями должны по-прежнему иметь неотрицательные значения в наносекундах, отсчитываемые вперед во времени. Должны быть в диапазоне от 0 до 999 999 999 включительно.

TimeOfDayWindow

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

Название поля Тип Требование Описание
time_windows объект
(TimeOfDayRange)

Необходимый

Временной интервал, в течение которого может быть размещен/выполнен заказ. Обязательно.
day_of_week массив перечислений
(DayOfWeek)

Список дней недели, к которым применяются окна. Если список не указан, это означает, что окна применяются ко всем дням недели. Необязательно.

Диапазон времени суток

Закрытый/открытый временной диапазон.

Название поля Тип Требование Описание
open_time объект
(TimeOfDay)

Время, указывающее на начало дня в рассматриваемом диапазоне (включительно). Если не указано, означает 00:00:00. Необязательно.
close_time объект
(TimeOfDay)

Время, указывающее на время окончания стрельбища (исключая указанное время). Если не задано, означает 23:59:59. Необязательно.

Время суток

Название поля Тип Требование Описание
hours число

Часы суток в 24-часовом формате. Значение должно быть больше или равно 0 и, как правило, меньше или равно 23. API может разрешить значение "24:00:00" для таких сценариев, как время закрытия предприятия.
minutes число

Минуты часа. Должно быть больше или равно 0 и меньше или равно 59.
seconds число

Секунды минуты. Должно быть больше или равно 0 и, как правило, меньше или равно 59. API может допускать значение 60, если он поддерживает високосные секунды.
nanos число

Доли секунд, в наносекундах. Должно быть больше или равно 0 и меньше или равно 999 999 999.

ValidTimeException

Название поля Тип Требование Описание
exceptional_period объект
(ValidityRange)

Укажите начальную и конечную временные метки, в течение которых предложение недействительно. Эти временные метки должны соответствовать разным дням, то есть начальное время должно быть 00:00 (начало дня), а конечное время должно быть 00:00 (исключительно) в день окончания периода действия исключения.

Дата

Представляет собой целую или частичную календарную дату, например, день рождения. Время суток и часовой пояс либо указаны отдельно, либо не имеют значения. Дата указывается относительно григорианского календаря. Это может представлять одно из следующих значений: * Полная дата с ненулевыми значениями года, месяца и дня. * Месяц и день с нулевым годом (например, годовщина). * Год сам по себе с нулевым месяцем и нулевым днем. * Год и месяц с нулевым днем ​​(например, срок действия кредитной карты). Связанные типы: * [google.type.TimeOfDay][] * [google.type.DateTime][] * [google.protobuf.Timestamp][]

Название поля Тип Требование Описание
year число

Год даты. Должен быть от 1 до 9999, или 0, чтобы указать дату без года.
month число

Месяц года. Должен быть от 1 до 12, или 0, чтобы указать год без месяца и дня.
day число

День месяца. Должен быть от 1 до 31 и соответствовать году и месяцу, или 0, чтобы указать только год или год и месяц, где день не имеет значения.

OfferSource

Имя Описание
OFFER_SOURCE_UNSPECIFIED
OFFER_SOURCE_AGGREGATOR

Тип действия

Имя Описание
ACTION_TYPE_UNSPECIFIED
ACTION_TYPE_DINING

OfferMode

Имя Описание
OFFER_MODE_OTHER
OFFER_MODE_WALK_IN
OFFER_MODE_FREE_RESERVATION
OFFER_MODE_PAID_RESERVATION
OFFER_MODE_ONLINE_ORDER

Категория предложения

Категория предложения. Базовое предложение — это стандартное предложение, доступное всем клиентам, например, скидка 10% при покупке на сумму свыше 100 долларов. Базовое предложение, ограниченное купоном или способом оплаты, будет иметь соответствующие поля. У нас также есть дополнительные предложения, такие как ADD_ON_PAYMENT_OFFER. Такие предложения можно добавлять к другим предложениям для получения дополнительных скидок.

Имя Описание
OFFER_CATEGORY_UNSPECIFIED
OFFER_CATEGORY_BASE_OFFER
OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER
OFFER_CATEGORY_ADD_ON_COUPON_OFFER
OFFER_CATEGORY_ADD_ON_SUBSCRIPTION_OFFER

FeeUnit

Имя Описание
FEE_UNIT_UNSPECIFIED
FEE_UNIT_PER_GUEST
FEE_UNIT_PER_TRANSACTION

FeeType

Имя Описание
FEE_TYPE_UNSPECIFIED
FEE_TYPE_FIXED
FEE_TYPE_VARIABLE

Тип питания

Имя Описание
MEAL_TYPE_UNSPECIFIED
MEAL_TYPE_BREAKFAST
MEAL_TYPE_LUNCH
MEAL_TYPE_DINNER

Тип платежного инструмента

Имя Описание
PAYMENT_INSTRUMENT_TYPE_UNSPECIFIED
PAYMENT_INSTRUMENT_CREDIT_CARD
PAYMENT_INSTRUMENT_DEBIT_CARD
PAYMENT_INSTRUMENT_BANK_ACCOUNT
PAYMENT_INSTRUMENT_UPI
PAYMENT_INSTRUMENT_ONLINE_WALLET

День недели

Обозначает день недели.

Имя Описание
DAY_OF_WEEK_UNSPECIFIED День недели не указан.
MONDAY Понедельник
TUESDAY Вторник
WEDNESDAY Среда
THURSDAY Четверг
FRIDAY Пятница
SATURDAY Суббота
SUNDAY Воскресенье

OfferTag

Имя Описание
OFFER_TAG_NEW_YEAR_SPECIAL

спецификация предложения

Скидка может быть в процентах или представлять собой фиксированную сумму, вычитаемую из общей стоимости. Например: 1. Скидка 10% от окончательной суммы. 2. Скидка 15 долларов на заказ. Продавцы также могут предлагать индивидуальные скидки, такие как «купи один — получи второй бесплатно», используя соответствующие поля для указания условий. Обязательно.

Название поля Тип Требование Описание
discount_percent число

Взаимоисключающий с discount_value и other_offer_detail_text

Процент от суммы счета, на который распространяется скидка. [0, 100] Для предложений «1+1» или «50% скидка», которые распространяются на весь обед (например, «1+1 шведский стол», «1+1 на весь счет», «1+1 на комплексное меню»), это значение можно установить равным 50.
discount_value объект
(Money)

Взаимоисключающий с discount_percent и other_offer_detail_text

Фиксированная сумма скидки.
other_offer_detail_text нить

Взаимоисключающие свойства с discount_percent и discount_value

Текст в свободной форме для описания скидки. Для конкретных предложений «1+1» (например, 1+1 напиток, +1 основное блюдо, 1+1 выбранное блюдо из меню) эти подробности следует указать здесь.

расходы

Название поля Тип Требование Описание
amount объект
(Money)

Взаимоисключающий с amount_range

amount_range объект
(MoneyRange)

Взаимоисключающий с amount

Загрузка ленты

Лента предложений должна быть загружена на SFTP-сервер Generic назначения. Следуйте инструкциям в руководстве по использованию SFTP-сервера общего назначения и укажите name google.offer в файле описания.

Частота загрузки

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

Данные появятся в Google через несколько часов.

Предлагает категоризацию

  • OFFER_CATEGORY_BASE_OFFER : Предложения, которые можно использовать независимо, без объединения с другими предложениями. Сюда входят:
    • Фиксированная скидка на весь счет (например, 20%)
    • Предложения по подписке (например, бесплатный десерт при оформлении подписки)
    • Предложения по оплате в случаях, когда для ресторана нет других базовых предложений.
  • Дополнительные предложения: Предложения, для активации которых необходимо приобрести базовое предложение. К ним относятся:
    • OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER (например, дополнительная скидка 10% при использовании определенной кредитной карты)
    • OFFER_CATEGORY_ADD_ON_COUPON_OFFER (например, бесплатный напиток по определенному промокоду)
    • OFFER_CATEGORY_ADD_ON_SUBSCRIPTION_OFFER (например, дополнительная скидка 10% для подписчиков)

Другие соображения:

  • Если для ресторана не задано базовое предложение, дополнительные предложения отображаться не будут. Если базовое предложение отсутствует, любое предложение по оплате, подписке или купону, которое можно активировать без необходимости добавления к другому предложению, должно быть помечено как OFFER_CATEGORY_BASE_OFFER .
    • В зависимости от типа, необходимо указать соответствующие данные для PaymentInstrument , Subscription или Coupon .
    • Партнеры должны предоставить по 2 копии каждого из этих предложений, чтобы охватить сценарии, в которых они функционируют как базовые предложения и дополнительные предложения. Копию дополнительного предложения можно затем установить для нескольких ресторанов, используя либо entity_ids , либо add_on_offer_applicable_to_all_entities .
  • Если у ресторана есть несколько базовых предложений, которые можно суммировать, все базовые предложения следует пометить тегом OFFER_CATEGORY_BASE_OFFER , а базовые предложения, относящиеся к оплате, подписке или купонам, следует отправлять дополнительно в качестве соответствующего типа дополнительного предложения.
  • ValidityPeriod следует использовать для активации дополнительных предложений в качестве базовых предложений только в том случае, если активное базовое предложение отсутствует.

Примеры сценариев:

  • Ресторан предлагает скидку 5% при оплате определенной кредитной картой и бесплатный напиток при использовании определенного промокода.

    • Предложение о скидке 5% по кредитной карте следует отправить в двух экземплярах: один с пометкой OFFER_CATEGORY_BASE_OFFER , а другой с пометкой OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER , указав данные PaymentInstrument .
    • Предложение бесплатного напитка по промокоду следует отправлять в формате OFFER_CATEGORY_ADD_ON_COUPON_OFFER , указав подробности Coupon .
  • Ресторан предлагает скидку 10% для посетителей без предварительной записи и 5% при оплате определенной кредитной картой, причем обе скидки могут суммироваться.

    • Предложение со скидкой 10% при покупке без предварительной записи должно быть помечено как OFFER_CATEGORY_BASE_OFFER .
    • Предложение о скидке 5% по кредитной карте должно иметь 2 копии, одна из которых должна быть помечена как OFFER_CATEGORY_BASE_OFFER , а другая — как OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER .
  • В ресторане действует скидка 10% только на обед в будние дни, а также скидка 5% в любое другое время при оплате определенной кредитной картой.

    • Для предложения со скидкой 10% параметр ValidityPeriod должен указывать, что скидка действует только в обеденное время ресторана по будням.
    • Предложение о скидке 5% по кредитной карте следует отправить в двух экземплярах.
      • Один экземпляр должен быть помечен тегом OFFER_CATEGORY_BASE_OFFER с указанием данных PaymentInstrument . Значение ValidityPeriod должно исключать обеденные часы в будние дни, когда действует скидка 10% на обед.
      • Один экземпляр должен быть помечен тегом OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER и содержать подробную информацию PaymentInstrument .
    • Все остальные предложения по оплате в этом ресторане должны быть помечены тегом OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER .

Процесс разработки и запуска

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

  • Интеграция будет сначала разработана в тестовой среде (Sandbox). Вам следует использовать экспорт производственных данных (или даже непосредственно производственные данные) в тестовую среду Google. Это поможет гарантировать, что ваша разработка учтет все граничные случаи, и позволит Google оценить качество данных и оказать вам более эффективную помощь на основе вашей модели данных.
  • После того, как вы начнете регулярно загружать полные ежедневные данные о продавцах, услугах и предложениях в тестовую среду Google, команда Google оценит ваши данные. После одобрения команды Google вы сможете отправить свой код в рабочую среду и начать передавать данные в рабочую среду Google.
  • После того, как вы полностью протестируете интеграцию в рабочую среду, команда Google также проведет тестирование. После завершения всех тестов ваша интеграция будет запущена.

Мониторинг

Для обеспечения удобства использования Google будет проверять достоверность, корректность и соответствие предлагаемых товаров и услуг критериям нашей политики до и после запуска. Для этого Google будет использовать сочетание ручной и автоматизированной проверки. Результаты этих проверок будут доступны на панели управления предложениями в Центре действий (только в рабочей версии). Результаты этого мониторинга могут быть использованы для влияния на ранжирование предложений.

Убедитесь, что страница загружается со всеми предложениями менее чем за 5 секунд , иначе это будет расценено как ошибка и помечено как Bad link .

Автоматизированные проверки (краулеры)

Команда Google по контролю качества внедряет веб-краулеры. Краулеры — это скрипты, которые автоматизируют веб-браузер для выполнения определенных кликов и извлечения информации о предложениях исключительно в целях тестирования качества .

Количество запросов

Например, если мы решим отправлять 5000 проверок в день, это означает, что 5000 раз в день ( равномерно распределенных в течение дня, то есть примерно раз в 17 секунд ) наш веб-краулер выполняет все следующие действия, которые обычно выполняет обычный пользователь:

  • Начните с поиска Google и нажмите на ссылку партнера.
  • Найдите информацию о предложении.
  • Если предложение требует бронирования, процесс бронирования продолжится с подтверждения доступности предложения в указанное время (бронирование не будет оформлено).

обнаружение веб-скрейперов

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

  • В адресе User-Agent веб-скрейпера будет содержаться строка " Google-Offers ":
    • Пример: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko; Google-Offers ) Chrome/104.0.5112.101 Safari/537.36
  • Вы также можете проверить, поступают ли запросы от Google, используя обратное разрешение DNS, как рекомендовано в статье «Проверка Googlebot и других поисковых роботов Google» . В нашем конкретном случае разрешение обратного DNS соответствует следующему шаблону: google-proxy-***-***-***-***.google.com .

Техническое поведение

Кэширование

В целях снижения нагрузки на веб-сайт партнера наши поисковые роботы, как правило, настроены на учет всех стандартных заголовков HTTP-кэширования, присутствующих в ответе. Это означает, что для правильно настроенных веб-сайтов мы избегаем повторной загрузки контента, который редко меняется (например, библиотек JavaScript). Для получения более подробной информации о реализации кэширования ознакомьтесь с этой документацией по HTTP-кэшированию .