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

注意

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

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

先决条件

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

  • 客户 ID (customer-tenant-id)。 如果不知道客户的 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 属性获取对转换的可用操作的接口,然后调用 Get 或 GetAsync 方法来检索可用转换产品/服务的集合。 你必须选择一个。 以下示例默认为第一个可用的转换。

  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
POST {baseURL}/v1/customers/{customer-id}/subscriptions/{subscription-id}/conversions HTTP/1.1

URI 参数

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

名称 类型 必填 说明
customer-id string 标识客户的 GUID 格式字符串。
subscription-id string 标识试用订阅的 GUID 格式字符串。

请求标头

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

请求正文

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

请求示例

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