Примеры использования

В этом руководстве описано, как можно настроить инструмент Google Pay API for Passes, чтобы взаимодействовать с пользователями специальных предложений.

.

Обновление информации в билетах

Иногда информация, указанная в билете, может меняться после его сохранения. Обновить эти сведения для пользователей можно с помощью REST API. Если изменения затрагивают только класс билета, можно также использовать Google Pay Merchant Center. Обновление информации в билете – один из важных аспектов взаимодействия с клиентом.

Чтобы обновить данные во всех билетах (например, заменить логотип), необходимо изменить только OfferClass. Для этого используйте метод update или patch. Также можно воспользоваться Google Pay Merchant Center. Google перенесет изменения во все объекты OfferObject, связанные с обновленным OfferClass. Это относится ко всем полям, определенным на уровне OfferClass.

Чтобы обновить отдельный билет (например, изменить время действия специального предложения), нужно изменить с помощью метода update или patch только один объект OfferObject. Это относится ко всем полям, определенным на уровне OfferObject.

Кроме того, не всегда получается предугадать, когда произойдут изменения или когда придется отправить запрос update или patch. В этом случае стоит периодически выполнять запросы update или patch для каждого класса и объекта. Просмотреть все классы в аккаунте отдельного продавца можно с помощью метода OfferClass list. Чтобы просмотреть все объекты определенного класса, вызовите метод OfferObject list.

Уведомления об окончании действия специального предложения

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

  1. Предложение на устройстве пользователя ранее не запускало уведомлений об окончании срока действия.
  2. Для предложения установлена действительная дата окончания срока действия datetime в свойстве validTimeInterval.end.date.
  3. Предложение было сохранено на устройстве пользователя более 12 часов назад.
  4. В предложении не должно быть значения True в заполняемом поле disableExpirationNotification. По умолчанию установлено значение false.

На скриншоте ниже показан пример неизменяемого уведомления по умолчанию.

  1. Срок окончания действия специального предложения (сегодня, завтра, осталось дней: [x])
  2. class.title
  3. class.titleImage

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

Работа функции на устройстве в режиме ожидания

Пользователи получат уведомление об окончании срока действия предложения до 22:00 или после 6:00 по местному времени вне зависимости от изначальных настроек.

Время отправки уведомления об окончании действия специального предложения

Время отправки уведомления об окончании действия Offer можно изменить в поле message.displayInterval.start.date в объектах OfferObjects или OfferClasses. Если время отправки изменено, уведомление активируется в соответствии со свойством поля message.displayInterval.start.date, а не по стандартной логике вычисления validTimeInterval.end.date. В примере ниже указано измененное время отправки уведомления об окончании срока действия.

    {
      “message”: {
       “messageType”: “expirationNotification”,
       “displayInterval”: {
         “start”: {
          “date”: datetime
         }
       }
      }
    }

Время появления уведомления зависит от свойства displayInterval.start.date. Можно выбрать дату не ранее 30 дней до окончания срока действия. Если указана более ранняя дата, уведомление придет за 30 дней до окончания действия предложения. Для этого сообщения не используются поля заголовка и содержимого.

Уведомления на основе местоположения

Сервисы Google могут активировать уведомления в зависимости от объектов, которые сохранил клиент, и расстояния до указанного вами адреса.

Информацию о местоположении можно добавить двумя способами.

  1. При создании аккаунта Google Pay API for Passes Merchant Center используется информация о местоположении из Google Карт.
  2. Координаты можно добавить в объект или класс, используя REST API.

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

Концепция геозонирования

Используя алгоритмы и информацию о местоположении из Google Карт, инструменты Google могут определить, когда пользователь находится в магазине или рядом с ним. При этом обнаруживаются любые классы и объекты, созданные с использованием аккаунта Google Pay API for Passes Merchant Center.

