Criar um carrinho com complementosCreate a cart with add-ons

Aplica-se a:Applies to:

  • Partner CenterPartner Center

Você pode comprar Complementos por meio de um carrinho.You can purchase add-ons through a cart. Para obter mais informações sobre o que está disponível atualmente para venda, consulte ofertas de parceiros no programa provedor de soluções na nuvem.For more information about what is currently available to sell, see Partner offers in the Cloud Solution Provider program.

Pré-requisitosPrerequisites

  • Credenciais, conforme descrito em Autenticação do Partner Center.Credentials as described in Partner Center authentication. Esse cenário dá suporte à autenticação com aplicativos autônomos e aplicativos + credenciais de usuário.This scenario supports authentication with both standalone App and App+User credentials.

  • Uma ID do cliente (customer-tenant-id).A customer ID (customer-tenant-id). Se você não souber a ID do cliente, poderá procurar no painel do Partner Center.If you don't know the customer's ID, you can look it up in the Partner Center dashboard. Selecione CSP no menu do Partner Center e, em seguida, Clientes.Select CSP from the Partner Center menu, followed by Customers. Selecione o cliente na lista de clientes e selecione Conta.Select the customer from the customer list, then select Account. Na página Conta do cliente, procure a ID da Microsoft na seção Informações da Conta do Cliente.On the customer’s Account page, look for the Microsoft ID in the Customer Account Info section. A ID da Microsoft é igual à ID do cliente (customer-tenant-id).The Microsoft ID is the same as the customer ID (customer-tenant-id).

C#C#

Um carrinho permite a compra de uma oferta base e seus Complementos correspondentes.A cart enables the purchase of a base offer and its corresponding add-ons. Siga estas etapas para criar um carrinho:Follow these steps to create a cart:

  1. Crie uma instância de um objeto de carrinho .Instantiate a Cart object.

  2. Crie uma lista de objetos CartLineItem que representam as ofertas base e atribua a lista à propriedade LineItems do carrinho.Create a list of CartLineItem objects which represent the base offer(s), and assign the list to the cart's LineItems property.

  3. Em cada item de linha do carrinho da oferta base, preencha a lista de AddOnItems com outros objetos CartLineItem que representam um complemento que será comprado em relação a essa oferta base.Under each base offer's cart line item, populate the list of AddOnItems with other CartLineItem objects that each represent an add-on that will be purchased against that base offer.

  4. Obtenha uma interface para operações de carrinho usando IAggregatePartner para chamar o método ICustomerCollection. BYID com a ID do cliente para identificar o cliente e, em seguida, recuperar a interface da Propriedade do carrinho .Obtain an interface to cart operations by using IAggregatePartner to call the ICustomerCollection.ById method with the customer ID to identify the customer, and then retrieving the interface from the Cart property.

  5. Por fim, chame o método Create ou createasync para criar o carrinho.Finally, call the Create or CreateAsync method to create the cart.

#Exemplo CC# example

// IAggregatePartner partnerOperations;
// string customerId;

var cart = new Cart()
    {
        LineItems = new List<CartLineItem>()
        {
            new CartLineItem()
            {
                Id = 0,
                CatalogItemId = "A_base_offer_ID",
                FriendlyName = "Myofferpurchase",
                Quantity = 3,
                BillingCycle = BillingCycleType.Monthly,
                AddonItems = new List<CartLineItem>
                {
                    new CartLineItem
                    {
                        Id = 1,
                        CatalogItemId = "An_addon_item_ID",
                        BillingCycle = BillingCycleType.Monthly,
                        Quantity = 2,
                    },
                    new CartLineItem
                    {
                        Id = 2,
                        CatalogItemId = "Another_addon_item_ID",
                        BillingCycle = BillingCycleType.Monthly,
                        Quantity = 3
                    }
                }
            }
        }
    };

var createdCart = partnerOperations.Customers.ById(customerId).Carts.Create(cart);

