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 :
Obtenez une interface pour les opérations de l’abonnement.
var subscriptionOperations = partnerOperations.Customers.ById(customerId).Subscriptions.ById(subscriptionId);
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();
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 } } };
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: aaaa0000-bb11-2222-33cc-444444dddddd
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": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"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: aaaa0000-bb11-2222-33cc-444444dddddd
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": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"friendlyName": "new offer purchase",
"quantity": 5,
"links": {
"subscription": {
"uri": "/customers/4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"method": "GET",
"headers": []
}
}
}, {
"lineItemNumber": 1,
"offerId": "2828BE95-46BA-4F91-B2FD-0BEF192ECF60",
"subscriptionId": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
"friendlyName": "Some friendly name",
"quantity": 2,
"links": {
"subscription": {
"uri": "/customers/4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
"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"
}
}