Condividi tramite


Creare un carrello con componenti aggiuntivi per un ordine cliente

È possibile acquistare componenti aggiuntivi tramite un carrello. Per altre informazioni su ciò che è attualmente disponibile per la vendita, vedere Offerte dei partner nel programma Cloud Solution Provider.

Nota

Le nuove esperienze commerciali per i servizi basati su licenza includono molte nuove funzionalità e sono disponibili per tutti i provider di soluzioni cloud. Per altre informazioni, vedere la panoramica delle nuove esperienze commerciali.

I nuovi carrelli commerciali con componenti aggiuntivi sono diversi dalle tradizionali offerte basate su licenza. I nuovi componenti aggiuntivi commerciali vengono acquistati allo stesso modo delle offerte di base, non usano la proprietà addonItems . Questo argomento include esempi di richiesta e risposta specifici per un nuovo SKU di prodotto basato sul commercio con uno SKU del prodotto aggiuntivo.

Nota

I carrelli scadono 7 giorni dalla creazione iniziale.

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 del cliente (customer-tenant-id).

C#

Un carrello consente l'acquisto di un'offerta di base e dei relativi componenti aggiuntivi. Per creare un carrello, seguire questa procedura:

  1. Creare un'istanza di un oggetto Cart.

  2. Creare un elenco di oggetti CartLineItem che rappresentano le offerte di base e assegnare l'elenco alla proprietà LineItems del carrello.

  3. Sotto ogni voce del carrello dell'offerta di base, popolare l'elenco di AddOnItems con altri oggetti CartLineItem che ognuno rappresenta un componente aggiuntivo che verrà acquistato in base a tale offerta di base.

  4. Ottenere un'interfaccia per le operazioni del carrello usando IAggregatePartner per chiamare il metodo ICustomerCollection.ById con l'ID cliente per identificare il cliente e quindi recuperare l'interfaccia dalla proprietà Cart.

  5. Chiamare infine il metodo Create o CreateAsync per creare il carrello.

Esempio in C#

// IAggregatePartner partnerOperations;
// string customerId;

var cart = new Cart()
    {
        LineItems = new List<CartLineItem>()
        {
            new CartLineItem()
            {
                Id = 0,
                CatalogItemId = "A_base_offer_ID",
                FriendlyName = "Myofferpurchase",
                Quantity = 3,
                BillingCycle = BillingCycleType.Monthly,
                AddonItems = new List<CartLineItem>
                {
                    new CartLineItem
                    {
                        Id = 1,
                        CatalogItemId = "An_addon_item_ID",
                        BillingCycle = BillingCycleType.Monthly,
                        Quantity = 2,
                    },
                    new CartLineItem
                    {
                        Id = 2,
                        CatalogItemId = "Another_addon_item_ID",
                        BillingCycle = BillingCycleType.Monthly,
                        Quantity = 3
                    }
                }
            }
        }
    };

var createdCart = partnerOperations.Customers.ById(customerId).Carts.Create(cart);

Seguire questa procedura per creare un carrello che consenta l'acquisto di componenti aggiuntivi rispetto alle sottoscrizioni di base esistenti:

  1. Creare un carrello con un nuovo CartLineItem contenente l'ID sottoscrizione nella proprietà ProvisioningContext con la chiave "ParentSubscriptionId".

  2. Chiamare il metodo Create o CreateAsync.

// IAggregatePartner partnerOperations;
// string selectedCustomerId;

var cart = new Cart()
    {
        LineItems = new List<CartLineItem>()
        {
            new CartLineItem()
            {
                Id = 0,
                CatalogItemId = "An_addon_item_ID",
                ProvisioningContext = new Dictionary<string, string>
                {
                    {
                        "ParentSubscriptionId", "An_existing_subscription_Id"
                    }
                },
                Quantity = 1,
                BillingCycle = BillingCycleType.Annual,
            }
        }
    };

