Udostępnij za pośrednictwem


Zakup dodatku do subskrypcji

Dotyczy: Centrum partnerskie | Centrum partnerskie obsługiwane przez firmę 21Vianet | Centrum partnerskie dla Microsoft Cloud for US Government

Jak kupić dodatek do istniejącej subskrypcji.

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. Jest to istniejąca subskrypcja, dla której należy kupić ofertę dodatku.

  • Identyfikator oferty identyfikujący ofertę dodatku do zakupu.

Kupowanie dodatku za pośrednictwem kodu

Po zakupie dodatku do subskrypcji aktualizujesz oryginalne zamówienie subskrypcji przy użyciu zamówienia dodatku. W poniższym identyfikatorze customerId jest identyfikator klienta, subscriptionId jest identyfikatorem subskrypcji, a addOnOfferId jest identyfikatorem oferty dodatku.

Oto konkretne kroki:

  1. Pobierz interfejs do operacji dla subskrypcji.

    var subscriptionOperations = partnerOperations.Customers.ById(customerId).Subscriptions.ById(subscriptionId);
    
  2. Użyj tego interfejsu, aby utworzyć wystąpienie obiektu subskrypcji. Spowoduje to pobranie szczegółów subskrypcji nadrzędnej, w tym identyfikatora zamówienia.

    var parentSubscription = subscriptionOperations.Get();
    
  3. Utwórz wystąpienie nowego obiektu Order . To wystąpienie zamówienia służy do aktualizowania oryginalnego zamówienia użytego do zakupu subskrypcji. Dodaj element jednowierszowy do kolejności reprezentującej dodatek.

    var orderToUpdate = new Order()
    {
        ReferenceCustomerId = customerId,
        LineItems = new List<OrderLineItem>()
        {
            new OrderLineItem()
            {
                LineItemNumber = 0,
                OfferId = addOnOfferId,
                FriendlyName = "Some friendly name",
                Quantity = 2,
                ParentSubscriptionId = subscriptionId
            }
        }
    };
    
  4. Zaktualizuj oryginalne zamówienie subskrypcji przy użyciu nowego zamówienia dodatku.

    Order updatedOrder = partnerOperations.Customers.ById(customerId).Orders.ById(parentSubscription.OrderId).Patch(orderToUpdate);
    

C#

Aby kupić dodatek, zacznij od uzyskania interfejsu do operacji subskrypcji przez wywołanie metody IAggregatePartner.Customers.ById z identyfikatorem klienta w celu zidentyfikowania klienta oraz metody Subscriptions.ById w celu zidentyfikowania subskrypcji z ofertą dodatku. Użyj tego interfejsu , aby pobrać szczegóły subskrypcji, wywołując metodę Pobierz. Szczegóły subskrypcji zawierają identyfikator zamówienia subskrypcji, który jest zamówieniem do zaktualizowania za pomocą dodatku.

Następnie utwórz wystąpienie nowego obiektu Order i wypełnij go pojedynczym wystąpieniem LineItem zawierającym informacje umożliwiające zidentyfikowanie dodatku, jak pokazano w poniższym fragmencie kodu. Ten nowy obiekt zostanie użyty do zaktualizowania zamówienia subskrypcji za pomocą dodatku. Na koniec wywołaj metodę Patch , aby zaktualizować zamówienie subskrypcji, po pierwszym zidentyfikowaniu klienta za pomocą elementu IAggregatePartner.Customers.ById i zamówienia za pomocą parametru Orders.ById.

// IAggregatePartner partnerOperations;
// string customerId;
// string subscriptionId;
// string addOnOfferId;

// Get an interface to the operations for the subscription.
var subscriptionOperations = partnerOperations.Customers.ById(customerId).Subscriptions.ById(subscriptionId);

// Get the parent subscription details.
var parentSubscription = subscriptionOperations.Get();

// In order to buy an add-on subscription for this offer, we need to patch/update the order through which the base offer was purchased
// by creating an order object with a single line item which represents the add-on offer purchase.
var orderToUpdate = new Order()
{
    ReferenceCustomerId = customerId,
    LineItems = new List<OrderLineItem>()
    {
        new OrderLineItem()
        {
            LineItemNumber = 0,
            OfferId = addOnOfferId,
            FriendlyName = "Some friendly name",
            Quantity = 2,
            ParentSubscriptionId = subscriptionId
        }
    }
};

// Update the order to apply the add on purchase.
Order updatedOrder = partnerOperations.Customers.ById(customerId).Orders.ById(parentSubscription.OrderId).Patch(orderToUpdate);

Przykład: aplikacja testowa konsoli. Projekt: Klasa przykładów zestawu SDK Centrum partnerskiego: AddSubscriptionAddOn.cs

Żądanie REST

Składnia żądania

Metoda Identyfikator URI żądania
PATCH {baseURL}/v1/customers/{customer-tenant-id}/orders/{order-id} HTTP/1.1

