使用合作伙伴中心 API 将试用订阅转换为付费订阅

注释

这些步骤不适用于 New Commerce 产品。 请参阅 转换新商业订阅 文档,了解如何将新商业试用版转换为付费订阅

您可以将试用订阅转换为付费订阅。

先决条件

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

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

  • 活动试用订阅的订阅 ID。

  • 可用的转换选件。

通过代码将试用订阅转换为付费订阅

要将试用订阅转换为付费订阅,您必须先获取可用的试用转换的集合。 然后,您必须选择要购买的转换选件。

转换选件将指定一个数量,该数量默认为与试用订阅相同的许可证数量。 您可以通过将 Quantity 属性设置为要购买的许可证数量来更改此数量。

注释

无论购买的许可证数量如何,试用版的订阅 ID 都将重新用于购买的许可证。 因此,试用版实际上会消失,并被购买项取代。

使用以下步骤通过代码转换试用订阅:

  1. 获取可用订阅作的接口。 您必须识别客户并指定试用订阅的订阅标识符。

    var subscriptionOperations = partnerOperations.Customers.ById(customerId).Subscriptions.ById(subscriptionId);
    
  2. 获取可用转换选件的集合。 有关此方法的请求/响应的更多信息和详细信息,请参阅 获取试用转化选件列表

    var conversions = subscriptionOperations.Conversions.Get();
    
  3. 选择转化选件。 以下代码选择集合中的第一个转化选件。

    var selectedConversion = conversions.Items.ToList()[0];
    
  4. (可选)指定要购买的许可证数量。 默认值是试用订阅中的许可证数量。

    selectedConversion.Quantity = 10;
    
  5. 调用 CreateCreateAsync 方法,将试用订阅转换为付费订阅。

    var convertResult = subscriptionOperations.Conversions.Create(selectedConversion);
    

C#(编程语言)

要将试用订阅转换为付费订阅:

  1. IAggregatePartner.Customers.ById 方法与客户 ID 一起使用来识别客户。

  2. 通过使用试用订阅 ID 调用 Subscriptions.ById 方法,获取订阅作的接口。 将对订阅作接口的引用保存在局部变量中。

  3. 使用 Conversions 属性获取转换上可用作的接口,然后调用 GetGetAsync 方法检索可用 转换 选件的集合。 必须选择一个。 以下示例默认为第一个可用的转换。

  4. 使用对保存在局部变量中的订阅作界面的引用和 Conversions 属性来获取对转化的可用作的接口。

  5. 将选定的转化选件对象传递给 CreateCreateAsync 方法以尝试试用转化。

C# 示例

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

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

// Get the available conversions.
var conversions = subscriptionOperations.Conversions.Get();

// If there are no conversions available, we're done.
// Otherwise, convert the trial to the first available conversion offer.
if (conversions.TotalCount <= 0)
{
    System.Console.WriteLine("This subscription has no conversions");
}
else
{
    // Default to the first conversion.
    var selectedConversion = conversions.Items.ToList()[0];

    // Convert the trial and return the result.
    var convertResult = subscriptionOperations.Conversions.Create(selectedConversion);
}

REST 请求

请求语法

方法 请求 URI
发布 {baseURL}/v1/customers/{customer-id}/subscriptions/{subscription-id}/conversions HTTP/1.1

URI 参数

使用以下路径参数来识别客户订阅和试用订阅。

名称 类型 必选 DESCRIPTION
客户 ID 字符串 是的 标识客户的 GUID 格式字符串。
订阅编号 字符串 是的 标识试用订阅的 GUID 格式字符串。

请求标头

有关详细信息,请参阅合作伙伴中心 REST 标头

请求主体

填充的 Conversion 资源必须包含在请求正文中。

请求示例

POST https://api.partnercenter.microsoft.com/v1/customers/0c39d6d5-c70d-4c55-bc02-f620844f3fd1/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/conversions HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: bd0cde7f-ba87-4010-8a73-1190b641f2a4
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
X-Locale: en-US
Content-Type: application/json
Host: api.partnercenter.microsoft.com
Content-Length: 234
Expect: 100-continue

{
    "OfferId": "C0BD2E08-11AC-4836-BDC7-3712E744922F",
    "TargetOfferId": "031C9E47-4802-4248-838E-778FB1D2CC05",
    "OrderId": "D51A052E-043C-4A2A-AA37-2BB938CEF6C1",
    "Quantity": 25,
    "BillingCycle": "monthly",
    "Attributes": {
        "ObjectType": "Conversion"
    }
}

REST 响应

如果成功,响应正文将包含 ConversionResult 资源。

成功响应和错误代码

每个响应都附带一个 HTTP 状态代码,指示成功或失败和其他调试信息。 请使用网络跟踪工具来读取此代码、错误类型和其他参数。 有关完整列表,请参阅 合作伙伴中心错误代码

响应示例

HTTP/1.1 200 OK
Content-Length: 211
Content-Type: application/json; charset=utf-8
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
MS-RequestId: bd0cde7f-ba87-4010-8a73-1190b641f2a4
MS-CV: kW4GzmhvHEqCq1ls.0
MS-ServerId: 030020643
Date: Thu, 15 Jun 2017 23:10:40 GMT

 {
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "offerId": "C0BD2E08-11AC-4836-BDC7-3712E744922F",
    "targetOfferId": "031C9E47-4802-4248-838E-778FB1D2CC05",
    "attributes": {
        "objectType": "ConversionResult"
    }
}