이 가이드에서는 Google Wallet API에서 콜백을 사용하는 방법을 설명합니다. 사용자가 패스가 생성되거나 삭제되면 Google은 지정할 수 있습니다 이 콜백은 클래스별로 다르며 데이터를 포함합니다. 이벤트 정보(예: 클래스, 객체, 이벤트 유형) 이는 다음을 수행하는 데 사용할 수 있습니다. 사용자 추가 및 삭제 발생 횟수를 추적합니다. 대상 예를 들어 콜백을 통해 분석 이벤트로 프로모션 이벤트 중 고객 참여도를 추적할 수 있습니다.
기본 요건
시작하기 전에 다음 기본 요건을 검토하세요.
- POST 요청을 처리하는 HTTPS 엔드포인트를 구축합니다. 이 엔드포인트에 공개될 수 있어야 합니다
-
각 클래스의 콜백 엔드포인트를 프로그래매틱 방식으로 업데이트합니다. 자세한 내용은
callbackOptions
드림 속성을 정의하는 데 사용됩니다. - 권장: Tink 라이브러리를 사용하여 서명을 확인합니다.
콜백 구현
사용자가 서버에서 추가 또는 삭제할 때마다 객체 Google은 클래스당 URL입니다. 판매자는 먼저 공개 키를 사용하여 확인할 수 있습니다. 콜백이 메시지를 확인한 후 콜백을 사용하여 사용할 수 있습니다
서명 확인
Tink 라이브러리를 사용하여 메시지 서명을 확인하는 것이 좋습니다.
HTTPS 엔드포인트를 구현할 때 생성됩니다 이
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 } }
예상 메시지 형식
메시지 형식은 다음과 같은 문자열로 직렬화된 JSON입니다. 속성:
식별자 | 설명 |
---|---|
classId |
정규화된 클래스 ID입니다. 다음 형식을 사용합니다. <issuer_id.class_id> |
objectId |
정규화된 객체 ID입니다. 다음 형식을 사용합니다. <issuer_id.object_id> |
expTimeMillis |
EPOCH 이후의 만료 시간(밀리초)입니다. 만료 시간이 지나면 유효하지 않은 것으로 간주해야 합니다. |
eventType |
다음 경우 del 또는 save 일 수 있습니다.
DELETE 및 SAVE .
|
nonce |
중복 전송을 추적하기 위한 nonce입니다. |
Google 서버의 요청 처리
다음은 요청 헤더에 포함된 키 필드 목록에 콜백 엔드포인트로 전송됩니다.
- 사용자-에이전트:
Googlebot
- 콘텐츠-유형:
application/json
요청을 거부하지 않도록 서버를 구성합니다. 방법은 다음과 같습니다.
robots.txt
에서 다음을 설정합니다.
User-agent: Googlebot Disallow:
재시도
콜백은 최선의 방식으로 실행됩니다. Google에서 일반적인 재시도 전략을 사용합니다. 콜백 엔드포인트가 응답하지 않거나 중단하고 시도를 단계적으로 중단합니다.
중복 전송
경우에 따라 중복 전송이 발생할 수 있습니다. 이때
nonce
하여 중복 데이터를 삭제합니다.