Criar um carrinho com um pedido de cliente
Aplica-se a: Centro de Parceiros | Centro de Parceiros operado pela 21Vianet | Centro de Parceiros da Microsoft Cloud for US Government
Você pode adicionar um pedido para um cliente em um carrinho. Para obter mais informações sobre o que está atualmente disponível para venda, consulte ofertas de parceiros no programa Provedor de Soluções na Nuvem.
Observação
Os carrinhos expiram 7 dias a partir da criação inicial.
Pré-requisitos
Credenciais descritas na autenticação do Partner Center. Este cenário oferece suporte à autenticação com credenciais autônomas de Aplicativo e Aplicativo+Usuário.
Um ID de cliente (
customer-tenant-id
). Se não souber o ID do cliente, pode procurá-lo no Partner Center selecionando o espaço de trabalho Clientes, depois o cliente da lista de clientes e, em seguida, Conta. Na página Conta do cliente, procure o ID da Microsoft na Secção Informações da Conta do Cliente. A ID da Microsoft é a mesma que a ID do cliente (customer-tenant-id
).
C#
Para criar um pedido para um cliente:
Instanciar um objeto Cart.
Crie uma lista de objetos CartLineItem e atribua-a à propriedade LineItems do carrinho. Cada item da linha do carrinho contém as informações de compra de um produto. Você deve ter pelo menos um item no carrinho.
Obtenha uma interface para operações de carrinho ao chamar o método IAggregatePartner.Customers.ById com o ID do cliente para identificar o cliente e depois obtenha a interface da propriedade Cart.
Chame o método Create ou o método CreateAsync para criar o carrinho.
Para concluir o atestado e incluir outros revendedores, consulte os seguintes exemplos de exemplos de solicitação e resposta:
Solicitar amostra
{
"PartnerOnRecordAttestationAccepted":true, "lineItems": [
{
"id": 0,
"catalogItemId": "CFQ7TTC0LH0Z:0001:CFQ7TTC0K18P",
"quantity": 1,
"billingCycle": "monthly",
"termDuration": "P1M",
"renewsTo": null,
"provisioningContext": {},
"customTermEndDate": "2022-02-19T00:00:00Z"
},
{
"id": 1,
"catalogItemId": "CFQ7TTC0LFLS:0002:CFQ7TTC0KDLJ",
"quantity": 2,
"billingCycle": "monthly",
"termDuration": "P1Y",
"participants": [
{
"key": "transaction_reseller",
"value": "5357564"
},
{
"key": "additional_transaction_reseller",
"value": "517285"
},
{
"key": "additional_transaction_reseller",
"value": "5357563"
}
]
}
]
}
Amostra de resposta
{
"id": "3e22b548-647d-4223-9675-1fcb6cb57665",
"creationTimestamp": "2021-08-18T17:29:52.3517492Z",
"lastModifiedTimestamp": "2021-08-18T17:29:52.3517553Z",
"expirationTimestamp": "2021-08-25T17:30:11.2406416Z",
"lastModifiedUser": "da62a0dc-35e9-4601-b48e-a047bd3ec7c1",
"status": "Active",
"lineItems": [
{
"id": 0,
"catalogItemId": "CFQ7TTC0LH0Z:0001:CFQ7TTC0K18P",
"quantity": 1,
"currencyCode": "USD",
"billingCycle": "monthly",
"termDuration": "P1M",
"customTermEndDate": "2022-02-19T00:00:00Z";
"provisioningContext": {},
"orderGroup": "0"
},
{
"id": 1,
"catalogItemId": "CFQ7TTC0LFLS:0002:CFQ7TTC0KDLJ",
"quantity": 2,
"currencyCode": "USD",
"billingCycle": "monthly",
"termDuration": "P1Y",
"participants": [
{
"key": "transaction_reseller",
"value": "5357564"
},
{
"key": "additional_transaction_reseller",
"value": "517285"
},
{
"key": "additional_transaction_reseller",
"value": "5357563"
}
],
"provisioningContext": {},
"orderGroup": "0"
}
],
"links": {
"self": {
"uri": "/customers/f81d98dd-c2f4-499e-a194-5619e260344e/carts/3e22b548-647d-4223-9675-1fcb6cb57665",
"method": "GET",
"headers": []
}
},
"attributes": {
"objectType": "Cart"
}
}
Exemplo de C#
// IAggregatePartner partnerOperations;
// string customerId;
// string subscriptionId;
var cart = new Cart()
{
LineItems = new List<CartLineItem>()
{
new CartLineItem()
{
/* Microsoft Azure Subscription */
Id = 0,
CatalogItemId = "MS-AZR-0145P",
Quantity = 1,
BillingCycle = BillingCycleType.Monthly,
TermDuration = "P1Y"
},
new CartLineItem()
{
/* Azure Reserved Instance */
Id = 1,
CatalogItemId = "DZH318Z0BQ36:004G:DZH318Z08C0S",
Quantity = 1,
BillingCycle = BillingCycleType.OneTime,
TermDuration = "P1Y",
ProvisioningContext = new Dictionary<string, string>
{
{ "subscriptionId", subscriptionId },
{ "scope", "shared" }
}
},
new CartLineItem()
{
/* Azure Reserved Instance */
Id = 2,
CatalogItemId = "DZH318Z0BQ36:004J:DZH318Z08B8X",
Quantity = 1,
BillingCycle = BillingCycleType.OneTime,
TermDuration = "P3Y",
ProvisioningContext = new Dictionary<string, string>
{
{ "subscriptionId", subscriptionId },
{ "scope", "shared" }
}
},
new CartLineItem()
{
/* Perpetual Software */
Id = 3,
CatalogItemId = "DG7GMGF0DWM3:0002:DG7GMGF0DT1M",
Quantity = 1,
BillingCycle = BillingCycleType.OneTime
},
new CartLineItem()
{
/* SaaS */
Id = 4,
CatalogItemId = "DZH318Z0BXWC:0002:DZH318Z0BMRV",
Quantity = 1,
BillingCycle = BillingCycleType.Monthly,
TermDuration = "P1M"
},
new CartLineItem()
{
/* SaaS Free Trial */
Id = 5,
CatalogItemId = "DZH318Z0C0WF:0001:DZH318Z0BP69",
Quantity = 10,
BillingCycle = BillingCycleType.None,
TermDuration = "P1M",
RenewsTo = new RenewsTo
{
TermDuration = "P1Y"
}
}
}
};
cart = partnerOperations.Customers.ById(customerId).Carts.Create(cart);
Java
O Java SDK do Partner Center pode ser usado para gerenciar recursos do Partner Center. É um projeto de código aberto mantido pela comunidade de parceiros e não suportado oficialmente pela Microsoft. Você pode obter ajuda da comunidade ou relatar um problema no GitHub se tiver alguma dificuldade.
Para criar um pedido para um cliente:
Instanciar um objeto Cart.
Crie uma lista de objetos CartLineItem e atribua-a aos itens do carrinho. Cada item da linha do carrinho contém as informações de compra de um produto. Você deve ter pelo menos um item no carrinho.
Obtenha uma interface para operações de carrinho chamando a função IAggregatePartner.getCustomers().byId com o ID do cliente para identificar o cliente e, em seguida, recuperando a interface da função getCart.
Chame a função criar para criar o carrinho.
Exemplo de Java
// IAggregatePartner partnerOperations;
// String customerId;
// String subscriptionId;
// String catalogItemId;
CartLineItem lineItem = new CartLineItem();
lineItem.setBillingCycle(BillingCycleType.OneTime);
lineItem.setCatalogItemId(catalogItemId);
lineItem.setFriendlyName("Sample RI Purchase");
lineItem.setQuantity(1);
Map<String, String> provisioningContext = new HashMap<String,String>();
provisioningContext.put("duration", "3Years");
provisioningContext.put("scope", "shared");
provisioningContext.put("subscriptionId", subscriptionId);
lineItem.setProvisioningContext(provisioningContext);
List<CartLineItem> lineItemList = new ArrayList<CartLineItem>();
lineItemList.add(lineItem);
Cart cart = new Cart();
cart.setLineItems(lineItemList);
Cart cartCreated = partnerOperations.getCustomers().byId(customerId).getCarts().create(cart);
PowerShell
O módulo PowerShell do Partner Center pode ser usado para gerenciar recursos do Partner Center. É um projeto de código aberto mantido pela comunidade de parceiros e não suportado oficialmente pela Microsoft. Você pode obter ajuda da comunidade ou relatar um problema no GitHub se tiver alguma dificuldade.
Para criar um pedido para um cliente:
Instanciar um objeto Cart.
Crie uma lista de objetos CartLineItem e atribua a lista aos itens do carrinho. Cada item da linha do carrinho contém as informações de compra de um produto. Você deve ter pelo menos um item no carrinho.
Execute o comandoNew-PartnerCustomerCart para criar o carrinho.
# $customerId
# $subscriptionId
# $catalogItemId
$lineItem = New-Object -TypeName Microsoft.Store.PartnerCenter.PowerShell.Models.Carts.PSCartLineItem
$lineItem.BillingCycle = 'OneTime'
$lineItem.CatalogItemId = $catalogItemId
$lineItem.FriendlyName = 'Sample RI Purchase'
$lineItem.ProvisioningContext.Add('duration', '1Year')
$lineItem.ProvisioningContext.Add('scope', 'shared')
$lineItem.ProvisioningContext.Add('subscriptionId', $subsciptionId)
$lineItem.Quantity = 10
New-PartnerCustomerCart -CustomerId $customerId -LineItems $lineItem
Pedido REST
Sintaxe da solicitação
Método | Solicitar URI |
---|---|
POST | {baseURL}/v1/customers/{customer-id}/carts HTTP/1.1 |
Parâmetro URI
Use o seguinte parâmetro de caminho para identificar o cliente.
Nome | Tipo | Necessário | Descrição |
---|---|---|---|
ID do cliente | string | Sim | Um ID de cliente formatado em GUID que identifica o cliente. |
Cabeçalhos de solicitação
Para obter mais informações, consulte cabeçalhos REST do Partner Center.
Corpo do pedido
Esta tabela descreve as propriedades Cart no corpo da solicitação.
Propriedade | Tipo | Necessário | Descrição |
---|---|---|---|
identificação | string | Não | Um identificador de carrinho que é fornecido após a criação bem-sucedida do carrinho. |
carimbo de data/hora de criação | Data/Hora | Não | A data em que o carrinho foi criado, no formato data-hora. Aplicado após a criação bem-sucedida do carrinho. |
carimbo de data/hora da última modificação | Data/Hora | Não | A data em que o carrinho foi atualizado pela última vez, no formato data-hora. Aplicado após a criação com sucesso do carrinho. |
carimbo de data/hora de expiração | Data/Hora | Não | A data em que o carrinho expira, no formato de data e hora. Aplicado com sucesso após a criação do carrinho. |
lastModifiedUser | string | Não | O usuário que atualizou o carrinho pela última vez. Aplicado com sucesso após a criação do carrinho. |
lineItems | Matriz de objetos | Sim | Um conjunto de recursos CartLineItem. |
Aceitação da Atestação do Parceiro Registado | Booleano | Sim | Confirma a conclusão da atestação |
Esta tabela descreve as propriedades de CartLineItem no corpo da solicitação.
Propriedade | Tipo | Necessário | Descrição |
---|---|---|---|
ID | string | Não | Um identificador exclusivo para um item do carrinho. Aplicado com sucesso após a criação do carrinho. |
catalogId | string | Sim | O identificador do item de catálogo. Certifique-se de que a disponibilidade do item de catálogo é para o segmento correto. |
Nome amigável | string | Não | Opcional. O nome amigável para o item definido pelo parceiro para ajudar na desambiguação. |
promotionId | cadeia de caracteres | Não | Opcional. A maioria das promoções NCE será aplicada automaticamente; no entanto, para que promoções opcionais (como Bridge to the Cloud 2) sejam aplicadas a um item no carrinho, os parceiros devem incluir o ID da promoção na solicitação de adicionar ao carrinho. |
Quantidade | Int | Sim | O número de licenças ou instâncias. |
código de moeda | string | Não | O código da moeda. |
ciclo de faturamento | Objeto | Sim | O tipo de ciclo de faturamento definido para o período atual. |
customTermEndDate (Data de Término Personalizada) | Data/Hora | Não | A data de término de uma subscrição existente à qual pretenda alinhar o fim da nova subscrição. |
Participantes | Lista de pares de Object String | Não | Uma coleção de PartnerId on Record (PartnerID) na compra. |
Contexto de Aprovisionamento | Dicionário<string, string> | Não | Informações necessárias para o provisionamento de alguns itens no catálogo. A propriedade provisioningVariables numa SKU indica quais atributos são necessários para itens específicos no catálogo. |
grupo de pedidos | string | Não | Um grupo para indicar quais itens podem ser colocados juntos. |
erro | Objeto | Não | Aplicado na eventualidade de um erro após a criação do carrinho. |
renova automaticamente para | Matriz de objetos | Não | Uma matriz de recursos RenewsTo. |
AtestadoAceito | Booleano | Não | Indica acordo com a oferta ou condições de SKU. Obrigatório apenas para ofertas ou skus em que SkuAttestationProperties ou OfferAttestationProperties têm enforceAttestation como True. |
transação_revendedor | Cadeia | Não | Quando um fornecedor indireto fizer uma encomenda em nome de um revendedor indireto, preencha este campo com o ID de parceiro do revendedor indireto apenas (nunca o ID do fornecedor indireto). Isto garante uma contabilização adequada dos incentivos. |
revendedor_de_transação_adicional | Cadeia | Não | Quando um fornecedor indireto fizer uma encomenda em nome de um revendedor indireto, preencha este campo com o ID de parceiro do Revendedor indireto adicional apenas (nunca o ID do fornecedor indireto). Os incentivos não são aplicáveis a esses revendedores adicionais. Apenas um máximo de 5 Revendedores Indiretos podem ser inscritos. Isto só é aplicável aos parceiros que efetuam transações dentro dos países/regiões da UE/EFTA. |
Esta tabela descreve as propriedades RenewsTo no corpo da solicitação.
Propriedade | Tipo | Necessário | Descrição |
---|---|---|---|
duração do período | string | Não | Uma representação ISO 8601 da duração do período de renovação. Os valores atuais suportados são P1M (1 mês) e P1Y (1 ano). |
Exemplo de solicitação
POST /v1/customers/d6bf25b7-e0a8-4f2d-a31b-97b55cfc774d/carts HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: 4fa6dad6-a89f-4875-8247-8294a10ae1cf
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
X-Locale: en-US
MS-PartnerCenter-Client: Partner Center .NET SDK
Content-Type: application/json
Host: api.partnercenter.microsoft.com
Content-Length: 496
Expect: 100-continue
{
"lineItems": [
{
/* Microsoft Azure Subscription */
"id": 0,
"catalogItemId": "MS-AZR-0145P",
"quantity": 1,
"billingCycle": "monthly",
"termDuration": "P1Y"
},
{
/* Azure Reserved Instance */
"id": 1,
"catalogItemId": "DZH318Z0BQ36:004G:DZH318Z08C0S",
"quantity": 1,
"billingCycle": "one_time",
"termDuration": "P1Y",
"provisioningContext": {
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"scope": "shared"
}
},
{
/* Azure Reserved Instance */
"id": 2,
"catalogItemId": "DZH318Z0BQ36:004J:DZH318Z08B8X",
"quantity": 1,
"billingCycle": "one_time",
"termDuration": "P3Y",
"provisioningContext": {
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"scope": "single"
}
},
{
/* Perpetual Software */
"id": 3,
"catalogItemId": "DG7GMGF0DWTL:0001:DG7GMGF0DSFM",
"quantity": 1,
"billingCycle": "one_time"
},
{
/* SaaS */
"id": 4,
"catalogItemId": "DZH318Z0BXWC:0002:DZH318Z0BMRV",
"quantity": 1,
"billingCycle": "monthly",
"termDuration": "P1M"
},
{
/* SaaS Free Trial */
"id": 5,
"catalogItemId": "DZH318Z0C0WF:0001:DZH318Z0BP69",
"quantity": 10,
"billingCycle": "none",
"termDuration": "P1M",
"renewsTo": {
"termDuration": "P1Y"
}
}
]
}
Importante
A partir de junho de 2023, a versão 3.4.0 mais recente do SDK do .NET do Partner Center foi arquivada. Você pode baixar a versão do SDK do GitHub, juntamente com um ficheiro readme que contém informações úteis.
Os parceiros são incentivados a continuar a usar as APIs REST do Partner Center.
Resposta REST
Se for bem-sucedido, esse método retornará o recurso preenchido Cart no corpo da resposta.
Códigos de sucesso e erro de resposta
Cada resposta vem com um código de status HTTP que indica sucesso ou falha e informações de depuração. Use uma ferramenta de rastreamento de rede para ler esse código, tipo de erro e outros parâmetros. Para obter a lista completa, consulte Códigos de erro.
Exemplo de resposta
HTTP/1.1 201 Created
Content-Length: 764
Content-Type: application/json; charset=utf-8
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
MS-RequestId: 4fa6dad6-a89f-4875-8247-8294a10ae1cf
X-Locale: en-US,en-US
MS-CV: sF/wRa2ih0CzbABc.0
MS-ServerId: 000001
Date: Thu, 15 Mar 2018 17:15:01 GMT
{
"id": "3655b1a0-b1c9-4268-9824-577fdbc4d0be",
"creationTimestamp": "2019-01-16T00:45:41.6062996Z",
"lastModifiedTimestamp": "2019-01-16T00:45:41.6062996Z",
"expirationTimestamp": "2019-01-16T01:00:54.4188497Z",
"lastModifiedUser": "1824b7fc-2fac-4478-b177-66823c40ab75",
"status": "Active",
"lineItems": [
{
"id": 0,
"catalogItemId": "MS-AZR-0145P",
"quantity": 1,
"currencyCode": "USD",
"billingCycle": "monthly",
"termDuration": "P1Y",
"orderGroup": "OMS-0"
},
{
"id": 1,
"catalogItemId": "DZH318Z0BQ36:004G:DZH318Z08C0S",
"quantity": 1,
"currencyCode": "USD",
"billingCycle": "one_time",
"termDuration": "P1Y",
"provisioningContext": {
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"scope": "shared"
},
"orderGroup": "0"
},
{
"id": 2,
"catalogItemId": "DZH318Z0BQ36:004J:DZH318Z08B8X",
"quantity": 1,
"currencyCode": "USD",
"billingCycle": "one_time",
"termDuration": "P3Y",
"provisioningContext": {
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"scope": "shared"
},
"orderGroup": "0"
},
{
"id": 3,
"catalogItemId": "DG7GMGF0DWM3:0002:DG7GMGF0DT1M",
"quantity": 1,
"currencyCode": "USD",
"billingCycle": "one_time",
"orderGroup": "0"
},
{
"id": 4,
"catalogItemId": "DZH318Z0BXWC:0002:DZH318Z0BMRV",
"quantity": 1,
"currencyCode": "USD",
"billingCycle": "monthly",
"termDuration": "P1M",
"orderGroup": "1"
},
{
"id": 5,
"catalogItemId": "DZH318Z0C0WF:0001:DZH318Z0BP69",
"quantity": 10,
"currencyCode": "USD",
"billingCycle": "none",
"termDuration": "P1M",
"renewsTo": {
"termDuration": "P1Y"
},
"orderGroup": "2"
}
],
"links": {
"self": {
"uri": "/customers/28045616-f6b9-462f-9701-0d89b5e65c44/carts/3655b1a0-b1c9-4268-9824-577fdbc4d0be",
"method": "GET",
"headers": []
}
},
"attributes": {
"objectType": "Cart"
}
}
Exemplo para novos serviços baseados em licença de comércio
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 (Provedor de Soluções na Nuvem). Para obter mais informações, consulte visão geral de novas experiências comerciais.
Exemplo de solicitação
POST /v1/customers/932c4101-dc08-461b-b4c1-75d80e905775/carts HTTP/1.1
Host: api.partnercenter.microsoft.com
Content-Type: application/json
Content-Length: 165
{
"LineItems": [
{
"CatalogItemId":"CFQ7TTC0LFLZ:0002:CFQ7TTC0K4TS",
"Quantity": 1,
"TermDuration": "P1M",
"BillingCycle": "Monthly"
}
]
}
Importante
O plano do Azure e os itens de linha de software perpétuo não dão suporte à propriedade termDuration. Evite incluir isso ao adquirir estes tipos de itens.
Resposta REST
Se for bem-sucedido, esse método retornará o recurso preenchido Cart no corpo da resposta.
Códigos de sucesso e erro de resposta
Cada resposta vem com um código de status HTTP que indica sucesso ou falha e outras informações de depuração. Use uma ferramenta de rastreamento de rede para ler esse código, tipo de erro e outros parâmetros. Para obter a lista completa, consulte Códigos de erro.
Exemplo de resposta
{
"id": "2517c51b-58cd-4abe-87ed-3ab812401ab4",
"creationTimestamp": "2023-07-11T21:16:11.55149Z",
"lastModifiedTimestamp": "2023-07-11T21:16:11.5515713Z",
"expirationTimestamp": "2023-07-18T21:16:17.2480482Z",
"lastModifiedUser": "9db12087-fbc3-481c-8965-73d44ff88e27",
"status": "Active",
"lineItems": [
{
"id": 0,
"catalogItemId": "CFQ7TTC0LF8S:0001:CFQ7TTC0VZW5",
"quantity": 1,
"currencyCode": "USD",
"billingCycle": "monthly",
"termDuration": "P1Y",
"provisioningContext": {},
"orderGroup": "0",
"pricing": {
"listPrice": 30.4,
"discountedPrice": 30.4,
"proratedPrice": 30.4,
"price": 30.4,
"extendedPrice": 364.8
}
}
],
"links": {
"self": {
"uri": "/customers/ebd8b4c2-4069-46a8-bd70-123d6dec3e39/carts/2517c51b-58cd-4abe-87ed-3ab812401ab4",
"method": "GET",
"headers": []
}
},
"attributes": {
"objectType": "Cart"
}
}