分享方式:


購買要加入訂用帳戶的附加元件

適用于:合作夥伴中心 |由 21Vianet 營運的合作夥伴中心 |適用于 Microsoft Cloud for US Government 的合作夥伴中心

如何購買現有訂閱的附加元件。

必要條件

  • 認證,如合作夥伴中心驗證所述。 此案例支援使用獨立應用程式和 App+使用者認證進行驗證。

  • 客戶識別碼 (customer-tenant-id)。 如果您不知道客戶的識別碼,您可以選取 [客戶] 工作區,然後從客戶清單中選取客戶,然後從客戶清單中查詢該識別碼,然後查閱合作夥伴中心。 在客戶的 [帳戶] 頁面上,尋找 [客戶帳戶資訊] 區段中的 [Microsoft 識別碼] 。 Microsoft 識別碼與客戶識別碼 () customer-tenant-id 相同。

  • 訂用帳戶識別碼。 這是要購買附加元件供應專案的現有訂用帳戶。

  • 識別要購買之附加元件的供應專案識別碼。

透過程式碼購買附加元件

當您購買訂閱的附加元件時,您會使用附加元件的訂單來更新原始訂閱訂單。 在下列專案中,customerId 是客戶識別碼,subscriptionId 是訂用帳戶識別碼,而 addOnOfferId 是附加元件的供應專案識別碼。

以下為其步驟:

  1. 取得訂用帳戶作業的介面。

    var subscriptionOperations = partnerOperations.Customers.ById(customerId).Subscriptions.ById(subscriptionId);
    
  2. 使用該介面來具現化訂用帳戶物件。 這可讓您取得父訂閱詳細資料,包括訂單識別碼。

    var parentSubscription = subscriptionOperations.Get();
    
  3. 具現化新的 Order 物件。 此訂單實例用來更新用來購買訂閱的原始訂單。 將單行專案新增至代表附加元件的順序。

    var orderToUpdate = new Order()
    {
        ReferenceCustomerId = customerId,
        LineItems = new List<OrderLineItem>()
        {
            new OrderLineItem()
            {
                LineItemNumber = 0,
                OfferId = addOnOfferId,
                FriendlyName = "Some friendly name",
                Quantity = 2,
                ParentSubscriptionId = subscriptionId
            }
        }
    };
    
  4. 使用附加元件的新訂單更新訂閱的原始訂單。

    Order updatedOrder = partnerOperations.Customers.ById(customerId).Orders.ById(parentSubscription.OrderId).Patch(orderToUpdate);
    

C#

若要購買附加元件,請先呼叫 IAggregatePartner.Customers.ById 方法來取得訂用帳戶作業的介面,並使用客戶識別碼來識別客戶,以及 使用 Subscriptions.ById 方法來識別具有附加元件供應專案的訂用帳戶。 透過呼叫Get,使用該介面來擷取訂用帳戶詳細資料。 訂用帳戶詳細資料包含訂閱訂單的訂單識別碼,這是要以附加元件更新的順序。

接下來,具現化新的 Order 物件,並填入包含識別附加元件資訊的單一 LineItem 實例,如下列程式碼片段所示。 您將使用此新物件,以附加元件更新訂閱訂單。 最後,呼叫 Patch 方法來更新訂閱訂單,然後先使用 IAggregatePartner.Customers.ById 識別客戶,並使用 Orders.ById來識別訂單。

// IAggregatePartner partnerOperations;
// string customerId;
// string subscriptionId;
// string addOnOfferId;

// Get an interface to the operations for the subscription.
var subscriptionOperations = partnerOperations.Customers.ById(customerId).Subscriptions.ById(subscriptionId);

// Get the parent subscription details.
var parentSubscription = subscriptionOperations.Get();

// In order to buy an add-on subscription for this offer, we need to patch/update the order through which the base offer was purchased
// by creating an order object with a single line item which represents the add-on offer purchase.
var orderToUpdate = new Order()
{
    ReferenceCustomerId = customerId,
    LineItems = new List<OrderLineItem>()
    {
        new OrderLineItem()
        {
            LineItemNumber = 0,
            OfferId = addOnOfferId,
            FriendlyName = "Some friendly name",
            Quantity = 2,
            ParentSubscriptionId = subscriptionId
        }
    }
};

// Update the order to apply the add on purchase.
Order updatedOrder = partnerOperations.Customers.ById(customerId).Orders.ById(parentSubscription.OrderId).Patch(orderToUpdate);

範例主控台測試應用程式專案:合作夥伴中心 SDK 範例 類別:AddSubscriptionAddOn.cs

REST 要求

要求的語法

