Dela via


Skapa en order för en kund hos en indirekt återförsäljare

Så här skapar du en order för en kund hos en indirekt återförsäljare.

Förutsättningar

  • Autentiseringsuppgifter enligt beskrivningen i PartnerCenter-autentisering. Det här scenariot stöder endast autentisering med App+User-autentiseringsuppgifter.

  • Ett kund-ID (customer-tenant-id). Om du inte känner till kundens ID kan du leta upp det i Partnercenter genom att välja arbetsytan Kunder, sedan kunden från kundlistan och sedan konto. På kundens kontosida letar du efter Microsoft-ID i avsnittet Kundkontoinformation. Microsoft-ID:t är detsamma som kund-ID :t (customer-tenant-id).

  • Erbjudandeidentifieraren för den artikel som ska köpas.

  • Klientidentifieraren för den indirekta återförsäljaren.

C#

Så här skapar du en order för en kund hos en indirekt återförsäljare:

  1. Hämta en samling indirekta återförsäljare som har en relation med den inloggade partnern.

  2. Hämta en lokal variabel till objektet i samlingen som matchar det indirekta reseller-ID:t. Det här steget hjälper dig att komma åt återförsäljarens egenskap MpnId när du skapar ordern.

  3. Instansiera ett Order-objekt och ange egenskapen ReferenceCustomerID som kundidentifierare för att registrera kunden.

  4. Skapa en lista över OrderLineItem objekt och tilldela listan till orderns egenskap LineItems. Varje orderrad innefattar inköpsinformationen för ett erbjudande. Se till att fylla i egenskapen PartnerIdOnRecord i varje radobjekt med PartnerID för den indirekta återförsäljaren. Du måste ha minst ett orderradsobjekt.

  5. Hämta ett gränssnitt för att beställa åtgärder genom att anropa metoden IAggregatePartner.Customers.ById med kund-ID:t för att identifiera kunden och sedan hämta gränssnittet från egenskapen Orders.

  6. Anropa metoden Skapa eller CreateAsync för att skapa ordern.

C#-exempel

// 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);

Exempel: Console-testappProject: Partner Center SDK-exempel Klass: PlaceOrderForCustomer.cs

REST-begäran

Syntax för begäran

Metod Begärd URI
POST {baseURL}/v1/customers/{customer-id}/orders HTTP/1.1

URI-parametrar

Använd följande sökvägsparameter för att identifiera kunden.

Namn Typ Krävs Beskrivning
kund-ID sträng Ja En GUID-formaterad sträng som identifierar kunden.

Begärandehuvuden

Mer information finns i REST-huvuden för Partnercenter.

Begäranens innehåll

Ordning

I den här tabellen beskrivs egenskaperna Order i begärandetexten.

Namn Typ Krävs Beskrivning
Id sträng Nej En orderidentifierare som anges när beställningen har skapats.
referenskund-ID sträng Ja Kundidentifieraren.
billingCycle sträng Nej Hur ofta partnern faktureras för den här ordern. Standardvärdet är "Månadsvis" och tillämpas när beställningen har skapats. Värden som stöds är de medlemsnamn som finns i BillingCycleType. Obs! Den årliga faktureringsfunktionen är ännu inte allmänt tillgänglig. Stöd för årlig fakturering kommer snart.
lineItems matris med objekt Ja En matris med OrderLineItem resurser.
skapelsedatum sträng Nej Det datum då ordern skapades, i datum-tid-format. Tillämpas vid framgångsrik skapande av beställningen.
Attributen objekt Nej Innehåller "ObjectType": "Order"

OrderLineItem

I den här tabellen beskrivs egenskaperna OrderLineItem i begärandetexten.

Namn Typ Krävs Beskrivning
radartikelnummer Int Ja Varje radobjekt i samlingen får ett unikt radnummer som räknar upp från 0 till count-1.
offerId sträng Ja Erbjudande-ID.
prenumerations-ID sträng Nej Prenumerationsidentifieraren.
parentPrenumerationsId sträng Nej Valfri. ID för huvudprenumerationen i ett tilläggserbjudande. Gäller endast patch.
freundlichNamn sträng Nej Valfri. Det vänliga namnet på prenumerationen som definierats av partnern för att underlätta identifiering.
kvantitet Int Ja Antalet licenser för en licensbaserad prenumeration.
partnerIdSomRegistrerad sträng Nej När en indirekt leverantör lägger en beställning på uppdrag av en indirekt återförsäljare fyller du i det här fältet med PartnerID för den indirekta återförsäljaren endast (aldrig ID för den indirekta leverantören). Detta säkerställer korrekt redovisning av incitament. Om du inte anger partner-ID:n för återförsäljaren misslyckas inte ordern. Återförsäljaren registreras dock inte och därför kanske inte incitamentberäkningar inkluderar försäljningen.
Attribut objekt Nej Innehåller "ObjectType":"OrderLineItem".

Exempel på begäran

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

REST-svar

Om det lyckas innehåller svarstexten den ifyllda resursen Order.

Svarsframgång och felkoder

Varje svar levereras med en HTTP-statuskod som anger lyckad eller misslyckad och ytterligare felsökningsinformation. Använd ett verktyg för nätverksspårning för att läsa den här koden, feltypen och ytterligare parametrar. För en fullständig lista, se Partner Center-felkoder.

Svarsexempel

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