Partilhar via


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:

  1. Obtenha uma interface para as operações da subscrição.

    var subscriptionOperations = partnerOperations.Customers.ById(customerId).Subscriptions.ById(subscriptionId);
    
  2. 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();
    
  3. 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
            }
        }
    };
    
  4. 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"
    }
}