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 tylko:

  • Centrum partnerskie

Aby uzyskać informacje o tym, co jest obecnie dostępne do sprzedaży, zobacz oferty partnerów w programie Cloud Solution Provider.

Warunki wstępne

  • Poświadczenia zgodnie z opisem w 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 klient z listy klientów, a następnie konto. Na stronie Konta klienta poszukaj identyfikatora Microsoft w sekcji Informacje o Koncie Klienta. Identyfikator Firmy 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 tę listę do właściwości LineItems zamówienia. Każda pozycja zamówienia zawiera informacje o zakupie dotyczące jednej oferty. Musisz mieć co najmniej jedną pozycję w zamówieniu.

  3. Zdobyć interfejs do zamawiania operacji. Najpierw wywołaj metodę IAggregatePartner.Customers.ById za pomocą 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ładowy: aplikacja testowa konsoli. Projekt: Partner Center SDK Samples Klasa: CreateOrder.cs

Żądanie REST

Składnia żądania

Metoda 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.

Nazwa Typ Wymagane Opis
identyfikator klienta struna Tak Identyfikator klienta w formacie GUID, 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łasność Typ Wymagane Opis
id struna Nie Identyfikator zamówienia dostarczony po pomyślnym utworzeniu zamówienia.
IdentyfikatorKlientaReferencyjnego struna Nie Identyfikator klienta.
billingCycle struna Nie Wskazuje częstotliwość, z jaką partner jest rozliczany za to zamówienie. Obsługiwane wartości to nazwy członków znalezione w 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ą.
kod waluty struna Nie Tylko do odczytu. Waluta używana podczas składania zamówienia. Zastosowane po pomyślnym utworzeniu zamówienia.
creationDate (data utworzenia) data i czas Nie Tylko do odczytu. Data utworzenia zamówienia w formacie daty i godziny. Zastosowane po pomyślnym utworzeniu zamówienia.
stan struna Nie Tylko do odczytu. Stan zamówienia. Obsługiwane wartości to nazwy elementów członkowskich znalezione w OrderStatus.
Linki OrderLinks Nie Linki zasobów odpowiadające zamówieniu.
Atrybuty ResourceAttributes Nie Atrybuty metadanych odpowiadające zamówieniu.
PotwierdzenieAkceptacjiPartneraNaRekordzie Boolean Tak Potwierdza ukończenie zaświadczania

Pozycja Zamówienia

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 tylko ID Partnera odsprzedawcy pośredniego (nigdy ID dostawcy pośredniego).

Nazwa Typ Wymagane Opis
numerPozycji Int Tak Każda pozycja w kolekcji otrzymuje unikalny numer wiersza, licząc od 0 do count-1.
offerId struna Tak Identyfikator oferty. Upewnij się, że dostępność oferty jest odpowiednia dla odpowiedniego segmentu.
identyfikator subskrypcji struna Nie Identyfikator subskrypcji.
nadrzędnyIdentyfikatorSubskrypcji struna Nie Fakultatywny. Identyfikator subskrypcji głównej w ofercie dodatkowej. Dotyczy tylko PATCH.
przyjazna nazwa struna Nie Fakultatywny. Przyjazna nazwa subskrypcji zdefiniowanej przez partnera w celu ułatwienia rozróżnienia.
ilość Int Tak Liczba licencji dla subskrypcji opartej na licencji.
customTermEndDate Data i czas Nie Data zakończenia pierwszego okresu rozliczeniowego nowej subskrypcji.
partnerIdOnRecord struna Nie Gdy dostawca pośredni składa zamówienie w imieniu odsprzedawcy pośredniego, wypełnij to pole identyfikatorem PartnerID odsprzedawcy pośredniego tylko (nigdy identyfikator dostawcy pośredniego). Zapewnia to właściwą księgowość zachęt.
kontekst konfiguracyjny Ciąg<słownika, ciąg> Nie Informacje wymagane do zapewnienia dostępności niektórych pozycji w katalogu. Właściwość provisioningVariables w jednostce SKU wskazuje, które właściwości są wymagane dla określonych elementów w wykazie.
Linki OrderLineItemLinks Nie Tylko do odczytu. Linki zasobów odpowiadające elementowi wiersza zamówienia.
Atrybuty ResourceAttributes Nie Atrybuty metadanych odpowiadające OrderLineItem.
renewsTo Tablica obiektów Nie Tablica zasobów RenewsTo.
ZaświadczeniePrzyjęte bool Nie Wskazuje zgodę na warunki oferty lub jednostki SKU. Wymagane tylko dla ofert lub SKU, gdzie SkuAttestationProperties lub OfferAttestationProperties wymuszają atestację jako True.
DodatkoweIdPartnerówWRekordzie Struna Nie Gdy dostawca pośredni składa zamówienie w imieniu odsprzedawcy pośredniego, wypełnij to pole identyfikatorem PartnerID Tylko dodatkowy odsprzedawca pośredni (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łasność Typ Wymagane Opis
czas trwania struna Nie Reprezentacja ISO 8601 okresu trwania 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 uruchomieniu odpowiednich subskrypcji można uzyskać dostęp do wartości ich identyfikatorów subskrypcji za pomocą wywołań API "Get Orders" i "Get Order by ID".

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