Parametry identyfikatora URI

Użyj następujących parametrów, aby zidentyfikować klienta i zamówienie.

Nazwa Typ Wymagane Opis
customer-tenant-id Identyfikator guid Y Wartość to identyfikator GUID w formacie customer-tenant-id , który identyfikuje klienta.
order-id Identyfikator guid Y Identyfikator zamówienia.

Nagłówki żądań

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

Treść żądania

W poniższych tabelach opisano właściwości w treści żądania.

Zamówienie

Nazwa Typ Wymagane Opis
Id ciąg N Identyfikator zamówienia.
ReferenceCustomerId ciąg Y Identyfikator klienta.
LineItems tablica obiektów Y Tablica obiektów OrderLineItem .
Creationdate ciąg N Data utworzenia zamówienia w formacie daty i godziny.
Atrybuty object N Zawiera wartość "ObjectType": "Order".

OrderLineItem

Nazwa Typ Wymagane Opis
LineItemNumber liczba Y Numer elementu wiersza, rozpoczynający się od 0.
Identyfikator oferty ciąg Y Identyfikator oferty dodatku.
SubscriptionId ciąg N Identyfikator zakupionej subskrypcji dodatku.
ParentSubscriptionId ciąg Y Identyfikator subskrypcji nadrzędnej, która ma ofertę dodatku.
FriendlyName ciąg N Przyjazna nazwa tego elementu wiersza.
Liczba liczba Y Liczba licencji.
PartnerIdOnRecord ciąg N PartnerID partnera rekordu.
Atrybuty object N Zawiera wartość "ObjectType": "OrderLineItem".

Przykład żądania

PATCH https://api.partnercenter.microsoft.com/v1/customers/4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04/orders/CF3B0E37-BE0B-4CDD-B584-D1A97D98A922 HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: 17a2658e-d2cc-439b-a2f0-2aefd9344fbc
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
X-Locale: en-US
Content-Type: application/json
Host: api.partnercenter.microsoft.com
Content-Length: 414
Expect: 100-continue

{
    "Id": null,
    "ReferenceCustomerId": "4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04",
    "LineItems": [{
            "LineItemNumber": 0,
            "OfferId": "2828BE95-46BA-4F91-B2FD-0BEF192ECF60",
            "SubscriptionId": null,
            "ParentSubscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
            "FriendlyName": "Some friendly name",
            "Quantity": 2,
            "PartnerIdOnRecord": null,
            "Attributes": {
                "ObjectType": "OrderLineItem"
            }
        }
    ],
    "CreationDate": null,
    "Attributes": {
        "ObjectType": "Order"
    }
}

Odpowiedź REST

W przypadku powodzenia ta metoda zwraca zaktualizowaną kolejność subskrypcji 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 dodatkowe informacje o debugowaniu. Użyj narzędzia do śledzenia sieci, aby odczytać ten kod, typ błędu i dodatkowe parametry. Aby uzyskać pełną listę, zobacz Kody błędów Centrum partnerskiego.

Przykład odpowiedzi

HTTP/1.1 200 OK
Content-Length: 1135
Content-Type: application/json; charset=utf-8
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
MS-RequestId: 17a2658e-d2cc-439b-a2f0-2aefd9344fbc
MS-CV: WtFy3zI8V0u2lnT9.0
MS-ServerId: 020021921
Date: Wed, 25 Jan 2017 23:01:08 GMT

{
    "id": "cf3b0e37-be0b-4cdd-b584-d1a97d98a922",
    "referenceCustomerId": "4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04",
    "billingCycle": "none",
    "lineItems": [{
            "lineItemNumber": 0,
            "offerId": "195416C1-3447-423A-B37B-EE59A99A19C4",
            "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
            "friendlyName": "new offer purchase",
            "quantity": 5,
            "links": {
                "subscription": {
                    "uri": "/customers/4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
                    "method": "GET",
                    "headers": []
                }
            }
        }, {
            "lineItemNumber": 1,
            "offerId": "2828BE95-46BA-4F91-B2FD-0BEF192ECF60",
            "subscriptionId": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
            "friendlyName": "Some friendly name",
            "quantity": 2,
            "links": {
                "subscription": {
                    "uri": "/customers/4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
                    "method": "GET",
                    "headers": []
                }
            }
        }
    ],
    "creationDate": "2017-01-25T14:53:12.093-08:00",
    "links": {
        "self": {
            "uri": "/customers/4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04/orders/cf3b0e37-be0b-4cdd-b584-d1a97d98a922",
            "method": "GET",
            "headers": []
        }
    },
    "attributes": {
        "etag": "eyJpZCI6ImNmM2IwZTM3LWJlMGItNGNkZC1iNTg0LWQxYTk3ZDk4YTkyMiIsInZlcnNpb24iOjJ9",
        "objectType": "Order"
    }
}