Acquistare un componente aggiuntivo a un abbonamento
Si applica a: Centro per i partner | Centro per i partner gestito da 21Vianet | Centro per i partner per Microsoft Cloud for US Government
Come acquistare un componente aggiuntivo a una sottoscrizione esistente.
Prerequisiti
Credenziali descritte in Autenticazione del Centro per i partner. Questo scenario supporta l'autenticazione con le credenziali app autonome e app+utente.
ID cliente (
customer-tenant-id
). Se non si conosce l'ID del cliente, è possibile cercarlo nel Centro per i partner selezionando l'area di lavoro Clienti , quindi il cliente dall'elenco dei clienti, quindi Account. Nella pagina dell'account del cliente cerca l'ID Microsoft nella sezione Info account del cliente. L'ID Microsoft corrisponde all'ID cliente (customer-tenant-id
).ID sottoscrizione. Si tratta della sottoscrizione esistente per cui acquistare un'offerta di componente aggiuntivo.
ID offerta che identifica l'offerta del componente aggiuntivo da acquistare.
Acquisto di un componente aggiuntivo tramite codice
Quando si acquista un componente aggiuntivo a una sottoscrizione, si aggiorna l'ordine di sottoscrizione originale con l'ordine per il componente aggiuntivo. Di seguito, customerId è l'ID cliente, subscriptionId è l'ID sottoscrizione e addOnOfferId è l'ID offerta per il componente aggiuntivo.
Di seguito sono riportati i passaggi necessari:
Ottenere un'interfaccia per le operazioni per la sottoscrizione.
var subscriptionOperations = partnerOperations.Customers.ById(customerId).Subscriptions.ById(subscriptionId);
Usare tale interfaccia per creare un'istanza di un oggetto sottoscrizione. Ottiene i dettagli della sottoscrizione padre, inclusi l'ID ordine.
var parentSubscription = subscriptionOperations.Get();
Creare un'istanza di un nuovo oggetto Order . Questa istanza dell'ordine viene usata per aggiornare l'ordine originale usato per acquistare la sottoscrizione. Aggiungere un elemento a riga singola all'ordine che rappresenta il componente aggiuntivo.
var orderToUpdate = new Order() { ReferenceCustomerId = customerId, LineItems = new List<OrderLineItem>() { new OrderLineItem() { LineItemNumber = 0, OfferId = addOnOfferId, FriendlyName = "Some friendly name", Quantity = 2, ParentSubscriptionId = subscriptionId } } };
Aggiornare l'ordine originale per la sottoscrizione con il nuovo ordine per il componente aggiuntivo.
Order updatedOrder = partnerOperations.Customers.ById(customerId).Orders.ById(parentSubscription.OrderId).Patch(orderToUpdate);
C#
Per acquistare un componente aggiuntivo, iniziare ottenendo un'interfaccia alle operazioni di sottoscrizione chiamando il metodo IAggregatePartner.Customers.ById con l'ID cliente per identificare il cliente e il metodo Subscriptions.ById per identificare la sottoscrizione con l'offerta del componente aggiuntivo. Usare tale interfaccia per recuperare i dettagli della sottoscrizione chiamando Get. I dettagli della sottoscrizione contengono l'ID ordine dell'ordine della sottoscrizione, ovvero l'ordine di aggiornamento con il componente aggiuntivo.
Creare quindi un'istanza di un nuovo oggetto Order e popolarla con un'unica istanza lineItem contenente le informazioni per identificare il componente aggiuntivo, come illustrato nel frammento di codice seguente. Questo nuovo oggetto verrà usato per aggiornare l'ordine di sottoscrizione con il componente aggiuntivo. Infine, chiamare il metodo Patch per aggiornare l'ordine di sottoscrizione, dopo aver identificato prima il cliente con IAggregatePartner.Customers.ById e l'ordine con 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);
Esempio: app di test della console. Project: Classe di esempi sdk del Centro per i partner: AddSubscriptionAddOn.cs
Richiesta REST
Sintassi della richiesta
Metodo | URI richiesta |
---|---|
PATCH | {baseURL}/v1/customers/{customer-tenant-id}/orders/{order-id} HTTP/1.1 |
Parametri URI
Usare i parametri seguenti per identificare il cliente e l'ordine.
Nome | Tipo | Obbligatoria | Descrizione |
---|---|---|---|
customer-tenant-id | guid | S | Il valore è un GUID formattato customer-tenant-id che identifica il cliente. |
order-id | guid | S | Identificatore dell'ordine. |
Intestazioni della richiesta
Per altre informazioni, vedi Intestazioni REST del Centro per i partner.
Testo della richiesta
Le tabelle seguenti descrivono le proprietà nel corpo della richiesta.
Ordine
Nome | Tipo | Obbligatoria | Descrizione |
---|---|---|---|
ID | string | N | ID ordine. |
ReferenceCustomerId | string | S | ID cliente. |
LineItems | matrice di oggetti | S | Matrice di oggetti OrderLineItem . |
CreationDate | string | N | Data di creazione dell'ordine, nel formato data-ora. |
Attributi | object | N | Contiene "ObjectType": "Order". |
OrderLineItem
Nome | Tipo | Obbligatoria | Descrizione |
---|---|---|---|
LineItemNumber | d'acquisto | S | Numero di elemento della riga, a partire da 0. |
OfferId | string | S | ID offerta del componente aggiuntivo. |
SubscriptionId | string | N | ID della sottoscrizione del componente aggiuntivo acquistato. |
ParentSubscriptionId | string | S | ID della sottoscrizione padre con l'offerta del componente aggiuntivo. |
FriendlyName | string | N | Nome descrittivo per questa voce. |
Quantità | d'acquisto | S | Numero di licenze. |
PartnerIdOnRecord | string | N | Id partner del partner del record. |
Attributi | object | N | Contiene "ObjectType": "OrderLineItem". |
Esempio di richiesta
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"
}
}
Risposta REST
In caso di esito positivo, questo metodo restituisce l'ordine di sottoscrizione aggiornato nel corpo della risposta.
Codici di errore e di esito della risposta
Ogni risposta viene fornita con un codice di stato HTTP che ne indica l'esito e con informazioni di debug aggiuntive. Usa uno strumento di traccia di rete per leggere il codice, il tipo di errore e parametri aggiuntivi. Per l'elenco completo, vedere Codici di errore del Centro per i partner.
Esempio di risposta
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"
}
}