ポイント プログラムの登録とログイン機能により、ユーザーはポイント プログラムを検索し、Google Pay から参加するか自分のアカウントにログインできます。ユーザーはモバイル向けウェブサイトに案内され、プロセスを完了すると、カードを Google Pay に簡単に保存できます。
このガイドでは、この機能に対してポイント プログラムを有効にするために必要な実装手順の概要を説明します。
概要
開始するにはまず、以前にプロジェクトを設定しており、Google Pay API for Passes にアクセスできることを確認します。そうでない場合は、Google Pay API for Passes の手順を完了してください。
次の 4 つのステップに従って、ポイント プログラムの登録とログイン機能を実装する必要があります。
- Google Pay でテスト環境を設定して、登録フローやログインフローをテストします。
- Google Pay のユーザーデータを利用する登録ページ / ログインページを開発します。
- 登録 / ログイン後の Google Pay へのポイントカードのプッシュバックを実装します。
- 確認と有効化をリクエストします。
Google Pay でテスト環境を設定する
登録 URL とログイン URL、プログラムロゴ、必要なユーザー フィールドを決定します。次に、loyaltyclass
の discoverableProgram
ネスト フィールドを使用して、適切な値を設定します。
discoverableProgram
に値を設定して、登録とログインに対応したポイント プログラムのドラフト版を作成します。テスターがこれを表示するには、テスターが Business Console にアクセスできる必要があります。Business Console へのアクセス権を他のユーザーと共有する方法について詳しくは、ユーザーページの詳細をご覧ください。
開発プロセス中に実装機能の検証を完了するには、Business Console 内のサポートへのお問い合わせウィジェットを使用して Google にご連絡ください。Business Console のトピックで [パス] を選択し、サブトピックで [ポイント プログラムへのログイン / 登録] を選択してください。
Google Pay のユーザーデータを利用する登録ページとログインページを開発する
ユーザーがポイント プログラムにログインまたは登録することを選択すると、ユーザーは登録またはログインのプロセスを完了するために、ウェブサイト上のユーザーに合わせたページに案内されます。ユーザーが登録を選択した場合、Google Pay はユーザーデータの共有を承認するようユーザーにリクエストします。
ユーザーがこれらの操作を完了できるように、次の 2 つのページのいずれかまたは両方を用意する必要があります。
- ユーザーが既存のアカウントにログインできるログイン URL。
- ユーザーが新しいアカウントを作成できる登録 URL。
ログインページと登録ページは、次の要件を満たしている必要があります。
- モバイル向けのユーザー エクスペリエンスを提供します。
- 登録プロセスでの必須フィールドの数を最小限に抑えます。
- ユーザーがログインまたは登録を 1 つのページ内で完了できるようにします。
- 有効な証明書による
HTTPS
暗号化を使用して、ユーザーデータが安全に送信されるようにします。 - ログインページと登録ページの稼働時間を 99.9% 以上にします。
上記の要件に加え、ユーザーがフォームに記入したり利用規約への同意のためにページを開いておいたりしなくても、ポイント プログラムに登録できるようにすることをおすすめします。
- 提供されるユーザーデータを利用することで、アカウントを作成してポイントカードをすぐにプッシュバックできます。
- その後、ワンタイム パスワード、またはパスワードとオプションのアカウント詳細を構成するためのリンクをユーザーにメールで送信できます。
- これにより、ユーザーが登録プロセスを放棄する可能性が減ります。ステップが増えると、離脱の増加につながります。
ログインページまたは登録ページを表示するときに、Google Pay は Android WebView を作成し、指定された URL に対して POST
リクエストが行われます。ユーザーデータはパラメータ userProfile
で提供されます。これは application/x-www-form-urlencoded コンテンツ タイプと UTF-8
エンコードを使用した POST
リクエストに含まれています。userProfile
パラメータの値は、Base64 でエンコードされた JSON オブジェクトです。
ユーザーが選択した操作と、ユーザーにリクエストするために指定されているフィールドに応じて、JSON オブジェクトには次のフィールドが含まれます。
フィールド | 登録 | ログイン |
---|---|---|
✓ | ✓ | |
firstName | ✓ | |
lastName | ✓ | |
addressLine(1~3) | ✓ | |
city | ✓ | |
state | ✓ | |
zipcode | ✓ | |
country | ✓ | |
phone | ✓ |
userProfile
に含まれる JSON オブジェクトのデコードされたサンプルについては、以下をご覧ください。
リソース
{ "firstName": "Jane", "lastName": "Doe", "addressLine1": "1600 Amphitheatre Pkwy", "addressLine2": "Apt 123", "addressLine3": "Attn:Jane", "city": "Mountain View", "state": "CA", "zipcode": "94043", "country": "US", "email": "jane.doe@example.com", "phone": "555-555-5555" }
Google Pay へのポイントカードの即時プッシュバックを実装する
認証(ログイン)またはアカウント作成(登録)後、ページはユーザーのポイントカードを Google Pay にすぐにプッシュバックする必要があります。
ポイントカードを Google Pay にプッシュバックするには、以下の構造に従ったリンクにリダイレクトします。ユーザーのポイントカードを表す LoyaltyObject
の JSON Web Token(JWT)の生成にまだ慣れていない場合は、オブジェクトを表す JWT を生成するをご覧ください。
https://pay.google.com/gp/v/save/{jwt_generated}
URL に使用できる長さは 2,000 文字です。リンクがこの限度を超えないようにしてください。JWT でエンコードされるオブジェクトは小さくし、ユーザー固有のデータのみが含まれるようにします。JWT を作成する前に、できる限りのデータをオブジェクトのクラスに保存してください。制限を超えてしまう大きなオブジェクトについては、Google Pay API for Passes でオブジェクトを作成してから、オブジェクト ID のみを JWT で送信することを検討してください。
典型的な通信フロー
ユーザーが登録またはログインを完了する通信フローを次の図に示します。「Your Server」間のすべての操作を実装する必要があります。
確認と有効化をリクエストする
開発作業を完了し、登録フローとログインフローをテストしたら、Business Console のサポート問い合わせウィジェットからリクエストを送信します。
Google Pay アプリとの組み合わせで正しい機能を確認する実装の完全なレビューの後に、このポイント プログラムの登録 / ログイン機能が一般公開されます。これにより、どのユーザーもプログラムを参照して、この機能を使用できるようになります。
最適なユーザー エクスペリエンスのために、登録 / ログインの実装のチェックが繰り返し行われ、機能要件の継続的な遵守が確認されます。相違がある場合には通知され、問題が解決されるまでログイン / 登録機能が無効になる可能性があります。
よくある質問
- ポイント プログラムで使用する画像に要件はありますか?
- はい。画像は
HTTPS
の場所でホストされている必要があります。そうしないと、Google Pay では表示されません。
- はい。画像は
- JWT の実装とデバッグが簡単になるツールはありますか?
- はい。www.jwt.io などのプラットフォームでは、開発プロセス中にトークンをデコードおよびデバッグできるため、送信するコンテンツを確認できます。ただし、Google との提携関係はなく、そのようなサードパーティを特におすすめするわけではありません。
- Base64 でエンコードされた userProfile データを正しく処理するにはどうすればよいですか?
- プロセス全体で UTF-8 エンコードを使用してください。JSON 文字列は最初に UTF-8 でエンコードされ、その後 android.util.Base64 を使用してエンコードされます(NO_WRAP と URL_SAFE オプションを使用)。これは RFC 3548 セクション 4 に対応しています。