Partager via


Créer une commande pour un client d’un revendeur indirect

Comment créer une commande pour un client d’un revendeur indirect.

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 de l’application et de l’utilisateur uniquement.

  • 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 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).

  • Identificateur de l’offre à acheter.

  • Identificateur du locataire du revendeur indirect.

C#

Pour créer une commande pour un client d’un revendeur indirect :

  1. Obtenez une collection des revendeurs indirects qui ont une relation avec le partenaire connecté.

  2. Obtenez une variable locale pour l’élément de la collection qui correspond à l’ID de revendeur indirect. Cette étape vous aide à accéder à la propriété MpnId du revendeur lorsque vous créez la commande.

  3. Instanciez un objet Order et définissez la propriété ReferenceCustomerID sur l’identificateur du client afin d’enregistrer le client.

  4. Créez une liste d’objets OrderLineItem et affectez la liste à la propriété LineItems de l’ordre. Chaque élément de ligne de commande contient les informations d’achat relatives à une offre. Veillez à remplir la propriété PartnerIdOnRecord dans chaque élément de ligne avec l’ID partenaire du revendeur indirect. Vous devez disposer d’au moins un élément de ligne de commande.

  5. Obtenez une interface pour les opérations de commande en appelant la méthode IAggregatePartner.Customers.ById avec l’ID client pour identifier le client, puis récupérez l’interface à partir de la propriété Orders.

  6. Appelez la méthode Create ou CreateAsync pour créer l’ordre.

Exemple en code C#

// IAggregatePartner partnerOperations;
// string customerId;
// string offerId;
// string indirectResellerId;

// Get the indirect resellers with a relationship to the signed-in partner.
var indirectResellers = partnerOperations.Relationships.Get(PartnerRelationshipType.IsIndirectCloudSolutionProviderOf);

// Find the matching reseller in the collection.
var selectedIndirectReseller = (indirectResellers != null && indirectResellers.Items.Any()) ?
    indirectResellers.Items.FirstOrDefault(reseller => reseller.Id.Equals(indirectResellerId, StringComparison.OrdinalIgnoreCase)) :
    null;

// Prepare the order and populate the PartnerIdOnRecord with the reseller's Partner Id.
var order = new Order()
{
    ReferenceCustomerId = customerId,
    LineItems = new List<OrderLineItem>()
    {
        new OrderLineItem()
        {
            OfferId = offerId,
            FriendlyName = "New offer purchase.",
            Quantity = 5,
            PartnerIdOnRecord = selectedIndirectReseller != null ? selectedIndirectReseller.MpnId : null
        }
    }
};

// Place the order.
var createdOrder = partnerOperations.Customers.ById(customerId).Orders.Create(order);

Exemple : Projet d’application de test console : Classe d’exemples sdk de l’Espace partenaires : PlaceOrderForCustomer.cs

Demande REST

Syntaxe de la requête

Méthode URI de demande
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 Requise Description
id-client string Oui Chaîne 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

Ordre

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

Nom Type Requise Description
id string Non Identificateur de commande fourni lors de la création réussie de l’ordre.
referenceCustomerId string Oui L’identificateur du client.
billingCycle string Non Fréquence à laquelle le partenaire est facturé pour cette commande. La valeur par défaut est « Mensuelle » et est appliquée lors de la création réussie de l’ordre. Les valeurs prises en charge sont les noms des membres trouvés dans BillingCycleType. Remarque : la fonctionnalité de facturation annuelle n’est pas encore en disponibilité générale. La prise en charge de la facturation annuelle sera bientôt disponible.
lineItems tableau d’objets Oui Tableau des ressources OrderLineItem.
creationDate string Non Date à laquelle la commande a été créée, au format date/heure. Appliqué lors de la création réussie de l’ordre.
attributs object Non Contient « ObjectType » : « Order »

OrderLineItem

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

Nom Type Requise Description
lineItemNumber int Oui Chaque élément de ligne dans la collection obtient un numéro de ligne unique, allant de 0 à nombre-1.
offerId string Oui Identificateur de l’offre.
subscriptionId string Non Identificateur de l’abonnement.
parentSubscriptionId string Non facultatif. ID de l’abonnement parent dans une offre de module complémentaire. S’applique uniquement à PATCH.
friendlyName string Non facultatif. 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 licence.
partnerIdOnRecord string 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 des incitations. L’échec de la fourniture de l’ID partenaire du revendeur n’entraîne pas l’échec de l’ordre. Toutefois, le revendeur n’est pas enregistré et, par conséquent, les calculs incitatives peuvent ne pas inclure la vente.
attributs object Non Contient « ObjectType » :"OrderLineItem ».

Exemple de requête

POST https://api.partnercenter.microsoft.com/v1/customers/c501c3c4-d776-40ef-9ecf-9cefb59442c1/orders HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: 02109f46-3ff2-4be4-9f37-b2eb6d58d542
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
X-Locale: en-US
Content-Type: application/json
Host: api.partnercenter.microsoft.com
Content-Length: 410
Expect: 100-continue

{
    "Id": null,
    "ReferenceCustomerId": "c501c3c4-d776-40ef-9ecf-9cefb59442c1",
    "BillingCycle": "unknown",
    "LineItems": [{
            "LineItemNumber": 0,
            "OfferId": "DB2E705F-B82A-4024-A3D5-D88E12F2DB35",
            "SubscriptionId": null,
            "ParentSubscriptionId": null,
            "FriendlyName": "New offer purchase.",
            "Quantity": 5,
            "PartnerIdOnRecord": "4847383",
            "Attributes": {
                "ObjectType": "OrderLineItem"
            }
        }
    ],
    "CreationDate": null,
    "Attributes": {
        "ObjectType": "Order"
    }
}

Réponse REST

Si elle réussit, le corps de la réponse contient la ressource Order renseignée.

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 les codes d’erreur de l’Espace partenaires.

Exemple de réponse

HTTP/1.1 201 Created
Content-Length: 831
Content-Type: application/json; charset=utf-8
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
MS-RequestId: 02109f46-3ff2-4be4-9f37-b2eb6d58d542
MS-CV: Nd3Oum/L5EywtKQK.0
MS-ServerId: 020021921
Date: Mon, 10 Apr 2017 23:02:24 GMT

{
    "id": "3eddcac6-63b2-4c40-b0b6-f47e18301492",
    "referenceCustomerId": "c501c3c4-d776-40ef-9ecf-9cefb59442c1",
    "billingCycle": "monthly",
    "lineItems": [{
            "lineItemNumber": 0,
            "offerId": "DB2E705F-B82A-4024-A3D5-D88E12F2DB35",
            "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
            "friendlyName": "New offer purchase.",
            "quantity": 5,
            "partnerIdOnRecord": "4847383",
            "links": {
                "subscription": {
                    "uri": "/customers/c501c3c4-d776-40ef-9ecf-9cefb59442c1/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
                    "method": "GET",
                    "headers": []
                }
            }
        }
    ],
    "creationDate": "2017-04-10T16:02:25.983-07:00",
    "links": {
        "self": {
            "uri": "/customers/c501c3c4-d776-40ef-9ecf-9cefb59442c1/orders/3eddcac6-63b2-4c40-b0b6-f47e18301492",
            "method": "GET",
            "headers": []
        }
    },
    "attributes": {
        "etag": "eyJpZCI6IjNlZGRjYWM2LTYzYjItNGM0MC1iMGI2LWY0N2UxODMwMTQ5MiIsInZlcnNpb24iOjF9",
        "objectType": "Order"
    }
}