Z tego przewodnika dowiesz się, jak używać wywołań zwrotnych w interfejsie Google Wallet API. Po utworzeniu lub usunięciu wartościowej Google może wykonać wywołanie zwrotne do wybranego przez Ciebie punktu końcowego HTTPS. To wywołanie zwrotne jest związane z klasą i zawiera dane o zdarzeniu, takie jak klasa, obiekt i typ zdarzenia. Dzięki temu możesz być na bieżąco z liczbą operacji dodawania i usuwania kont użytkowników. Wywołania zwrotne można na przykład skonfigurować tak, aby wysyłać zdarzenia do aplikacji analitycznej w celu śledzenia zaangażowania klientów podczas wydarzeń promocyjnych.
Wymagania wstępne
Zanim zaczniesz, sprawdź, czy spełnione są wymagania wstępne:
- Utwórz punkt końcowy HTTPS, który obsługuje żądania POST. Ten punkt końcowy musi być publicznie dostępny.
-
Automatycznie aktualizuj punkt końcowy wywołania zwrotnego dla każdej klasy. Zapoznaj się z właściwością
callbackOptions
według klasy w interfejsie API REST. - Zalecane: sprawdź podpisy przy użyciu biblioteki Tink.
Wdrażanie wywołań zwrotnych
Za każdym razem, gdy użytkownik doda lub usunie obiekt, Google wysyła do sprzedawców wywołania zwrotne ze szczegółowymi informacjami o dodaniu lub usunięciu adresu URL klasy. Sprzedawcy muszą najpierw użyć kluczy publicznych, aby potwierdzić autentyczność wiadomości. Gdy wywołania zwrotne potwierdzają wiadomość, można ich używać do operacji przesyłania danych do klienta.
Sprawdzanie podpisu
Zalecamy używanie biblioteki Tink do weryfikowania podpisu wiadomości podczas implementacji punktu końcowego HTTPS. Biblioteka Tink udostępnia PaymentMethodTokenRecipient
– narzędzie, które automatycznie weryfikuje podpis, a gdy weryfikacja się powiedzie, zwraca wiadomość.
Poniższy przykład pokazuje, jak użyć biblioteki Tink do implementacji 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
Pełny i jednoznaczny identyfikator obiektu. Używa tego formatu: <issuer_id.object_id> expTimeMillis
Czas ważności w milisekundach od początku epoki. Po upływie okresu ważności wiadomość musi zostać uznana za nieprawidłową.
eventType Może mieć wartość del lub save w przypadku DELETE i SAVE .
nonce Identyfikator jednorazowy pozwalający śledzić zduplikowane dostawy.
Obsługa żądania z serwera GooglePoniżej znajduje się lista najważniejszych pól w nagłówku żądania, które jest wysyłane do punktu końcowego wywołania zwrotnego:
Skonfiguruj serwer tak, aby nie odrzucał żądań. Aby to zrobić, możesz ustawić w User-agent: Googlebot Disallow: Liczba ponownych próbWywołania zwrotne są wykonywane zgodnie z zasadą możliwie najlepszej obsługi. Google dwukrotnie próbuje uwzględniać przejściowe awarie. Po dwukrotnych próbach Google usuwa wiadomość i nie próbuje wysłać jej ponownie. Przesyłki zduplikowane
Czasami wiadomości mogą być dostarczane podwójnie. Do ich usuwania zalecamy użycie O ile nie stwierdzono inaczej, treść tej strony jest objęta licencją Creative Commons – uznanie autorstwa 4.0, a fragmenty kodu są dostępne na licencji Apache 2.0. Szczegółowe informacje na ten temat zawierają zasady dotyczące witryny Google Developers. Java jest zastrzeżonym znakiem towarowym firmy Oracle i jej podmiotów stowarzyszonych. Ostatnia aktualizacja: 2024-03-26 UTC.
[]
[]
|