購買要加入訂用帳戶的附加元件
適用于:合作夥伴中心 |由 21Vianet 營運的合作夥伴中心 |適用于 Microsoft Cloud for US Government 的合作夥伴中心
如何購買現有訂閱的附加元件。
必要條件
認證,如合作夥伴中心驗證所述。 此案例支援使用獨立應用程式和 App+使用者認證進行驗證。
客戶識別碼 (
customer-tenant-id
)。 如果您不知道客戶的識別碼,您可以選取 [客戶] 工作區,然後從客戶清單中選取客戶,然後從客戶清單中查詢該識別碼,然後查閱合作夥伴中心。 在客戶的 [帳戶] 頁面上,尋找 [客戶帳戶資訊] 區段中的 [Microsoft 識別碼] 。 Microsoft 識別碼與客戶識別碼 ()customer-tenant-id
相同。訂用帳戶識別碼。 這是要購買附加元件供應專案的現有訂用帳戶。
識別要購買之附加元件的供應專案識別碼。
透過程式碼購買附加元件
當您購買訂閱的附加元件時,您會使用附加元件的訂單來更新原始訂閱訂單。 在下列專案中,customerId 是客戶識別碼,subscriptionId 是訂用帳戶識別碼,而 addOnOfferId 是附加元件的供應專案識別碼。
以下為其步驟:
取得訂用帳戶作業的介面。
var subscriptionOperations = partnerOperations.Customers.ById(customerId).Subscriptions.ById(subscriptionId);
使用該介面來具現化訂用帳戶物件。 這可讓您取得父訂閱詳細資料,包括訂單識別碼。
var parentSubscription = subscriptionOperations.Get();
具現化新的 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 } } };
使用附加元件的新訂單更新訂閱的原始訂單。
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"
}
}