このガイドでは、Google Wallet API でのコールバックの使用方法について説明します。変数が作成または削除されると、Google はユーザーが選択した HTTPS エンドポイントに対してコールバックを実行できます。このコールバックはクラス固有で、クラス、オブジェクト、イベントタイプなどのイベントに関するデータが含まれています。これを使用すると、ユーザーの追加数や削除数とシステムの同期を維持できます。たとえば、イベントを分析アプリケーションに送信するようにコールバックを設定して、プロモーション イベント中の顧客エンゲージメントを追跡できます。
前提条件
始める前に、次の前提条件を満たしていることを確認してください。
- POST リクエストを処理する HTTPS エンドポイントを起動します。このエンドポイントは一般公開する必要があります。
-
各クラスのコールバック エンドポイントをプログラムで更新します。REST API で、クラス別の
callbackOptions
プロパティをご確認ください。 - (推奨)Tink ライブラリを使用して署名の検証を行います。
コールバックの実装
ユーザーがオブジェクトに対して追加や削除を行うたびに、Google が販売者に対してコールバックを実行し、クラスごとの URL に対する追加や削除に関する詳細情報を提供します。販売者は、まず公開鍵を使用してメッセージの信頼性を確認する必要があります。コールバックがメッセージを確認した後で、そのコールバックをダウンストリームのオペレーションに使用できます。
署名の検証
HTTPS エンドポイントを実装する場合は、Tink ライブラリを使用してメッセージの署名を検証することをおすすめします。Tink ライブラリの PaymentMethodTokenRecipient
ユーティリティにより、署名が自動的に検証され、検証に成功すると実際のメッセージが返されます。
次の例では、Tink ライブラリを使用して PaymentMethodTokenRecipient
を実装する方法を示します。
import java.io.IOException; import javax.servlet.http.*; import com.google.common.io.CharStreams; import com.google.crypto.tink.apps.paymentmethodtoken.*; // Replace ISSUER_ID with your issuer id private static final String RECIPIENT_ID = "ISSUER_ID"; private static final String PUBLIC_KEY_URL = "https://pay.google.com/gp/m/issuer/keys"; private static final String SENDER_ID = "GooglePayPasses"; private static final String PROTOCOL = "ECv2SigningOnly"; private static final GooglePaymentsPublicKeysManager keysManager = new GooglePaymentsPublicKeysManager.Builder() .setKeysUrl(PUBLIC_KEY_URL) .build(); public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { try { // Extract signed message with signature from POST request body. String signedMessage = CharStreams.toString(request.getReader()); PaymentMethodTokenRecipient recipient = new PaymentMethodTokenRecipient.Builder() .protocolVersion(PROTOCOL) .fetchSenderVerifyingKeysWith(keysManager) .senderId(SENDER_ID) .recipientId(RECIPIENT_ID) .build(); String serializedJsonMessage = recipient.unseal(signedMessage); // Use serializedJsonMessage to extract the details } catch (Exception e) { // Handle the error } }
Expected message format
The message format is JSON that's serialized into a string with the following properties:
Identifier | Description |
---|---|
classId |
Fully qualified class ID. Uses the following format: <issuer_id.class_id> objectId
完全修飾のオブジェクト ID。次の形式を使用します。 <issuer_id.object_id> expTimeMillis
エポックからのミリ秒単位の有効期限です。有効期限を経過したメッセージは無効とみなす必要があります。
eventType
DELETE の場合は del 、SAVE の場合は save です。
nonce
重複配信を追跡するノンス。
Google サーバーからのリクエストの処理以下に、コールバック エンドポイントに送信されるリクエストのヘッダーに含まれる主要なフィールドを示します。
リクエストを拒否しないようにサーバーを構成します。これを行うには、 User-agent: Google-Valuables Disallow: 再試行コールバックはベスト エフォート方式です。一時的な障害の場合、Google は 3 日間メッセージの配信を試みます。3 日後、Google はメッセージを削除し、再送信を試みません。 重複配信
重複配信が発生する場合があります。重複を排除するには、 特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。 最終更新日 2023-11-17 UTC。
[]
[]
|