您可以通过购物车购买附加组件。 有关当前可销售产品/服务的更多信息,请参阅 云解决方案提供商计划中的合作伙伴产品/服务。
注释
基于许可证的服务的新商业体验涵盖许多新功能,可供所有云解决方案提供商 (CSP) 使用。 有关详细信息,请参阅新商业体验概述。
带有加载项的新商业购物车不同于传统的基于许可证的产品/服务。 新商业加载项的购买方式与基本产品/服务相同,它们不使用 addonItems 属性。 本主题包括专门针对具有附加产品 SKU 的新基于商业的产品 SKU 的请求和响应示例。
注释
购物车自初始创建之日起 7 天后过期。
先决条件
合作伙伴中心身份验证中所述的凭据。 此方案支持使用独立应用和 App+User 凭据进行身份验证。
客户编号 (
customer-tenant-id
)。 如果不知道客户的 ID,可以在合作伙伴中心查找,依次选择“客户”工作区,从客户列表中选择客户,然后选择“帐户”。 在客户的“帐户”页上的“客户帐户信息”部分查找 Microsoft ID。 Microsoft ID 与客户 ID (customer-tenant-id
) 相同。
C#(编程语言)
购物车允许购买基本选件及其相应的附加组件。 请按照以下步骤创建购物车:
实例化 Cart 对象。
创建表示基本选件的 CartLineItem 对象列表,并将该列表分配给购物车的 LineItems 属性。
在每个基本选件的购物车行项下,使用其他 CartLineItem 对象填充 AddOnItems 列表,每个对象都表示将针对该基本选件购买的加载项。
通过使用 IAggregatePartner 使用客户 ID 调用 ICustomerCollection.ById 方法来标识客户,然后从 Cart 属性中检索接口,从而获取购物车作的接口。
最后,调用 Create 或 CreateAsync 方法创建购物车。
C# 示例
// IAggregatePartner partnerOperations;
// string customerId;
var cart = new Cart()
{
LineItems = new List<CartLineItem>()
{
new CartLineItem()
{
Id = 0,
CatalogItemId = "A_base_offer_ID",
FriendlyName = "Myofferpurchase",
Quantity = 3,
BillingCycle = BillingCycleType.Monthly,
AddonItems = new List<CartLineItem>
{
new CartLineItem
{
Id = 1,
CatalogItemId = "An_addon_item_ID",
BillingCycle = BillingCycleType.Monthly,
Quantity = 2,
},
new CartLineItem
{
Id = 2,
CatalogItemId = "Another_addon_item_ID",
BillingCycle = BillingCycleType.Monthly,
Quantity = 3
}
}
}
}
};
var createdCart = partnerOperations.Customers.ById(customerId).Carts.Create(cart);
按照以下步骤创建一个购物车,以便针对现有基本订阅购买附加组件:
使用新的CartLineItem 创建一个购物车,该 CartLineItem 在 ProvisioningContext 属性中包含密钥为“ParentSubscriptionId”的订阅 ID。
调用 Create 或 CreateAsync 方法。
// IAggregatePartner partnerOperations;
// string selectedCustomerId;
var cart = new Cart()
{
LineItems = new List<CartLineItem>()
{
new CartLineItem()
{
Id = 0,
CatalogItemId = "An_addon_item_ID",
ProvisioningContext = new Dictionary<string, string>
{
{
"ParentSubscriptionId", "An_existing_subscription_Id"
}
},
Quantity = 1,
BillingCycle = BillingCycleType.Annual,
}
}
};
var createdCart = partnerOperations.Customers.ById(selectedCustomerId).Carts.Create(cart);
REST 请求
请求语法
方法 | 请求 URI |
---|---|
发布 | {baseURL}/v1/customers/{customer-id}/carts HTTP/1.1 |
URI 参数
请使用以下路径参数来标识客户。
名称 | 类型 | 必选 | DESCRIPTION |
---|---|---|---|
customer-id | 字符串 | 是的 | 标识客户的 GUID 格式的客户 ID。 |
请求标头
有关详细信息,请参阅合作伙伴中心 REST 标头。
请求主体
下表描述了请求正文中的 Cart 属性。
资产 | 类型 | 必选 | DESCRIPTION |
---|---|---|---|
身份证 | 字符串 | 否 | 成功创建 Cart 时提供的 Cart 标识符。 |
creationTimeStamp 的 | 日期时间 | 否 | 购物车的创建日期,采用日期时间格式。 在成功创建购物车时应用。 |
lastModifiedTimeStamp 的 | 日期时间 | 否 | 购物车的上次更新日期,采用日期时间格式。 在成功创建购物车时应用。 |
expirationTimeStamp 的 | 日期时间 | 否 | 购物车的到期日期,采用日期时间格式。 在成功创建购物车时应用。 |
lastModifiedUser | 字符串 | 否 | 上次更新购物车的用户。 在成功创建购物车时应用。 |
lineItems | 对象数组 | 是的 | CartLineItem 资源的数组。 |
下表描述了请求正文中的 CartLineItem 属性。
资产 | 类型 | DESCRIPTION |
---|---|---|
身份证 | 字符串 | 购物车行项目的唯一标识符。 在成功创建购物车时应用。 |
目录 ID | 字符串 | 目录项标识符。 |
友好名称 | 字符串 | 可选。 合作伙伴定义的项的友好名称,以帮助消除歧义。 |
数量 | 整数 (int) | 许可证或实例数。 |
货币代码 | 字符串 | 货币代码。 |
billingCycle | 物体 | 为当前时间段设置的计费周期类型。 |
参与者 | Object String 对列表 | 购买时记录的 PartnerId (PartnerID) 的集合。 |
provisioning上下文 | 字典<字符串、字符串> | 用于提供选件的上下文。 |
orderGroup | 字符串 | 一个组,用于指示哪些项可以放在一起。 |
addonItems | CartLineItem 对象列表 | 附加组件的购物车行项目集合,这些插件将针对购买父购物车行项目后产生的基本订阅进行购买。 此属性仅适用于传统的基于许可证的新商业购物车,包括基于产品/服务的加载项。 新商业项目不使用此 addonItems 属性。 |
错误 | 物体 | 如果出现错误,则在创建 cart 后应用。 |
传统基于许可证的请求示例(新基本订阅)
以下 REST 示例演示如何为新的基本订阅创建包含附加组件的购物车。
POST https://api.partnercenter.microsoft.com/v1/customers/18ac2950-8ea9-4dfc-92a4-ff4d4cd57796/carts HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: f931348a-6312-47d0-a8dd-31a386dedb8f
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
{
"LineItems": [
{
"Id":0,
"CatalogItemId":"91FD106F-4B2C-4938-95AC-F54F74E9A239",
"FriendlyName":"Myofferpurchase",
"Quantity":3,
"BillingCycle":"monthly",
"AddonItems": [
{
"Id":1,
"CatalogItemId":"C94271D8-B431-4A25-A3C5-A57737A1C909",
"Quantity":2,
"BillingCycle":"monthly"
},
{
"Id":2,
"CatalogItemId":"43FCE491-76D1-4BCC-B709-8A288786DBAE",
"Quantity":3,
"BillingCycle":"monthly"
}
]
}
]
}
具有加载项的基本产品/服务的新商业购物车的请求示例(新基本订阅)
{
"LineItems": [
{
"Id": 0,
"CatalogItemId":"CFQ7TTC0LFLX:0001:CFQ7TTC0LB30", - Base
"Quantity": 20,
"BillingCycle": "Monthly",
"TermDuration": "P1M"
},
{
"Id": 1,
"CatalogItemId":"CFQ7TTC0HDJX:0001:CFQ7TTC0K806", - Add on
"Quantity": 20,
"BillingCycle": "Monthly",
"TermDuration": "P1M"
}
]
}
传统基于许可证的请求示例(现有基本订阅)
以下 REST 示例演示如何将附加组件附加到现有基本订阅。 此示例仅与基于许可证的传统商业相关,与新商业无关。
POST https://api.partnercenter.microsoft.com/v1/customers/18ac2950-8ea9-4dfc-92a4-ff4d4cd57796/carts HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: 512a777a-5427-452d-9637-18421387e435
MS-CorrelationId: bbbb1111-cc22-3333-44dd-555555eeeeee
{
"LineItems": [
{
"Id":0,
"CatalogItemId":"C94271D8-B431-4A25-A3C5-A57737A1C909",
"Quantity":1,
"BillingCycle":"annual",
"ProvisioningContext":{"ParentSubscriptionId":"97555B61-7461-477A-A98C-9C76148783E4"}
}
]
}
REST 响应
如果成功,此方法将在响应正文中返回填充的 Cart 资源。
成功响应和错误代码
每个响应都有一个 HTTP 状态代码,指示成功或失败以及更多的调试信息。 使用网络跟踪工具读取此代码、错误类型和其他参数。 要查看更多详细列表,请参阅错误代码。
基于传统许可证的响应示例(新基本订阅)
HTTP/1.1 201 Created
Content-Length: 958
Content-Type: application/json
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
MS-RequestId: f931348a-6312-47d0-a8dd-31a386dedb8f
X-Locale: en-US,en-US
Date: Thu, 01 Nov 2018 22:29:05 GMT
{
"id":"dbe2f8d4-f21d-43e2-9356-cff6387c4ba1",
"creationTimestamp":"2018-11-01T22:29:03.6900182Z",
"lastModifiedTimestamp":"2018-11-01T22:29:03.6900182Z",
"expirationTimestamp":"2018-11-01T22:44:05.0025799Z",
"lastModifiedUser":"1824b7fc-2fac-4478-b177-66823c40ab75",
"status":"Active",
"lineItems": [
{
"id":0,
"catalogItemId":"91FD106F-4B2C-4938-95AC-F54F74E9A239",
"friendlyName":"Myofferpurchase",
"quantity":3,
"currencyCode":"USD",
"billingCycle":"monthly",
"orderGroup":"OMS-0",
"addonItems": [
{
"id":1,
"catalogItemId":"C94271D8-B431-4A25-A3C5-A57737A1C909",
"quantity":2,
"currencyCode":"USD",
"billingCycle":"monthly",
"orderGroup":"OMS-0"
},
{
"id":2,
"catalogItemId":"43FCE491-76D1-4BCC-B709-8A288786DBAE",
"quantity":3,
"currencyCode":"USD",
"billingCycle":"monthly",
"orderGroup":"OMS-0"
}
]
}
],
"links": {
"self": {
"uri":"/customers/18ac2950-8ea9-4dfc-92a4-ff4d4cd57796/carts/dbe2f8d4-f21d-43e2-9356-cff6387c4ba1",
"method":"GET",
"headers":[
]
}
},
"attributes": {
"objectType":"Cart"
}
}
传统基于许可证的响应示例(现有基本订阅)
HTTP/1.1 201 Created
Content-Length: 707
Content-Type: application/json
MS-CorrelationId: bbbb1111-cc22-3333-44dd-555555eeeeee
MS-RequestId: 512a777a-5427-452d-9637-18421387e435
X-Locale: en-US,en-US
Date: Thu, 01 Nov 2018 22:46:18 GMT
{
"id":"4d927e27-93d1-448b-abe5-819b66ecca22",
"creationTimestamp":"2018-11-01T22:46:16.2996364Z",
"lastModifiedTimestamp":"2018-11-01T22:46:16.2996364Z",
"expirationTimestamp":"2018-11-01T23:01:18.7543264Z",
"lastModifiedUser":"1824b7fc-2fac-4478-b177-66823c40ab75",
"status":"Active",
"lineItems": [
{
"id":0,
"catalogItemId":"C94271D8-B431-4A25-A3C5-A57737A1C909",
"quantity":1,
"currencyCode":"USD",
"billingCycle":"annual",
"provisioningContext": {
"parentSubscriptionId":"97555B61-7461-477A-A98C-9C76148783E4"
},
"orderGroup":"OMS-0"
}
],
"links": {
"self": {
"uri":"/customers/18ac2950-8ea9-4dfc-92a4-ff4d4cd57796/carts/4d927e27-93d1-448b-abe5-819b66ecca22",
"method":"GET",
"headers":[
]
}
},
"attributes": {
"objectType":"Cart"
}
}
基于新商业许可证的基本产品/服务和加载项的响应示例
{
"id": "ea37ea81-efaf-4113-9785-e1c266aea2ed",
"creationTimestamp": "2022-02-10T16:04:22.4908435Z",
"lastModifiedTimestamp": "2022-02-10T16:04:22.4908444Z",
"expirationTimestamp": "2022-02-17T16:04:26.3085755Z",
"lastModifiedUser": "a7155e79-65e3-42b0-a62a-a41297979782",
"status": "Active",
"lineItems": [
{
"id": 0,
"catalogItemId": "CFQ7TTC0LFLX:0001:CFQ7TTC0LB30", - Base
"quantity": 20,
"currencyCode": "USD",
"billingCycle": "monthly",
"termDuration": "P1M",
"promotionId": "39NFJQT1PHSN:0008:39NFJQT1Q5J0",
"provisioningContext": {},
"orderGroup": "0"
},
{
"id": 1,
"catalogItemId": "CFQ7TTC0HDJX:0001:CFQ7TTC0K806", - Add on
"quantity": 20,
"currencyCode": "USD",
"billingCycle": "monthly",
"termDuration": "P1M",
"provisioningContext": {},
"orderGroup": "0"
}
],
"links": {
"self": {
"uri": "/customers/3a15e1df-b095-41d4-9029-27a5974c2458/carts/ea37ea81-efaf-4113-9785-e1c266aea2ed",
"method": "GET",
"headers": []
}
},
"attributes": {
"objectType": "Cart"
}
}