Condividi tramite


Aggiornare un carrello

Come aggiornare un ordine per un cliente in un carrello.

Nota, i carrelli scadono sette 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).

  • ID carrello per un carrello esistente.

C#

Per aggiornare un ordine per un cliente, ottenere il carrello usando il metodo Get() passando gli ID cliente e carrello usando la funzione ById(). Apportare le modifiche necessarie al carrello. Chiamare ora il metodo Put usando gli ID cliente e carrello usando il metodo ById().

Infine, chiamare il metodo Put() o PutAsync() per creare l'ordine.

IAggregatePartner partnerOperations;
string customerId;
string cartId;

var cart = partnerOperations.Customers.ById(customerId).Cart.ById(cartId).Get();

cart.LineItems.ToArray()[0].Quantity++;

var updatedCart = partnerOperations.Customers.ById(customerId).Cart.ById(cartId).Put(cart);

Per completare l'attestazione e includere altri rivenditori, vedere l'esempio seguente.

Esempio di API - Eseguire il check-out del carrello

{
    "orders": [
        {
            "id": "f76c6b7f449d",
            "alternateId": "f76c6b7f449d",
            "referenceCustomerId": "f81d98dd-c2f4-499e-a194-5619e260344e",
            "billingCycle": "monthly",
            "currencyCode": "USD",
            "currencySymbol": "$",
            "lineItems": [
                {
                    "lineItemNumber": 0,
                    "offerId": "CFQ7TTC0LH0Z:0001:CFQ7TTC0K18P",
                    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
                    "termDuration": "P1M",
                    "transactionType": "New",
                    "friendlyName": "AI Builder Capacity add-on",
                    "quantity": 1,
                    "links": {
                        "product": {
                            "uri": "/products/CFQ7TTC0LH0Z?country=US",
                            "method": "GET",
                            "headers": []
                        },
                        "sku": {
                            "uri": "/products/CFQ7TTC0LH0Z/skus/0001?country=US",
                            "method": "GET",
                            "headers": []
                        },
                        "availability": {
                            "uri": "/products/CFQ7TTC0LH0Z/skus/0001/availabilities/CFQ7TTC0K18P?country=US",
                            "method": "GET",
                            "headers": []
                        }
                    }
                },
                {
                    "lineItemNumber": 1,
                    "offerId": "CFQ7TTC0LFLS:0002:CFQ7TTC0KDLJ",
                    "subscriptionId": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
                    "termDuration": "P1Y",
                    "transactionType": "New",
                    "friendlyName": "Azure Active Directory Premium P1",
                    "quantity": 2,
                    "partnerIdOnRecord": "517285",
                    "additionalPartnerIdsOnRecord": 
                        "5357564",
                        "5357563"
                    ],
                 
   "links": {
                        "product": {
                            "uri": "/products/CFQ7TTC0LFLS?country=US",
                            "method": "GET",
                            "headers": []
                        },
                        "sku": {
                            "uri": "/products/CFQ7TTC0LFLS/skus/0002?country=US",
                            "method": "GET",
                            "headers": []
                        },
                        "availability": {
                            "uri": "/products/CFQ7TTC0LFLS/skus/0002/availabilities/CFQ7TTC0KDLJ?country=US",
                            "method": "GET",
                            "headers": []
                        }
                    }
                }
            ],
            "creationDate": "2021-08-18T07:52:23.1921872Z",
            "status": "pending",
            "transactionType": "UserPurchase",
            "links": {
                "self": {
                    "uri": "/customers/f81d98dd-c2f4-499e-a194-5619e260344e/orders/f76c6b7f449d",
                    "method": "GET",
                    "headers": []
                },
                "provisioningStatus": {
                    "uri": "/customers/f81d98dd-c2f4-499e-a194-5619e260344e/orders/f76c6b7f449d/provisioningstatus",
                    "method": "GET",
                    "headers": []
                },
                "patchOperation": {
                    "uri": "/customers/f81d98dd-c2f4-499e-a194-5619e260344e/orders/f76c6b7f449d",
                    "method": "PATCH",
                    "headers": []
                }
            },
            "client": {},
            "attributes": {
                "objectType": "Order"
            }
        }
    ],
    "attributes": {
        "objectType": "CartCheckoutResult"
    }
}

Richiesta REST

Sintassi della richiesta

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

Parametri URI

