Поделиться через


Планирование изменений для новой коммерческой подписки с помощью API Центра партнеров

Область применения: Центр партнеров

В этой статье описывается, как использовать API Центра партнеров для планирования изменений для новой коммерческой подписки, которая выполняется только при продлении. Этот API поддерживает новые лицензированные и программные подписки на основе коммерческой коммерции.

Примечание.

Новые возможности коммерческой торговли для служб на основе лицензий включают множество новых возможностей и доступны для всех поставщик облачных решений (ПОСТАВЩИКОВ УСЛУГ). Дополнительные сведения см . в обзоре новых коммерческих возможностей.

Создание запланированных изменений позволяет автоматически изменять подписку при следующем продлении. Запланируя изменения, вы можете увеличить или уменьшить количество лицензий, изменить срок и частоту выставления счетов, а также даже обновить номер SKU. Планирование изменений позволяет вносить изменения в подписку при продлении, а не сразу в течение текущего срока.

Внимание

Если вы вносите изменение в середине срока (немедленно) до даты продления, все запланированные изменения, которые ранее были запланированы на продление, удаляются.

Необходимые компоненты

  • Учетные данные, описанные в статье о проверке подлинности в Центре партнеров. Этот сценарий поддерживает проверку подлинности с помощью автономных учетных данных приложения и приложения и пользователя.

  • Идентификатор клиента (customer-tenant-id). Если вы не знаете идентификатор клиента, его можно найти в Центре партнеров, выбрав рабочую область "Клиенты" , затем клиент из списка клиентов, а затем учетная запись. На странице "Учетная запись клиента" найдите идентификатор Майкрософт в разделе "Сведения о учетной записи клиента". Идентификатор Майкрософт совпадает с идентификатором клиента (customer-tenant-id).

  • Идентификатор подписки.

  • Автоматическое продление в подписке включено.

Метод Центра партнеров

Чтобы запланировать изменения подписки в Центре партнеров, выполните следующее:

  1. Выберите клиента.

  2. Выберите подписку, для которой нужно запланировать изменения.

  3. Включите автоматическое продление.

  4. Выберите "Управление продлением".

  5. Внесите изменения в подписку, которые будут выполняться при продлении.

  6. Нажмите кнопку "Хорошо", чтобы закрыть боковую панель.

  7. Нажмите кнопку "Отправить ", чтобы сохранить изменения.

Примечание.

Продление обрабатывается после последнего дня срока, начиная с 12:00 в формате UTC на следующий день. Продление обрабатывается в очереди и может занять до 24 часов.

C#

Чтобы запланировать изменения подписки клиента, выполните следующее:

  1. Получение подписки по идентификатору.
  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. Получение подписки по идентификатору.
  2. Получение права на переход для типа соответствия запланированным переходом.
  3. Вызовите метод Patch(), чтобы обновить подписку с запланированными изменениями.

Запрос REST

Синтаксис запроса

Способ URI запроса
PATCH {baseURL}/v1/customers/{customer-tenant-id}/subscriptions/{subscription-id} HTTP/1.1

Параметр универсального кода ресурса

В этой таблице перечислены необходимые параметры запроса для вызова API.

Имя. Type Обязательно Описание
customer-tenant-id guid Y GUID, соответствующий клиенту.
subscription-id guid Y GUID, соответствующий подписке.

Заголовки запросов

Дополнительные сведения см. в статье о заголовках REST Центра партнеров.

Текст запроса

Полный ресурс подписки требуется в тексте запроса с определенным свойством scheduledNextTermInstructions . Чтобы запланировать изменения подписки, убедитесь, что для свойства AutoRenewEnabled задано значение true.

Для идентификатора доступности в конце продажи с предложениями endofSaleWithConversions:

  1. GetTransitionEligibility для возврата CatalogItemID.

    a. Не забудьте задать тип соответствия запланированным требованиям, в противном случае значение по умолчанию немедленно.

  2. Используйте CatalogItemID, чтобы извлечь идентификатор доступности.

Примечание.

Если для определения доступности scheduledNextTerm используется функция GET, и если все условия являются состоянием EOS, вы получите пустой список. Лучший способ определить допустимые пути — вызвать API GetTransitionEligibilty для возврата допустимых параметров.

Поле Тип Обязательно Описание
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"},
}