Condividi tramite


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:

  1. Ottenere un'interfaccia per le operazioni per la sottoscrizione.

    var subscriptionOperations = partnerOperations.Customers.ById(customerId).Subscriptions.ById(subscriptionId);
    
  2. 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();
    
  3. 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
            }
        }
    };
    
  4. 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"
    }
}