创建包含客户订单附加组件的购物车

您可以通过购物车购买附加组件。 有关当前可销售产品/服务的更多信息,请参阅 云解决方案提供商计划中的合作伙伴产品/服务

注释

基于许可证的服务的新商业体验涵盖许多新功能,可供所有云解决方案提供商 (CSP) 使用。 有关详细信息,请参阅新商业体验概述

带有加载项的新商业购物车不同于传统的基于许可证的产品/服务。 新商业加载项的购买方式与基本产品/服务相同,它们不使用 addonItems 属性。 本主题包括专门针对具有附加产品 SKU 的新基于商业的产品 SKU 的请求和响应示例。

注释

购物车自初始创建之日起 7 天后过期。

先决条件

  • 合作伙伴中心身份验证中所述的凭据。 此方案支持使用独立应用和 App+User 凭据进行身份验证。

  • 客户编号 (customer-tenant-id)。 如果不知道客户的 ID,可以在合作伙伴中心查找,依次选择“客户”工作区,从客户列表中选择客户,然后选择“帐户”。 在客户的“帐户”页上的“客户帐户信息”部分查找 Microsoft ID。 Microsoft ID 与客户 ID (customer-tenant-id) 相同。

C#(编程语言)

购物车允许购买基本选件及其相应的附加组件。 请按照以下步骤创建购物车:

  1. 实例化 Cart 对象。

  2. 创建表示基本选件的 CartLineItem 对象列表,并将该列表分配给购物车的 LineItems 属性。

  3. 在每个基本选件的购物车行项下,使用其他 CartLineItem 对象填充 AddOnItems 列表,每个对象都表示将针对该基本选件购买的加载项。

  4. 通过使用 IAggregatePartner 使用客户 ID 调用 ICustomerCollection.ById 方法来标识客户,然后从 Cart 属性中检索接口,从而获取购物车作的接口。

  5. 最后,调用 CreateCreateAsync 方法创建购物车。

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);

按照以下步骤创建一个购物车,以便针对现有基本订阅购买附加组件:

  1. 使用新的CartLineItem 创建一个购物车,该 CartLineItem 在 ProvisioningContext 属性中包含密钥为“ParentSubscriptionId”的订阅 ID。

  2. 调用 CreateCreateAsync 方法。

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