Как добавлять сообщения при обновлении важной информации
Во всех категориях есть раздел сообщений. Настройте его, чтобы высылать уведомления о важных изменениях, касающихся карт постоянного клиента, подарочных карт, специальных предложений, билетов на мероприятия, посадочных талонов и проездных билетов. Чтобы узнать более подробную информацию, выберите нужную категорию:
Сообщения добавляются в объекты или классы с помощью методов insert
, update
или patch
, заполняющих массив messages[]
. Кроме того, к уже существующим сообщениям можно добавлять новые (не более 10) с помощью метода addMessage
. Дополнительная информация представлена в Справочных материалах.
Указанный ниже код получает текущую дату окончания специального предложения ( validTimeInterval.end)
, затем обновляет ее и добавляет сообщение в массив messages[]
. Благодаря этому пользователи, просматривающие сохраненный объект Object
в приложении Google Pay, видят, что информация изменилась.
Java
// Get the specific Offer Object OfferObject obj = client.offerobject().get("2945482443380251551.ExampleObject1").execute(); // Update the version, validTimeInterval.end, and add a message obj.setVersion(obj.getVersion() + 1L); obj.setValidTimeInterval(new TimeInterval().setEnd(new DateTime().setDate(new com.google.api.client.util.DateTime(new Date().getTime() + 263000000000L)))); // Get the current messages Listmessages = obj.getMessages(); // Define new message WalletObjectMessage message = new WalletObjectMessage() .setHeader("Important Notice") .setBody("Your offer has been extended!"); // Add the new message about updates to the Offer Object messages.add(message); obj.setMessages(messages); // Update the Offer Object OfferObject returnObj = client.offerobject().patch(obj.getId(), obj).execute();
PHP
// Get the specific Offer Object Google_OfferObject $offerObj = $service->offerobject->get('2945482443380251551.ExampleObject1'); // Update the version, validTimeInterval.end, and add a message $offerObj->setVersion($offerObj->getVersion() + 1); $validTimeInterval = new Google_TimeInterval(); $startDateTime = new Google_DateTime(); $startDateTime->setDate('2013-06-12T23:20:50.52Z'); $validTimeInterval->setStart($startDateTime); $endDateTime = new Google_DateTime(); $endDateTime->setDate('2013-12-12T23:20:50.52Z'); $validTimeInterval->setEnd($endDateTime); $offerObj->setValidTimeInterval($validTimeInterval) // Get the current messages $messages = $offerObj->getMessages(); // Define new message $newMessage = array( 'header' => 'Important Notice', 'body' => 'Your offer has been extended!', 'kind' => 'walletobjects#walletObjectMessage' ); // Add the new message about updates to the Offer Object array_push($messages, $newMessage); $offerObj->setMessages($messages); // Update the Offer Object Google_OfferObject offerObj = $service->offerobject->update('2945482443380251551.ExampleObject1',offerObj);
Python
# Get the specific Offer Object offer_object = service.offerobject().get(resourceId='2945482443380251551.ExampleObject1') # Update the version, validTimeInterval.end, and add a message offer_object['version'] = str(int(offer_object['version']) + 1) offer_object['validTimeInterval'] = { 'start' : {'date':'2018-01-20T23:20:50.520Z'} ,'end' : {'date':'2018-01-24T23:20:50.520Z'} } // Get the current messages messages = offer_object['messages'] // Define new message message = { 'header': 'Important Notice', 'body': 'Your offer has been extended!', 'kind': 'walletobjects#walletObjectMessage' } // Add the new message about updates to the Offer Object messages.append(message) offer_object['messages'] = messages # Update the Offer Object api_request = service.offerobject().update(resourceId='2945482443380251551.ExampleObject1',body=offer_object) api_response = api_request.execute()
Как обновить состояние
У всех объектов в каждой категории есть свойство state
. Изменив его значение, можно сообщить клиенту, что карта или билет были активированы или срок их действия истек.
Любое обновление должно начинаться с запроса GET
на получение Object
. Это необходимо для использования актуальной версии объекта. При изменении баланса нужно увеличивать версию объекта. Чтобы сохранить обновленный объект Object
, выполните запрос PUT
.
Ниже приведены примеры URI, используемые в архитектуре REST для получения объекта запросом GET
и обновления offerObject
запросом PUT
.
GET https://walletobjects.googleapis.com/walletobjects/v1/offerObject/resourceId PUT https://walletobjects.googleapis.com/walletobjects/v1/offerObject/resourceId
Более подробную информацию о различных методах получения (GET
) и обновления объектов можно найти в Справочных материалах.
Ниже приведены примеры кода для обновления объекта offerObject
на различных языках программирования. Аналогичный код используется во всех категориях.
Java
// Get the specific Offer Object OfferObject obj = client.offerobject().get("2945482443380251551.ExampleObject1").execute(); // Update the version and state obj.setVersion(obj.getVersion() + 1L); obj.setState("expired"); //see the Reference API for valid "state" options // Update the Offer Object OfferObject returnObj = client.offerobject().update(obj.getId(), obj).execute();
PHP
// Get the specific Offer Object Google_OfferObject offerObj = $service->offerobject->get('2945482443380251551.ExampleObject1'); // Update the version and points offerObj.setVersion(offerObj.getVersion() + 1); offerObj.setState("state"); // see the Reference API for valid "state" options // Update the Offer Object Google_OfferObject offerObj = $service->offerobject->update('2945482443380251551.ExampleObject1',offerObj);
Python
# Get the specific Offer Object offer_object = service.offerobject().get(resourceId='2945482443380251551.ExampleObject1') # Update the version and state offer_object['version'] = str(int(offer_object['version']) + 1) offer_object['state'] = 'expired' # see the Reference API for valid "state" options # Update the Offer Object api_request = service.offerobject().update(resourceId='2945482443380251551.ExampleObject1',body=offer_object) api_response = api_request.execute()
Локализация
Используя инструмент Google Pay API for Passes, продавцы могут показывать пользователям локализованный контент в зависимости от их местоположения. Для этого в API включены дополнительные поля. Каждое локализованное поле – это вложенный объект LocalizedString, который выглядит следующим образом:
{ "kind": "walletobjects#localizedString", "translatedValues": [ { "kind": "walletobjects#translatedString", "language": string, "value": string } ], "defaultValue": [ { "kind": "walletobjects#translatedString", "language": string, "value": string } ] }
Поле defaultValue
обязательно для всех строк LocalizedStrings
. Во всех переведенных строках необходимо указать язык и значение.
Поле language должно содержать тег языка по стандарту BCP 47 (например, en-US, en-GB, es-419). Поле value – это переведенное значение строки, которое увидят пользователи, если их местонахождение подходит под указанный тег языка.
Локализованные строки показываются в зависимости от региона пользователя.
Если подходящее значение translatedValue
не выбрано, будет использоваться DefaultValue
.
Если выбрано соответствующее локализованное поле, поля без перевода использоваться не будут.
Как определить, что пользователь удалил карту или билет
Как определить, что пользователь удалил карту или билет
Получите Object
пользователя, используя вызов GET, и проверьте атрибут hasUsers
.
Например, чтобы проверить loyaltyObject
, выполните следующий вызов GET
:
GET https://walletobjects.googleapis.com/walletobjects/v1/loyaltyObject/objectId
Даже если все пользователи удалили карту или карта лояльности была удалена продавцом, Google сохраняет объект. Атрибут hasUsers
объекта будет иметь значение false.
Проверять атрибут hasUsers
можно в реальном времени, когда пользователь заходит на ваш сайт или в приложение. При большом числе пользователей можно использовать пакетную обработку.
Создавая объекты, вы определяете их идентификаторы, используя которые можно получить LoyaltyObject
. Чтобы предоставлять пользователям персональную информацию о текущем уровне и балансе баллов, держите идентификаторы в собственном хранилище.
Более подробную информацию о методах GET
можно найти в Справочных материалах. Google не высылает уведомления в реальном времени при удалении объектов. Для предоставления такой услуги потребовалось бы настроить прослушиватель событий и обязать продавцов выполнять условия определенного соглашения об обслуживании.
Способы взаимодействия с пользователями, применимые для категорий
Некоторые способы взаимодействия с пользователями применимы только к определенным категориям карт или билетов. Подробную информацию можно найти на страницах "Примеры использования" для каждой из категорий.