Criar um carrinho com uma encomenda de cliente
Aplica-se a: Partner Center | Partner Center operado pela 21Vianet | Centro de Parceiros para Microsoft Cloud for US Government
Pode adicionar um pedido para um cliente num carrinho. Para obter mais informações sobre o que está atualmente disponível para vender, consulte as ofertas do Partner no programa Cloud Solution Provider.
Pré-requisitos
Credenciais descritas na autenticação do Partner Center. Este cenário suporta a autenticação com as credenciais de App autónoma e App+User.
Uma ID do cliente (
customer-tenant-id). Se não souber a identificação do cliente, pode procurar no painel do Centro de Parceiros. Selecione CSP no menu Partner Center, seguido por Clientes. Selecione o cliente da lista de clientes e, em seguida, selecione Conta. Na página conta do cliente, procure o ID da Microsoft na secção Informação da Conta do Cliente . O ID da Microsoft é o mesmo que o ID do cliente (customer-tenant-id).
C#
Para criar uma encomenda para um cliente:
Instantiizar um objeto do Carrinho.
Crie uma lista de objetos CartLineItem e atribua a lista à propriedade LineItems do carrinho. Cada item da linha do carrinho contém a informação de compra de um produto. Deve ter pelo menos um item de linha de carrinho.
Obtenha uma interface para as operações de carrinhos ligando para o método IAggregatePartner.Customers.ById com o ID do cliente para identificar o cliente e, em seguida, recuperar a interface da propriedade Cart .
Ligue para o método Criar ou Criar Para criar o carrinho.
Para completar o atestado e incluir revendedores adicionais, consulte as seguintes amostras de pedido e resposta:
Amostra de pedido
{
"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 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 Partner Center Java SDK é comumente utilizado pelos parceiros para gerir os seus recursos do Partner Center. É um projeto de código aberto mantido pela comunidade parceira. Uma vez que este módulo é mantido pela comunidade parceira, este não é oficialmente suportado pela Microsoft. Você pode obter ajuda da comunidade ou abrir um problema no GitHub se você sentir um problema.
Para criar uma encomenda para um cliente:
Instantiizar um objeto do Carrinho.
Crie uma lista de objetos CartLineItem e atribua a lista aos itens de linha do carrinho. Cada item da linha do carrinho contém a informação de compra de um produto. Deve ter pelo menos um item de linha de carrinho.
Obtenha uma interface para as operações de carrinhos, ligando para o IAggregatePartner.getCustomers ().função byId com o ID do cliente para identificar o cliente e, em seguida, recuperar a interface da função getCart .
Ligue para a função 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 Partner Center PowerShell é comumente utilizado pelos parceiros para gerir os seus recursos do Partner Center. É um projeto de código aberto mantido pela comunidade parceira. Uma vez que este módulo é mantido pela comunidade parceira, este não é oficialmente suportado pela Microsoft. Você pode obter ajuda da comunidade ou abrir um problema no GitHub se você sentir um problema.
Para criar uma encomenda para um cliente:
Instantiizar um objeto do Carrinho.
Crie uma lista de objetos CartLineItem e atribua a lista aos itens de linha do carrinho. Cada item da linha do carrinho contém a informação de compra de um produto. Deve ter pelo menos um item de linha de carrinho.
Execute o comando New 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 de DESCANSO
Solicitar sintaxe
| Método | URI do pedido |
|---|---|
| PUBLICAR | {baseURL}/v1/clientes/{customer-id}/carts HTTP/1.1 |
Parâmetro URI
Utilize o seguinte parâmetro de percurso para identificar o cliente.
| Nome | Tipo | Necessário | Descrição |
|---|---|---|---|
| id cliente | string | Yes | Um id de cliente formatado GUID que identifica o cliente. |
Cabeçalhos do pedido
Para obter mais informações, consulte os cabeçalhos Partner Center REST.
Corpo do pedido
Esta tabela descreve as propriedades do Carrinho no corpo de pedido.
| Propriedade | Tipo | Necessário | Descrição |
|---|---|---|---|
| ID | string | No | Um identificador de carrinhos que é fornecido após a criação bem sucedida do carrinho. |
| criaçãoTimeStamp | DateTime | No | A data em que o carrinho foi criado, em formato de data. Aplicado após a criação bem sucedida do carrinho. |
| últimampada hora de tempos | DateTime | No | A data em que o carrinho foi atualizado pela última vez, em formato de data-hora. Aplicado após a criação bem sucedida do carrinho. |
| expiraçãoTimeStamp | DateTime | No | A data em que o carrinho expirará, em formato de data. Aplicado após a criação bem sucedida do carrinho. |
| últimoModifiedUser | cadeia (de carateres) | No | O utilizador que atualizou pela última vez o carrinho. Aplicado após a criação bem sucedida do carrinho. |
| lineitems | Matriz de objetos | Yes | Uma matriz de recursos CartLineItem . |
| PartnerOnRecordAttestationAccepted | Booleano | Yes | Confirma a conclusão do Attestation |
Esta tabela descreve as propriedades do CartLineItem no corpo de pedido.
| Propriedade | Tipo | Necessário | Descrição |
|---|---|---|---|
| ID | string | No | Um identificador único para um item de linha de carrinho. Aplicado após a criação bem sucedida do carrinho. |
| catalogId | string | Yes | O identificador de artigos de catálogo. |
| nome amigável | cadeia (de carateres) | No | Opcional. O nome amigável para o item definido pelo parceiro para ajudar a desambiguar. |
| quantidade | int | Yes | O número de licenças ou instâncias. |
| currencyCode | cadeia (de carateres) | No | O código da moeda. |
| billingCycle | Objeto | Yes | O tipo de ciclo de faturação definido para o período atual. |
| customTermEndDate | DateTime | No | A data final de uma subscrição existente à qual pretende coterminar a nova subscrição. |
| participantes | Lista de pares de cordas de objeto | No | Uma coleção de PartnerId on Record (MPNID) na compra. |
| provisionamentoContexto | Cadeia de dicionário<, corda> | No | Informação necessária para o provisionamento de alguns itens no catálogo. A propriedade de ProvisioningVariables num SKU indica quais propriedades são necessárias para itens específicos no catálogo. |
| orderGroup | cadeia (de carateres) | No | Um grupo para indicar quais os itens que podem ser colocados juntos. |
| erro | Objeto | No | Aplicado após o carrinho é criado se houver um erro. |
| renovaTo | Matriz de objetos | No | Uma variedade de recursos Renovados. |
| AttestationAccepted | Booleano | No | Indica acordo para oferecer ou sku condições. Requerido apenas para ofertas ou skus onde a SkuAttestationProperties ou OfferAttestationProperties aplicam Attestation é Verdadeira. |
| transaction_reseller | String | No | Quando um fornecedor indireto estoende uma encomenda em nome de um revendedor indireto, povoe este campo apenas com o ID MPN do revendedor indireto (nunca o ID do fornecedor indireto). Isto garante uma contabilização adequada dos incentivos. |
| additional_transaction_reseller | String | No | Quando um fornecedor indireto estoende uma encomenda em nome de um revendedor indireto, povoe este campo apenas com o ID MPN do revendedor indireto adicional ( nunca o ID do fornecedor indireto). Não são aplicáveis incentivos a estes revendedores adicionais. Só podem ser introduzidos um máximo de 5 Revendedores Indiretos. Estes são apenas os parceiros aplicáveis que transacionam dentro dos países da UE/EFTA. |
Esta tabela descreve as propriedades Renovações No corpo de pedido.
| Propriedade | Tipo | Necessário | Descrição |
|---|---|---|---|
| termoDuração | cadeia (de carateres) | No | Uma representação ISO 8601 da duração do período de renovação. Os valores suportados atuais são P1M (1 mês) e P1Y (1 ano). |
Exemplo de pedido
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: 0e93c70c-977a-4a88-9580-7cf084c73286
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": "1C461A25-F729-4FA5-AADB-280947DD05E8",
"scope": "shared"
}
},
{
/* Azure Reserved Instance */
"id": 2,
"catalogItemId": "DZH318Z0BQ36:004J:DZH318Z08B8X",
"quantity": 1,
"billingCycle": "one_time",
"termDuration": "P3Y",
"provisioningContext": {
"subscriptionId": "1C461A25-F729-4FA5-AADB-280947DD05E8",
"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"
}
}
]
}
Resposta do REST
Se for bem sucedido, este método devolve o recurso cart povoado no corpo de resposta.
Códigos de sucesso e erro de resposta
Cada resposta vem com um código de estado HTTP que indica sucesso ou falha e informações adicionais de depuragem. Utilize uma ferramenta de rastreio de rede para ler este código, tipo de erro e parâmetros adicionais. 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: 0e93c70c-977a-4a88-9580-7cf084c73286
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": "1C461A25-F729-4FA5-AADB-280947DD05E8",
"scope": "shared"
},
"orderGroup": "0"
},
{
"id": 2,
"catalogItemId": "DZH318Z0BQ36:004J:DZH318Z08B8X",
"quantity": 1,
"currencyCode": "USD",
"billingCycle": "one_time",
"termDuration": "P3Y",
"provisioningContext": {
"subscriptionId": "1C461A25-F729-4FA5-AADB-280947DD05E8",
"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ças de comércio
Nota
As novas experiências de comércio para serviços baseados em licenças incluem muitas novas capacidades e estão disponíveis para todos os Cloud Solution Provider (CSPs). Para mais informações, consulte novas experiências de comércio.
Exemplo de pedido
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"
}
]
}
Resposta do REST
Se for bem sucedido, este método devolve o recurso cart povoado no corpo de resposta.
Códigos de sucesso e erro de resposta
Cada resposta vem com um código de estado HTTP que indica sucesso ou falha e informações adicionais de depuragem. Utilize uma ferramenta de rastreio de rede para ler este código, tipo de erro e parâmetros adicionais. Para obter a lista completa, consulte Códigos de Erro.
Exemplo de resposta
{
"id": "6b6ba6ea-d1ea-4c2c-9e1c-bec4f61e2049",
"creationTimestamp": "2021-02-24T19:26:06.947164Z",
"lastModifiedTimestamp": "2021-02-24T19:26:06.9471649Z",
"expirationTimestamp": "2021-03-03T19:26:09.0035129Z",
"lastModifiedUser": "004ec05e-8999-4d02-9315-2b1b667c0deb",
"status": "Active",
"lineItems": [
{
"id": 0,
"catalogItemId": "CFQ7TTC0LFLZ:0002:CFQ7TTC0K4TS",
"quantity": 1,
"currencyCode": "USD",
"billingCycle": "monthly",
"termDuration": "P1M",
"provisioningContext": {},
"orderGroup": "0"
}
],
"links": {
"self": {
"uri": "/customers/932c4101-dc08-461b-b4c1-75d80e905775/carts/6b6ba6ea-d1ea-4c2c-9e1c-bec4f61e2049",
"method": "GET",
"headers": []
}
},
"attributes": {
"objectType": "Cart"
}
}