Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : Espace partenaires | Espace partenaires géré par 21Vianet | Espace partenaires de Microsoft Cloud for US Government
La création d’une commande pour les produits d’instance de machine virtuelle réservée Azure s’applique uniquement aux points suivants :
- Centre de Partenariat
Pour plus d’informations sur ce qui est actuellement disponible pour la vente, consultez les offres partenaires dans le programme Fournisseur de solutions cloud.
Prerequisites
Informations d’identification décrites dans l’authentification de l’Espace partenaires. Ce scénario prend en charge l'authentification avec des identifiants d'application autonomes ainsi que des identifiants combinés application+utilisateur.
ID 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 Compte du client, recherchez l’ID Microsoft dans la section Informations sur le compte client. L’ID Microsoft est identique à l’ID client (customer-tenant-id).Identificateur d’offre.
C#
Pour créer une commande pour un client :
Instanciez un objet Order et définissez la propriété ReferenceCustomerID sur l’ID client pour enregistrer le client.
Créez une liste d’objets OrderLineItem et affectez la liste à la propriété LineItems de l’ordre. Chaque article de ligne de commande contient les informations d’achat d’une offre. Vous devez disposer d’au moins un élément de ligne de commande.
Obtenez une interface pour commander des opérations. Tout d’abord, appelez la méthode IAggregatePartner.Customers.ById avec l’ID client pour identifier le client. Ensuite, récupérez l’interface à partir de la propriété Orders .
Appelez la méthode Create ou CreateAsync et passez l’objet Order.
Pour effectuer l’attestation et inclure d’autres revendeurs, consultez l’exemple suivant d’exemples de demande et de réponse :
Exemple de requête
{
"PartnerOnRecordAttestationAccepted":true,
"lineItems": [
{
"offerId": "CFQ7TTC0LH0Z:0001:CFQ7TTC0K18P",
"quantity": 1,
"lineItemNumber": 0,
"PartnerIdOnRecord": "873452",
"AdditionalPartnerIdsOnRecord":["4847383","873452"]
}
],
"billingCycle": "monthly"
}
Exemple de réponse
{
"id": "5cf72f146967",
"alternateId": "5cf72f146967",
"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,
"partnerIdOnRecord": "873452",
"additionalPartnerIdsOnRecord": [
"4847383",
"873452"
],
"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": []
}
}
}
],
"creationDate": "2021-08-17T18:13:11.3122226Z",
"status": "pending",
"transactionType": "UserPurchase",
"links": {
"self": {
"uri": "/customers/f81d98dd-c2f4-499e-a194-5619e260344e/orders/5cf72f146967",
"method": "GET",
"headers": []
},
"provisioningStatus": {
"uri": "/customers/f81d98dd-c2f4-499e-a194-5619e260344e/orders/5cf72f146967/provisioningstatus",
"method": "GET",
"headers": []
},
"patchOperation": {
"uri": "/customers/f81d98dd-c2f4-499e-a194-5619e260344e/orders/5cf72f146967",
"method": "PATCH",
"headers": []
}
},
"client": {},
"attributes": {
"objectType": "Order"
}
}
IAggregatePartner partnerOperations;
string customerId;
string offerId;
var order = new Order()
{
ReferenceCustomerId = customerId,
LineItems = new List<OrderLineItem>()
{
new OrderLineItem()
{
OfferId = offerId,
FriendlyName = "new offer purchase",
Quantity = 1,
ProvisioningContext = new Dictionary<string, string>
{
{ "subscriptionId", "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f" },
{ "scope", "shared" },
{ "duration", "3Years" }
}
}
}
};
var createdOrder = partnerOperations.Customers.ById(customerId).Orders.Create(order);
Exemple : Application de test de console. Projet : Classe d’exemples sdk de l’Espace partenaires : CreateOrder.cs
Requête REST
Syntaxe de la requête
| Méthode | URI de la requête |
|---|---|
| POST | {baseURL}/v1/customers/{customer-id}/orders HTTP/1.1 |
Paramètres d’URI
Utilisez le paramètre de chemin d’accès suivant pour identifier le client.
| Nom | Type | Obligatoire | Descriptif |
|---|---|---|---|
| customer-id | ficelle | 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 requête
JSON
Ce tableau décrit les propriétés Order dans le corps de la requête.
| Propriété | Type | Obligatoire | Descriptif |
|---|---|---|---|
| pièce d'identité | ficelle | Non | Identificateur de commande fourni lors de la création réussie de l’ordre. |
| referenceCustomerId | ficelle | Non | Identificateur du client. |
| billingCycle | ficelle | Non | Indique la fréquence avec laquelle le partenaire est facturé pour cette commande. Les valeurs prises en charge sont les noms de membres trouvés dans BillingCycleType. La valeur par défaut est « Monthly » ou « OneTime » lors de la création de l’ordre. Ce champ est appliqué lors de la création réussie de l’ordre. |
| lineItems | tableau de ressources OrderLineItem | Oui | Une liste détaillée des offres que le client achète, y compris la quantité. |
| code de devise | ficelle | Non | Lecture seule. Devise utilisée lors du placement de la commande. Appliqué lors de la création réussie de l’ordre. |
| creationDate | datetime | Non | Lecture seule. Date de création de l’ordre, au format date-heure. Appliqué lors de la création réussie de l’ordre. |
| status | ficelle | Non | Lecture seule. État de l’ordre. Les valeurs prises en charge sont les noms de membres trouvés dans OrderStatus. |
| links | OrderLinks | Non | Les liens de ressource correspondant à l’ordre. |
| attributes | ResourceAttributes | Non | Attributs de métadonnées correspondant à l’ordre. |
| PartnerOnRecordAttestationAccepted | Booléen | Oui | Confirme l’achèvement de l’attestation |
OrderLineItem
Ce tableau décrit les propriétés OrderLineItem dans le corps de la requête.
Note
Lors de l’extraction d’un panier via l’API, les éléments de ligne sont traités dans l’ordre dans lequel ils sont placés dans le panier. La commande peut affecter l'éligibilité aux promotions avec les contraintes "New To Offer", s'il y a deux produits du même type dans le panier, l'un avec l'ID promo et l'autre sans (par exemple, avec des conditions différentes). Veillez à placer les éléments de ligne éligibles pour une promotion en premier dans le panier si vous recherchez plusieurs éléments.
| Nom | Type | Obligatoire | Descriptif |
|---|---|---|---|
| lineItemNumber | int | Oui | Chaque élément de ligne de la collection obtient un numéro de ligne unique, comptant jusqu’à 0 à 1. |
| offerId | ficelle | Oui | Identificateur de l’offre. Vérifiez que la disponibilité de l’offre est pour le segment approprié. |
| subscriptionId | ficelle | Non | Identificateur d’abonnement. |
| parentSubscriptionId | ficelle | Non | Optional. ID de l’abonnement parent dans une offre de module complémentaire. S’applique uniquement à PATCH. |
| friendlyName | ficelle | Non | Optional. Nom convivial de l’abonnement défini par le partenaire pour aider à désambiguer. |
| quantité | int | Oui | Nombre de licences pour un abonnement basé sur des licences. |
| customTermEndDate | Date et heure | Non | Date de fin de la première période de facturation du nouvel abonnement. |
| partnerIdOnRecord | ficelle | 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 uniquement (jamais l’ID du fournisseur indirect). Cela garantit une comptabilité appropriée pour les primes incitatives. |
| provisioningContext | Chaîne de<dictionnaire, chaîne> | Non | Informations requises pour l’approvisionnement de certains éléments du catalogue. La propriété provisioningVariables dans une référence SKU indique les propriétés requises pour des éléments spécifiques dans le catalogue. |
| links | OrderLineItemLinks | Non | Lecture seule. Liens de ressource correspondant à l’élément de ligne de commande. |
| attributes | ResourceAttributes | Non | Attributs de métadonnées correspondant à OrderLineItem. |
| renewsTo | Tableau d’objets | Non | Tableau de ressources RenewsTo . |
| AttestationAccepted | bool | Non | Indique l’accord pour les conditions d’offre ou de référence SKU. Obligatoire uniquement pour les offres ou références SkuAttestationProperties ou OfferAttestationProperties enforceAttestation is True. |
| 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. Cette valeur est uniquement applicable aux partenaires qui effectuent des transactions dans les pays/régions européens. |
| scheduledNextTermInstructions | objet | Non | Définit les instructions de terme suivantes pour un abonnement d’évaluation. Les partenaires peuvent spécifier la durée du terme, la fréquence de facturation et la quantité que l’abonnement payant correspondant comporte lors du renouvellement. |
Note
Le partnerIdOnRecord ne doit être fourni que lorsqu’un fournisseur indirect passe une commande pour le compte d’un revendeur indirect. Il est utilisé pour stocker l’ID partenaire du revendeur indirect uniquement (jamais l’ID du fournisseur indirect).
RenewsTo
Ce tableau décrit les propriétés RenewsTo dans le corps de la demande pour les offres de la Place de marché Microsoft.
| Propriété | Type | Obligatoire | Descriptif |
|---|---|---|---|
| termDuration | ficelle | Non | Représentation ISO 8601 de la durée du renouvellement. Les valeurs prises en charge actuelles sont P1M (1 mois) et P1Y (1 an). |
ScheduledNextTermInstructions
Ce tableau décrit les propriétés `scheduledNextTermInstructions` dans le corps de requête pour les offres d’essai basées sur une licence de New Commerce Experience (NCE). Si aucune valeur n’est spécifiée, les essais sont renouvelés en abonnements payants avec une période annuelle, une facturation mensuelle et 25 licences.
| Propriété | Type | Obligatoire | Descriptif |
|---|---|---|---|
| produit | tableau | Non | Un tableau qui précise l'offre à laquelle un abonnement d'essai se renouvelle, ainsi que la durée et la fréquence de facturation de l'abonnement payant. |
| quantité | int | Non | Quantité de licence que l’abonnement payant correspondant a après que l’offre d’évaluation soit renouvelée. |
Produit
Ce tableau décrit les propriétés productTerm dans le corps de la demande pour les offres d’évaluation basées sur des licences NCE. Si aucune valeur n’est spécifiée dans ce tableau, les essais sont renouvelés dans les abonnements payants avec une période annuelle, une facturation mensuelle.
| Propriété | Type | Obligatoire | Descriptif |
|---|---|---|---|
| ID de produit | ficelle | Non | Un GUID mis en forme pour représenter le produit de l’abonnement payant dans lequel la version d’évaluation se renouvèle. |
| skuId | ficelle | Non | GUID formaté pour représenter la référence SKU de l'abonnement payant dans lequel l'essai est renouvelé. |
| availabilityId | ficelle | Non | Un GUID formaté pour indiquer la disponibilité de l'abonnement payant dans lequel la version d’évaluation est convertie lors du renouvellement. |
| billingCycle | ficelle | Non | La fréquence de facturation de l’abonnement payant correspondant après le renouvellement de la période d'essai. |
| termDuration | ficelle | Non | Durée de l'abonnement payant correspondant après le renouvellement de l'offre d'essai. |
Exemple de requête
POST https://api.partnercenter.microsoft.com/v1/customers/b0d70a69-4c42-4b27-b17b-91a835d8686a/orders HTTP/1.1
Authorization: Bearer <token>
Host: api.partnercenter.microsoft.com
Content-Length: 691
Content-Type: application/json
{
"BillingCycle": "one_time",
"CurrencyCode": "USD",
"LineItems": [
{
"LineItemNumber": 0,
"ProvisioningContext": {
"subscriptionId": "cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
"scope": "shared",
"duration": "1Year"
},
"OfferId": "DZH318Z0BQ4B:0047:DZH318Z0DSM8",
"FriendlyName": "A_sample_Azure_RI",
"Quantity": 1
}
]
}
// request example where some renewal values for an NCE license-based trial are specified
http
POST https://api.partnercenter.microsoft.com/v1/customers/b0d70a69-4c42-4b27-b17b-91a835d8686a/orders HTTP/1.1
Authorization: Bearer <token>
Host: api.partnercenter.microsoft.com
Content-Length: 486
Content-Type: application/json
{
"lineItems": [
{
"id": 0,
"catalogItemId": "CFQ7TTC0LCHC:0003:CFQ7TTC0XCQC",
"quantity": 25,
"currencyCode": "USD",
"billingCycle": "none",
"termDuration": "P1M",
"promotionId": null,
"provisioningContext": {},
"customTermEndDate": null,
"scheduledNextTermInstructions": {
"product": {
"billingCycle": "monthly",
"termDuration": "P1M"
}
}
}
],
"partnerOnRecordAttestationAccepted": true
}
Réponse REST
Si elle réussit, la méthode retourne une ressource Order dans le corps de la réponse.
Si l’ordre contient un ou plusieurs abonnements, les valeurs d’ID d’abonnement respectives apparaissent uniquement dans la réponse REST si les abonnements correspondants sont provisionnés au moment de l’appel d’API. L’approvisionnement des abonnements se produit de manière asynchrone et, par conséquent, les valeurs d’ID d’abonnement peuvent ne pas toujours être visibles dans la réponse REST de l’appel de commande Créer. Toutefois, une fois que les abonnements respectifs sont approvisionnés, leurs valeurs d’ID d’abonnement sont accessibles via les appels d’API Get Orders et Get Order by ID.
Réussite de la réponse et codes d’erreur
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 les codes d’erreur de l’Espace partenaires.
Exemple de réponse
{
"id": "Cs_jyTxubLpvdJXdo8xcQZN6I2RsLrgZ1",
"referenceCustomerId": "b0d70a69-4c42-4b27-b17b-91a835d8686a",
"billingCycle": "one_time",
"currencyCode": "USD",
"lineItems": [
{
"lineItemNumber": 0,
"offerId": "84A03D81-6B37-4D66-8D4A-FAEA24541538",
"friendlyName": "A_sample_Azure_RI",
"quantity": 1,
"links": {
"sku": {
"uri": "/products/DZH318Z0BQ4B/skus/0047?country=US",
"method": "GET",
"headers": []
}
}
} ],
"creationDate": "2018-03-15T22:30:02.085152Z",
"status": "pending",
"links": {
"provisioningStatus": {
"uri": "/customers/b0d70a69-4c42-4b27-b17b-91a835d8686a/orders/Cs_jyTxubLpvdJXdo8xcQZN6I2RsLrgZ1/provisioningstatus",
"method": "GET",
"headers": []
},
"self": {
"uri": "/customers/b0d70a69-4c42-4b27-b17b-91a835d8686a/orders/Cs_jyTxubLpvdJXdo8xcQZN6I2RsLrgZ1",
"method": "GET",
"headers": []
}
},
"attributes": {
"objectType": "Order"
}
}
// response content for an order containing an NCE license-based trial
{
"id": "99d3777b-61da-4c95-aefa-203c248c4180",
"creationTimestamp": "2025-02-04T22:22:36.7924103Z",
"lastModifiedTimestamp": "2025-02-04T22:22:36.7924109Z",
"expirationTimestamp": "2025-02-11T22:23:34.5190698Z",
"lastModifiedUser": "b5109661-56c5-45ed-9447-f67463458a97",
"status": "Active",
"lineItems": [
{
"id": 0,
"catalogItemId": "CFQ7TTC0LCHC:0003:CFQ7TTC0XCQC",
"quantity": 25,
"currencyCode": "USD",
"billingCycle": "none",
"termDuration": "P1M",
"provisioningContext": {},
"orderGroup": "0",
"pricing": {
"listPrice": 0.0,
"discountedPrice": 0.0,
"proratedPrice": 0.0,
"price": 0.0,
"extendedPrice": 0.0
},
"scheduledNextTermInstructions": {
"product": {
"productId": "CFQ7TTC0LCHC",
"skuId": "0002",
"availabilityId": "CFQ7TTC0XL82",
"billingCycle": "monthly",
"termDuration": "P1M"
},
"quantity": 25
}
}
],
"links": {
"self": {
"uri": "/customers/81e78b53-9aa8-44e7-a041-3b15272d8f84/carts/99d3777b-61da-4c95-aefa-203c248c4180",
"method": "GET",
"headers": []
}
},
"attributes": {
"objectType": "Cart"
}
}