Criar um carrinho com complementos para um pedido do cliente

Você pode comprar complementos através de um carrinho. 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.

Observação

As novas experiências de comércio para serviços baseados em licença incluem muitos recursos novos e estão disponíveis para todos os CSPs (provedores de soluções em nuvem). Para obter mais informações, confira a visão geral das novas experiências de comércio.

Os novos carrinhos de comércio com complementos são diferentes das ofertas tradicionais baseadas em licenças. Novos complementos de comércio são comprados da mesma forma que as ofertas base, eles não usam a propriedade addonItems . Este tópico inclui exemplos de solicitação e resposta especificamente para um novo SKU de produto baseado em comércio com um SKU de produto complementar.

Observação

Os carrinhos expiram 7 dias após a criação inicial.

Pré-requisitos

  • Credenciais, conforme descrito em Autenticação do Partner Center. Esse cenário oferece suporte à autenticação com credenciais autônomas de Aplicativo e Aplicativo+Usuário.

  • Uma ID do cliente (customer-tenant-id). Se você não souber a ID do cliente, poderá procurá-la no Partner Center selecionando o espaço de trabalho Clientes, o cliente na lista de clientes e, em seguida, Conta. Na página Conta do cliente, procure a ID da Microsoft na seção Informações da Conta do Cliente. A ID da Microsoft é igual à ID do cliente (customer-tenant-id).

C#

Um carrinho permite a compra de uma oferta base e seus complementos correspondentes. Siga estas etapas para criar um carrinho:

  1. Instanciar um objeto Cart.

  2. Crie uma lista de objetos CartLineItem que representam a(s) oferta(s) base(s) e atribua a lista à propriedade LineItems do carrinho.

  3. Em cada item de linha de 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.

  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, recuperando a interface da propriedade Cart.

  5. Finalmente, chame o método Create ou CreateAsync para criar o carrinho.

Exemplo de C#

// 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 permita a compra de complementos em relação à(s) assinatura(s) base(s) existente(s):

  1. Crie um carrinho com um novo CartLineItem contendo a ID da assinatura na propriedade ProvisioningContext com a chave "ParentSubscriptionId".

  2. Chame o método Create ou CreateAsync .

// 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 REST

Sintaxe da solicitação

Método URI da solicitação
POST {baseURL}/v1/customers/{customer-id}/carrinhos HTTP/1.1

Parâmetro do URI

Use o seguinte parâmetro de caminho para identificar o cliente.

Nome Digitar Obrigatória Descrição
id do cliente string Sim Um ID de cliente formatado por GUID que identifica o cliente.

Cabeçalhos da solicitação

Para obter mais informações, confira Cabeçalhos REST do Partner Center.

Corpo da solicitação

Esta tabela descreve as propriedades Carrinho no corpo da solicitação.

Propriedade Type Obrigatória Descrição
id string Não Um identificador de carrinho que é fornecido após a criação bem-sucedida do carrinho.
criaçãoTimeStamp DateTime Não A data em que o carrinho foi criado, no formato data-hora. Aplicado após a criação bem-sucedida do carrinho.
lastModifiedTimeStamp DateTime Não A data em que o carrinho foi atualizado pela última vez, no formato data-hora. Aplicado após a criação bem-sucedida do carrinho.
expirationTimeStamp DateTime Não A data em que o carrinho expira, no formato data-hora. Aplicado após a criação bem-sucedida do carrinho.
lastModifiedUser string Não O usuário que atualizou o carrinho pela última vez. Aplicado após a criação bem-sucedida do carrinho.
lineItems Matriz de objetos Sim Uma matriz de recursos CartLineItem.

Esta tabela descreve as propriedades CartLineItem no corpo da solicitação.

