使用合作夥伴中心 API 為客戶建立訂單
適用於:合作夥伴中心 |由 21Vianet 營運的合作夥伴中心 |美國政府Microsoft雲端合作夥伴中心
建立 Azure 保留 VM 實例產品的訂單僅適用於:
- 合作夥伴中心
如需目前可供銷售之專案的資訊,請參閱 雲端解決方案提供者 方案中的合作夥伴供應專案。
必要條件
認證,如合作夥伴中心驗證所述。 此案例支援使用獨立應用程式和 App+使用者認證進行驗證。
客戶識別碼 (
customer-tenant-id
)。 如果您不知道客戶的標識碼,您可以在合作夥伴中心中選取 [客戶] 工作區,然後從客戶清單中查看客戶,然後從 [帳戶]。 在客戶的 [帳戶] 頁面上,在 [客戶帳戶資訊] 區段中尋找Microsoft標識碼。 Microsoft 識別碼與客戶識別碼 (customer-tenant-id
) 相同。供應項目標識碼。
C#
若要為客戶建立訂單:
具現化 Order 物件,並將 ReferenceCustomerID 屬性設定為客戶標識碼以記錄客戶。
建立 OrderLineItem 物件清單,並將清單指派給訂單的 LineItems 屬性。 每個訂單明細專案都包含一個供應項目的購買資訊。 您必須至少有一個訂單明細專案。
取得排序作業的介面。 首先,使用客戶標識符呼叫 IAggregatePartner.Customers.ById 方法來識別客戶。 接下來,從 Orders 屬性擷取 介面。
呼叫 Create 或 CreateAsync 方法,並傳入 Order 物件。
若要完成證明並包含其他轉銷商,請參閱下列範例要求和回應範例:
要求範例
{
"PartnerOnRecordAttestationAccepted":true,
"lineItems": [
{
"offerId": "CFQ7TTC0LH0Z:0001:CFQ7TTC0K18P",
"quantity": 1,
"lineItemNumber": 0,
"PartnerIdOnRecord": "873452",
"AdditionalPartnerIdsOnRecord":["4847383","873452"]
}
],
"billingCycle": "monthly"
}
回應範例
{
"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);
範例: 控制台測試應用程式。 專案:合作夥伴中心 SDK 範例 類別:CreateOrder.cs
REST 要求
要求語法
方法 | 要求 URI |
---|---|
POST | {baseURL}/v1/customers/{customer-id}/orders HTTP/1.1 |
URI 參數
使用下列路徑參數來識別客戶。
名稱 | 類型 | 必要 | 描述 |
---|---|---|---|
customer-id | 字串 | Yes | 識別客戶的 GUID 格式客戶識別碼。 |
要求標頭
如需詳細資訊,請參閱合作夥伴中心 REST 標頭。
要求本文
訂單
下表描述 要求本文中的 Order 屬性。
屬性 | 型別 | 必要 | 描述 |
---|---|---|---|
id | string | No | 成功建立訂單時所提供的訂單標識碼。 |
referenceCustomerId | 字串 | No | 客戶標識碼。 |
billingCycle | 字串 | No | 指出合作夥伴為此訂單計費的頻率。 支援的值是 BillingCycleType 中找到的成員名稱。 在訂單建立時,預設值為 “Monthly” 或 “OneTime”。 成功建立訂單時會套用此欄位。 |
明細項目 | OrderLineItem 資源的數位 | Yes | 客戶正在購買的供應項目專案清單,包括數量。 |
currencyCode | 字串 | No | 唯讀。 下訂單時所使用的貨幣。 成功建立訂單時套用。 |
creationDate | Datetime | No | 唯讀。 訂單建立的日期,以日期時間格式。 成功建立訂單時套用。 |
status | 字串 | No | 唯讀。 訂單的狀態。 支援的值是在 OrderStatus 中找到的成員名稱。 |
連結 | OrderLinks | No | 對應至 Order 的資源連結。 |
attributes | ResourceAttributes | No | 對應至 Order 的元數據屬性。 |
PartnerOnRecordAttestationAccepted | 布林值 | Yes | 確認證明完成 |
OrderLineItem
下表描述 要求本文中的 OrderLineItem 屬性。
注意
只有在間接提供者代表間接轉銷商下訂單時,才應提供 partnerIdOnRecord。 它用來儲存間接轉銷商的 PartnerID(絕不是間接提供者的標識符)。
名稱 | 類型 | 必要 | 描述 |
---|---|---|---|
lineItemNumber | int | Yes | 集合中的每個明細項目都會取得唯一的行號,從 0 計算到 count-1。 |
offerId | 字串 | Yes | 供應項目標識碼。 請確定供應專案是否適用於正確的區段。 |
subscriptionId | 字串 | No | 訂用帳戶識別碼。 |
parentSubscriptionId | 字串 | No | 選擇性。 附加元件供應專案中父訂閱的標識碼。 僅適用於 PATCH。 |
friendlyName | 字串 | No | 選擇性。 合作夥伴所定義的訂用帳戶易記名稱,以協助釐清。 |
數量 | int | Yes | 授權型訂閱的授權數目。 |
customTermEndDate | Datetime | No | 新訂用帳戶第一個計費期限的結束日期。 |
partnerIdOnRecord | 字串 | No | 當間接提供者代表間接轉銷商下訂單時,僅以間接轉銷商的 PartnerID 填入此字段(絕不是間接提供者的識別符)。 這可確保適當地考慮獎勵。 |
provisioningContext | <字典字串,字串> | No | 布建目錄中某些專案所需的資訊。 SKU 中的 provisioningVariables 屬性會指出目錄中特定專案需要哪些屬性。 |
連結 | OrderLineItemLinks | No | 唯讀。 對應至訂單明細項目的資源連結。 |
attributes | ResourceAttributes | No | 對應至 OrderLineItem 的元數據屬性。 |
renewsTo | 物件陣列 | No | RenewsTo 資源的陣列。 |
證明Accepted | bool | No | 表示供應專案或 SKU 條件的合約。 僅適用於 SkuAttestationProperties 或 OfferAttestationProperties 強制Attestation 為 True 的供應專案或 SKU。 |
AdditionalPartnerIdsOnRecord | String | No | 當間接提供者代表間接轉銷商下訂單時,僅以其他間接轉銷商的 PartnerID 填入此字段(絕不是間接提供者的標識符)。 獎勵不適用於這些額外的轉銷商。 最多只能輸入5個間接轉銷商。 這隻是歐盟/EFTA 國家/地區內交易的適用合作夥伴。 |
RenewsTo
下表描述 要求本文中的 RenewsTo 屬性。
屬性 | 型別 | 必要 | 描述 |
---|---|---|---|
termDuration | 字串 | No | 更新期限的 ISO 8601 表示法。 目前的支援值為 P1M (1 個月)和 P1Y (1 年)。 |
要求範例
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 回應
如果成功,此方法會在響應主體中傳 回 Order 資源。
如果訂單包含一或多個訂用帳戶,則只有在 API 呼叫時布建對應的訂用帳戶時,個別的訂用帳戶標識碼才會出現在 REST 回應中。 布建訂閱會以異步方式發生,因此,在建立訂單呼叫的 REST 回應中,可能不會一律顯示訂用帳戶標識碼值。 不過,布建個別訂用帳戶之後,就可以透過取得訂單和依標識碼 API 呼叫取得訂單來存取其訂用帳戶標識碼值。
回應成功和錯誤碼
每個回應都隨附 HTTP 狀態碼,會指出成功與否以及其他的偵錯資訊。 請使用網路追蹤工具來讀取此錯誤碼、錯誤類型和其他參數。 如需完整清單,請參閱 合作夥伴中心錯誤碼。
回應範例
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"
}
}