Dodawanie wiadomości podczas aktualizowania ważnych informacji
W każdej kategorii jest dostępna sekcja wiadomości. Można w niej przedstawiać ważne informacje, takie jak zmiany dotyczące kart lojalnościowych, kart podarunkowych, ofert specjalnych, biletów na wydarzenia, kart pokładowych i programów biletów na przejazdy. Więcej informacji znajdziesz na stronach szablonów dla Twojego typu karty:
Wiadomości można dodawać do klas lub obiektów za pomocą metody insert
, update
lub patch
, wypełniając właściwość tablicy messages[]
. Można też dodawać treść do obecnych wiadomości (maksymalnie 10) za pomocą metody addMessage
. Więcej informacji znajdziesz w dokumentacji.
Poniższy kod pobiera bieżącą datę ważności oferty specjalnej ( validTimeInterval.end)
, aktualizuje datę ważności i dodaje ją do tablicy messages[]
. Dzięki temu użytkownik dowie się o zmianach informacji, gdy zobaczy zapisany Object
w aplikacji 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()
Aktualizacja stanu
Niezależnie od kategorii każdy obiekt ma właściwość state
. Dzięki aktualizacji stanu obiektu klient wie, że jego karta została wykorzystana lub utraciła ważność.
Każda aktualizacja powinna rozpoczynać się od żądania GET
pobierającego Object
. Dzięki temu zostanie użyta najnowsza wersja obiektu. Po zmianie stanu wersja obiektu powinna zostać zwiększona. Aby zapisać zaktualizowany Object
, wykonaj żądanie PUT
.
Oto przykładowe identyfikatory URI REST używane w żądaniu GET
obiektu i żądaniu PUT
(aktualizacji) obiektu offerObject
:
GET https://walletobjects.googleapis.com/walletobjects/v1/offerObject/resourceId PUT https://walletobjects.googleapis.com/walletobjects/v1/offerObject/resourceId
Więcej informacji o metodach GET
i metodach aktualizacji w różnych kategoriach znajdziesz w dokumentacji.
Poniższe przykłady kodu pokazują, jak zaktualizować offerObject
w różnych językach. Kod obiektów w innych kategoriach wygląda podobnie:
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()
Lokalizacja
Google Pay API for Passes pozwala sprzedawcom dodawać zlokalizowaną treść, która będzie wyświetlana użytkownikom w zależności od ich ustawień języka. Interfejs API zawiera dodatkowe pola przeznaczone do tego celu. Każde zlokalizowane pole jest zagnieżdżonym obiektem LocalizedString, który wygląda tak:
{ "kind": "walletobjects#localizedString", "translatedValues": [ { "kind": "walletobjects#translatedString", "language": string, "value": string } ], "defaultValue": [ { "kind": "walletobjects#translatedString", "language": string, "value": string } ] }
Wszystkie LocalizedStrings
muszą mieć pole defaultValue
. Wszystkie translatedStrings muszą zawierać język i wartość.
Pole językowe musi odwoływać się do tagu języka BCP 47 (np. „en-US”, „en-GB”, „es-419” itp.). Wartość to przetłumaczona wartość ciągu tekstowego, którą użytkownik zobaczy, jeśli używany przez niego język będzie się zgadzać.
Zlokalizowane ciągi tekstowe będą wyświetlane użytkownikowi na podstawie najbliższego dopasowania do jego ustawień języka.
Jeśli nie będzie odpowiedniej wartości translatedValue
, zostanie użyta DefaultValue
.
Jeśli odpowiednie zlokalizowane pole zostanie ustawione, niezlokalizowane pola nie będą używane.
Sprawdzanie, czy użytkownik usunął kartę
Sprawdzanie, czy użytkownik usunął kartę
Aby sprawdzić, czy użytkownik usunął kartę (np. lojalnościową) z Google Pay, pobierz jego Object
za pomocą podanego poniżej wywołania „get” i sprawdź atrybut hasUsers
.
Aby na przykład sprawdzić loyaltyObject
za pomocą wywołania GET
:
GET https://walletobjects.googleapis.com/walletobjects/v1/loyaltyObject/objectId
Jeśli wszyscy użytkownicy usunęli kartę lub karta lojalnościowa została usunięta, Google nie usuwa obiektu. Atrybut hasUsers
obiektu zostaje ustawiony na fałsz.
Atrybut hasUsers
można sprawdzić w czasie rzeczywistym, gdy użytkownik loguje się w Twojej witrynie lub aplikacji, albo w ramach przetwarzania wsadowego dla wielu użytkowników równocześnie.
Identyfikator obiektu, za pomocą którego jest pobierany LoyaltyObject
, wybierasz podczas tworzenia obiektu. Aby udostępnić użytkownikom spersonalizowane informacje o ich bieżącej liczbie punktów, zapisz identyfikatory w swoim repozytorium.
Więcej informacji o różnych metodach GET
znajdziesz w dokumentacji. Google nie wysyła powiadomień o usunięciu obiektu w czasie rzeczywistym. Wymagałoby to od użytkownika wdrożenia detektora i zapewnienia odpowiedniej gwarancji jakości usług.
Sposoby interakcji w różnych kategoriach
Niektóre metody interakcji występują tylko w konkretnych kategoriach kart. Szczegóły implementacji znajdziesz na stronach „Przypadki użycia” dotyczących poszczególnych kategorii: