Comprar um suplemento para uma subscrição
Aplica-se a: Centro de Parceiros | Centro de Parceiros operado pela 21Vianet | Centro de Parceiros para Microsoft Cloud for US Government
Como comprar um suplemento para uma subscrição existente.
Pré-requisitos
Credenciais conforme descrito na autenticação do Centro de Parceiros. Este cenário suporta a autenticação com credenciais de Aplicação e Aplicação+Utilizador autónomas.
Um ID de cliente (
customer-tenant-id
). Se não souber o ID do cliente, pode procurá-lo no Centro de Parceiros ao selecionar a área de trabalho Clientes e, em seguida, o cliente na lista de clientes e, em seguida, Conta. Na página Conta do cliente, procure o ID Microsoft na secção Informações da Conta de Cliente . O ID da Microsoft é o mesmo que o ID do cliente (customer-tenant-id
).Um ID de subscrição. Esta é a subscrição existente para a qual comprar uma oferta de suplemento.
Um ID de oferta que identifica a oferta de suplemento para compra.
Comprar um suplemento através de código
Quando compra um suplemento para uma subscrição, está a atualizar a encomenda de subscrição original com a encomenda do suplemento. No seguinte, customerId é o ID do cliente, subscriptionId é o ID da subscrição e addOnOfferId é o ID da oferta do suplemento.
Eis os passos:
Obtenha uma interface para as operações da subscrição.
var subscriptionOperations = partnerOperations.Customers.ById(customerId).Subscriptions.ById(subscriptionId);
Utilize essa interface para instanciar um objeto de subscrição. Isto dá-lhe os detalhes da subscrição principal, incluindo o ID da encomenda.
var parentSubscription = subscriptionOperations.Get();
Instanciar um novo objeto Order . Esta instância de encomenda é utilizada para atualizar a encomenda original utilizada para comprar a subscrição. Adicione um item de linha única à ordem que representa o suplemento.
var orderToUpdate = new Order() { ReferenceCustomerId = customerId, LineItems = new List<OrderLineItem>() { new OrderLineItem() { LineItemNumber = 0, OfferId = addOnOfferId, FriendlyName = "Some friendly name", Quantity = 2, ParentSubscriptionId = subscriptionId } } };
Atualize a encomenda original da subscrição com a nova encomenda do suplemento.
Order updatedOrder = partnerOperations.Customers.ById(customerId).Orders.ById(parentSubscription.OrderId).Patch(orderToUpdate);
C#
Para comprar um suplemento, comece por obter uma interface para as operações de subscrição ao chamar o método IAggregatePartner.Customers.ById com o ID do cliente para identificar o cliente e o método Subscriptions.ById para identificar a subscrição que tem a oferta de suplemento. Utilize essa interface para obter os detalhes da subscrição ao chamar Obter. Os detalhes da subscrição contêm o ID da encomenda da subscrição, que é a ordem a atualizar com o suplemento.
Em seguida, instanciar um novo objeto Order e preenchê-lo com uma única instância LineItem que contém as informações para identificar o suplemento, conforme mostrado no fragmento de código seguinte. Irá utilizar este novo objeto para atualizar a ordem de subscrição com o suplemento. Por fim, chame o método Patch para atualizar a encomenda de subscrição, depois de identificar primeiro o cliente com IAggregatePartner.Customers.ById e a encomenda com 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);
Exemplo: aplicação de teste da consola. Projeto: Classe de Exemplos do SDK do Centro de Parceiros: AddSubscriptionAddOn.cs
Pedido REST
Sintaxe do pedido
Método | URI do pedido |
---|---|
PATCH | {baseURL}/v1/customers/{customer-tenant-id}/orders/{order-id} HTTP/1.1 |
Parâmetros do URI
Utilize os seguintes parâmetros para identificar o cliente e a encomenda.
Nome | Tipo | Necessário | Descrição |
---|---|---|---|
customer-tenant-id | guid | Y | O valor é um GUID formatado customer-tenant-id que identifica o cliente. |
order-id | guid | Y | O identificador da encomenda. |
Cabeçalhos do pedido
Para obter mais informações, veja Cabeçalhos REST do Centro de Parceiros.
Corpo do pedido
As tabelas seguintes descrevem as propriedades no corpo do pedido.
Encomenda
Nome | Tipo | Necessário | Descrição |
---|---|---|---|
Id | string | N | O ID da encomenda. |
ReferenceCustomerId | string | Y | O ID do cliente. |
LineItems | matriz de objetos | Y | Uma matriz de objetos OrderLineItem . |
CreationDate | string | N | A data em que a encomenda foi criada, no formato de data/hora. |
Atributos | objeto | N | Contém "ObjectType": "Order". |
OrderLineItem
Nome | Tipo | Necessário | Descrição |
---|---|---|---|
LineItemNumber | número | Y | O número do item de linha, a começar por 0. |
OfferId | string | Y | O ID da oferta do suplemento. |
SubscriptionId | string | N | O ID da subscrição de suplemento comprada. |
ParentSubscriptionId | string | Y | O ID da subscrição principal que tem a oferta de suplemento. |
FriendlyName | string | N | O nome amigável deste item de linha. |
Quantidade | número | Y | O número de licenças. |
PartnerIdOnRecord | string | N | O PartnerID do parceiro de registo. |
Atributos | objeto | N | Contém "ObjectType": "OrderLineItem". |
Exemplo de pedido
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"
}
}
Resposta do REST
Se for bem-sucedido, este método devolve a ordem de subscrição atualizada no corpo da resposta.
Códigos de erro e êxito da resposta
Cada resposta inclui um código de estado HTTP que indica êxito ou falha e informações adicionais de depuração. Utilize uma ferramenta de rastreio de rede para ler este código, tipo de erro e parâmetros adicionais. Para obter a lista completa, veja Códigos de Erro do Centro de Parceiros.
Exemplo de resposta
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"
}
}