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:
Pobierz interfejs do operacji dla subskrypcji.
var subscriptionOperations = partnerOperations.Customers.ById(customerId).Subscriptions.ById(subscriptionId);
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();
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 } } };
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"
}
}