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:
Creare un'istanza di un oggetto Cart.
Creare un elenco di oggetti CartLineItem che rappresentano le offerte di base e assegnare l'elenco alla proprietà LineItems del carrello.
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.
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.
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:
Creare un carrello con un nuovo CartLineItem contenente l'ID sottoscrizione nella proprietà ProvisioningContext con la chiave "ParentSubscriptionId".
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 | Sì | GUID formattato con ID cliente che identifica il cliente. |
Intestazioni delle richieste
Per altre informazioni, vedi Intestazioni REST del Centro per i partner.
Testo 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 | Sì | 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: 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 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: 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"
}
}