Share via


Een bestelling voor een klant maken met behulp van Partner Center-API's

Van toepassing op: Partnercentrum | Partnercentrum beheerd door 21Vianet | Partnercentrum voor Microsoft Cloud voor de Amerikaanse overheid

Het maken van een bestelling voor producten voor gereserveerde VM-instanties van Azure is alleen van toepassing op:

  • Partnercentrum

Zie Partneraanbiedingen in het Cloud Solution Provider-programma voor informatie over wat momenteel beschikbaar is om te verkopen.

Vereisten

  • Referenties zoals beschreven in verificatie in partnercentrum. Dit scenario ondersteunt verificatie met zowel zelfstandige app- als app+gebruikersreferenties.

  • Een klant-id (customer-tenant-id). Als u de klant-id niet weet, kunt u deze opzoeken in het Partnercentrum door de werkruimte Klanten te selecteren, vervolgens de klant in de lijst met klanten en vervolgens Account. Zoek op de pagina Account van de klant naar de Microsoft-id in de sectie Klantaccountgegevens . De Microsoft-id is hetzelfde als de klant-id (customer-tenant-id).

  • Een aanbiedings-id.

C#

Een bestelling voor een klant maken:

  1. Instantieer een orderobject en stel de eigenschap ReferenceCustomerID in op de klant-id om de klant vast te leggen.

  2. Maak een lijst met OrderLineItem-objecten en wijs de lijst toe aan de eigenschap LineItems van de order. Elk orderregelitem bevat de aankoopgegevens voor één aanbieding. U moet ten minste één orderregelitem hebben.

  3. Haal een interface op om bewerkingen te bestellen. Roep eerst de methode IAggregatePartner.Customers.ById aan met de klant-id om de klant te identificeren. Haal vervolgens de interface op uit de eigenschap Orders.

  4. Roep de methode Create of CreateAsync aan en geef het orderobject door.

  5. Als u attestation wilt voltooien en extra resellers wilt opnemen, raadpleegt u de volgende voorbeeldvoorbeelden voor aanvragen en antwoorden:

Aanvraagvoorbeeld

{
    "PartnerOnRecordAttestationAccepted":true, 
    "lineItems": [
        {
            "offerId": "CFQ7TTC0LH0Z:0001:CFQ7TTC0K18P",
            "quantity": 1,
            "lineItemNumber": 0,
            "PartnerIdOnRecord": "873452",
            "AdditionalPartnerIdsOnRecord":["4847383","873452"]
        }
    ],
    "billingCycle": "monthly"
}

Responsvoorbeeld

