알림 하위 API 개요

알림 하위 API를 사용하여 판매자 센터 계정의 데이터가 변경될 때 푸시 알림을 받을 수 있습니다. 변경사항을 감지하기 위해 API를 주기적으로 폴링하는 대신 구성한 HTTPS 엔드포인트로 직접 전송되는 실시간 이벤트 피드를 구독할 수 있습니다.

알림 하위 API는 다음 알림을 지원합니다.

  • 제품 상태 변경: 연결된 계정 또는 하위 계정에서 제품 승인 상태가 변경되면 (예: 제품이 비승인 또는 승인됨으로 변경됨) 실시간 알림을 받습니다.
  • 계정 서비스 변경사항: AccountService 리소스가 생성, 업데이트 또는 삭제될 때 (예: 계정 서비스 관계가 설정, 수정 또는 삭제될 때) 실시간 알림을 받습니다.

기본 요건 및 콜백 URI 설정

푸시 알림을 받으려면 callBackUri를 제공해야 합니다. 콜백 URI는 다음 요구사항을 충족해야 합니다.

  • 인정된 인증 기관에서 서명한 유효한 SSL 인증서가 있는 공개적으로 액세스 가능한 HTTPS 주소여야 합니다.
  • Content-Type 헤더가 application/json로 설정된 HTTP POST 요청을 허용해야 합니다.
  • 알림을 수신했음을 확인하기 위해 다음 HTTP 상태 코드 중 하나를 반환해야 합니다.

    • 102
    • 200
    • 201
    • 202
    • 204

여러 구독에 동일한 콜백 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
  }
}

다음 단계

특정 이벤트의 정기 결제를 구성하고 디코딩된 페이로드를 처리하려면 다음을 참고하세요.