고객이 소프트웨어의 요금제를 선택하면 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에서 삭제되었음을 나타냅니다. |