Propriedade Type Descrição
id string Um identificador exclusivo para um item de linha do carrinho. Aplicado após a criação bem-sucedida do carrinho.
catalogId string O identificador de item de catálogo.
friendlyName string Opcional. O nome amigável para o item definido pelo parceiro para ajudar a desambiguar.
quantity int O número de licenças ou instâncias.
currencyCode string O código da moeda.
billingCycle Objeto O tipo de ciclo de faturamento definido para o período atual.
participants Lista de pares de Cadeia de Caracteres de Objeto Uma coleção de PartnerId on Record (PartnerID) na compra.
provisionamentoContexto Cadeia de caracteres do dicionário<, cadeia de caracteres> Um contexto usado para provisionamento de oferta.
orderGroup string Um grupo para indicar quais itens podem ser colocados juntos.
addonItems Lista de objetos CartLineItem Uma coleção de itens de linha de carrinho para complementos que serão comprados para a assinatura base resultante da compra do item de linha de carrinho pai. Esta propriedade é apenas para carrinhos baseados em licença tradicional, novos carrinhos baseados em licença de comércio incluem complementos como ofertas baseadas. Os itens de comércio novo não usam essa propriedade addonItems .
error Objeto Aplicado depois que o carrinho é criado se houver um erro.

Exemplo de solicitação (nova assinatura base) para licença tradicional

O exemplo REST a seguir mostra como criar um carrinho com itens de complemento para uma nova assinatura base.

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 (nova assinatura base) para um novo carrinho de comércio para uma oferta base com um complemento

{
    "LineItems": [
        {
            "Id": 0,
            "CatalogItemId":"CFQ7TTC0LFLX:0001:CFQ7TTC0LB30", - Base
            "Quantity": 20,
            "BillingCycle": "Monthly",
            "TermDuration": "P1M"
        },
        {
            "Id": 1,
            "CatalogItemId":"CFQ7TTC0HDJX:0001:CFQ7TTC0K806", - Add on
            "Quantity": 20,
            "BillingCycle": "Monthly",
            "TermDuration": "P1M"
        }
    ]
}

Exemplo de solicitação (assinatura base existente) para licença tradicional

O exemplo REST a seguir mostra como anexar complementos a uma assinatura base existente. Este exemplo é relevante apenas para o comércio tradicional baseado em licenças, não para o novo comércio.

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 REST

Se for bem-sucedido, esse método retornará o recurso Carrinho preenchido no corpo da resposta.

Códigos de êxito e de erro de resposta

Cada resposta vem com um código de status HTTP que indica sucesso ou falha e mais informações de depuração. Use uma ferramenta de rastreamento de rede para ler esse código, tipo de erro e mais parâmetros. Para obter a lista completa, confira Códigos de Erro.

Exemplo de resposta (nova assinatura base) para licença tradicional

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) para licença tradicional

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

Exemplo de resposta para uma nova oferta base baseada em licença de comércio e complemento

{
    "id": "ea37ea81-efaf-4113-9785-e1c266aea2ed",
    "creationTimestamp": "2022-02-10T16:04:22.4908435Z",
    "lastModifiedTimestamp": "2022-02-10T16:04:22.4908444Z",
    "expirationTimestamp": "2022-02-17T16:04:26.3085755Z",
    "lastModifiedUser": "a7155e79-65e3-42b0-a62a-a41297979782",
    "status": "Active",
    "lineItems": [
        {
            "id": 0,
            "catalogItemId": "CFQ7TTC0LFLX:0001:CFQ7TTC0LB30", - Base
            "quantity": 20,
            "currencyCode": "USD",
            "billingCycle": "monthly",
            "termDuration": "P1M",
            "promotionId": "39NFJQT1PHSN:0008:39NFJQT1Q5J0",
            "provisioningContext": {},
            "orderGroup": "0"
        },
        {
            "id": 1,
            "catalogItemId": "CFQ7TTC0HDJX:0001:CFQ7TTC0K806", - Add on
            "quantity": 20,
            "currencyCode": "USD",
            "billingCycle": "monthly",
            "termDuration": "P1M",
            "provisioningContext": {},
            "orderGroup": "0"
        }
    ],
    "links": {
        "self": {
            "uri": "/customers/3a15e1df-b095-41d4-9029-27a5974c2458/carts/ea37ea81-efaf-4113-9785-e1c266aea2ed",
            "method": "GET",
            "headers": []
        }
    },
    "attributes": {
        "objectType": "Cart"
    }
}