Partager via


Créer un panier avec des modules complémentaires à une commande client

Vous pouvez acheter des modules complémentaires via un panier. Pour plus d’informations sur ce qui est actuellement disponible pour la vente, consultez les offres partenaires dans le programme fournisseur de solutions Cloud.

Remarque

Les nouvelles expériences commerciales pour les services basés sur des licences incluent de nombreuses nouvelles fonctionnalités et sont disponibles pour tous les Fournisseur de solutions Cloud (CSP). Pour plus d’informations, consultez la Vue d’ensemble des nouvelles expériences commerciales.

Les nouveaux paniers de commerce avec des modules complémentaires sont différents des offres traditionnelles basées sur des licences. Les nouveaux modules complémentaires commerciaux sont achetés de la même façon que les offres de base, ils n’utilisent pas la propriété addonItems . Cette rubrique inclut des exemples de demande et de réponse spécifiquement pour une nouvelle référence SKU de produit basée sur le commerce avec une référence SKU de produit complémentaire.

Remarque

Les paniers expirent 7 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).

C#

Un panier permet l’achat d’une offre de base et de ses modules complémentaires correspondants. Procédez comme suit pour créer un panier :

  1. Instanciez un objet Cart.

  2. Créez une liste d’objets CartLineItem qui représentent les offres de base et affectez la liste à la propriété LineItems du panier.

  3. Sous l’élément de ligne de panier de chaque offre de base, renseignez la liste des AddOnItems avec d’autres objets CartLineItem qui représentent chacun un module complémentaire qui sera acheté sur cette offre de base.

  4. Obtenez une interface pour les opérations de panier à l’aide d’IAggregatePartner pour appeler la méthode ICustomerCollection.ById avec l’ID client pour identifier le client, puis récupérer l’interface à partir de la propriété Cart.

  5. Enfin, appelez la méthode Create ou CreateAsync pour créer le panier.

Exemple en code 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);

Suivez ces étapes pour créer un panier qui permet l’achat de modules complémentaires sur des abonnements de base existants :

  1. Créez un panier avec un nouveau CartLineItem contenant l’ID d’abonnement dans la propriété ProvisioningContext avec la clé « ParentSubscriptionId ».

  2. Appelez la méthode Create ou 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);

Demande REST

Syntaxe de la requête

Méthode URI de demande
POST {baseURL}/v1/customers/{customer-id}/carts HTTP/1.1

Paramètre d’URI

Utilisez le paramètre de chemin d’accès suivant pour identifier le client.

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

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 Description
id string Identificateur unique d’un élément de ligne de panier. Appliqué lors de la création réussie du panier.
catalogId string Identificateur de l’élément de catalogue.
friendlyName string facultatif. Nom convivial de l’élément défini par le partenaire pour aider à lever l’ambiguïté.
quantité int Nombre de licences ou d’instances.
currencyCode string Code devise.
billingCycle Object Type de cycle de facturation défini pour la période actuelle.
participants Liste des paires de chaînes d’objet Collection partnerId on Record (PartnerID) sur l’achat.
provisioningContext Chaîne de<dictionnaire, chaîne> Contexte utilisé pour l’approvisionnement de l’offre.
orderGroup string Groupe pour indiquer quels éléments peuvent être placés ensemble.
addonItems Liste des objets CartLineItem Collection d’éléments de ligne de panier pour les modules complémentaires qui seront achetés vers l’abonnement de base qui résulte de l’achat de l’élément de ligne de panier parent. Cette propriété est uniquement destinée aux paniers basés sur des licences traditionnelles, les nouvelles licences commerciales incluent des modules complémentaires en tant qu’offres basées sur des licences. Les éléments new-commerce n’utilisent pas cette propriété addonItems .
error Object Appliqué après la création du panier en cas d’erreur.

Exemple de demande (nouvel abonnement de base) pour les licences traditionnelles

L’exemple REST suivant montre comment créer un panier avec des éléments complémentaires pour un nouvel abonnement de 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: f73baf70-bbc3-43d0-8b29-dffa08ff9511

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

Exemple de demande (nouvel abonnement de base) pour un nouveau panier commercial pour une offre de base avec un module complémentaire

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

Exemple de demande (abonnement de base existant) pour les licences traditionnelles

L’exemple REST suivant montre comment ajouter des modules complémentaires à un abonnement de base existant. Cet exemple s’applique uniquement aux licences traditionnelles, et non aux nouveaux commerces.

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: 182474ba-7303-4d0f-870a-8c7fba5ccc4b

{
    "LineItems": [
        {
            "Id":0,
            "CatalogItemId":"C94271D8-B431-4A25-A3C5-A57737A1C909",
            "Quantity":1,
            "BillingCycle":"annual",
            "ProvisioningContext":{"ParentSubscriptionId":"97555B61-7461-477A-A98C-9C76148783E4"}
        }
    ]
}

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 fournie avec un code d’état HTTP qui indique la réussite ou l’échec et plus d’informations de débogage. 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 (nouvel abonnement de base) pour les licences traditionnelles

HTTP/1.1 201 Created
Content-Length: 958
Content-Type: application/json
MS-CorrelationId: f73baf70-bbc3-43d0-8b29-dffa08ff9511
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"
    }
}

Exemple de réponse (abonnement de base existant) pour les licences traditionnelles

HTTP/1.1 201 Created
Content-Length: 707
Content-Type: application/json
MS-CorrelationId: 182474ba-7303-4d0f-870a-8c7fba5ccc4b
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"
    }
}

Exemple de réponse pour une nouvelle offre de base basée sur une licence commerciale et un module complémentaire

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