Google Wallet API는 GiftCardClass
및 GiftCardObject
, GenericClass
, GenericObject
등 인스턴스를 만든 다음 사용자에게 발급되는 패스를 만드는 데 사용할 수 있는 사전 정의된 패스 클래스 및 패스 객체 집합을 제공합니다.
각 패스 클래스 및 패스 객체 인스턴스는 JSON 객체로 정의되며, 이 객체에는 패스 유형의 특정 사용 사례에 해당하는 필수 및 선택 속성 집합이 있습니다.
패스 클래스
패스 클래스는 사용자에게 발급할 하나 이상의 패스를 만드는 데 사용되는 공유 템플릿이라고 생각하면 됩니다. 패스 클래스는 이를 참조하는 모든 패스에 포함될 공통 속성 집합을 정의합니다.
예를 들어 다음 EventTicketClass
인스턴스는 예정된 이벤트(장소, 이벤트 이름, 발급기관, 날짜/시간)에 대해 발행된 모든 티켓에 공통된 필드를 정의합니다.
{ "id": "ISSUER_ID.EVENT_CLASS_ID", "issuerName": "[TEST ONLY] Heraldic Event", "localizedIssuerName": { "defaultValue": { "language": "en-US", "value": "[TEST ONLY] Heraldic Event" } }, "eventName": { "defaultValue": { "language": "en-US", "value": "Google Live" } }, "venue": { "name": { "defaultValue": { "language": "en-US", "value": "Shoreline Amphitheater" } }, "address": { "defaultValue": { "language": "en-US", "value": "ADDRESS_OF_THE_VENUE" } } }, "dateTime": { "start": "2023-04-12T11:30" }, "reviewStatus": "UNDER_REVIEW" }
패스 클래스의 각 인스턴스에는 사용자가 지정하는 id
속성이 필요합니다. 이 클래스 ID는 새 패스 객체 인스턴스를 만들 때 사용할 때마다 참조하는 고유 식별자 역할을 합니다.
Passes 객체
패스 클래스의 인스턴스는 하나 이상의 패스에 사용할 공유 속성 집합을 지정하는 반면, 패스 객체는 특정 사용자에게 발급되는 특정 패스의 고유한 세부정보를 지정합니다.
예를 들어 이벤트 티켓 패스가 Google Wallet API로 생성되면 EventTicketObject
인스턴스에는 티켓에 할당된 좌석의 속성이 포함됩니다. 이러한 값은 발급된 각 티켓마다 고유하기 때문입니다.
{ "id": "ISSUER_ID.OBJECT_ID", "classId": "ISSUER_ID.EVENT_CLASS_ID", "state": "ACTIVE", "seatInfo": { "seat": { "defaultValue": { "language": "en-us", "value": "9" } }, "row": { "defaultValue": { "language": "en-us", "value": "L" } }, "section": { "defaultValue": { "language": "en-us", "value": "45" } }, "gate": { "defaultValue": { "language": "en-us", "value": "7C" } } }, "barcode": { "type": "BARCODE_TYPE_UNSPECIFIED", "value": "BARCODE_VALUE", "alternateText": "" } }
패스 객체의 각 인스턴스에는 사용자가 지정하는 id
속성이 필요합니다. 이 객체 ID는 사용자에게 패스를 발급할 때 참조하는 고유 식별자 역할을 합니다.
패스 클래스가 패스 객체와 작동하는 방식
패스 객체는 클래스 ID를 참조하거나 전체 패스 클래스 정의를 포함하여 패스 클래스의 인스턴스를 확장해야 합니다. 패스 클래스와 패스 객체 인스턴스의 관계는 패스 클래스 인스턴스를 통해 발급된 모든 패스에 공통된 속성과 패스 객체 인스턴스의 개별 패스에 고유한 속성을 설정하고 업데이트할 수 있음을 의미합니다.
예를 들어 간단한 이벤트 티켓 패스의 다음 다이어그램은 공유 EventTicketClass
에 정의된 필드와 EventTicketObject
에 정의된 특정 티켓의 필드가 결합하여 최종 발급된 패스를 구성하는 방식을 보여줍니다. 패스 객체의 classId
속성에서 패스 클래스의 ID를 참조하는 방식을 확인하세요.
패스 클래스 인스턴스 인스턴스의 변경사항은 이를 참조하는 모든 패스 객체 인스턴스에 즉시 적용됩니다. 그러면 사용자가 다음에 동기화할 때 Google 월렛 앱의 패스에 반영된 Passes 클래스 인스턴스의 변경사항을 확인할 수 있습니다.
사용자의 Google 월렛에 패스 추가
사용자의 Google 월렛에 패스를 추가하려면 발급기관이 패스 객체 인스턴스에 대해 작성하는 클레임을 포함하는 JSON 웹 토큰(JWT)을 만듭니다. 이 클레임은 사용자의 Google 월렛에 저장됩니다. 가장 중요한 것은 사용자에게 발급하는 패스 객체 인스턴스의 객체 ID입니다. JWT는 Google 월렛에 추가 버튼 또는 Google 월렛에 추가 링크를 통해 사용자에게 전달됩니다.
사용자가 버튼이나 링크를 클릭하여 발급된 패스를 Google 월렛에 추가하면 JWT로 인코딩된 패스 객체 인스턴스가 해당 사용자의 Google 계정에 연결됩니다. 즉, 사용자가 버튼을 다시 클릭하면 해당 패스 객체에 대한 링크가 이미 존재하므로 사용자의 월렛에 중복 사본이 추가되지 않습니다.
사용자가 Google 월렛 앱에서 패스를 삭제하면 해당 패스 객체 인스턴스가 사용자와 자동으로 연결 해제되지만 삭제되지는 않습니다. 즉, 사용자가 Google 월렛에 추가 버튼 또는 링크를 다시 클릭하여 새 패스 객체 인스턴스 또는 JWT를 만들지 않고도 패스를 저장할 수 있습니다.