端末と Google ウォレット アプリの間の通信
端末は、クーポン発行者 ID にマッピングされたコレクタ ID で識別されます。スマートタップが発生すると、端末はコレクタ ID をユーザーのデバイスに送信します。Google ウォレット アプリは、保存されている各パスのクラス ID とコレクタ ID を調べます。1 つ以上の一致が見つかると、Google ウォレット アプリは一致するパスを端末に送信します。設定の詳細については、販売者の構成をご覧ください。
例 1: 1 つのクーポン発行者
上の図には 2 社の異なる発行者があります。
- 発行者
2018
はパスのデベロッパー(アグリゲータとも呼ばれます)です - 発行者
1990
は fooPizza という販売者です(「クーポン発行者」とも呼びます)
クーポン発行者である fooPizza は、(アグリゲータによって管理される)パスのスマートタップ機能を有効にする必要があります。アグリゲータとクーポン発行者は、販売者の端末に対してスマートタップを有効にするために、次の手順を行う必要があります。
ステップ | ロール | 説明 |
---|---|---|
1 | アグリゲータ | パスクラスとパス オブジェクト(それぞれ図の abc と 123 )を作成します。 |
2 | アグリゲータ | パスクラスの redemptionIssuers プロパティにクーポン発行者の ID を含めます。これにより、このクラスを参照するパス オブジェクトを発行者 ID 1990 で利用できることを、Google ウォレットに指示します。 |
3 | クーポン 発行者 | コレクタ ID(図の 12345678 )を取得します。 |
4 | クーポン 発行者 | 使用される各スマートタップ対応端末でコレクタ ID 12345678 を設定します。クラス ID abc とコレクタ ID 12345678 を持つオブジェクトは、リーダーに送信されます。 |
例 2: 複数のクーポン発行者
1 つのパスクラスに複数のクーポン発行者を設定できます。特定のパスクラスを利用できるようにするには、クラスの redemptionIssuers
プロパティにクーポン発行者の ID を含める必要があります。クーポン発行者はそれぞれ独自のコレクタ ID を持ちます。この ID はスマートタップ対応端末で構成されます。
上の図には 3 社の異なる発行者があります。
- 発行者
8088
はパスのデベロッパー(アグリゲータ)です - 発行者
1990
は fooPizza という販売者(クーポン発行者)です - 発行者
2018
は yumPie という販売者(クーポン発行者)です
アグリゲータとクーポン発行者は、販売者の端末に対してスマートタップを有効にするために、次の手順を行う必要があります。
ステップ | ロール | 説明 |
---|---|---|
1 | アグリゲータ | パスクラスとパス オブジェクト(それぞれ図の abc と 123 )を作成します。 |
2 | アグリゲータ | パスクラスの redemptionIssuers プロパティにクーポン発行者の ID を含めます。これにより、このクラスを参照するパス オブジェクトを発行者 ID 1990 と 2018 で利用できることを、Google ウォレットに指示します。 |
3 | クーポン 発行者 | コレクタ ID を取得します(図にある、fooPizza の 12345678 と yumPie の 18802001 )。 |
4 | クーポン 発行者 | 使用される各スマートタップ対応端末で、対応するコレクタ ID を設定します。クラス ID abc と対応するコレクタ ID を持つすべてのオブジェクトは、リーダーに送信されます。 |
例 3: アグリゲータなし
同じ発行者アカウント内でパスクラスを開発して発行できます。この場合、複数のクーポン発行者のパスクラスを管理するアグリゲータは存在しません。特定のパスクラスを利用できるようにするには、パスのデベロッパーがクラスの redemptionIssuers
プロパティに発行者 ID を含める必要があります。パスのデベロッパーは、スマートタップ対応端末でコレクタ ID を取得して構成する必要があります。
パスのデベロッパーは、販売者の端末に対してスマートタップを有効にするために、次の手順を行う必要があります。
ステップ | ロール | 説明 |
---|---|---|
1 | パスの デベロッパー | パスクラスとパス オブジェクト(それぞれ図の abc と 123 )を作成します。 |
2 | パスの デベロッパー | パスクラスの redemptionIssuers プロパティに発行者 ID を含めます。これにより、このクラスを参照するパス オブジェクトを発行者 ID 2018 で利用できることを、Google ウォレットに指示します。 |
3 | パスの デベロッパー | コレクタ ID(図の 12345678 )を取得します。 |
4 | パスの デベロッパー | 使用される各スマートタップ対応端末で、対応するコレクタ ID を設定します。クラス ID abc と対応するコレクタ ID を持つすべてのオブジェクトは、リーダーに送信されます。 |
ユーザー エクスペリエンスと動作
端末と Google ウォレット アプリの間で伝送されるものの動作は、ユーザーと、その時点での Google ウォレット アプリの操作方法によって異なります。
シナリオ 1: ユーザーが特定のパスを開く
ステップ | ロール | 説明 |
---|---|---|
1 | ユーザー | Google ウォレット アプリで特定のパスを選択します。 |
2 | ユーザー | スマートタップ対応端末をタップします。 |
3 | 端末 | (コレクタ ID が一致する場合)パスが端末に送信されます。 (コレクタ ID が一致しない場合)パスは端末に送信されません。 |
シナリオ 2: Google ウォレットのホームタブまたはロックされていない画面表示
ステップ | ロール | 説明 |
---|---|---|
1 | ユーザー | Google ウォレット アプリのホームタブを開くか、デバイスの画面のロックを解除します。 |
2 | ユーザー | スマートタップ対応端末をタップします。 |
3 | 端末 | (単一の有効なコレクタ ID が一致する場合)パスが端末に送信されます。 (複数の有効なコレクタ ID が一致した場合)有効なパスのカルーセルを表示し、ユーザーが選択したパスを送信します。 |
注: パスの有効性は、パス オブジェクトの特定の構成によって異なります。次のパス オブジェクトのプロパティを確認してください。
state
validTimeInterval
スマートタップ コレクションの例
次の表に、この例で使用される発行者とパスを示します。
販売者名 | ILuvCoffee | コーヒー - フー | モカ R-Us |
---|---|---|---|
クーポン発行者 ID | 123 |
456 |
789 |
コレクタ ID | 11111111 |
44444444 |
77777777 |
ロイヤリティ レベル | R ベーシック | 特典 | |
R ゴールド |
ILuvCoffee には、R-Basic と R-Gold の 2 種類のロイヤリティ レベルがあります。一方、Coffee-Foo には My Rewards という 1 つのポイント プログラムがあり、Mocha-R-Us にはポイント プログラムがありません。
クロスプロモーション キャンペーンの一環として、販売者は顧客に以下のオプションを提供します。
- R-Basic クラスの顧客は、スマートタップを使用して、Coffee-Foo と Mocha-R-Us の両方でポイント メンバーシップを利用できます。
- R-Gold クラスの顧客には、スマートタップ クーポンは必要ありません
- My Rewards の顧客は、Coffee-Foo でのみ、スマートタップを使用してポイント メンバーシップを利用できます
このキャンペーンが機能するためには、各ポイントクラスで、クラス定義の redemptionIssuers
プロパティに次の値を設定する必要があります。
ポイントクラス | クーポン発行者 ID |
---|---|
R ベーシック | ["456", "789"] |
R ゴールド | [] |
特典 | ["456"] |
この構成では、これらのクラスを参照するパス オブジェクトに、次のコレクタ ID が含まれます。
- R-Basic:
44444444
、77777777
- R-Gold: コレクタ ID は含まれない
- 特典:
44444444
タップ時のコレクタの認証
発行者の構成の一部として、1 つの発行者アカウントに複数の公開鍵が関連付けられている場合があります。これらの公開鍵は Google ウォレット アプリに保存されます。Google ウォレット アプリは、ユーザーがスマートタップ対応端末でデバイスをタップすると、認証にこの鍵を使用します。この認証ステップは、ユーザーに発行されたパス オブジェクトが、端末によってアドバタイズされた値と一致するコレクタ ID を持つことをアプリが検出した後に行われます。
前のセクションの例の続きとして、次の表で、各発行者に関連付けられている公開鍵について説明します。
販売者名 | ILuvCoffee | コーヒー - フー | モカ R-Us |
---|---|---|---|
クーポン発行者 ID | 123 |
456 |
789 |
コレクタ ID | 11111111 |
44444444 |
77777777 |
ロイヤリティ レベル | R ベーシック | 特典 | |
R ゴールド | |||
公開鍵 | aaa | bbb |
サンプルの顧客は、Google ウォレット アプリに次のポイントカードを保存しています。
- ILuvCoffee: R-Basic
- Coffee-Foo: My Rewards
以前と同様に、各ポイントクラスの redemptionIssuers
プロパティには、次の値が設定されています。
- R-Basic:
["456", "789"]
- 特典:
["456"]
ユーザーが各販売者の端末でデバイスをタップすると、次の 3 つの結果になる可能性があります。
販売者の端末 | 結果 |
---|---|
ILuvCoffee | ILuvCoffee(クーポン発行者 ID 123 )は現在、独自のポイントクラス R-Basic を利用するように構成されていないため、何も送信されません。 |
Coffee-Foo | Google ウォレット アプリは、bbb 公開鍵を使用して Coffee-Foo 端末に対する認証を行います。ユーザーがデバイスで表示している現在の画面に応じて、ユーザー エクスペリエンス セクションに記載されているシナリオのいずれかが発生します。 |
Mocha-R-Us | この例では、Mocha-R-Us の公開鍵はありません。販売者では R-Basic プログラムを利用できますが、端末に対する認証ができないため、何も送信されません。 |
認証の上限
パスがユーザーの Google ウォレット アプリに同期されると、そのパスのすべてのクーポン発行者が Google ウォレットのバックエンドから検索されます。各クーポン発行者のコレクタ ID、公開鍵、鍵バージョンは、Google ウォレット アプリにローカルに保存されます。
1 つのパスに複数のクーポン発行者 ID を設定できます。各 ID は、特定の販売者の特定のコレクタ ID にマッピングされます。また、1 つのコレクタ ID に多くの公開鍵と鍵バージョンを設定できます。
端末で利用できるパスがない場合、Google ウォレット アプリは端末に対する認証を試行しません。これは、コレクタ ID と公開鍵バージョンに基づきます。パスの公開鍵を更新するには、Google ウォレットのバックエンドから新しい公開鍵を取得できるように、端末がインターネットに接続されている必要があります。
1 つのパスに多くの公開鍵を一度に関連付けることができます。同じパスに複数の公開鍵を設定する方法については、販売者の構成をご覧ください。
タップ時の値の送信
タップ時にパスからデータを送信するには、パス オブジェクトの smartTapRedemptionValue
を設定する必要があります。オブジェクトに対応するクラスでスマートタップが有効になると、この値が端末に送信されます。
統合とユースケースに基づいて、この値はユーザーのパスを識別し、次のような必要なトランザクション ロジックを実行するために使用されます。
- お客様の残高またはステータスを更新する
- トランザクションに基づいて独自のバックエンドを更新する
- デバイスでユーザー ステータスの変更が反映されるように、Google Wallet API を使用してパス オブジェクトを更新する
端末と Google ウォレット アプリは、NFC 経由で送信されるすべてのデータの暗号化を処理します。スマートタップの発生後、端末でデータが復号されます。データには、送信されたパスを表す Service Object NDEF レコードが含まれます。サービス オブジェクトの Service number NDEF Record
のペイロードには、パス オブジェクトの smartTapRedemptionValue
プロパティに設定されている値が含まれています。つまり、パスのデベロッパーが送信データの暗号化を処理する必要はありません。
別のセキュリティ レイヤを追加する場合は、送信データを受信するシステム(POS など)のみがデータを復号できるように smartTapRedemptionValue
プロパティを設定します。ただし、パスのデベロッパーと POS 管理者が暗号化と復号のプロセスを担当します。