Share via


Acheter une extension d’abonnement

S’applique à : Espace partenaires | Espace partenaires géré par 21Vianet | Espace partenaires de Microsoft Cloud for US Government

Comment acheter un module complémentaire à un abonnement existant.

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 des informations d’identification d’application et d’utilisateur autonomes.

  • ID du client (customer-tenant-id). Si vous ne connaissez pas l’ID du client, vous pouvez le rechercher dans l’Espace 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 d’abonnement. Il s’agit de l’abonnement existant pour lequel acheter une offre complémentaire.

  • ID d’offre qui identifie l’offre complémentaire à acheter.

Achat d’un module complémentaire via du code

Lorsque vous achetez un module complémentaire à un abonnement, vous mettez à jour la commande d’abonnement d’origine avec la commande du module complémentaire. Dans ce qui suit, customerId est l’ID client, subscriptionId est l’ID d’abonnement et addOnOfferId est l’ID d’offre pour le module complémentaire.

Voici les étapes à suivre :

  1. Obtenez une interface pour les opérations de l’abonnement.

    var subscriptionOperations = partnerOperations.Customers.ById(customerId).Subscriptions.ById(subscriptionId);
    
  2. Utilisez cette interface pour instancier un objet d’abonnement. Cela vous permet d’obtenir les détails de l’abonnement parent, y compris l’ID de commande.

    var parentSubscription = subscriptionOperations.Get();
    
  3. Instanciez un nouvel objet Order . Cette commande instance est utilisée pour mettre à jour la commande d’origine utilisée pour acheter l’abonnement. Ajoutez un élément sur une seule ligne à l’ordre qui représente le module complémentaire.

    var orderToUpdate = new Order()
    {
        ReferenceCustomerId = customerId,
        LineItems = new List<OrderLineItem>()
        {
            new OrderLineItem()
            {
                LineItemNumber = 0,
                OfferId = addOnOfferId,
                FriendlyName = "Some friendly name",
                Quantity = 2,
                ParentSubscriptionId = subscriptionId
            }
        }
    };
    
  4. Mettez à jour la commande d’origine de l’abonnement avec la nouvelle commande pour le module complémentaire.

    Order updatedOrder = partnerOperations.Customers.ById(customerId).Orders.ById(parentSubscription.OrderId).Patch(orderToUpdate);
    

C#

Pour acheter un module complémentaire, commencez par obtenir une interface pour les opérations d’abonnement en appelant la méthode IAggregatePartner.Customers.ById avec l’ID client pour identifier le client, et la méthode Subscriptions.ById pour identifier l’abonnement qui a l’offre de module complémentaire. Utilisez cette interface pour récupérer les détails de l’abonnement en appelant Get. Les détails de l’abonnement contiennent l’ID de commande de la commande d’abonnement, qui est l’ordre à mettre à jour avec le module complémentaire.

Ensuite, instanciez un nouvel objet Order et remplissez-le avec une seule instance LineItem qui contient les informations permettant d’identifier le module complémentaire, comme indiqué dans l’extrait de code suivant. Vous allez utiliser ce nouvel objet pour mettre à jour l’ordre d’abonnement avec le module complémentaire. Enfin, appelez la méthode Patch pour mettre à jour la commande d’abonnement, après avoir d’abord identifié le client avec IAggregatePartner.Customers.ById et la commande avec Orders.ById.

// IAggregatePartner partnerOperations;
// string customerId;
// string subscriptionId;
// string addOnOfferId;

// Get an interface to the operations for the subscription.
var subscriptionOperations = partnerOperations.Customers.ById(customerId).Subscriptions.ById(subscriptionId);

// Get the parent subscription details.
var parentSubscription = subscriptionOperations.Get();

// In order to buy an add-on subscription for this offer, we need to patch/update the order through which the base offer was purchased
// by creating an order object with a single line item which represents the add-on offer purchase.
var orderToUpdate = new Order()
{
    ReferenceCustomerId = customerId,
    LineItems = new List<OrderLineItem>()
    {
        new OrderLineItem()
        {
            LineItemNumber = 0,
            OfferId = addOnOfferId,
            FriendlyName = "Some friendly name",
            Quantity = 2,
            ParentSubscriptionId = subscriptionId
        }
    }
};

// Update the order to apply the add on purchase.
Order updatedOrder = partnerOperations.Customers.ById(customerId).Orders.ById(parentSubscription.OrderId).Patch(orderToUpdate);

Exemple : Application de test console. Project: Partner Center SDK Samples Class: AddSubscriptionAddOn.cs

Demande REST

Syntaxe de la requête

Méthode URI de demande
PATCH {baseURL}/v1/customers/{customer-tenant-id}/orders/{order-id} HTTP/1.1

Paramètres URI

Utilisez les paramètres suivants pour identifier le client et la commande.

Nom Type Obligatoire Description
customer-tenant-id guid O La valeur est un ID client au format GUID qui identifie le client.
order-id guid O Identificateur de commande.

