分享方式:


使用合作夥伴中心 API 為客戶建立訂單

適用於:合作夥伴中心 |由 21Vianet 營運的合作夥伴中心 |美國政府Microsoft雲端合作夥伴中心

建立 Azure 保留 VM 實例產品的訂單僅適用於

  • 合作夥伴中心

如需目前可供銷售之專案的資訊,請參閱 雲端解決方案提供者 方案中的合作夥伴供應專案

必要條件

C#

若要為客戶建立訂單:

  1. 具現化 Order 物件,並將 ReferenceCustomerID 屬性設定為客戶標識碼以記錄客戶。

  2. 建立 OrderLineItem 物件清單,並將清單指派給訂單的 LineItems 屬性。 每個訂單明細專案都包含一個供應項目的購買資訊。 您必須至少有一個訂單明細專案。

  3. 取得排序作業的介面。 首先,使用客戶標識符呼叫 IAggregatePartner.Customers.ById 方法來識別客戶。 接下來,從 Orders 屬性擷取 介面。

  4. 呼叫 Create 或 CreateAsync 方法,並傳入 Order 物件。

  5. 若要完成證明並包含其他轉銷商,請參閱下列範例要求和回應範例:

要求範例

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