パスのクラスとオブジェクトの概要

エンドユーザーが Google ウォレットに保存するために発行できるパスのほとんどは、パスクラスとパス オブジェクトの 2 つのコンポーネントで定義されます。ユーザーにパスを発行するときは、パスクラスとパス オブジェクトの両方のインスタンスが必要になります。これにより、作成するパスのタイプと、ギフトカードの値やチケット所有者の名前など、パスに表示する詳細情報を Google Wallet API に指示できます。

Google Wallet API には、パスクラスとパス オブジェクトの事前定義されたセットが用意されています。インスタンスを作成して、ユーザーに発行するパス(GiftCardClassGiftCardObjectGenericClassGenericObject など)を作成するために使用します。

パスクラスとパス オブジェクトの各インスタンスは、JSON オブジェクトとして定義されます。このオブジェクトには、そのパスタイプの特定のユースケースに対応する必須プロパティとオプション プロパティのセットが含まれています。

パスクラス

パスクラスは、ユーザーに発行する 1 つ以上のパスの作成に使用される共有テンプレートと考えてください。パスクラスは、それを参照するすべてのパスに含まれる共通のプロパティ セットを定義します。

たとえば、次の 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 は、新しいパス オブジェクト インスタンスを作成するために常に参照する一意の識別子として機能します。

パス オブジェクト

パスクラスのインスタンスは、1 つ以上のパスで使用する一連の共有プロパティを指定しますが、パス オブジェクトは、特定のユーザーに発行される特定のパスに固有の詳細を指定します。

たとえば、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 で定義された特定のチケットのフィールドを組み合わせて、最終的に発行されるパスを作成する方法を示しています。パスクラスの ID は、パス オブジェクトの classId プロパティで参照されます。

パスクラス インスタンス インスタンスに加えた変更は、そのインスタンスを参照するすべてのパス オブジェクト インスタンスにすぐに反映されます。ユーザーがパスクラス インスタンスに変更を加えると、次回同期したときに Google ウォレット アプリのパスに反映されます。

ユーザーの Google ウォレットにパスを追加する

ユーザーの Google ウォレットにパスを追加するには、ユーザーの Google ウォレットに保存されるパス オブジェクト インスタンスに関して発行者が作成したクレームを含む JSON Web Token(JWT)を作成します。最も重要なのは、ユーザーに発行するパス オブジェクト インスタンスのオブジェクト ID です。その後、[Google ウォレットに追加] ボタンまたは [Google ウォレットに追加] リンクから JWT がユーザーに配信されます。

ユーザーがボタンまたはリンクをクリックして、発行済みパスを Google ウォレットに追加すると、JWT でエンコードされたパス オブジェクト インスタンスへのリンクが、そのユーザーの Google アカウントにリンクされます。つまり、ユーザーがボタンをもう一度クリックすると、そのパス オブジェクトへのリンクがすでに存在するため、重複するコピーがユーザーのウォレットに追加されることはありません。

ユーザーが Google ウォレット アプリからパスを削除すると、対応するパス オブジェクト インスタンスとユーザーのリンクが自動的に解除されますが、削除されることはありません。つまり、ユーザーは [Google ウォレットに追加] ボタンまたはリンクを再度クリックすることで、新しいパス オブジェクト インスタンスや JWT を作成しなくてもパスを保存できます。