Алгоритм учитывает данные GPS, Wi-Fi, Bluetooth, информацию о передвижении и времени остановок, а также другие факторы. Когда пользователь находится рядом с определенным адресом, активируется уведомление на основе местоположения.

Если координаты были введены в Object вручную, уведомление на основе местоположения активируется на расстоянии 150 метров от нужного места.

Частота уведомлений на основе местоположения и учет предпочтений пользователя

Пользователь может получить не более четырех уведомлений в день.

Если в геозоне находится несколько сохраненных объектов, отображается одно уведомление с каруселью (на каждый аккаунт Google Pay API for Passes Merchant Center). Обнаруженные места можно просматривать по отдельности.

Чтобы получать уведомления на основе местоположения, пользователь должен включить службы определения местоположения на устройстве и активировать Специальные предложения в настройках уведомлений приложения Google Pay.

Использование REST API для добавления информации о местоположении

Вы можете задать несколько местоположений (значений широты и долготы) в классах и объектах. Сервисы Google сверяют текущее расположение устройства со списком мест, связанных с классом или объектом, и отправляют уведомление пользователю в тот момент, когда он находится в 150 метрах от нужного адреса. Ниже представлены примеры кода, с помощью которых можно задать местоположения в классах и объектах.

Ресурс

    {
      ... //Class or Object content

      "locations": [{
        "kind": "walletobjects#latLongPoint",
        "latitude": 37.422087,
        "longitude": -161446
      }, {
        "kind": "walletobjects#latLongPoint",
        "latitude": 37.429379,
        "longitude": -121.12272999999999
      }, {
        "kind": "walletobjects#latLongPoint",
        "latitude": 37.333646,
        "longitude": -122.884853
      }]
    }
    

Java

    List<LatLongPoint> locations = new ArrayList<LatLongPoint>();
    locations.add(new LatLongPoint().setLatitude(37.422087).setLongitude(
        -122.161446));
    locations.add(new LatLongPoint().setLatitude(37.429379).setLongitude(
        -121.12272999999999));
    locations.add(new LatLongPoint().setLatitude(37.333646).setLongitude(
        -122.884853));

    yourClassOrObject.setLocations(locations);
    

PHP

    $locations = array(
      array(
        'kind' => 'walletobjects#latLongPoint',
        'latitude' => 37.442087,
        'longitude' => -122.161446
      ),
      array(
        'kind' => 'walletobjects#latLongPoint',
        'latitude' => 37.429379,
        'longitude' => -122.12272999999999
      ),
      array(
        'kind' => 'walletobjects#latLongPoint',
        'latitude' => 37.333646,
        'longitude' => -121.884853
      )
    );

Python

    offer_class_object = {
      # class or object content
      'locations': [{
        'kind': 'walletobjects#latLongPoint',
        'latitude': 37.442087,
        'longitude': -122.161446
        },{
        'kind': 'walletobjects#latLongPoint',
        'latitude': 37.429379,
        'longitude': -122.12272999999999
        },{
        'kind': 'walletobjects#latLongPoint',
        'latitude': 37.333646,
        'longitude': -121.884853
      }]
    }
    

Действия с билетами с истекшим сроком действия

На вкладке "Карты" в приложении Google Pay есть раздел "Проездные с истекшим сроком действия". В нем собраны билеты и предложения разных типов, которые были помещены в архив или стали неактивны. Билеты перемещаются в этот раздел, если верно хотя бы одно из следующих условий:

  • Истек срок, указанный в параметре object.validTimeInterval.end.date. Билет перемещается в раздел "Проездные с истекшим сроком действия" в течение 24 часов после даты object.validTimeInterval.end.date.
  • В поле object.state указано одно из следующих значений: Expired, Inactive или Completed.

Чтобы создать ссылку на сохраненный билет, нужно добавить в нее идентификатор objectId.

Используйте этот шаблон:

    https://pay.google.com/gp/v/object/{<issuerId>}.{<ObjectId>}
    

Билет можно будет открыть в приложении Google Pay и в веб-браузере.