개요
리셀러 API는 Pub/Sub API를 사용하여 푸시를 전달합니다. 다양한 Google Workspace 관련 알림 구독 이벤트와는 다릅니다. 예를 들어 고객이 알림을 받을 때 알림을 받도록 설정할 수도 있습니다. 구독 상태 있습니다.
기본 요건
- Pub/Sub API를 사용 설정합니다. 사용할 수 있습니다
- 계정의 서비스 계정에 Pub/Sub IAM 역할 부여
Cloud 프로젝트입니다. 권한 부여 시
roles/pubsub.editor
역할은 좋은 절충안입니다 (쉬우면서도 너무 광범위하지 않음). 보다 구체적인 보다 구체적인 Pub/Sub 권한.
주제 만들기
주제를 만들려면 리셀러 API에 등록해야 합니다.
를 사용하여
resellernotify.register
메서드
resellernotify.register
메서드는 서비스 계정 이메일 주소를
매개변수 값으로 사용됩니다. 이 메서드로 승인된 서비스 계정만
확인할 수 있습니다
POST https://reseller.googleapis.com/apps/reseller/v1/resellernotify/register
{
"serviceAccountEmailAddress": "reseller@reseller-project.iam.gserviceaccount.com"
}
성공 응답은 HTTP 200
상태 코드를 반환합니다.
Pub/Sub 주제 이름이 포함된 JSON 응답이 표시됩니다.
다음은 응답 예시입니다.
{
"topicName": "projects/partner-watch/topics/C0abcdefg"
}
주제를 사용할 추가 서비스 계정을 승인하려면 다음을 호출합니다.
다시 resellernotify.register
하세요.
서비스 계정의 액세스 권한 취소
또한, 리셀러 API를 사용하면 다음을 통해 서비스 계정을 등록 취소할 수 있습니다.
resellernotify.unregister
엔드포인트를 사용하여 다음을 실행합니다.
POST https://reseller.googleapis.com/apps/reseller/v1/resellernotify/unregister
{
"serviceAccountEmailAddress": "reseller@reseller-project.iam.gserviceaccount.com"
}
주제 구독
Pub/Sub 주제를 만든 후 애플리케이션이 변경 이벤트를 사용합니다. 다음 옵션 중 하나를 선택합니다.
- 푸시 구독: HTTP
POST
콜백을 제공합니다. Pub/Sub 사용 이 콜백으로 애플리케이션에 새 이벤트를 알립니다. - 가져오기 구독: 애플리케이션에서 주기적으로 HTTP 호출을 실행하여 대기 중인 모든 변경사항을 가져옵니다.
다음은 주제 구독 요청의 예입니다.
PUT https://pubsub.googleapis.com/v1/projects/PROJECT/subscriptions/SUBSCRIPTION_NAME { "topic": "TOPIC_NAME" // Only needed for push configurations "pushConfig": { "pushEndpoint": "PUSH_NOTIFICATION_ENDPOINT" }, }
다음을 바꿉니다.
PROJECT
: Google Cloud 프로젝트입니다.SUBSCRIPTION_NAME
: 구독하세요.TOPIC_NAME
: 이전에 사용한 Pub/Sub 주제입니다. 생성됨.PUSH_NOTIFICATION_ENDPOINT
: 푸시 알림 핸들러 엔드포인트를 호출할 수 있습니다
성공 응답이 수신되면 HTTP 200
상태 코드가 반환됩니다. 다음은
응답 예시:
{ "name": "projects/PROJECT/subscriptions/SUBSCRIPTION_NAME", "topic": "TOPIC_NAME", "pushConfig": { "pushEndpoint": "PUSH_NOTIFICATION_ENDPOINT" }, "ackDeadlineSeconds": 10 }
알림 형식
다음은 Pub/Sub 알림 예시입니다. 메시지 데이터는 base64로 인코딩된 JSON 문자열로 전송됩니다.
{ "message": { "attributes": {}, "data": "eyJza3VfaWQiOiAiR29vZ2xlLUFwcHMtVW5saW1pdGVkIiwgImV2ZW50X3R5cGUiOiAiU1VCU0NSSVBUSU9OX0NBTkNFTExFRCIsICJjdXN0b21lcl9kb21haW5fbmFtZSI6ICJkb21haW4uY29tIiwgInN1YnNjcmlwdGlvbl9pZCI6ICIxMjM0NTY3IiwgImN1c3RvbWVyX2lkIjogIkMwYWJjZGVmIiwgIm1lc3NhZ2VfaWQiOiAiODY3NTMwOSIsICJwdWJsaXNoX3RpbWUiOiB7InNlY29uZHMiOiAxNDU3NzMxODQ2LCAibmFub3MiOiAzNDkwMDAwMDB9LCAicmVzZWxsZXJfY3VzdG9tZXJfaWQiOiAiQzByZXNlbGxlciJ9", "message_id": 1234567891012131 }, "subscription": "projects/PROJECT/subscriptions/SUBSCRIPTION_NAME" }
다음은 디코딩 후의 message.data
객체의 예입니다.
{
"customer_id": "C0abcdef",
"customer_domain_name": "domain.com",
"event_type": "SUBSCRIPTION_CANCELLED",
"sku_id": "Google-Apps-Unlimited",
"subscription_id": "1234567",
// Optional fields depended on event_type
"subscription_suspension_reasons": [],
"subscription_cancellation_reason": "REASON"
}
이벤트 유형
다음 목록에는 가능한 모든 이벤트 유형이 포함되어 있습니다.
NEW_SUBSCRIPTION_CREATED
: 새 구독이 생성되었습니다.SUBSCRIPTION_TRIAL_ENDED
: 정기 결제의 무료 체험이 종료되었습니다.PRICE_PLAN_SWITCHED
: 탄력 요금제에서 연간 요금제로 전환된 고객 있습니다. 고객이 다음에서 전환하는 경우에는 이 이벤트가 트리거되지 않습니다. 약정 유형 요금제를 탄력 요금제로 변경하는 데 동의하는 것으로 간주됩니다.COMMITMENT_CHANGED
: 연간 약정이 늘거나 줄었습니다.SUBSCRIPTION_RENEWED
: 연간 구독이 갱신되었습니다.SUBSCRIPTION_SUSPENDED
: 구독이 정지되었습니다. 자세한 내용은subscription_suspension_reasons
필드SUBSCRIPTION_SUSPENSION_REVOKED
: 이전에 정지된 정기 결제의 정지가 취소되었습니다.SUBSCRIPTION_CANCELLED
: 구독이 취소되었습니다. 자세한 내용은subscription_cancellation_reason
필드 감지에도 사용할 수 있음 전송합니다.SUBSCRIPTION_CONVERTED
: 구독이 전환되었습니다. 다음의 몇 가지 예시 사례: 이 이벤트는 다음과 같습니다.- 직접 구독을 리셀러 구독으로 전환합니다.
- 유료 구독을 유예 혜택으로 전환합니다.
- 온라인 구독을 오프라인 구독으로 전환합니다.
SUBSCRIPTION_UPGRADE
: 구독 SKU가 업그레이드되었습니다. 예를 들어 구독이 Google Workspace Business Starter에서 Business로 업그레이드되었습니다 표준.SUBSCRIPTION_DOWNGRADE
: 구독 SKU가 다운그레이드되었습니다. 예를 들어 구독이 Google Workspace Business Standard에서 Business Starter의 경우LICENSE_ASSIGNMENT_CHANGED
: 라이선스가 다음 API에 할당되었거나 취소되었습니다. 있습니다. 이 이벤트를 사용하여 유연한 구독
정기 결제 취소 이유
정기 결제 취소 이유는 event_type
가 다음과 같을 때 채워집니다.
SUBSCRIPTION_CANCELLED
입니다. 취소 사유는 다음과 같습니다.
TRANSFERRED_OUT
: 고객이 직접 결제 또는 다른 리셀러로 이동해야 합니다.PURCHASE_OF_SUBSUMING_SKU
: 고객이 다음 SKU로 업그레이드했습니다. 다른 규칙보다 우선합니다. 예를 들어 Google Workspace Business 고객이 Starter 및 Google Vault가 Google Workspace Business Plus로 Vault 구독은 Google Workspace Business PlusRESELLER_INITIATED
: 리셀러가 구독을 취소했습니다.OTHER
: 위에 나열되지 않은 다른 이유로 정기 결제가 취소되었습니다.
정기 결제 정지 이유
정기 결제 정지 이유는 event_type
가 다음과 같을 때 채워집니다.
SUBSCRIPTION_SUSPENDED
입니다. 다음과 같은 이유로 계정이 정지될 수 있습니다.
PENDING_TOS_ACCEPTANCE
: 고객이 로그인하지 않고 'Google Workspace 재판매 서비스 약관'RENEWAL_WITH_TYPE_CANCEL
: 고객의 약정이 종료되고 서비스 기간이 만료되어 서비스가 취소되었습니다.RESELLER_INITIATED
: 리셀러가 수동으로 구독을 정지했습니다.TRIAL_ENDED
: 고객의 체험판이 만료되었으며 고객이 선택하지 않음 무료 체험판이 아닌 경우OTHER
: Google 내부적인 이유로 고객이 정지되었습니다. 예: 악용
Pub/Sub 제한사항
푸시 알림 순서는 보장되지 않습니다. 메시지가 전송될 수 있음
극단적인 상황에서도 전혀 그렇지 않습니다. 이때
변경된 모든 구독에 대해 reseller.subscriptions.get
하여
현재 상태를 나타냅니다.