SaaS 제품의 고객 사용 권한 관리

고객이 소프트웨어의 요금제를 선택하면 Google은 사용 권한을 만들어 고객이 Cloud Marketplace에서 제품을 구매했음을 나타냅니다. 이 섹션에서는 Partner Procurement API를 사용하여 고객의 자격을 만들고 관리하는 방법을 검토합니다.

자격 관리에 대한 자세한 내용은 참고 문서를 확인하세요.

시작하기 전에

  • 앱 통합에 설명된 대로 Cloud Commerce Partner Procurement API에 대한 액세스를 설정합니다.

동일한 제품의 여러 주문을 사용 설정한 경우 Partner Procurement API에서 동일한 ACCOUNT_ID 값에 대해 ENTITLEMENT_ACTIVE 이벤트 유형을 사용하여 여러 이벤트를 전송할 수 있으며, 이때 각 이벤트는 서로 다른 오퍼를 나타내는 고유한 ENTITLEMENT_ID를 사용합니다. 즉, 앱의 이벤트 처리 로직이 ACCOUNT_ID 또는 PRODUCT_ID 대신 ENTITLEMENT_ID에 응답할 수 있는지 확인해야 합니다.

프런트엔드 통합이 JWT 페이로드에 포함된 새 orders 객체를 처리할 수 있는지 확인해야 합니다. 자세한 내용은 앱의 프런트엔드 통합을 참고하세요.

동일 제품의 다중 주문 설정에 대한 자세한 내용은 동일 제품의 다중 주문 설정을 참조하세요.

사용 권한 승인

고객이 요금제를 선택하면 Cloud Marketplace에서 사용 권한을 만들고 앱에 다음과 같은 Pub/Sub 메시지를 전송합니다.

{
  "eventId": "...",
  "eventType": "ENTITLEMENT_CREATION_REQUESTED",
  "providerId": "YOUR_PARTNER_ID",
  "entitlement": {
    "id": "ENTITLEMENT_ID",
    "updateTime": "...",
    "newOfferDuration": "P2Y3M",   // Contract duration for offer-based entitlements
  },
}

여기서 ENTITLEMENT_ID는 Cloud Marketplace에서 만든 ID입니다. 오퍼에 지정된 기간이 있으면 해당 기간이 연 및 월 단위로 제공됩니다. 오퍼에 기간 대신 지정된 종료 날짜가 있으면 기간을 나타내는 필드가 비어 있습니다.

시스템에서 사용자가 요금제를 구입한 것이 반영되도록 사용자 계정을 업데이트합니다. 그런 다음 자격을 승인하기 위해 Partner Procurement API에 대해 HTTP POST 요청을 실행하고 승인 중인 ENTITLEMENT_ID를 보냅니다.

POST v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID:approve

사용 권한 거부

사용 권한을 거부하려면 Partner Procurement API에 HTTP POST 요청을 실행하고 요청에 reject 메서드를 사용합니다.

POST v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID:reject

요청 본문에서 사용 권한을 거부하는 이유를 제공하려면 다음 형식을 사용합니다.

{
  "reason": "..."
}

사용 권한 요금제 변경

가격 책정 요금제를 설정한 방법에 따라 고객은 자신의 요금제를 변경할 수 있습니다. 고객이 새로운 가격 책정 요금제를 선택하면, 다음 형식의 Pub/Sub 메시지가 수신됩니다.

{
  "eventId": "...",
  "eventType": "ENTITLEMENT_PLAN_CHANGE_REQUESTED",
  "providerId": "YOUR_PARTNER_ID",
  "entitlement": {
    "id": "ENTITLEMENT_ID",
    "newPlan": "ultimate",   // New plan
    "updateTime": "...",
    "newOfferDuration": "P2Y3M",   // Contract duration for the new offer, for offer-based entitlements
    "newProduct": "test-product.cloud.goog"
    "newOffer": "projects/1234567/services/test-product.cloud.goog/standardOffers/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
  },
}

오퍼에 지정된 기간이 있으면 해당 기간이 연 및 월 단위로 제공됩니다. 오퍼에 기간 대신 지정된 종료 날짜가 있으면 기간을 나타내는 필드가 비어 있습니다.

요금제 변경을 승인하려면 Partner Procurement API에 다음과 같은 HTTP POST 요청을 보냅니다.

POST v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID:approvePlanChange

요청 본문에는 승인 중인 요금제가 있어야 합니다.

{
  "pendingPlanName": PLAN_NAME
}

변경이 승인된 후에는 변경이 적용될 때 또 다른 Pub/Sub 메시지가 수신됩니다. 메시지에서 eventType 필드가 ENTITLEMENT_PLAN_CHANGED로 변경됩니다. 요금제 상태를 확인하려면 Partner Procurement API에 다음 HTTP GET 요청을 수행합니다.

GET v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID

응답은 다음과 유사하며 state 필드는 새 요금제의 활성화 여부 또는 요금제 변경이 여전히 보류 중인지 여부를 나타냅니다.

{
  "name": "providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID",
  "provider": "YOUR_PARTNER_ID",
  "account": "USER_ACCOUNT_ID",
  "product": "example-server",
  "plan": "pro",
  "state": "ENTITLEMENT_PENDING_PLAN_CHANGE",
  "newPendingPlan": "ultimate",
  ...
}

사용 권한 취소

사용자가 자격을 취소하기로 결정하면 Pub/Sub 알림을 받습니다. 요금제 변경과 비슷하게, 실제 취소는 현재 청구 주기가 종료될 때 적용될 수 있습니다.

알림은 다음 형식입니다.

{
  "eventId": "...",
  // If the entitlement is canceled at the end of the month,
  // eventType is ENTITLEMENT_PENDING_CANCELLATION
  "eventType": "ENTITLEMENT_CANCELLED",
  "providerId": "YOUR_PARTNER_ID",
  "entitlement": {
    "id": "ENTITLEMENT_ID",
    "updateTime": "..."
  },
}

사용 권한 삭제

사용자가 Google 지원팀에 직접 요청하거나 Google 플랫폼을 떠나면, 사용자의 자격이 즉시 취소되고 60일의 유예 기간이 지난 후 사용 권한 및 계정이 삭제됩니다. 사용자의 개인정보 보호를 위해 알림을 받았을 때 서버에서 해당 데이터를 삭제해야 합니다.

사용 권한이 취소되고 계정이 삭제되면 다음과 비슷한 알림이 수신됩니다.

{
  "eventId": "...",
  "eventType": "ENTITLEMENT_DELETED",
  "providerId": "YOUR_PARTNER_ID",
  "entitlement": {
    "id": "ENTITLEMENT_ID",
    "updateTime": "...",
  },
}
{
  "eventId": "...",
  "eventType": "ACCOUNT_DELETED",
  "providerId": "YOUR_PARTNER_ID",
  "account": {
    "id": "USER_ACCOUNT_ID",
    "updateTime": "...",
  },
}

계정 작업의 이벤트 유형 목록

다음은 앱이 Pub/Sub 메시지에서 받을 수 있는 eventType 목록입니다.

eventType설명
ACCOUNT_CREATION_REQUESTED지원 중단됨
ACCOUNT_ACTIVE고객의 계정이 생성되었음을 나타냅니다.
ACCOUNT_DELETED고객의 계정이 Google Cloud 시스템에서 삭제되었음을 나타냅니다.
ENTITLEMENT_CREATION_REQUESTED고객이 요금제 중 하나를 선택했음을 나타냅니다.
ENTITLEMENT_OFFER_ACCEPTED고객이 오퍼를 수락했음을 나타냅니다. 오퍼의 예약된 시작 시간이 있는 경우 이를 포함합니다. 이 이벤트는 프라이빗 오퍼와 표준 오퍼(공개 구매) 모두에 대해 전송됩니다.
ENTITLEMENT_ACTIVE고객이 선택한 요금제가 활성화 되었음을 나타냅니다.
ENTITLEMENT_PLAN_CHANGE_REQUESTED고객이 새로운 요금제를 선택했음을 나타냅니다.
ENTITLEMENT_PLAN_CHANGED고객의 요금제 변경이 승인되었으며 변경 사항이 적용되었음을 나타냅니다.
ENTITLEMENT_PLAN_CHANGE_CANCELLED고객의 요금제 변경이 승인되지 않았거나 이전 요금제로 다시 전환되었기 때문에 취소되었음을 나타냅니다.
ENTITLEMENT_PENDING_CANCELLATION고객이 요금제를 취소했으며 결제 주기가 끝날 때까지 취소가 보류 중임을 나타냅니다.
ENTITLEMENT_CANCELLATION_REVERTED고객의 대기 중인 취소가 되돌려졌음을 나타냅니다. 취소는 완료된 후에는 취소를 되돌릴 수 없습니다.
ENTITLEMENT_CANCELLED고객의 요금제가 취소되었음을 나타냅니다.
ENTITLEMENT_CANCELLING고객의 요금제 취소를 처리 중임을 나타냅니다.
ENTITLEMENT_RENEWED고객의 자격이 다른 기간 동안 갱신되었음을 나타냅니다. 갱신을 완료하기 위해 별도의 조치를 취할 필요가 없습니다.
ENTITLEMENT_OFFER_ENDED고객의 프라이빗 오퍼가 종료되었음을 나타냅니다. 고객의 자격이 취소된 경우 별도의 ENTITLEMENT_CANCELLED 이벤트가 트리거됩니다. 고객의 자격이 아직 활성 상태라면 요금제가 할인되지 않은 가격으로 되돌아갑니다.
ENTITLEMENT_DELETED고객 요금제에 대한 정보가 Cloud Marketplace에서 삭제되었음을 나타냅니다.