Condividi tramite


Aggiornare un carrello

Come aggiornare un ordine di un cliente in un carrello.

Nota, i carrelli scadono sette giorni dalla creazione iniziale.

Prerequisiti

  • Credenziali come descritto in autenticazione di Partner Center. 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 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 l'ID Microsoft nella sezione Informazioni sull'account cliente. L'ID Microsoft corrisponde all'ID cliente (customer-tenant-id).

  • Un 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 - Procedere al checkout 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 Digitare Obbligatorio Descrizione
id cliente corda Un ID cliente formattato GUID che identifica il cliente.
cart-id corda Un identificatore del carrello formattato come GUID che identifica il carrello.

Intestazioni della richiesta

Per altre informazioni, vedere intestazioni REST del Centro per i partner.

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 Data e Ora No Data di creazione del carrello, in formato data/ora. Applicato una volta completata la creazione del carrello.
lastModifiedTimeStamp DateTime No Data dell'ultimo aggiornamento del carrello, in formato data/ora. Applicato al completamento della creazione del carrello.
timestamp di scadenza Data e Ora No Data di scadenza del carrello, in formato data/ora. Applicato al completamento della creazione del carrello.
lastModifiedUser corda 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à Digitare Obbligatorio Descrizione
Id corda No Identificatore univoco per un elemento del carrello. Applicato al completamento della creazione del carrello.
catalogId corda Identificatore dell'elemento del catalogo.
friendlyName corda No Opzionale. Nome descrittivo dell'elemento definito dal partner per evitare ambiguità.
promotionId corda No Opzionale. 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.
quantità Int Il numero di licenze o di istanze.
codice valuta corda No Codice valuta.
ciclo di fatturazione Oggetto Tipo di ciclo di fatturazione impostato per il periodo corrente.
Partecipanti Elenco di coppie Oggetto-Stringa No Raccolta di partecipanti all'acquisto.
provisioningContext Stringa<dizionario, stringa> No Contesto utilizzato per la fornitura dell'offerta.
orderGroup corda No Gruppo per indicare quali elementi possono essere posizionati insieme.
errore Oggetto No Applicato dopo la creazione del carrello in un errore.
IdentificatoriPartnerAggiuntiviRegistrati Corda No Quando un provider indiretto inserisce un ordine per conto di un rivenditore indiretto, popola questo campo con il PartnerID del Rivenditore indiretto aggiuntivo solo (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 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

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"
    }
}