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.