다음을 통해 공유


파트너 센터 API를 사용하여 새 상거래 구독에 대한 변경 내용 예약

적용 대상: 파트너 센터

이 문서에서는 파트너 센터 API를 사용하여 갱신에만 적용되는 새 상거래 구독에 대한 변경 내용을 예약하는 방법을 설명합니다. 이 API는 새로운 상거래 라이선스 기반 및 소프트웨어 구독을 지원합니다.

참고 항목

라이선스 기반 서비스에 대한 새로운 상거래 환경에는 많은 새로운 기능이 포함되며 모든 CSP(클라우드 솔루션 공급자)에서 사용할 수 있습니다. 자세한 내용은 새 상거래 환경 개요를 참조하세요.

예약된 변경 내용을 만들면 다음 갱신이 발생할 때 구독을 자동으로 수정할 수 있습니다. 변경 내용을 예약하여 라이선스 수를 늘리거나 줄이고, 청구 기간 및 빈도를 수정하고, SKU를 업그레이드하도록 선택할 수도 있습니다. 변경을 예약하면 현재 기간 중 즉시가 아니라 갱신 시 구독을 수정할 수 있습니다.

Important

갱신 날짜 이전에 중간(즉시) 변경을 수행하면 이전에 갱신 시 발생하도록 예약된 모든 변경 내용이 삭제됩니다.

필수 조건

  • 자격 증명(파트너 센터 인증에서 설명). 이 시나리오는 독립 실행형 앱과 App+사용자 자격 증명을 모두 사용하여 인증을 지원합니다.

  • 고객 ID (customer-tenant-id). 고객의 ID를 모르는 경우 고객 작업 영역을 선택하고 고객 목록에서 고객을 선택한 다음 계정을 선택하여 파트너 센터에서 조회할 수 있습니다. 고객 계정 페이지의 고객 계정 정보 섹션에서 Microsoft ID를 찾습니다. Microsoft ID는 고객 ID(customer-tenant-id)와 동일합니다.

  • 구독 ID입니다.

  • 구독에서 자동 갱신을 사용하도록 설정됩니다.

파트너 센터 메서드

파트너 센터에서 구독에 대한 변경 내용을 예약하려면 다음을 수행합니다.

  1. 고객을 선택합니다.

  2. 변경 내용을 예약할 구독을 선택합니다.

  3. 자동 갱신을 사용하도록 설정합니다.

  4. 갱신 관리를 선택합니다.

  5. 갱신할 구독을 수정합니다.

  6. [확인]을 선택하여 측면 패널을 닫습니다.

  7. 제출을 선택하여 변경 내용을 저장합니다.

참고 항목

갱신은 다음 날 오전 12:00(UTC)부터 기간의 마지막 날 이후에 처리됩니다. 갱신은 큐에서 처리되며 처리되는 데 최대 24시간이 걸릴 수 있습니다.

C#

고객의 구독에 대한 변경 내용을 예약하려면 다음을 수행합니다.

  1. ID로 구독을 가져옵니다.
  2. 예약된 전환 자격 유형에 대한 전환 자격을 가져옵니다.
  3. ScheduledNextTermInstructions 개체를 만들고 구독의 속성으로 설정합니다.
  4. Patch() 메서드를 호출하여 예약된 변경 내용으로 구독을 업데이트합니다.
var selectedSubscription = subscriptionOperations.Get();
selectedSubscription.ScheduledNextTermInstructions = new ScheduledNextTermInstructions
{
    Product = new ProductTerm
    {
        ProductId = changeToProductId,
        SkuId = changeToSkuId,
        AvailabilityId = changeToAvailabilityId,
        BillingCycle = changeToBillingCycle,
        TermDuration = changeToTermDuration,
    },
    Quantity = changeToQuantity,
    customTermEndDate = DateTime,
};
var updatedSubscription = subscriptionOperations.Patch(selectedSubscription);

고객의 구독에 대한 변경 내용을 예약하려면 원하는 예약된 변경 내용이 다른 제품으로 변경됩니다.

  1. ID로 구독을 가져옵니다.
  2. 예약된 전환 자격 유형에 대한 전환 자격을 가져옵니다.
  3. Patch() 메서드를 호출하여 예약된 변경 내용으로 구독을 업데이트합니다.

REST 요청

요청 구문

메서드 요청 URI
패치 {baseURL}/v1/customers/{customer-tenant-id}/subscriptions/{subscription-id} HTTP/1.1

URI 매개 변수

이 표에는 API를 호출하는 데 필요한 쿼리 매개 변수가 나열됩니다.

속성 Type 필수 설명
customer-tenant-id guid Y 고객에게 해당하는 GUID입니다.
subscription-id guid Y 구독에 해당하는 GUID입니다.

요청 헤더

자세한 내용은 파트너 센터 REST 헤더를 참조하세요.

요청 본문

속성이 정의된 요청 본문에 전체 구독 리소스가 scheduledNextTermInstructions 필요합니다. 구독에 대한 변경 내용을 예약하려면 AutoRenewEnabled 속성이 true설정되어 있는지 확인합니다.

변환(EndofSaleWithConversions) 제품이 포함된 판매 종료 날짜의 가용성 ID의 경우:

  1. CatalogItemID를 반환하는 GetTransitionEligibility입니다.

    a. 예약된 자격 유형을 설정해야 합니다. 그렇지 않으면 기본값이 즉시 적용됩니다.

  2. CatalogItemID를 사용하여 availabilityID를 추출합니다.