En-têtes de requête

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

Corps de demande

Les tableaux suivants décrivent les propriétés dans le corps de la demande.

JSON

Nom Type Obligatoire Description
Id string N ID de commande.
ReferenceCustomerId chaîne O ID du client.
LineItems tableau d’objets O Tableau d’objets OrderLineItem .
CreationDate string N Date à laquelle la commande a été créée, au format date/heure.
Attributs object N Contient « ObjectType » : « Order ».

OrderLineItem

Nom Type Obligatoire Description
LineItemNumber nombre O Numéro d’élément de ligne, commençant par 0.
OfferId chaîne O ID d’offre du module complémentaire.
SubscriptionId string N ID de l’abonnement au module complémentaire acheté.
ParentSubscriptionId chaîne O ID de l’abonnement parent qui contient l’offre de module complémentaire.
FriendlyName string N Nom convivial de cet élément de ligne.
Quantité nombre O Nombre de licences.
PartnerIdOnRecord chaîne N PartnerID du partenaire d’enregistrement.
Attributs object N Contient « ObjectType » : « OrderLineItem ».

Exemple de requête

PATCH https://api.partnercenter.microsoft.com/v1/customers/4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04/orders/CF3B0E37-BE0B-4CDD-B584-D1A97D98A922 HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: 17a2658e-d2cc-439b-a2f0-2aefd9344fbc
MS-CorrelationId: 60efdd24-17ef-4080-9b02-4fc315f916ff
X-Locale: en-US
Content-Type: application/json
Host: api.partnercenter.microsoft.com
Content-Length: 414
Expect: 100-continue

{
    "Id": null,
    "ReferenceCustomerId": "4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04",
    "LineItems": [{
            "LineItemNumber": 0,
            "OfferId": "2828BE95-46BA-4F91-B2FD-0BEF192ECF60",
            "SubscriptionId": null,
            "ParentSubscriptionId": "1C2B75C1-74A5-472A-A729-7F8CEFC477F9",
            "FriendlyName": "Some friendly name",
            "Quantity": 2,
            "PartnerIdOnRecord": null,
            "Attributes": {
                "ObjectType": "OrderLineItem"
            }
        }
    ],
    "CreationDate": null,
    "Attributes": {
        "ObjectType": "Order"
    }
}

Réponse REST

Si elle réussit, cette méthode retourne l’ordre d’abonnement mis à jour 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 trace réseau pour lire ce code, le type d’erreur et des paramètres supplémentaires. Pour obtenir la liste complète, consultez Codes d’erreur de l’Espace partenaires.

Exemple de réponse

HTTP/1.1 200 OK
Content-Length: 1135
Content-Type: application/json; charset=utf-8
MS-CorrelationId: 60efdd24-17ef-4080-9b02-4fc315f916ff
MS-RequestId: 17a2658e-d2cc-439b-a2f0-2aefd9344fbc
MS-CV: WtFy3zI8V0u2lnT9.0
MS-ServerId: 020021921
Date: Wed, 25 Jan 2017 23:01:08 GMT

{
    "id": "cf3b0e37-be0b-4cdd-b584-d1a97d98a922",
    "referenceCustomerId": "4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04",
    "billingCycle": "none",
    "lineItems": [{
            "lineItemNumber": 0,
            "offerId": "195416C1-3447-423A-B37B-EE59A99A19C4",
            "subscriptionId": "1C2B75C1-74A5-472A-A729-7F8CEFC477F9",
            "friendlyName": "new offer purchase",
            "quantity": 5,
            "links": {
                "subscription": {
                    "uri": "/customers/4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04/subscriptions/1C2B75C1-74A5-472A-A729-7F8CEFC477F9",
                    "method": "GET",
                    "headers": []
                }
            }
        }, {
            "lineItemNumber": 1,
            "offerId": "2828BE95-46BA-4F91-B2FD-0BEF192ECF60",
            "subscriptionId": "968BA1CF-C146-4ADF-A300-308DCF718EEE",
            "friendlyName": "Some friendly name",
            "quantity": 2,
            "links": {
                "subscription": {
                    "uri": "/customers/4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04/subscriptions/968BA1CF-C146-4ADF-A300-308DCF718EEE",
                    "method": "GET",
                    "headers": []
                }
            }
        }
    ],
    "creationDate": "2017-01-25T14:53:12.093-08:00",
    "links": {
        "self": {
            "uri": "/customers/4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04/orders/cf3b0e37-be0b-4cdd-b584-d1a97d98a922",
            "method": "GET",
            "headers": []
        }
    },
    "attributes": {
        "etag": "eyJpZCI6ImNmM2IwZTM3LWJlMGItNGNkZC1iNTg0LWQxYTk3ZDk4YTkyMiIsInZlcnNpb24iOjJ9",
        "objectType": "Order"
    }
}