Dela via


Skapa en beställning för en kund med partnercenter-API:er

Gäller för: Partnercenter | Partnercenter som drivs av 21Vianet | Partnercenter för Microsoft Cloud for US Government

Att skapa en order för produkter för reserverade vm-instanser i Azure gäller endast för:

  • Partnercenter

Information om vad som för närvarande är tillgängligt att sälja finns i Partnererbjudanden i Dobavljač rešenja u oblaku-programmet.

Förutsättningar

  • Autentiseringsuppgifter enligt beskrivningen i Partnercenter-autentisering. Det här scenariot stöder autentisering med både fristående app- och App+User-autentiseringsuppgifter.

  • Ett kund-ID (customer-tenant-id). Om du inte känner till kundens ID kan du söka efter 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 :t i avsnittet Kundkontoinformation . Microsoft-ID:t är samma som kund-ID :t (customer-tenant-id).

  • En erbjudandeidentifierare.

C#

Så här skapar du en beställning för en kund:

  1. Instansiera ett Order-objekt och ange egenskapen ReferenceCustomerID till kund-ID:t för att registrera kunden.

  2. Skapa en lista över OrderLineItem-objekt och tilldela listan till orderns LineItems-egenskap . Varje orderradsartikel innehåller inköpsinformationen för ett erbjudande. Du måste ha minst ett orderradsobjekt.

  3. Hämta ett gränssnitt för orderåtgärder. Anropa först metoden IAggregatePartner.Customers.ById med kund-ID:t för att identifiera kunden. Hämta sedan gränssnittet från egenskapen Beställningar.

  4. Anropa metoden Create eller CreateAsync och skicka in orderobjektet.

  5. För att slutföra attesteringen och inkludera ytterligare återförsäljare, se följande exempel på exempel på begäran och svar:

Exempel på begäran

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

Svarsexempel

{
    "id": "5cf72f146967",
    "alternateId": "5cf72f146967",
    "referenceCustomerId": "f81d98dd-c2f4-499e-a194-5619e260344e",
    "billingCycle": "monthly",
    "currencyCode": "USD",
    "currencySymbol": "$",
    "lineItems": [
        {
            "lineItemNumber": 0,
            "offerId": "CFQ7TTC0LH0Z:0001:CFQ7TTC0K18P",
            "subscriptionId": "fcddfa52-1da8-4529-d347-50ea51e1e7be",
            "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", "5198C069-3DAA-403A-8660-5BE11BFD12EE" },
                { "scope", "shared" },
                { "duration", "3Years" }
            }
        }
    }
};

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

Exempel: Konsoltestapp. Projekt: SDK-exempelklass för Partnercenter: CreateOrder.cs

REST-begäran

Syntax för begäran

Metod URI för förfrågan
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 Obligatoriskt Beskrivning
kund-ID sträng Ja Ett GUID-formaterat kund-ID som identifierar kunden.

Begärandehuvuden

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

Begärandetext

Order

I den här tabellen beskrivs orderegenskaperna i begärandetexten.

Property Type Obligatoriskt Beskrivning
id sträng Nej En orderidentifierare som anges när beställningen har skapats.
referenceCustomerId sträng Nej Kundidentifieraren.
billingCycle sträng Nej Anger hur ofta partnern faktureras för den här ordern. Värden som stöds är medlemsnamnen som finns i BillingCycleType. Standardvärdet är "Monthly" eller "OneTime" när beställningen skapas. Det här fältet tillämpas när beställningen har skapats.
lineItems matris med OrderLineItem-resurser Ja En specificerad lista över de erbjudanden som kunden köper, inklusive kvantiteten.
currencyCode sträng Nej Skrivskyddat. Den valuta som används vid beställningen. Tillämpas när beställningen har skapats.
creationDate datetime Nej Skrivskyddat. Det datum då ordern skapades, i datum-tid-format. Tillämpas när beställningen har skapats.
status sträng Nej Skrivskyddat. Status för ordern. Värden som stöds är de medlemsnamn som finns i OrderStatus.
länkar OrderLinks Nej Resurslänkarna som motsvarar beställningen.
Attribut ResourceAttributes Nej Metadataattributen som motsvarar order.
PartnerOnRecordAttestationAccepted Booleskt Ja Bekräftar att attesteringen har slutförts

