Udostępnij za pośrednictwem


Tworzenie zamówienia dla klienta przy użyciu interfejsów API Centrum partnerskiego

Dotyczy: Centrum partnerskie | Centrum partnerskie obsługiwane przez firmę 21Vianet | Centrum partnerskie dla chmury firmy Microsoft dla instytucji rządowych USA

Tworzenie zamówienia dla produktów wystąpień zarezerwowanych maszyn wirtualnych platformy Azure ma zastosowanie tylko do:

  • Centrum partnerskie

Aby uzyskać informacje o tym, co jest obecnie dostępne do sprzedaży, zobacz Oferty partnerskie w programie Dostawca rozwiązań w chmurze.

Wymagania wstępne

  • Poświadczenia zgodnie z opisem w temacie Uwierzytelnianie w Centrum partnerskim. Ten scenariusz obsługuje uwierzytelnianie zarówno przy użyciu autonomicznych poświadczeń aplikacji, jak i aplikacji i użytkownika.

  • Identyfikator klienta (customer-tenant-id). Jeśli nie znasz identyfikatora klienta, możesz wyszukać go w Centrum partnerskim, wybierając obszar roboczy Klienci , a następnie klienta z listy klienta, a następnie pozycję Konto. Na stronie Konto klienta poszukaj identyfikatora Microsoft w sekcji Informacje o koncie klienta. Identyfikator Microsoft jest taki sam jak identyfikator klienta (customer-tenant-id).

  • Identyfikator oferty.

C#

Aby utworzyć zamówienie dla klienta:

  1. Utwórz wystąpienie obiektu Order i ustaw właściwość ReferenceCustomerID na identyfikator klienta, aby zarejestrować klienta.

  2. Utwórz listę obiektów OrderLineItem i przypisz listę do właściwości LineItems zamówienia. Każdy element zamówienia zawiera informacje o zakupie dla jednej oferty. Musisz mieć co najmniej jeden element wiersza zamówienia.

  3. Uzyskiwanie interfejsu do zamawiania operacji. Najpierw wywołaj metodę IAggregatePartner.Customers.ById przy użyciu identyfikatora klienta, aby zidentyfikować klienta. Następnie pobierz interfejs z właściwości Orders .

  4. Wywołaj metodę Create lub CreateAsync i przekaż obiekt Order.

  5. Aby ukończyć zaświadczenie i dołączyć dodatkowych odsprzedawców, zobacz następujące przykładowe przykłady żądań i odpowiedzi:

Przykład żądania

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

Przykład odpowiedzi

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

Przykład: aplikacja testowa konsoli. Projekt: Klasa przykładów zestawu SDK Centrum partnerskiego: CreateOrder.cs

Żądanie REST

Składnia żądania

Method Identyfikator URI żądania
POST {baseURL}/v1/customers/{customer-id}/orders HTTP/1.1

Parametry identyfikatora URI

Użyj następującego parametru ścieżki, aby zidentyfikować klienta.

Nazwisko Type Wymagania opis
identyfikator klienta string Tak Identyfikator GUID sformatowany przez klienta, który identyfikuje klienta.

Nagłówki żądań

Aby uzyskać więcej informacji, zobacz Nagłówki REST Centrum partnerskiego.

Treść żądania

Zamówienie

W tej tabeli opisano właściwości Order w treści żądania.

Właściwość Type Wymagania Opis
identyfikator string Nie Identyfikator zamówienia dostarczony po pomyślnym utworzeniu zamówienia.
referenceCustomerId string Nie Identyfikator klienta.
billingCycle string Nie Wskazuje częstotliwość, z jaką partner jest rozliczany za to zamówienie. Obsługiwane wartości to nazwy elementów członkowskich znajdujące się w obszarze BillingCycleType. Wartość domyślna to "Monthly" lub "OneTime" podczas tworzenia zamówienia. To pole jest stosowane po pomyślnym utworzeniu zamówienia.
lineItems tablica zasobów OrderLineItem Tak Lista z elementami ofert, które klient kupuje, łącznie z ilością.
currencyCode string Nie Tylko do odczytu. Waluta używana podczas składania zamówienia. Zastosowane po pomyślnym utworzeniu zamówienia.
creationDate (data utworzenia) datetime Nie. Tylko do odczytu. Data utworzenia zamówienia w formacie daty i godziny. Zastosowane po pomyślnym utworzeniu zamówienia.
status string Nie Tylko do odczytu. Stan zamówienia. Obsługiwane wartości to nazwy elementów członkowskich znalezione w kolumnie OrderStatus.
połączenia OrderLinks Nie. Zasób tworzy łącza odpowiadające zamówieniu.
atrybuty Atrybuty zasobów Nie. Atrybuty metadanych odpowiadające kolejności.
PartnerOnRecordAttestationAccepted Wartość logiczna Tak Potwierdza ukończenie zaświadczania