方法 要求 URI
PATCH {baseURL}/v1/customers/{customer-tenant-id}/orders/{order-id} HTTP/1.1

URI 參數

使用下列參數來識別客戶和訂單。

名稱 類型 必要 描述
customer-tenant-id guid Y 此值是 GUID 格式 的客戶租 使用者識別碼,可識別客戶。
order-id guid Y 訂單識別碼。

要求標頭

如需詳細資訊,請參閱合作夥伴中心 REST 標頭

要求本文

下表描述要求主體中的屬性。

名稱 類型 必要 描述
識別碼 字串 N 訂單識別碼。
ReferenceCustomerId string Y 客戶識別碼。
LineItems 物件的陣列 Y OrderLineItem物件的陣列。
CreationDate string N 訂單的建立日期 (採用日期-時間格式)。
屬性 object N 包含 「ObjectType」: 「Order」。

OrderLineItem

名稱 類型 必要 描述
LineItemNumber number Y 行專案編號,從 0 開始。
OfferId string Y 附加元件的供應專案識別碼。
SubscriptionId 字串 N 所購買附加元件的訂用帳戶識別碼。
ParentSubscriptionId string Y 具有附加元件供應專案的父訂用帳戶識別碼。
FriendlyName string N 此明細專案的易記名稱。
數量 number Y 授權數目。
PartnerIdOnRecord string N 記錄夥伴的 PartnerID。
屬性 object N 包含 「ObjectType」: 「OrderLineItem」。

要求範例

PATCH https://api.partnercenter.microsoft.com/v1/customers/4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04/orders/CF3B0E37-BE0B-4CDD-B584-D1A97D98A922 HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: 17a2658e-d2cc-439b-a2f0-2aefd9344fbc
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
X-Locale: en-US
Content-Type: application/json
Host: api.partnercenter.microsoft.com
Content-Length: 414
Expect: 100-continue

{
    "Id": null,
    "ReferenceCustomerId": "4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04",
    "LineItems": [{
            "LineItemNumber": 0,
            "OfferId": "2828BE95-46BA-4F91-B2FD-0BEF192ECF60",
            "SubscriptionId": null,
            "ParentSubscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
            "FriendlyName": "Some friendly name",
            "Quantity": 2,
            "PartnerIdOnRecord": null,
            "Attributes": {
                "ObjectType": "OrderLineItem"
            }
        }
    ],
    "CreationDate": null,
    "Attributes": {
        "ObjectType": "Order"
    }
}

REST 回應

如果成功,這個方法會在回應本文中傳回更新的訂用帳戶順序。

回應成功和錯誤碼

每個回應都隨附 HTTP 狀態碼,會指出成功與否以及其他的偵錯資訊。 請使用網路追蹤工具來讀取此錯誤碼、錯誤類型和其他參數。 如需完整清單,請參閱 合作夥伴中心錯誤碼

回應範例

HTTP/1.1 200 OK
Content-Length: 1135
Content-Type: application/json; charset=utf-8
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
MS-RequestId: 17a2658e-d2cc-439b-a2f0-2aefd9344fbc
MS-CV: WtFy3zI8V0u2lnT9.0
MS-ServerId: 020021921
Date: Wed, 25 Jan 2017 23:01:08 GMT

{
    "id": "cf3b0e37-be0b-4cdd-b584-d1a97d98a922",
    "referenceCustomerId": "4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04",
    "billingCycle": "none",
    "lineItems": [{
            "lineItemNumber": 0,
            "offerId": "195416C1-3447-423A-B37B-EE59A99A19C4",
            "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
            "friendlyName": "new offer purchase",
            "quantity": 5,
            "links": {
                "subscription": {
                    "uri": "/customers/4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
                    "method": "GET",
                    "headers": []
                }
            }
        }, {
            "lineItemNumber": 1,
            "offerId": "2828BE95-46BA-4F91-B2FD-0BEF192ECF60",
            "subscriptionId": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
            "friendlyName": "Some friendly name",
            "quantity": 2,
            "links": {
                "subscription": {
                    "uri": "/customers/4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
                    "method": "GET",
                    "headers": []
                }
            }
        }
    ],
    "creationDate": "2017-01-25T14:53:12.093-08:00",
    "links": {
        "self": {
            "uri": "/customers/4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04/orders/cf3b0e37-be0b-4cdd-b584-d1a97d98a922",
            "method": "GET",
            "headers": []
        }
    },
    "attributes": {
        "etag": "eyJpZCI6ImNmM2IwZTM3LWJlMGItNGNkZC1iNTg0LWQxYTk3ZDk4YTkyMiIsInZlcnNpb24iOjJ9",
        "objectType": "Order"
    }
}