OrderLineItem

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

Kommentar

PartnerIdOnRecord bör endast tillhandahållas när en indirekt leverantör gör en beställning för en indirekt återförsäljares räkning. Den används endast för att lagra PartnerID för den indirekta återförsäljaren (aldrig ID:t för den indirekta providern).

Namn Typ Obligatoriskt Beskrivning
lineItemNumber heltal Ja Varje radobjekt i samlingen får ett unikt radnummer som räknar upp från 0 till count-1.
offerId sträng Ja Erbjudandeidentifieraren. Se till att erbjudandet är tillgängligt för rätt segment.
subscriptionId sträng Nej Prenumerationsidentifieraren.
parentSubscriptionId sträng Nej Valfritt. ID för den överordnade prenumerationen i ett tilläggserbjudande. Gäller endast patch.
friendlyName sträng Nej Valfritt. Det egna namnet på prenumerationen som definierats av partnern för att underlätta tvetydigheten.
kvantitet heltal Ja Antalet licenser för en licensbaserad prenumeration.
customTermEndDate Datum/tid Nej Slutdatumet för den första faktureringsperioden för den nya prenumerationen.
partnerIdOnRecord sträng Nej När en indirekt leverantör gör en beställning på uppdrag av en indirekt återförsäljare fyller du i det här fältet endast med partner-ID för den indirekta återförsäljaren (aldrig ID för den indirekta leverantören). Detta säkerställer korrekt redovisning av incitament.
provisioningContext Ordlistesträng<, sträng> Nej Information som krävs för etablering för vissa objekt i katalogen. Egenskapen provisioningVariables i en SKU anger vilka egenskaper som krävs för specifika objekt i katalogen.
länkar OrderLineItemLinks Nej Skrivskyddat. Resurslänkarna som motsvarar orderradsobjektet.
Attribut ResourceAttributes Nej Metadataattributen som motsvarar OrderLineItem.
renewsTo Objektmatris Nej En matris med RenewsTo-resurser .
AttestationAccepted bool Nej Anger avtal om att erbjuda eller sku villkor. Krävs endast för erbjudanden eller skuus där SkuAttestationProperties eller OfferAttestationProperties enforceAttestation är Sant.
AdditionalPartnerIdsOnRecord String 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 partner-ID för den ytterligare indirekta återförsäljaren (aldrig ID:t för den indirekta leverantören). Incitament gäller inte för dessa ytterligare återförsäljare. Endast högst 5 indirekta återförsäljare kan anges. Detta är endast tillämpliga partner som handlar inom EU/EFTA-länder/regioner.
RenewsTo

Den här tabellen beskriver egenskaperna RenewsTo i begärandetexten.

Property Type Obligatoriskt Beskrivning
termDuration sträng Nej En ISO 8601-representation av förnyelseperiodens varaktighet. De aktuella värdena som stöds är P1M (1 månad) och P1Y (1 år).

Exempel på begäran

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": "3D5ECED6-1151-44C7-AEE6-70A4BB725666",
        "scope": "shared",
        "duration": "1Year"
      },
      "OfferId": "DZH318Z0BQ4B:0047:DZH318Z0DSM8",
      "FriendlyName": "A_sample_Azure_RI",
      "Quantity": 1
    }
  ]
}

REST-svar

Om det lyckas returnerar metoden en Order-resurs i svarstexten.

Om ordern innehåller en eller flera prenumerationer visas respektive prenumerations-ID-värden endast i REST-svaret om motsvarande prenumerationer har etablerats vid tidpunkten för API-anropet. Etableringsprenumerationer sker asynkront och därför kanske inte alltid prenumerations-ID-värden visas i REST-svaret i anropet Skapa order. Men när respektive prenumerationer har etablerats kan deras prenumerations-ID-värden nås via Api-anrop för Get Orders och Get Order by ID.

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. Den fullständiga listan finns i Felkoder för Partnercenter.

Svarsexempel

HTTP/1.1 201 Created
Content-Length: 788
Content-Type: application/json; charset=utf-8
MS-CorrelationId: b593cbb7-b358-4b31-81fc-e60b9c277a7f
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"
    }
}