var createdCart = partnerOperations.Customers.ById(selectedCustomerId).Carts.Create(cart);

Richiesta REST

Sintassi della richiesta

metodo URI della richiesta
POST {baseURL}/v1/customers/{customer-id}/carts HTTP/1.1

Parametro URI

Usare il parametro di percorso seguente per identificare il cliente.

Nome Digita Obbligatorio Descrizione
customer-id string GUID formattato con ID cliente che identifica il cliente.

Intestazioni delle richieste

Per altre informazioni, vedi Intestazioni REST del Centro per i partner.

Corpo della richiesta

Questa tabella descrive le proprietà del carrello nel corpo della richiesta.

Proprietà Type Obbligatorio Descrizione
ID string No Identificatore del carrello fornito al completamento della creazione del carrello.
creationTimeStamp Data/Ora No Data di creazione del carrello, in formato data/ora. Applicato al completamento della creazione del carrello.
lastModifiedTimeStamp Data/Ora No Data dell'ultimo aggiornamento del carrello, in formato data/ora. Applicato al completamento della creazione del carrello.
expirationTimeStamp Data/Ora No Data di scadenza del carrello, in formato data/ora. Applicato al completamento della creazione del carrello.
lastModifiedUser string No Utente che ha aggiornato il carrello per ultimo. Applicato al completamento della creazione del carrello.
lineItems Matrice di oggetti Matrice di risorse CartLineItem .

Questa tabella descrive le proprietà CartLineItem nel corpo della richiesta.

Proprietà Type Descrizione
ID string Identificatore univoco per una voce del carrello. Applicato al completamento della creazione del carrello.
catalogId string Identificatore dell'elemento del catalogo.
friendlyName string Facoltativo. Nome descrittivo dell'elemento definito dal partner per evitare ambiguità.
quantity int Numero di licenze o istanze.
currencyCode string Il codice valuta.
billingCycle Object Tipo di ciclo di fatturazione impostato per il periodo corrente.
participants Elenco di coppie di stringhe oggetto Raccolta di PartnerId su record (PartnerID) nell'acquisto.
provisioningContext Stringa dizionario<, stringa> Contesto utilizzato per il provisioning dell'offerta.
orderGroup string Gruppo per indicare quali elementi possono essere posizionati insieme.
addonItems Elenco di oggetti CartLineItem Raccolta di articoli del carrello per i componenti aggiuntivi che verranno acquistati verso la sottoscrizione di base risultante dall'acquisto dell'articolo della riga del carrello padre. Questa proprietà è solo per i tradizionali carrelli basati su licenze commerciali basati su licenze includono componenti aggiuntivi come offerte basate su licenza. Gli elementi di new-commerce non usano questa proprietà addonItems .
Errore Object Applicato dopo la creazione del carrello se si verifica un errore.

Esempio di richiesta (nuova sottoscrizione di base) per la licenza tradizionale

Nell'esempio REST seguente viene illustrato come creare un carrello con elementi aggiuntivi per una nuova sottoscrizione di base.

POST https://api.partnercenter.microsoft.com/v1/customers/18ac2950-8ea9-4dfc-92a4-ff4d4cd57796/carts HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: f931348a-6312-47d0-a8dd-31a386dedb8f
MS-CorrelationId: f73baf70-bbc3-43d0-8b29-dffa08ff9511

{
    "LineItems": [
        {
            "Id":0,
            "CatalogItemId":"91FD106F-4B2C-4938-95AC-F54F74E9A239",
            "FriendlyName":"Myofferpurchase",
            "Quantity":3,
            "BillingCycle":"monthly",
            "AddonItems": [
                {
                    "Id":1,
                    "CatalogItemId":"C94271D8-B431-4A25-A3C5-A57737A1C909",
                    "Quantity":2,
                    "BillingCycle":"monthly"
                },
                {
                    "Id":2,
                    "CatalogItemId":"43FCE491-76D1-4BCC-B709-8A288786DBAE",
                    "Quantity":3,
                    "BillingCycle":"monthly"
                }
            ]
        }
    ]
}