Siga estas etapas para criar um carrinho que habilitará a compra de Complementos em relação a assinatura (s) base (ões) existente:Follow these steps to create a cart which will enable the purchase of add-on(s) against existing base subscription(s):

  1. Crie um carrinho com um novo CARTLINEITEM contendo a ID da assinatura na propriedade ProvisioningContext com a chave "ParentSubscriptionId".Create a Cart with a new CartLineItem containing the subscription ID in the ProvisioningContext property with key "ParentSubscriptionId".

  2. Chame o método Create ou createasync .Call the Create or CreateAsync method.

// IAggregatePartner partnerOperations;
// string selectedCustomerId;

var cart = new Cart()
    {
        LineItems = new List<CartLineItem>()
        {
            new CartLineItem()
            {
                Id = 0,
                CatalogItemId = "An_addon_item_ID",
                ProvisioningContext = new Dictionary<string, string>
                {
                    {
                        "ParentSubscriptionId", "An_existing_subscription_Id"
                    }
                },
                Quantity = 1,
                BillingCycle = BillingCycleType.Annual,
            }
        }
    };

var createdCart = partnerOperations.Customers.ById(selectedCustomerId).Carts.Create(cart);

Solicitação RESTREST request

Sintaxe da solicitaçãoRequest syntax

MétodoMethod URI da solicitaçãoRequest URI
POSTPOST {baseURL}/v1/Customers/{Customer-ID}/carts http/1.1{baseURL}/v1/customers/{customer-id}/carts HTTP/1.1

Parâmetro do URIURI parameter

Use o seguinte parâmetro de caminho para identificar o cliente.Use the following path parameter to identify the customer.

NomeName TipoType ObrigatórioRequired DescriçãoDescription
ID do clientecustomer-id stringstring SimYes Uma ID de cliente formatada pelo GUID que identifica o cliente.A GUID formatted customer-id that identifies the customer.

Cabeçalhos de solicitaçãoRequest headers

Para obter mais informações, confira Cabeçalhos REST do Partner Center.For more information, see Partner Center REST headers.

Corpo da solicitaçãoRequest body

Esta tabela descreve as propriedades do carrinho no corpo da solicitação.This table describes the Cart properties in the request body.

PropriedadeProperty TipoType ObrigatórioRequired DescriçãoDescription
idid stringstring NoNo Um identificador de carrinho que é fornecido após a criação bem-sucedida do carrinho.A cart identifier that is supplied upon successful creation of the cart.
creationTimeStampcreationTimeStamp DatetimeDateTime NoNo A data em que o carrinho foi criado, no formato de data e hora.The date the cart was created, in date-time format. Aplicado após a criação bem-sucedida do carrinho.Applied upon successful creation of the cart.
lastModifiedTimeStamplastModifiedTimeStamp DatetimeDateTime NoNo A data em que o carrinho foi atualizado pela última vez, no formato de data e hora.The date the cart was last updated, in date-time format. Aplicado após a criação bem-sucedida do carrinho.Applied upon successful creation of the cart.
expirationTimeStampexpirationTimeStamp DatetimeDateTime NoNo A data em que o carrinho irá expirar, em formato de data e hora.The date the cart will expire, in date-time format. Aplicado após a criação bem-sucedida do carrinho.Applied upon successful creation of cart.
lastModifiedUserlastModifiedUser Cadeia de caracteresstring NoNo O usuário que atualizou o carrinho pela última vez.The user who last updated the cart. Aplicado após a criação bem-sucedida do carrinho.Applied upon successful creation of cart.
itens de linhalineItems Matriz de objetosArray of objects SimYes Uma matriz de recursos de CartLineItem .An Array of CartLineItem resources.

Esta tabela descreve as propriedades CartLineItem no corpo da solicitação.This table describes the CartLineItem properties in the request body.

