Google Pay를 통한 사용자의 참여 유도

중요한 정보를 업데이트할 때 메시지 추가

모든 카테고리에는 메시지 섹션이 있습니다. 이 섹션에서는 포인트 카드, 기프트 카드, 쿠폰, 이벤트 티켓, 항공 탑승권, 교통카드 프로그램의 변경과 같은 중요한 정보를 중점적으로 다룹니다. 자세한 내용은 패스 유형의 패스 템플릿 페이지를 참조하세요.

insert, update, patch 메서드를 사용해서 messages[] 배열 속성을 입력하여 클래스 또는 객체에 메시지를 추가할 수 있습니다. 또는 addMessage 메서드를 통해 기존 메시지에 최대 10개를 추가할 수 있습니다. 자세한 내용은 참조를 확인하세요.

다음 코드는 현재 쿠폰 만료 날짜( validTimeInterval.end)를 가져온 다음 만료 날짜를 업데이트하고 messages[] 배열에 추가합니다. 이렇게 하면 사용자가 Google Pay 앱에서 저장된 Object를 볼 때 정보가 변경된 것을 확인할 수 있습니다.

자바

// 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
List messages = 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 속성이 있습니다. 객체의 상태를 업데이트하는 것은 고객에게 패스가 사용되었거나 만료되었음을 알리는 중요한 방법입니다.

Object를 검색하기 위해 모든 업데이트는 GET 요청으로 시작해야 합니다. 이렇게 하면 최신 버전의 객체가 사용됩니다. 잔액이 변경되면 객체 버전이 증가되어야 합니다. 업데이트된 Object를 저장하려면 PUT 요청을 실행합니다.

다음은 객체를 GET하고 offerObjectPUT(update)하는 데 사용되는 REST URI의 예시입니다.

GET https://walletobjects.googleapis.com/walletobjects/v1/offerObject/resourceId
PUT https://walletobjects.googleapis.com/walletobjects/v1/offerObject/resourceId

카테고리별 다른 GET 및 update 메서드에 대한 자세한 내용은 참조를 확인하세요.

다음 코드 샘플은 offerObject를 업데이트하는 방법에 대한 언어별 예시를 보여줍니다. 다른 카테고리 객체의 코드도 이와 비슷합니다.

자바

// 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의 필수 필드입니다. 모든 translatedString에는 언어와 값이 모두 필요합니다.

언어 필드는 BCP 47 언어 태그를 참조해야 합니다. (예: 'en-US', 'en-GB', 'es-419' 등). 값은 문자열의 번역된 값이며 언어가 일치하는 경우 사용자에게 표시되는 문자열입니다.

현지화된 문자열은 사용자 언어와 가장 일치하는 언어를 기준으로 사용자에게 제공됩니다. 적절한 translatedValue가 제공되지 않으면 DefaultValue가 사용됩니다. 현지화된 해당 필드가 설정된 경우 현지화되지 않은 필드는 사용되지 않습니다.

사용자가 패스를 삭제했는지 확인

사용자가 패스를 삭제했는지 확인

사용자가 Google Pay에서 패스(예: 포인트 카드)를 삭제했는지 확인하려면 다음과 같은 GET 호출로 사용자의 Object를 검색하고 객체의 hasUsers 속성을 확인합니다.

예를 들어 GET을 사용하여 loyaltyObject를 확인하려면 다음 안내를 따르세요.

GET https://walletobjects.googleapis.com/walletobjects/v1/loyaltyObject/objectId

모든 사용자가 패스를 삭제했거나 포인트 카드가 삭제된 경우 Google은 해당 객체를 삭제하지 않습니다. 객체의 hasUsers 속성은 false로 설정됩니다.

hasUsers 속성 확인은 사용자가 웹사이트나 앱에 로그인할 때 실시간으로 수행하거나 한 번에 많은 수의 사용자에 대한 일괄 프로세스에서 수행할 수 있습니다.

객체를 만들 때 LoyaltyObject를 검색하는 데 사용되는 객체 ID를 정의했습니다. 사용자에게 현재 등급 및 포인트 잔액에 대한 맞춤설정된 정보를 제공하려면 객체 ID를 고유한 저장소에 저장해야 합니다.

다른 GET 메서드에 대한 자세한 내용은 참조를 확인하세요. Google은 객체가 삭제될 때 실시간 알림을 제공하지 않습니다. 실시간 알림을 제공하려면 리스너 서비스를 구현하고 특정 서비스수준계약을 준수해야 합니다.

카테고리별 소통 방식

소통하는 일부 방법은 패스 카테고리에 따라 다릅니다. 구현 세부정보는 각 카테고리의 '사용 사례' 페이지를 참조하세요.