Esempio di richiesta (nuova sottoscrizione di base) per un nuovo carrello commerciale per un'offerta di base con un componente aggiuntivo

{
    "LineItems": [
        {
            "Id": 0,
            "CatalogItemId":"CFQ7TTC0LFLX:0001:CFQ7TTC0LB30", - Base
            "Quantity": 20,
            "BillingCycle": "Monthly",
            "TermDuration": "P1M"
        },
        {
            "Id": 1,
            "CatalogItemId":"CFQ7TTC0HDJX:0001:CFQ7TTC0K806", - Add on
            "Quantity": 20,
            "BillingCycle": "Monthly",
            "TermDuration": "P1M"
        }
    ]
}

Esempio di richiesta (sottoscrizione di base esistente) per la licenza tradizionale

Nell'esempio REST seguente viene illustrato come aggiungere componenti aggiuntivi a una sottoscrizione di base esistente. Questo esempio è rilevante solo per le licenze tradizionali, non per il nuovo commercio.

POST https://api.partnercenter.microsoft.com/v1/customers/18ac2950-8ea9-4dfc-92a4-ff4d4cd57796/carts HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: 512a777a-5427-452d-9637-18421387e435
MS-CorrelationId: 182474ba-7303-4d0f-870a-8c7fba5ccc4b

{
    "LineItems": [
        {
            "Id":0,
            "CatalogItemId":"C94271D8-B431-4A25-A3C5-A57737A1C909",
            "Quantity":1,
            "BillingCycle":"annual",
            "ProvisioningContext":{"ParentSubscriptionId":"97555B61-7461-477A-A98C-9C76148783E4"}
        }
    ]
}

Risposta REST

In caso di esito positivo, questo metodo restituisce la risorsa cart popolata nel corpo della risposta.

Codici di errore e di esito della risposta

Ogni risposta viene fornita con un codice di stato HTTP che indica l'esito positivo o negativo e altre informazioni di debug. Usare uno strumento di traccia di rete per leggere questo codice, il tipo di errore e altri parametri. Per l'elenco completo, vedi Codici di errore.

Esempio di risposta (nuova sottoscrizione di base) per la licenza tradizionale

HTTP/1.1 201 Created
Content-Length: 958
Content-Type: application/json
MS-CorrelationId: f73baf70-bbc3-43d0-8b29-dffa08ff9511
MS-RequestId: f931348a-6312-47d0-a8dd-31a386dedb8f
X-Locale: en-US,en-US
Date: Thu, 01 Nov 2018 22:29:05 GMT

{
    "id":"dbe2f8d4-f21d-43e2-9356-cff6387c4ba1",
    "creationTimestamp":"2018-11-01T22:29:03.6900182Z",
    "lastModifiedTimestamp":"2018-11-01T22:29:03.6900182Z",
    "expirationTimestamp":"2018-11-01T22:44:05.0025799Z",
    "lastModifiedUser":"1824b7fc-2fac-4478-b177-66823c40ab75",
    "status":"Active",
    "lineItems": [
        {
            "id":0,
            "catalogItemId":"91FD106F-4B2C-4938-95AC-F54F74E9A239",
            "friendlyName":"Myofferpurchase",
            "quantity":3,
            "currencyCode":"USD",
            "billingCycle":"monthly",
            "orderGroup":"OMS-0",
            "addonItems": [
                {
                    "id":1,
                    "catalogItemId":"C94271D8-B431-4A25-A3C5-A57737A1C909",
                    "quantity":2,
                    "currencyCode":"USD",
                    "billingCycle":"monthly",
                    "orderGroup":"OMS-0"
                },
                {
                    "id":2,
                    "catalogItemId":"43FCE491-76D1-4BCC-B709-8A288786DBAE",
                    "quantity":3,
                    "currencyCode":"USD",
                    "billingCycle":"monthly",
                    "orderGroup":"OMS-0"
                }
            ]
        }
],
    "links": {
        "self": {
            "uri":"/customers/18ac2950-8ea9-4dfc-92a4-ff4d4cd57796/carts/dbe2f8d4-f21d-43e2-9356-cff6387c4ba1",
            "method":"GET",
            "headers":[
            ]
        }
    },
    "attributes": {
        "objectType":"Cart"
    }
}

