알림 하위 API를 사용하여 판매자 센터 계정의 데이터가 변경될 때 푸시 알림을 받을 수 있습니다. 변경사항을 감지하기 위해 API를 주기적으로 폴링하는 대신 구성한 HTTPS 엔드포인트로 직접 전송되는 실시간 이벤트 피드를 구독할 수 있습니다.
알림 하위 API는 다음 알림을 지원합니다.
- 제품 상태 변경: 연결된 계정 또는 하위 계정에서 제품 승인 상태가 변경되면 (예: 제품이 비승인 또는 승인됨으로 변경됨) 실시간 알림을 받습니다.
- 계정 서비스 변경사항:
AccountService리소스가 생성, 업데이트 또는 삭제될 때 (예: 계정 서비스 관계가 설정, 수정 또는 삭제될 때) 실시간 알림을 받습니다.
기본 요건 및 콜백 URI 설정
푸시 알림을 받으려면 callBackUri를 제공해야 합니다. 콜백 URI는 다음 요구사항을 충족해야 합니다.
- 인정된 인증 기관에서 서명한 유효한 SSL 인증서가 있는 공개적으로 액세스 가능한 HTTPS 주소여야 합니다.
Content-Type헤더가application/json로 설정된 HTTPPOST요청을 허용해야 합니다.알림을 수신했음을 확인하기 위해 다음 HTTP 상태 코드 중 하나를 반환해야 합니다.
102200201202204
여러 구독에 동일한 콜백 URI를 사용할 수 있습니다. 단일 엔드포인트의 부하를 최소화하려면 고급 계정 및 이벤트 유형별로 고유한 콜백 URI를 사용하세요.
구독 관리
알림 하위 API는 알림 구성을 생성, 나열, 검색, 업데이트, 삭제하는 메서드를 제공합니다.
구독 만들기
구독 생성은 수신하려는 이벤트 유형에 따라 다릅니다. 각 이벤트 유형에는 서로 다른 구성 필드가 필요하며 고유한 페이로드 구조를 제공합니다.
정기 결제를 만들고 각 이벤트 유형의 샘플 요청을 확인하는 방법을 알아보려면 다음 가이드를 참고하세요.
구독 나열
계정의 모든 알림 구독을 나열하려면 notificationsubscriptions 컬렉션에 GET 요청을 전송합니다.
GET https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions
구독 가져오기
특정 정기 결제의 세부정보를 가져오려면 정기 결제의 리소스 이름을 사용합니다.
GET https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}
구독 업데이트
기존 정기 결제의 콜백 URI를 업데이트하려면 업데이트할 필드를 지정하는 update_mask와 함께 PATCH 요청을 보냅니다.
PATCH https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}?update_mask=callBackUri
{
"callBackUri": "https://example.com/updated-callback"
}
구독 삭제
알림을 받지 않으려면 구독을 삭제하세요.
DELETE https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}
알림 디코딩
이벤트가 발생하면 Google에서 등록된 callBackUri에 알림을 전송합니다. 푸시 알림은 base64로 인코딩된 data 페이로드가 포함된 JSON 봉투에 도착합니다.
{"message":{"data":"{base64_encoded_string}"}}
데이터 문자열을 디코딩하여 JSON 이벤트 페이로드에 액세스합니다. 다음 샘플 Spring Boot 컨트롤러는 푸시 알림을 수신하고 디코딩하는 방법을 보여줍니다.
@RestController
public class ExampleController {
@RequestMapping(value = "/push",
method = RequestMethod.POST,
consumes = {"application/json"},
produces = {"text/plain"})
@ResponseStatus(HttpStatus.OK)
public void handleNotification(@RequestBody String message) {
JSONObject jsonObject = new JSONObject(message);
JSONObject jsonMessage = jsonObject.getJSONObject("message");
String encodedData = jsonMessage.getString("data");
byte[] decodedBytes = Base64.getDecoder().decode(encodedData);
String decodedPayload = new String(decodedBytes);
// Process decodedPayload according to the registered event type
}
}
다음 단계
특정 이벤트의 정기 결제를 구성하고 디코딩된 페이로드를 처리하려면 다음을 참고하세요.
- 제품 상태 변경에 대한 푸시 알림 받기:
제품 비승인 및 승인 업데이트를 구독하고
ProductStatusChangeMessage페이로드를 파싱하는 방법을 알아봅니다. - 계정 서비스 변경사항에 대한 푸시 알림 받기: 계정 관계 업데이트를 구독하고
ResourceChangeMessage페이로드를 파싱하는 방법을 알아봅니다.