Mettre à jour un panier

Comment mettre à jour une commande pour un client dans un panier.

Notez que les paniers expirent sept jours après la création initiale.

Prérequis

  • Informations d’identification, comme décrit dans Authentification auprès de l’Espace partenaires. Ce scénario prend en charge l’authentification avec les informations d’identification d’application et d’application+utilisateur autonomes.

  • ID du client (customer-tenant-id). Si vous ne connaissez pas l’ID du client, vous pouvez le rechercher dans l’Espace de partenaires en sélectionnant l’espace de travail Clients, puis le client dans la liste des clients, puis compte. Dans la page du compte du client, recherchez l’ID Microsoft dans la section Informations sur le compte client. L’ID Microsoft est le même que l’ID de client (customer-tenant-id).

  • ID de panier pour un panier existant.

C#

Pour mettre à jour une commande pour un client, obtenez le panier à l’aide de la méthode Get() en transmettant les ID de client et de panier à l’aide de la fonction ById(). Apportez les modifications nécessaires au panier. Appelez maintenant la méthode Put à l’aide des ID de client et de panier à l’aide de la méthode ById().

Enfin, appelez la méthode Put() ou PutAsync() pour créer l’ordre.

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);

Pour effectuer l’attestation et inclure d’autres revendeurs, consultez l’exemple suivant.

Exemple d’API - Extraire le panier

{
    "orders": [
        {
            "id": "f76c6b7f449d",
            "alternateId": "f76c6b7f449d",
            "referenceCustomerId": "f81d98dd-c2f4-499e-a194-5619e260344e",
            "billingCycle": "monthly",
            "currencyCode": "USD",
            "currencySymbol": "$",
            "lineItems": [
                {
                    "lineItemNumber": 0,
                    "offerId": "CFQ7TTC0LH0Z:0001:CFQ7TTC0K18P",
                    "subscriptionId": "ebc0beef-7ffb-4044-c074-16f324432139",
                    "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": "261bac40-7d88-4327-dfa3-dacd09222d62",
                    "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"
    }
}

Demande REST

Syntaxe de la requête

Méthode URI de requête
PUT {baseURL}/v1/customers/{customer-id}/carts/{cart-id} HTTP/1.1

Paramètres d’URI

Utilisez les paramètres de chemin d’accès suivants pour identifier le client et spécifiez le panier à mettre à jour.

Nom Type Requise Description
id-client string Oui ID client au format GUID qui identifie le client.
cart-id string Oui ID de panier au format GUID qui identifie le panier.

En-têtes de requête

Pour plus d’informations, consultez En-têtes REST de l’Espace Partenaires.

Corps de la demande

Ce tableau décrit les propriétés cart dans le corps de la requête.

Propriété Type Requise Description
id string Non Identificateur de panier fourni lors de la création réussie du panier.
creationTimeStamp Date/Heure Non Date de création du panier, au format date-heure. Appliqué lors de la création réussie du panier.
lastModifiedTimeStamp Date/Heure Non Date de la dernière mise à jour du panier, au format date-heure. Appliqué lors de la création réussie du panier.
expirationTimeStamp Date/Heure Non Date d’expiration du panier, au format date-heure. Appliqué lors de la création réussie du panier.
lastModifiedUser string Non Utilisateur qui a mis à jour le panier pour la dernière fois. Appliqué lors de la création réussie du panier.
lineItems Tableau d’objets Oui Tableau de ressources CartLineItem .

Ce tableau décrit les propriétés CartLineItem dans le corps de la requête.

Propriété Type Requise Description
id string Non Identificateur unique d’un élément de ligne de panier. Appliqué lors de la création réussie du panier.
catalogId string Oui Identificateur de l’élément de catalogue.
friendlyName string Non facultatif. Nom convivial de l’élément défini par le partenaire pour aider à lever l’ambiguïté.
promotionId string Non facultatif. La plupart des promotions NCE s’appliquent automatiquement, mais pour les promotions facultatives (telles que Bridge to the Cloud 2) à appliquer à un élément de ligne de panier, les partenaires doivent inclure l’ID de promotion dans l’ajout à la demande de panier.
quantité int Oui Nombre de licences ou d’instances.
currencyCode string Non Code devise.
billingCycle Object Oui Type de cycle de facturation défini pour la période actuelle.
participants Liste des paires de chaînes d’objet Non Collection de participants sur l’achat.
provisioningContext Chaîne de<dictionnaire, chaîne> Non Contexte utilisé pour l’approvisionnement de l’offre.
orderGroup string Non Groupe pour indiquer quels éléments peuvent être placés ensemble.
error Object Non Appliqué une fois le panier créé dans une erreur.
AdditionalPartnerIdsOnRecord Chaîne Non Lorsqu’un fournisseur indirect place une commande pour le compte d’un revendeur indirect, renseignez ce champ avec l’ID partenaire du revendeur indirect supplémentaire uniquement (jamais l’ID du fournisseur indirect). Les primes incitatives ne s’appliquent pas à ces autres revendeurs. Seuls un maximum de cinq revendeurs indirects peuvent être entrés. Il s’agit uniquement des partenaires qui effectuent des transactions dans les pays/régions de l’UE/AELE.

Exemple de requête

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: 0e93c70c-977a-4a88-9580-7cf084c73286
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": "3D5ECED6-1151-44C7-AEE6-70A4BB725666",
                    "Scope": "shared",
                    "Duration": "1Year"
                }
            }
        ],
    }
}

Important

Depuis juin 2023, la dernière version du Kit de développement logiciel (SDK) .NET de l’Espace partenaires version 3.4.0 est désormais archivée. Vous pouvez télécharger la version du SDK à partir de GitHub, ainsi qu’un fichier lisezmoi contenant des informations utiles.

Les partenaires sont encouragés à continuer à utiliser les API REST de l’Espace partenaires.

Réponse REST

Si elle réussit, cette méthode retourne la ressource Cart remplie dans le corps de la réponse.

Codes d’erreur et de réussite de la réponse

Chaque réponse est accompagnée d’un code d’état HTTP qui indique la réussite ou l’échec ainsi que des informations de débogage supplémentaires. Utilisez un outil de suivi réseau pour lire ce code, le type d’erreur et d’autres paramètres. Pour obtenir la liste complète, consultez Codes d’erreur.

Exemple de réponse

HTTP/1.1 201 Created
Content-Length: 764
Content-Type: application/json; charset=utf-8
MS-CorrelationId: 0e93c70c-977a-4a88-9580-7cf084c73286
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": "3D5ECED6-1151-44C7-AEE6-70A4BB725666",
                "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"
    }
}