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:
Instanciar um objeto Cart.
Crie uma lista de objetos CartLineItem que representam a(s) oferta(s) base(s) e atribua a lista à propriedade LineItems do carrinho.
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.
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.
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):
Crie um carrinho com um novo CartLineItem contendo a ID da assinatura na propriedade ProvisioningContext com a chave "ParentSubscriptionId".
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.
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"
}
}
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de