Comprar un complemento para una suscripción
Se aplica a: Centro de partners | Centro de partners operado por 21Vianet | Centro de partners para Microsoft Cloud for US Government
Cómo comprar un complemento en una suscripción existente.
Requisitos previos
Credenciales tal como se describen en el artículo Autenticación del Centro de partners. Este escenario admite la autenticación con las credenciales de aplicación independiente y app+usuario.
Un id. de cliente (
customer-tenant-id
). Si no conoce el identificador del cliente, puede buscarlo en el Centro de partners si selecciona el área de trabajo Clientes , el cliente de la lista de clientes y, a continuación, cuenta. En la página Cuenta del cliente, busca el Id. de Microsoft en la sección Información de la cuenta del cliente. El id. de Microsoft es el mismo que el de cliente (customer-tenant-id
).Un identificador de suscripción. Esta es la suscripción existente para la que se va a comprar una oferta de complemento.
Identificador de oferta que identifica la oferta de complemento que se va a comprar.
Compra de un complemento a través del código
Al comprar un complemento en una suscripción, actualiza el pedido de suscripción original con el pedido del complemento. A continuación, customerId es el identificador de cliente, subscriptionId es el identificador de suscripción y addOnOfferId es el identificador de oferta del complemento.
Estos son los pasos que debe realizar:
Obtenga una interfaz para las operaciones de la suscripción.
var subscriptionOperations = partnerOperations.Customers.ById(customerId).Subscriptions.ById(subscriptionId);
Use esa interfaz para crear instancias de un objeto de suscripción. Esto le obtiene los detalles de la suscripción primaria, incluido el identificador de pedido.
var parentSubscription = subscriptionOperations.Get();
Cree una instancia de un nuevo objeto Order . Esta instancia de pedido se usa para actualizar el pedido original usado para comprar la suscripción. Agregue un elemento de una sola línea al orden que representa el complemento.
var orderToUpdate = new Order() { ReferenceCustomerId = customerId, LineItems = new List<OrderLineItem>() { new OrderLineItem() { LineItemNumber = 0, OfferId = addOnOfferId, FriendlyName = "Some friendly name", Quantity = 2, ParentSubscriptionId = subscriptionId } } };
Actualice el pedido original de la suscripción con el nuevo pedido para el complemento.
Order updatedOrder = partnerOperations.Customers.ById(customerId).Orders.ById(parentSubscription.OrderId).Patch(orderToUpdate);
C#
Para comprar un complemento, empiece por obtener una interfaz para las operaciones de suscripción mediante una llamada al método IAggregatePartner.Customers.ById con el identificador de cliente para identificar al cliente y el método Subscriptions.ById para identificar la suscripción que tiene la oferta de complemento. Use esa interfaz para recuperar los detalles de la suscripción mediante una llamada a Get. Los detalles de la suscripción contienen el identificador de pedido del pedido de suscripción, que es el orden que se va a actualizar con el complemento.
A continuación, cree una instancia de un nuevo objeto Order y rellénelo con una única instancia de LineItem que contenga la información para identificar el complemento, como se muestra en el siguiente fragmento de código. Usará este nuevo objeto para actualizar el pedido de suscripción con el complemento. Por último, llame al método Patch para actualizar el pedido de suscripción, después de identificar primero al cliente con IAggregatePartner.Customers.ById y el pedido con 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);
Ejemplo: Aplicación de prueba de consola. Project: Clase de ejemplos del SDK del Centro de partners: AddSubscriptionAddOn.cs
Solicitud REST
Sintaxis de la solicitud
Método | URI de solicitud |
---|---|
PATCH | {baseURL}/v1/customers/{customer-tenant-id}/orders/{order-id} HTTP/1.1 |
Parámetros del identificador URI
Use los parámetros siguientes para identificar el cliente y el pedido.
Nombre | Tipo | Obligatorio | Descripción |
---|---|---|---|
customer-tenant-id | guid | Y | El valor es un GUID con formato customer-tenant-id que identifica al cliente. |
order-id | guid | Y | Identificador de pedido. |
Encabezados de solicitud
Para obtener más información, consulta Encabezados REST del Centro de partners.
Cuerpo de la solicitud
En las tablas siguientes se describen las propiedades del cuerpo de la solicitud.
Pedido de
Nombre | Tipo | Obligatorio | Descripción |
---|---|---|---|
Identificador | string | N | Identificador de pedido. |
ReferenceCustomerId | string | Y | Identificador de cliente. |
LineItems | matriz de objetos | Y | Matriz de objetos OrderLineItem . |
CreationDate | string | N | La fecha en que se creó el pedido, en formato de fecha y hora. |
Atributos | object | N | Contiene "ObjectType": "Order". |
OrderLineItem
Nombre | Tipo | Obligatorio | Descripción |
---|---|---|---|
LineItemNumber | number | Y | Número de elemento de línea, empezando por 0. |
OfferId | string | Y | Identificador de la oferta del complemento. |
SubscriptionId | string | N | Identificador de la suscripción de complemento comprada. |
ParentSubscriptionId | string | Y | Identificador de la suscripción primaria que tiene la oferta de complemento. |
FriendlyName | string | No | Nombre descriptivo de este elemento de línea. |
Cantidad | number | Y | Número de licencias. |
PartnerIdOnRecord | string | No | PartnerID del asociado de registro. |
Atributos | object | No | Contiene "ObjectType": "OrderLineItem". |
Ejemplo de solicitud
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"
}
}
Respuesta REST
Si se ejecuta correctamente, este método devuelve el orden de suscripción actualizado en el cuerpo de la respuesta.
Códigos de error y de respuesta correctos
Cada respuesta incluye un código de estado HTTP que indica si la operación se ha realizado correctamente o con errores y proporciona información de depuración adicional. Use una herramienta de seguimiento de red para leer este código, el tipo de error y los parámetros adicionales. Para obtener la lista completa, consulta Códigos de error del Centro de partners.
Ejemplo de respuesta
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"
}
}