PropriedadeProperty TipoType DescriçãoDescription
idid stringstring Um identificador exclusivo para um item de linha do carrinho.A unique identifier for a cart line item. Aplicado após a criação bem-sucedida do carrinho.Applied upon successful creation of cart.
catálogoidcatalogId stringstring O identificador do item de catálogo.The catalog item identifier.
friendlyNamefriendlyName stringstring Opcional.Optional. O nome amigável para o item definido pelo parceiro para ajudar a ambiguidade.The friendly name for the item defined by the partner to help disambiguate.
quantidadequantity INTint O número de licenças ou instâncias.The number of licenses or instances.
currencyCodecurrencyCode stringstring O código de moeda.The currency code.
billingCyclebillingCycle ObjetoObject O tipo de ciclo de cobrança definido para o período atual.The type of billing cycle set for the current period.
participantsparticipants Lista de pares de cadeias de caracteres de objetoList of Object String pairs Uma coleção de PartnerId no registro (MPNID) na compra.A collection of PartnerId on Record (MPNID) on the purchase.
provisioningContextprovisioningContext <de cadeia de caracteres de dicionário, Cadeia de caracteres>Dictionary<string, string> Um contexto usado para provisionamento de oferta.A context used for provisioning of offer.
OrderGrouporderGroup stringstring Um grupo para indicar quais itens podem ser colocados juntos.A group to indicate which items can be placed together.
addonItemsaddonItems Lista de objetos CartLineItemList of CartLineItem objects Uma coleção de itens de linha do carrinho para complementos que serão comprados em direção à assinatura base que resulta da compra do item de linha do carrinho pai.A collection of cart line items for add-ons that will be purchased towards the base subscription that results from the parent cart line item's purchase.
errorerror ObjetoObject Aplicado após o carrinho ser criado em caso de erro.Applied after cart is created in case of an error.

Exemplo de solicitação (nova assinatura base)Request example (new base subscription)

O exemplo de REST a seguir mostra como criar um carrinho com itens de complemento para uma nova assinatura base.The following REST example shows how to create a cart with add-on items for a new base subscription.

POST https://api.partnercenter.microsoft.com/v1/customers/18ac2950-8ea9-4dfc-92a4-ff4d4cd57796/carts HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: f931348a-6312-47d0-a8dd-31a386dedb8f
MS-CorrelationId: f73baf70-bbc3-43d0-8b29-dffa08ff9511

{
    "LineItems": [
        {
            "Id":0,
            "CatalogItemId":"91FD106F-4B2C-4938-95AC-F54F74E9A239",
            "FriendlyName":"Myofferpurchase",
            "Quantity":3,
            "BillingCycle":"monthly",
            "AddonItems": [
                {
                    "Id":1,
                    "CatalogItemId":"C94271D8-B431-4A25-A3C5-A57737A1C909",
                    "Quantity":2,
                    "BillingCycle":"monthly"
                },
                {
                    "Id":2,
                    "CatalogItemId":"43FCE491-76D1-4BCC-B709-8A288786DBAE",
                    "Quantity":3,
                    "BillingCycle":"monthly"
                }
            ]
        }
    ]
}

Exemplo de solicitação (assinatura base existente)Request example (existing base subscription)

O exemplo de REST a seguir mostra como acrescentar Complementos a uma assinatura base existente.The following REST example show how to append add-ons to an existing base subscription.

POST https://api.partnercenter.microsoft.com/v1/customers/18ac2950-8ea9-4dfc-92a4-ff4d4cd57796/carts HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: 512a777a-5427-452d-9637-18421387e435
MS-CorrelationId: 182474ba-7303-4d0f-870a-8c7fba5ccc4b

{
    "LineItems": [
        {
            "Id":0,
            "CatalogItemId":"C94271D8-B431-4A25-A3C5-A57737A1C909",
            "Quantity":1,
            "BillingCycle":"annual",
            "ProvisioningContext":{"ParentSubscriptionId":"97555B61-7461-477A-A98C-9C76148783E4"}
        }
    ]
}

Resposta RESTREST response

Se for bem-sucedido, esse método retornará o recurso de carrinho preenchido no corpo da resposta.If successful, this method returns the populated Cart resource in the response body.

Códigos de êxito e de erro de respostaResponse success and error codes