참고 항목

GET 가용성을 사용하여 scheduledNextTerm 지침의 가용성을 확인하고 모든 조건이 EOS 상태인 경우 빈 목록을 받게 됩니다. 유효한 경로를 확인하는 가장 좋은 방법은 GetTransitionEligibilty API를 호출하여 유효한 옵션을 반환하는 것입니다.

필드 Type 필수 설명
scheduledNextTermInstructions object Y 구독에 대한 다음 용어 지침을 정의합니다. 속성에는 product 개체와 필드가 포함됩니다 quantity .

요청 예제

PATCH https://api.partnercenter.microsoft.com/v1/customers/<customer-tenant-id>/subscriptions/<subscription-id> HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: ca7c39f7-1a80-43bc-90d8-ee7d1cad3831
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
If-Match: <etag>
Content-Type: application/json
Content-Length: 1029
Expect: 100-continue
Connection: Keep-Alive

{
    "id": "6e7aa601-629e-461b-8933-0898c3cc3c7c",
    "offerId": "DZH318Z0BXWC:0001:DZH318Z0BMJX",
    "offerName": "offer Name",
    "friendlyName": "friendly Name",
    "quantity": 1,
    "customTermEndDate": "2019-01-09T00:21:45.9263727",
    "unitType": "License(s)",
    "hasPurchasableAddons": false,
    "creationDate": "2019-01-04T01:00:12.6647304Z",
    "effectiveStartDate": "2019-01-09T00:21:45.9263727+00:00",
    "commitmentEndDate": "2019-02-08T00:21:45.9263727+00:00",
    "status": "active",
    "autoRenewEnabled": true,
    "scheduledNextTermInstructions": { 
      "product": { 
         "productId":  "DG7GMGF0DVSV", 
         "skuId":  "000P", 
         "availabilityId":  "DG7GMGF0F3Q9", 
         "billingCycle":  "Annual", 
         "termDuration":  "P3Y",
         "promotionId": "39NFJQT1PFPJ:000H:39NFJQT1Q5DK"
        }, 
      "quantity":  1 
      "customTermEndDate" : "2019-01-09T00:21:45.9263727",
     },  // original value = null 
    "isTrial": false,
    "billingType": "license",
    "billingCycle": "monthly",
    "termDuration": "P1M",
    "refundOptions": [{
        "type": "Full",
        "expiresAt": "2019-01-10T00:21:45.9263727+00:00"
    }],
    "isMicrosoftProduct": false,
    "partnerId": "",
    "contractType": "subscription",
    "publisherName": "publisher Name",
    "orderId": "ImxjLNL4_fOc-2KoyOxGTZcrlIquzls11",
    "attributes": {"objectType": "Subscription"},
}

REST 응답

요청이 성공하면 이 메서드는 응답 본문에서 업데이트 된 구독 리소스 속성을 반환합니다.

응답 성공 및 오류 코드

각 응답에는 성공 또는 실패를 나타내는 HTTP 상태 코드와 기타 디버깅 정보가 함께 제공됩니다. 네트워크 추적 도구를 사용하여 이 코드, 오류 유형 및 기타 매개 변수를 읽습니다. 전체 목록은 오류 코드를 참조하세요.

응답 예제

HTTP/1.1 200 OK
Content-Length: 1322
Content-Type: application/json; charset=utf-8
MS-RequestId: ca7c39f7-1a80-43bc-90d8-ee7d1cad3831
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
X-Locale: en-US

{
    "id": "6e7aa601-629e-461b-8933-0898c3cc3c7c",
    "offerId": "DZH318Z0BXWC:0001:DZH318Z0BMJX",
    "offerName": "offer Name",
    "friendlyName": "friendly Name",
    "quantity": 1,
    "customTermEndDate": "2019-01-09T00:21:45.9263727",
    "unitType": "License(s)",
    "hasPurchasableAddons": false,
    "creationDate": "2019-01-04T01:00:12.6647304Z",
    "effectiveStartDate": "2019-01-09T00:21:45.9263727+00:00",
    "commitmentEndDate": "2019-02-08T00:21:45.9263727+00:00",
    "status": "active",
    "autoRenewEnabled": true,
    "scheduledNextTermInstructions": { 
      "product": { 
         "productId":  "DG7GMGF0DVSV", 
         "skuId":  "000P", 
         "availabilityId":  "DG7GMGF0F3Q9", 
         "billingCycle":  "Annual", 
         "termDuration":  "P3Y",
         "promotionId": "39NFJQT1PFPJ:000H:39NFJQT1Q5DK"
        }, 
      "quantity":  1 
      "customTermEndDate": "2019-01-09T00:21:45.9263727",
     },  // original value = null 
    "isTrial": false,
    "billingType": "license",
    "billingCycle": "monthly",
    "termDuration": "P1M",
    "refundOptions": [{
        "type": "Full",
        "expiresAt": "2019-01-10T00:21:45.9263727+00:00"
    }],
    "isMicrosoftProduct": false,
    "partnerId": "",
    "contractType": "subscription",
    "publisherName": "publisher Name",
    "orderId": "ImxjLNL4_fOc-2KoyOxGTZcrlIquzls11",
    "attributes": {"objectType": "Subscription"},
}