Planowanie zmian dla nowej subskrypcji handlowej przy użyciu interfejsów API Centrum partnerskiego

Dotyczy: Centrum partnerskie

W tym artykule opisano, jak za pomocą interfejsu API Centrum partnerskiego zaplanować zmiany dla nowej subskrypcji handlowej, które mają miejsce tylko podczas odnawiania.

Uwaga

Nowe środowiska handlowe dla usług opartych na licencjach obejmują wiele nowych funkcji i są dostępne dla wszystkich Dostawca rozwiązań w chmurze (CSP). Aby uzyskać więcej informacji, zobacz omówienie nowych środowisk handlowych.

Utworzenie zaplanowanych zmian umożliwia automatyczne modyfikowanie subskrypcji po następnym odnowieniu. Planując zmiany, możesz zwiększyć lub zmniejszyć liczbę licencji, zmodyfikować okres rozliczeniowy i częstotliwość, a nawet wybrać uaktualnienie jednostki SKU. Planowanie zmian umożliwia wprowadzanie modyfikacji subskrypcji podczas odnawiania, a nie natychmiast w trakcie bieżącego okresu.

Ważne

Jeśli przed datą odnowienia wprowadzisz zmianę w połowie okresu (natychmiastowego), zostaną usunięte wszystkie zaplanowane zmiany, które zostały wcześniej zaplanowane.

Wymagania wstępne

  • Poświadczenia zgodnie z opisem w temacie Uwierzytelnianie w Centrum partnerskim. Ten scenariusz obsługuje uwierzytelnianie zarówno przy użyciu autonomicznych poświadczeń aplikacji, jak i aplikacji i użytkownika.

  • Identyfikator klienta (customer-tenant-id). Jeśli nie znasz identyfikatora klienta, możesz wyszukać go w Centrum partnerskim, wybierając obszar roboczy Klienci , a następnie klienta z listy klienta, a następnie pozycję Konto. Na stronie Konto klienta poszukaj identyfikatora Microsoft w sekcji Informacje o koncie klienta. Identyfikator Microsoft jest taki sam jak identyfikator klienta (customer-tenant-id).

  • Identyfikator subskrypcji.

  • Automatyczne odnawianie jest włączone w ramach subskrypcji.

Metoda Centrum partnerskiego

Aby zaplanować zmiany subskrypcji w Centrum partnerskim:

  1. Wybierz klienta.

  2. Wybierz subskrypcję, dla której chcesz zaplanować zmiany.

  3. Włącz automatyczne odnawianie.

  4. Wybierz pozycję Zarządzaj odnawianiem.

  5. Wprowadź modyfikacje subskrypcji w celu odnowienia.

  6. Wybierz pozycję Ok, aby zamknąć panel boczny.

  7. wybierz pozycję Prześlij , aby zapisać zmiany.

Uwaga

Odnowienia są przetwarzane po ostatnim dniu okresu, począwszy od 12:00 czasu UTC następnego dnia. Odnowienia są przetwarzane w kolejce i przetwarzanie może potrwać do 24 godzin.

C#

Aby zaplanować zmiany dla subskrypcji klienta:

  1. Pobierz subskrypcję według identyfikatora.

  2. Utwórz obiekt ScheduledNextTermInstructions i ustaw go na właściwość subskrypcji.

  3. Wywołaj metodę Patch(), aby zaktualizować subskrypcję za pomocą zaplanowanych zmian.

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);

Żądanie REST

Składnia żądania

Method Identyfikator URI żądania
PATCH {baseURL}/v1/customers/{customer-tenant-id}/subscriptions/{subscription-id} HTTP/1.1

Parametr identyfikatora URI

W tej tabeli wymieniono wymagane parametry zapytania do wywołania interfejsu API.

Nazwisko Type Wymagania opis
identyfikator dzierżawy klienta Identyfikator guid Y Identyfikator GUID odpowiadający klientowi.
identyfikator subskrypcji Identyfikator guid Y Identyfikator GUID odpowiadający subskrypcji.

Nagłówki żądań

Aby uzyskać więcej informacji, zobacz Nagłówki REST Centrum partnerskiego.

Treść żądania

Pełny zasób subskrypcji jest wymagany w treści żądania z zdefiniowaną właściwościąscheduledNextTermInstructions. Aby zaplanować zmiany dla subskrypcji, upewnij się, że właściwość AutoRenewEnabled jest ustawiona na true.

Pole Typ Wymagania opis
scheduledNextTermInstructions object Y Definiuje instrukcje dotyczące następnego terminu dla subskrypcji. Właściwość zawiera product obiekt i quantity pole.

Przykład żądania

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: ec8f62e5-1d92-47e9-8d5d-1924af105f2c
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"},
}

Odpowiedź REST

Jeśli żądanie zakończy się pomyślnie, ta metoda zwraca zaktualizowane właściwości zasobu Subskrypcja w treści odpowiedzi.

Kody powodzenia i błędów odpowiedzi

Każda odpowiedź zawiera kod stanu HTTP, który wskazuje powodzenie lub niepowodzenie oraz inne informacje o debugowaniu. Użyj narzędzia do śledzenia sieci, aby odczytać ten kod, typ błędu i inne parametry. Aby uzyskać pełną listę, zobacz Kody błędów.

Przykład odpowiedzi

HTTP/1.1 200 OK
Content-Length: 1322
Content-Type: application/json; charset=utf-8
MS-RequestId: ca7c39f7-1a80-43bc-90d8-ee7d1cad3831
MS-CorrelationId: ec8f62e5-1d92-47e9-8d5d-1924af105f2c
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"},
}