Zapisywanie i usuwanie powiadomień

Z tego przewodnika dowiesz się, jak używać wywołań zwrotnych z interfejsem Google Wallet API. Gdy zostanie utworzony lub usunięty, Google może wykonać wywołanie zwrotne do HTTPS wybranego punktu końcowego. To wywołanie zwrotne dotyczy konkretnej klasy i zawiera dane informacje o zdarzeniu, np. klasę, obiekt i typ zdarzenia. Pozwala to na: śledzić liczbę przypadków dodawania i usuwania użytkowników. Dla: Wywołania zwrotne można na przykład skonfigurować tak, aby wysyłały zdarzenia do Analytics do śledzenia zaangażowania klientów w czasie trwania wydarzeń promocyjnych.

Wymagania wstępne

Zanim zaczniesz, zapoznaj się z tymi wymaganiami wstępnymi:

  • Utwórz punkt końcowy HTTPS, który obsługuje żądania POST. Ten punkt końcowy wymaga publicznie dostępne.
  • Automatycznie zaktualizuj punkt końcowy wywołania zwrotnego każdej klasy. Zobacz callbackOptions dla klasy w interfejsie API REST.
  • Zalecane: do weryfikowania podpisów użyj biblioteki Tink.

Wdrażanie wywołań zwrotnych

Każde dodanie lub usunięcie wykonane przez użytkownika w obiekt , Google odsyła sprzedawców do szczegółowych informacji na temat dodania lub usunięcia na zajęcia Adres URL. Sprzedawcy muszą najpierw użyć kluczy publicznych, aby zweryfikować autentyczność wiadomość. Gdy wywołania zwrotne potwierdzą wiadomość, można będzie używać wywołań zwrotnych. do operacji pobierania danych.

Sprawdzanie podpisu

Do weryfikowania podpisu wiadomości zalecamy używanie biblioteki Tink podczas wdrażania punktu końcowego HTTPS. Biblioteka Tink udostępnia PaymentMethodTokenRecipient – narzędzie, które automatycznie weryfikuje podpis i zwraca wiadomość weryfikacji.

Poniższy przykład pokazuje, jak za pomocą biblioteki Tink wdrożyć 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
  }
}

Oczekiwany format wiadomości

Wiadomość ma format JSON zserializowany do ciągu znaków z właściwości:

Identyfikator Opis
classId

Pełny i jednoznaczny identyfikator klasy. Używa tego formatu:

<issuer_id.class_id>
objectId

Pełny identyfikator obiektu. Używa tego formatu:

<issuer_id.object_id>
expTimeMillis Czas ważności w milisekundach od początku epoki. Po upłynięciu okresu ważności wiadomość musi zostać uznana za nieważną.
eventType Może to być del lub save w przypadku DELETE i SAVE.
nonce Liczba jednorazowa pozwalająca śledzić zduplikowane dostawy.

Obsługa żądań z serwera Google

Poniżej znajdziesz listę najważniejszych pól w nagłówku żądania, które wysłany do punktu końcowego wywołania zwrotnego:

  • Klient użytkownika: Googlebot
  • Typ treści: application/json

Skonfiguruj serwer tak, aby nie odrzucał tego żądania. W tym celu możesz: ustaw w robots.txt te elementy:

User-agent: Googlebot
Disallow:

Liczba ponownych prób

Wywołania zwrotne są wykonywane zgodnie z zasadą możliwie najlepszej obsługi. Google użyje typowych strategii ponawiania próby być odporny w przypadku, gdy punkt końcowy wywołania zwrotnego nie odpowiada lub ma z przerwami w działaniu usługi i płynnym cofnięciem prób.

Dostawa powtórzona

Czasami wiadomości mogą być dostarczane wielokrotnie. Zalecamy użycie ciągu nonce, aby usunąć duplikaty.