Cada resposta vem com um código de status HTTP que indica êxito ou falha e informações de depuração adicionais.Each response comes with an HTTP status code that indicates success or failure and additional debugging information. Use uma ferramenta de rastreamento de rede para ler esse código, o tipo de erro e os parâmetros adicionais.Use a network trace tool to read this code, error type, and additional parameters. Para obter a lista completa, confira Códigos de Erro.For the full list, see Error Codes.

Exemplo de resposta (nova assinatura base)Response example (new base subscription)

HTTP/1.1 201 Created
Content-Length: 958
Content-Type: application/json
MS-CorrelationId: f73baf70-bbc3-43d0-8b29-dffa08ff9511
MS-RequestId: f931348a-6312-47d0-a8dd-31a386dedb8f
X-Locale: en-US,en-US
Date: Thu, 01 Nov 2018 22:29:05 GMT

{
    "id":"dbe2f8d4-f21d-43e2-9356-cff6387c4ba1",
    "creationTimestamp":"2018-11-01T22:29:03.6900182Z",
    "lastModifiedTimestamp":"2018-11-01T22:29:03.6900182Z",
    "expirationTimestamp":"2018-11-01T22:44:05.0025799Z",
    "lastModifiedUser":"1824b7fc-2fac-4478-b177-66823c40ab75",
    "status":"Active",
    "lineItems": [
        {
            "id":0,
            "catalogItemId":"91FD106F-4B2C-4938-95AC-F54F74E9A239",
            "friendlyName":"Myofferpurchase",
            "quantity":3,
            "currencyCode":"USD",
            "billingCycle":"monthly",
            "orderGroup":"OMS-0",
            "addonItems": [
                {
                    "id":1,
                    "catalogItemId":"C94271D8-B431-4A25-A3C5-A57737A1C909",
                    "quantity":2,
                    "currencyCode":"USD",
                    "billingCycle":"monthly",
                    "orderGroup":"OMS-0"
                },
                {
                    "id":2,
                    "catalogItemId":"43FCE491-76D1-4BCC-B709-8A288786DBAE",
                    "quantity":3,
                    "currencyCode":"USD",
                    "billingCycle":"monthly",
                    "orderGroup":"OMS-0"
                }
            ]
        }
],
    "links": {
        "self": {
            "uri":"/customers/18ac2950-8ea9-4dfc-92a4-ff4d4cd57796/carts/dbe2f8d4-f21d-43e2-9356-cff6387c4ba1",
            "method":"GET",
            "headers":[
            ]
        }
    },
    "attributes": {
        "objectType":"Cart"
    }
}

Exemplo de resposta (assinatura base existente)Response example (existing base subscription)

HTTP/1.1 201 Created
Content-Length: 707
Content-Type: application/json
MS-CorrelationId: 182474ba-7303-4d0f-870a-8c7fba5ccc4b
MS-RequestId: 512a777a-5427-452d-9637-18421387e435
X-Locale: en-US,en-US
Date: Thu, 01 Nov 2018 22:46:18 GMT

{
    "id":"4d927e27-93d1-448b-abe5-819b66ecca22",
    "creationTimestamp":"2018-11-01T22:46:16.2996364Z",
    "lastModifiedTimestamp":"2018-11-01T22:46:16.2996364Z",
    "expirationTimestamp":"2018-11-01T23:01:18.7543264Z",
    "lastModifiedUser":"1824b7fc-2fac-4478-b177-66823c40ab75",
    "status":"Active",
    "lineItems": [
        {
            "id":0,
            "catalogItemId":"C94271D8-B431-4A25-A3C5-A57737A1C909",
            "quantity":1,
            "currencyCode":"USD",
            "billingCycle":"annual",
            "provisioningContext": {
                "parentSubscriptionId":"97555B61-7461-477A-A98C-9C76148783E4"
            },
            "orderGroup":"OMS-0"
        }
    ],
    "links": {
        "self": {
            "uri":"/customers/18ac2950-8ea9-4dfc-92a4-ff4d4cd57796/carts/4d927e27-93d1-448b-abe5-819b66ecca22",
            "method":"GET",
            "headers":[
            ]
        }
    },
    "attributes": {
        "objectType":"Cart"
    }
}