Usare i parametri di percorso seguenti per identificare il cliente e specificare il carrello da aggiornare.

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

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 Obbligatorio Descrizione
id string No Identificatore univoco per una voce del carrello. Applicato al completamento della creazione del carrello.
catalogId string Identificatore dell'elemento del catalogo.
friendlyName string No (Facoltativo). Nome descrittivo dell'elemento definito dal partner per evitare ambiguità.
promotionId string No (Facoltativo). La maggior parte delle promozioni NCE verrà applicata automaticamente, ma per le promozioni facoltative (ad esempio Bridge to the Cloud 2) da applicare a una voce del carrello, i partner devono includere l'ID promozione nella richiesta di aggiunta al carrello.
quantity int Numero di licenze o istanze.
currencyCode string No Il codice valuta.
billingCycle Object Tipo di ciclo di fatturazione impostato per il periodo corrente.
participants Elenco di coppie di stringhe oggetto No Raccolta di partecipanti all'acquisto.
provisioningContext Stringa dizionario<, stringa> No Contesto utilizzato per il provisioning dell'offerta.
orderGroup string No Gruppo per indicare quali elementi possono essere posizionati insieme.
Errore Object No Applicato dopo la creazione del carrello in un errore.
AdditionalPartnerIdsOnRecord Stringa No Quando un provider indiretto inserisce un ordine per conto di un rivenditore indiretto, popolare questo campo con l'ID partner solo del rivenditore indiretto aggiuntivo (mai l'ID del provider indiretto). Gli incentivi non sono applicabili per questi altri rivenditori. È possibile immettere solo un massimo di cinque rivenditori indiretti. Si tratta solo di partner applicabili che effettuano transazioni all'interno di paesi/aree geografiche UE/EFTA.

Esempio di richiesta

PUT /v1/customers/d6bf25b7-e0a8-4f2d-a31b-97b55cfc774d/carts/65faf57b-0205-47ee-92b3-08dcf233ea73/ HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: 4fa6dad6-a89f-4875-8247-8294a10ae1cf
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
X-Locale: en-US
MS-PartnerCenter-Client: Partner Center .NET SDK
Content-Type: application/json
Host: api.partnercenter.microsoft.com
Content-Length: 496
Expect: 100-continue

{
    {
        "Id":"b4c8fdea-cbe4-4d17-9576-13fcacbf9605",
        "CreationTimestamp":"2018-03-15T17:15:02.3840528Z",
        "LastModifiedTimestamp":"2018-03-15T17:15:02.3840528Z",
        "ExpirationTimestamp":"0001-01-01T00:00:00",
        "LastModifiedUser":"2713ccd7-ea3b-470a-9cfb-451d5d0482cc",
        "LineItems":[
            {
                "Id":0,
                "CatalogItemId":"DG7GMGF0DWTL:0001:DG7GMGF0DSJB",
                "FriendlyName":"A_sample_Azure_RI",
                "Quantity":2,
                "BillingCycle":"one_time",
                "ProvisioningContext": {
                    "SubscriptionId": "cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
                    "Scope": "shared",
                    "Duration": "1Year"
                }
            }
        ],
    }
}

Importante

A partire da giugno 2023, la versione più recente di .NET SDK del Centro per i partner 3.4.0 è ora archiviata. È possibile scaricare la versione dell'SDK da GitHub, insieme a un file leggimi che contiene informazioni utili.

I partner sono invitati a continuare a usare le API REST del Centro per i partner.

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 ne indica l'esito e con informazioni di debug aggiuntive. 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.

Risposta di esempio

HTTP/1.1 201 Created
Content-Length: 764
Content-Type: application/json; charset=utf-8
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
MS-RequestId: 4fa6dad6-a89f-4875-8247-8294a10ae1cf
X-Locale: en-US,en-US
MS-CV: sF/wRa2ih0CzbABc.0
MS-ServerId: 000001
Date: Thu, 15 Mar 2018 17:15:01 GMT
{
    "id": "b4c8fdea-cbe4-4d17-9576-13fcacbf9605",
    "creationTimestamp": "2018-03-15T17:15:02.3840528Z",
    "lastModifiedTimestamp": "2018-03-15T17:15:02.3840528Z",
    "lastModifiedUser": "2713ccd7-ea3b-470a-9cfb-451d5d0482cc",
    "lineItems": [
        {
            "id": 0,
            "catalogItemId": "DG7GMGF0DWTL:0001:DG7GMGF0DSJB",
            "friendlyName": "A_sample_Azure_RI",
            "quantity": 2,
            "currencyCode": "USD",
            "billingCycle": "one_time",
            "ProvisioningContext": {
                "subscriptionId": "cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
                "scope": "shared",
                "duration": "1Year"
            }
            "orderGroup": "0"
        }
    ],
    "links": {
        "self": {
            "uri": "/v1/customers/d6bf25b7-e0a8-4f2d-a31b-97b55cfc774d/carts/b4c8fdea-cbe4-4d17-9576-13fcacbf9605/",
            "method": "GET",
            "headers": []
        }
    },
    "attributes": {
        "objectType": "Cart"
    }
}