Leggere in inglese

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 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 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 come descritto nell'autenticazione del Partner Center . Questo scenario supporta l'autenticazione con le credenziali dell'App autonoma e App+Utente.

  • ID cliente (customer-tenant-id). Se non si conosce l'ID del cliente, è possibile cercarlo in Centro per i partner selezionando l'area di lavoro clienti, quindi il cliente dall'elenco dei clienti, quindi Account. Nella pagina Account del cliente, cercare il ID Microsoft nella sezione informazioni sull'account cliente. L'ID Microsoft corrisponde all'ID 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, compilare l'elenco di AddOnItems con altre voci CartLineItem che rappresentano un componente aggiuntivo da acquistare con quell'offerta di base.

  4. Ottenere un'interfaccia per le operazioni del carrello utilizzando 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 di 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 Cart con un nuovo CartLineItem che contiene l'ID della 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 path seguente per identificare il cliente.

Nome Digitare Obbligatorio Descrizione
id cliente corda Un identificativo cliente con formato GUID che identifica il cliente.

Intestazioni della richiesta

Per altre informazioni, vedere intestazioni REST del Partner Center.

Corpo della richiesta

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

Proprietà Digitare Obbligatorio Descrizione
Id corda No Identificatore del carrello fornito al completamento della creazione del carrello.
creationTimeStamp DateTime No Data di creazione del carrello, in formato data/ora. Applicato al completamento della creazione del carrello.
lastModifiedTimeStamp Data e Ora No Data dell'ultimo aggiornamento del carrello, in formato data/ora. Applicato al completamento della creazione del carrello.
marcaTemporaleDiScadenza DateTime No Data di scadenza del carrello, in formato data/ora. Applicato dopo la creazione riuscita del carrello.
lastModifiedUser corda No Utente che ha aggiornato il carrello per ultimo. Applicato dopo la creazione riuscita del carrello.
lineItems Matrice di oggetti Un insieme di risorse CartLineItem.

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

Proprietà Digitare Descrizione
Id corda Identificatore univoco per un elemento nella linea del carrello. Applicato dopo la creazione riuscita del carrello.
catalogId corda Identificatore dell'elemento del catalogo.
nome amichevole corda Opzionale. Nome intuitivo dell'elemento definito dal partner per facilitare la disambiguazione.
quantità Int Numero di licenze o istanze.
codice valuta corda Codice valuta.
ciclo di fatturazione Oggetto Tipo di ciclo di fatturazione impostato per il periodo corrente.
Partecipanti Elenco di coppie oggetto-stringa Raccolta di PartnerId nel registro relativo all'acquisto.
provisioningContext Dizionario<string, string> Contesto utilizzato per la configurazione dell'offerta.
orderGroup corda Gruppo per indicare quali elementi possono essere posizionati insieme.
elementi aggiuntivi Elenco di oggetti CartLineItem Raccolta delle voci del carrello per i componenti aggiuntivi che verranno acquistati per la sottoscrizione di base, in seguito all'acquisto della voce principale nel carrello. Questa proprietà è destinata solo ai carrelli con licenze tradizionali; i carrelli con licenze per il nuovo commercio includono componenti aggiuntivi come opzioni basate su offerte. Gli elementi di new-commerce non usano questa proprietà addonItems.
errore Oggetto 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: aaaa0000-bb11-2222-33cc-444444dddddd

{
    "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: bbbb1111-cc22-3333-44dd-555555eeeeee

{
    "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 esito positivo 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, vedere 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: aaaa0000-bb11-2222-33cc-444444dddddd
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: bbbb1111-cc22-3333-44dd-555555eeeeee
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"
    }
}