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:
Instansiera ett Order-objekt och ange egenskapen ReferenceCustomerID till kund-ID:t för att registrera kunden.
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.
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.
Anropa metoden Create eller CreateAsync och skicka in orderobjektet.
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": "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);
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": "cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
"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: 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"
}
}