Esempio di risposta (sottoscrizione di base esistente) per la licenza tradizionale

HTTP/1.1 201 Created
Content-Length: 707
Content-Type: application/json
MS-CorrelationId: 182474ba-7303-4d0f-870a-8c7fba5ccc4b
MS-RequestId: 512a777a-5427-452d-9637-18421387e435
X-Locale: en-US,en-US
Date: Thu, 01 Nov 2018 22:46:18 GMT

{
    "id":"4d927e27-93d1-448b-abe5-819b66ecca22",
    "creationTimestamp":"2018-11-01T22:46:16.2996364Z",
    "lastModifiedTimestamp":"2018-11-01T22:46:16.2996364Z",
    "expirationTimestamp":"2018-11-01T23:01:18.7543264Z",
    "lastModifiedUser":"1824b7fc-2fac-4478-b177-66823c40ab75",
    "status":"Active",
    "lineItems": [
        {
            "id":0,
            "catalogItemId":"C94271D8-B431-4A25-A3C5-A57737A1C909",
            "quantity":1,
            "currencyCode":"USD",
            "billingCycle":"annual",
            "provisioningContext": {
                "parentSubscriptionId":"97555B61-7461-477A-A98C-9C76148783E4"
            },
            "orderGroup":"OMS-0"
        }
    ],
    "links": {
        "self": {
            "uri":"/customers/18ac2950-8ea9-4dfc-92a4-ff4d4cd57796/carts/4d927e27-93d1-448b-abe5-819b66ecca22",
            "method":"GET",
            "headers":[
            ]
        }
    },
    "attributes": {
        "objectType":"Cart"
    }
}

Esempio di risposta per una nuova offerta di base basata su licenza commerciale e componente aggiuntivo

{
    "id": "ea37ea81-efaf-4113-9785-e1c266aea2ed",
    "creationTimestamp": "2022-02-10T16:04:22.4908435Z",
    "lastModifiedTimestamp": "2022-02-10T16:04:22.4908444Z",
    "expirationTimestamp": "2022-02-17T16:04:26.3085755Z",
    "lastModifiedUser": "a7155e79-65e3-42b0-a62a-a41297979782",
    "status": "Active",
    "lineItems": [
        {
            "id": 0,
            "catalogItemId": "CFQ7TTC0LFLX:0001:CFQ7TTC0LB30", - Base
            "quantity": 20,
            "currencyCode": "USD",
            "billingCycle": "monthly",
            "termDuration": "P1M",
            "promotionId": "39NFJQT1PHSN:0008:39NFJQT1Q5J0",
            "provisioningContext": {},
            "orderGroup": "0"
        },
        {
            "id": 1,
            "catalogItemId": "CFQ7TTC0HDJX:0001:CFQ7TTC0K806", - Add on
            "quantity": 20,
            "currencyCode": "USD",
            "billingCycle": "monthly",
            "termDuration": "P1M",
            "provisioningContext": {},
            "orderGroup": "0"
        }
    ],
    "links": {
        "self": {
            "uri": "/customers/3a15e1df-b095-41d4-9029-27a5974c2458/carts/ea37ea81-efaf-4113-9785-e1c266aea2ed",
            "method": "GET",
            "headers": []
        }
    },
    "attributes": {
        "objectType": "Cart"
    }
}