OrderLineItem

W tej tabeli opisano właściwości OrderLineItem w treści żądania.

Uwaga

PartnerIdOnRecord powinien być podany tylko wtedy, gdy dostawca pośredni składa zamówienie w imieniu odsprzedawcy pośredniego. Służy do przechowywania identyfikatora PartnerID tylko odsprzedawcy pośredniego (nigdy identyfikator dostawcy pośredniego).

Nazwisko Type Wymagania opis
lineItemNumber int Tak Każdy element wiersza w kolekcji pobiera unikatowy numer wiersza, licząc od 0 do count-1.
offerId string Tak Identyfikator oferty. Upewnij się, że dostępność oferty jest odpowiednia dla odpowiedniego segmentu.
subscriptionId string Nie Identyfikator subskrypcji.
parentSubscriptionId string Nie Opcjonalny. Identyfikator subskrypcji nadrzędnej w ofercie dodatku. Dotyczy tylko poprawki PATCH.
friendlyName string Nie Opcjonalny. Przyjazna nazwa subskrypcji zdefiniowanej przez partnera w celu ułatwienia uściślania.
ilość int Tak Liczba licencji dla subskrypcji opartej na licencji.
customTermEndDate DateTime Nie. Data zakończenia pierwszego okresu rozliczeniowego nowej subskrypcji.
partnerIdOnRecord string Nie Gdy dostawca pośredni składa zamówienie w imieniu odsprzedawcy pośredniego, wypełnij to pole tylko identyfikatorem PartnerID odsprzedawcy pośredniego (nigdy identyfikator dostawcy pośredniego). Zapewnia to właściwą księgowość zachęt.
provisioningContext Ciąg słownika<, ciąg> Nie. Informacje wymagane do aprowizacji niektórych elementów w wykazie. Właściwość provisioningVariables w jednostce SKU wskazuje, które właściwości są wymagane dla określonych elementów w wykazie.
połączenia OrderLineItemLinks Nie. Tylko do odczytu. Zasób łączy odpowiadający elementowi wiersza zamówienia.
atrybuty Atrybuty zasobów Nie. Atrybuty metadanych odpowiadające OrderLineItem.
renewsTo Tablica obiektów Nie. Tablica zasobów RenewsTo .
ZaświadczenieAccepted bool Nie. Wskazuje umowę na warunki oferty lub jednostki SKU. Wymagane tylko w przypadku ofert lub jednostek SKU, w których wartość SkuAttestationProperties lub OfferAttestationProperties wymusza wartość True.
AdditionalPartnerIdsOnRecord String Nie Gdy dostawca pośredni składa zamówienie w imieniu odsprzedawcy pośredniego, wypełnij to pole tylko identyfikatorem PartnerID dodatkowego odsprzedawcy pośredniego (nigdy identyfikator dostawcy pośredniego). Zachęty nie mają zastosowania dla tych dodatkowych odsprzedawców. Można wprowadzić maksymalnie 5 odsprzedawców pośrednich. Dotyczy to tylko transakcji partnerów w krajach/regionach UE/EFTA.
RenewsTo

W tej tabeli opisano właściwości RenewsTo w treści żądania.

Właściwość Type Wymagania opis
termDuration string Nie Reprezentacja iso 8601 czasu trwania okresu odnowienia. Bieżące obsługiwane wartości to P1M (1 miesiąc) i P1Y (1 rok).

Przykład żądania

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

Odpowiedź REST

Jeśli operacja powiedzie się, metoda zwraca zasób Order w treści odpowiedzi.

Jeśli zamówienie zawiera co najmniej jedną subskrypcję, odpowiednie wartości identyfikatorów subskrypcji będą wyświetlane tylko w odpowiedzi REST, jeśli odpowiednie subskrypcje zostały aprowidowane w momencie wywołania interfejsu API. Aprowizowanie subskrypcji odbywa się asynchronicznie, dlatego wartości identyfikatorów subskrypcji mogą nie zawsze być widoczne w odpowiedzi REST wywołania Tworzenie zamówienia. Jednak po aprowizacji odpowiednich subskrypcji można uzyskać dostęp do ich wartości identyfikatora subskrypcji za pomocą wywołań interfejsu API Uzyskiwanie zamówień i Uzyskiwanie zamówienia według identyfikatora.

Kody powodzenia i błędów odpowiedzi

Każda odpowiedź zawiera kod stanu HTTP, który wskazuje powodzenie lub niepowodzenie i dodatkowe informacje o debugowaniu. Użyj narzędzia do śledzenia sieci, aby odczytać ten kod, typ błędu i dodatkowe parametry. Aby uzyskać pełną listę, zobacz Kody błędów Centrum partnerskiego.

Przykład odpowiedzi

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