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:
Utwórz wystąpienie obiektu Order i ustaw właściwość ReferenceCustomerID na identyfikator klienta, aby zarejestrować klienta.
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.
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 .
Wywołaj metodę Create lub CreateAsync i przekaż obiekt Order.
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"
}
}