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:
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 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.
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.
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ł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"
}
}