{
    "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);

Voorbeeld: consoletest-app. Project: Voorbeeldklasse partnercentrum-SDK: CreateOrder.cs

REST-aanvraag

Aanvraagsyntaxis

Wijze Aanvraag-URI
POST {baseURL}/v1/customers/{customer-id}/orders HTTP/1.1

URI-parameters

Gebruik de volgende padparameter om de klant te identificeren.

Name Type Vereist Beschrijving
klant-id tekenreeks Ja Een door DE GUID opgemaakte klant-id die de klant identificeert.

Aanvraagheaders

Zie Rest-headers in Partnercentrum voor meer informatie.

Aanvraagtekst

Order

In deze tabel worden de ordereigenschappen in de aanvraagbody beschreven.

Eigenschap Type Vereist Beschrijving
id tekenreeks Nee Een order-id die wordt opgegeven bij het maken van de bestelling.
referenceCustomerId tekenreeks Nee De id van de klant.
billingCycle tekenreeks Nee Geeft de frequentie aan waarmee de partner wordt gefactureerd voor deze bestelling. Ondersteunde waarden zijn de ledennamen in BillingCycleType. De standaardwaarde is Maandelijks of OneTime bij het maken van de bestelling. Dit veld wordt toegepast bij het maken van de order.
lineItems matrix van OrderLineItem-resources Ja Een geitemiseerde lijst met aanbiedingen die de klant koopt, inclusief de hoeveelheid.
currencyCode tekenreeks Nee Alleen-lezen. De valuta die wordt gebruikt bij het plaatsen van de bestelling. Toegepast bij het maken van de bestelling.
creationDate datetime Nee Alleen-lezen. De datum waarop de order is gemaakt, in datum-tijdnotatie. Toegepast bij het maken van de bestelling.
status tekenreeks Nee Alleen-lezen. De status van de bestelling. Ondersteunde waarden zijn de ledennamen in OrderStatus.
koppelingen OrderLinks Nee De resourcekoppelingen die overeenkomen met de order.
kenmerken ResourceAttributes Nee De metagegevenskenmerken die overeenkomen met de order.
PartnerOnRecordAttestationAccepted Booleaanse waarde Ja Bevestigt voltooiing van Attestation

OrderLineItem

In deze tabel worden de eigenschappen OrderLineItem in de hoofdtekst van de aanvraag beschreven.

Notitie

De partnerIdOnRecord mag alleen worden opgegeven wanneer een indirecte provider een bestelling plaatst namens een indirecte reseller. Deze wordt alleen gebruikt om de PartnerID van de indirecte reseller op te slaan (nooit de id van de indirecte provider).

Name Type Vereist Beschrijving
lineItemNumber int Ja Elk regelitem in de verzameling krijgt een uniek regelnummer, waarbij wordt geteld van 0 tot aantal-1.
offerId tekenreeks Ja De aanbiedings-id. Zorg ervoor dat de beschikbaarheid van de aanbieding voor het juiste segment is.
subscriptionId tekenreeks Nee De abonnements-id.
parentSubscriptionId tekenreeks Nee Optioneel. De id van het bovenliggende abonnement in een invoegtoepassingsaanbieding. Alleen van toepassing op PATCH.
friendlyName tekenreeks Nee Optioneel. De beschrijvende naam voor het abonnement dat door de partner is gedefinieerd om te helpen ondubbelzinnig te zijn.
quantity int Ja Het aantal licenties voor een abonnement op basis van licenties.
customTermEndDate Datum en tijd Nee De einddatum van de eerste factureringsperiode van het nieuwe abonnement.
partnerIdOnRecord tekenreeks Nee Wanneer een indirecte provider namens een indirecte reseller een order plaatst, vult u dit veld alleen in met de PartnerID van de indirecte reseller (nooit de id van de indirecte provider). Dit zorgt voor een goede boekhouding voor incentives.
provisioningContext Woordenlijsttekenreeks<, tekenreeks> Nee Informatie die is vereist voor het inrichten van bepaalde items in de catalogus. De eigenschap provisioningVariables in een SKU geeft aan welke eigenschappen vereist zijn voor specifieke items in de catalogus.
koppelingen OrderLineItemLinks Nee Alleen-lezen. De resourcekoppelingen die overeenkomen met het orderregelitem.
kenmerken ResourceAttributes Nee De metagegevenskenmerken die overeenkomen met de OrderLineItem.
renewsTo Matrix van objecten Nee Een matrix van RenewsTo-resources .
AttestationAccepted bool Nee Geeft de overeenkomst aan om voorwaarden aan te bieden of sKU aan te bieden. Alleen vereist voor aanbiedingen of SkuAttestationProperties of OfferAttestationProperties enforceAttestation is True.
AdditionalPartnerIdsOnRecord String Nee Wanneer een indirecte provider een order plaatst namens een indirecte reseller, vult u dit veld in met de PartnerID van de aanvullende indirecte reseller (nooit de id van de indirecte provider). Incentives zijn niet van toepassing op deze extra resellers. Er kunnen maximaal 5 indirecte resellers worden ingevoerd. Dit zijn alleen van toepassing zijnde partners die handelen binnen EU/EVA-landen/regio's.
RenewsTo

In deze tabel worden de eigenschappen RenewsTo in de aanvraagbody beschreven.

Eigenschap Type Vereist Beschrijving
termDuration tekenreeks Nee Een ISO 8601-weergave van de duur van de verlengingstermijn. De huidige ondersteunde waarden zijn P1M (1 maand) en P1Y (1 jaar).

Aanvraagvoorbeeld

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

REST-antwoord

Als dit lukt, retourneert de methode een orderresource in de hoofdtekst van het antwoord.

Als de volgorde een of meer abonnementen bevat, worden de respectieve abonnements-id-waarden alleen weergegeven in het REST-antwoord als de bijbehorende abonnementen zijn ingericht op het moment van de API-aanroep. Het inrichten van abonnementen vindt asynchroon plaats en daarom zijn abonnements-id-waarden mogelijk niet altijd zichtbaar in het REST-antwoord van de aanroep Order maken. Zodra de respectieve abonnementen zijn ingericht, kunnen hun abonnements-id-waarden echter worden geopend via Orders ophalen en Order ophalen op id-API-aanroepen.

Geslaagde antwoorden en foutcodes

Elk antwoord wordt geleverd met een HTTP-statuscode die aangeeft dat de fout is geslaagd of mislukt en aanvullende informatie over foutopsporing. Gebruik een hulpprogramma voor netwerktracering om deze code, het fouttype en aanvullende parameters te lezen. Zie foutcodes in Partnercentrum voor de volledige lijst.

Responsvoorbeeld

HTTP/1.1 201 Created
Content-Length: 788
Content-Type: application/json; charset=utf-8
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
MS-RequestId: 025f4c19-217f-49d6-a056-391902c62fb3
Date: Thu, 15 Mar 2018 22:30:02 GMT

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