Atualizar um carrinho
Como atualizar um pedido para um cliente em um carrinho.
Note, os carrinhos expiram sete dias a partir da criação inicial.
Pré-requisitos
Credenciais conforme descrito 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 a área de trabalho Clientes e, em seguida, 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 é a mesma que a ID do cliente (customer-tenant-id
).Um ID de carrinho para um carrinho existente.
C#
Para atualizar um pedido de um cliente, obtenha o carrinho usando o método Get() passando os IDs do cliente e do carrinho usando a função ById( ). Faça as alterações necessárias no carrinho. Agora, chame o método Put usando IDs de cliente e carrinho usando o método ById( ).
Finalmente, chame o método Put() ou PutAsync() para criar a ordem.
IAggregatePartner partnerOperations;
string customerId;
string cartId;
var cart = partnerOperations.Customers.ById(customerId).Cart.ById(cartId).Get();
cart.LineItems.ToArray()[0].Quantity++;
var updatedCart = partnerOperations.Customers.ById(customerId).Cart.ById(cartId).Put(cart);
Para concluir o atestado e incluir outros revendedores, consulte o exemplo a seguir.
Exemplo de API - Check-out do carrinho
{
"orders": [
{
"id": "f76c6b7f449d",
"alternateId": "f76c6b7f449d",
"referenceCustomerId": "f81d98dd-c2f4-499e-a194-5619e260344e",
"billingCycle": "monthly",
"currencyCode": "USD",
"currencySymbol": "$",
"lineItems": [
{
"lineItemNumber": 0,
"offerId": "CFQ7TTC0LH0Z:0001:CFQ7TTC0K18P",
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"termDuration": "P1M",
"transactionType": "New",
"friendlyName": "AI Builder Capacity add-on",
"quantity": 1,
"links": {
"product": {
"uri": "/products/CFQ7TTC0LH0Z?country=US",
"method": "GET",
"headers": []
},
"sku": {
"uri": "/products/CFQ7TTC0LH0Z/skus/0001?country=US",
"method": "GET",
"headers": []
},
"availability": {
"uri": "/products/CFQ7TTC0LH0Z/skus/0001/availabilities/CFQ7TTC0K18P?country=US",
"method": "GET",
"headers": []
}
}
},
{
"lineItemNumber": 1,
"offerId": "CFQ7TTC0LFLS:0002:CFQ7TTC0KDLJ",
"subscriptionId": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
"termDuration": "P1Y",
"transactionType": "New",
"friendlyName": "Azure Active Directory Premium P1",
"quantity": 2,
"partnerIdOnRecord": "517285",
"additionalPartnerIdsOnRecord":
"5357564",
"5357563"
],
"links": {
"product": {
"uri": "/products/CFQ7TTC0LFLS?country=US",
"method": "GET",
"headers": []
},
"sku": {
"uri": "/products/CFQ7TTC0LFLS/skus/0002?country=US",
"method": "GET",
"headers": []
},
"availability": {
"uri": "/products/CFQ7TTC0LFLS/skus/0002/availabilities/CFQ7TTC0KDLJ?country=US",
"method": "GET",
"headers": []
}
}
}
],
"creationDate": "2021-08-18T07:52:23.1921872Z",
"status": "pending",
"transactionType": "UserPurchase",
"links": {
"self": {
"uri": "/customers/f81d98dd-c2f4-499e-a194-5619e260344e/orders/f76c6b7f449d",
"method": "GET",
"headers": []
},
"provisioningStatus": {
"uri": "/customers/f81d98dd-c2f4-499e-a194-5619e260344e/orders/f76c6b7f449d/provisioningstatus",
"method": "GET",
"headers": []
},
"patchOperation": {
"uri": "/customers/f81d98dd-c2f4-499e-a194-5619e260344e/orders/f76c6b7f449d",
"method": "PATCH",
"headers": []
}
},
"client": {},
"attributes": {
"objectType": "Order"
}
}
],
"attributes": {
"objectType": "CartCheckoutResult"
}
}
Pedido REST
Sintaxe da solicitação
Método | URI do pedido |
---|---|
PUT | {baseURL}/v1/customers/{customer-id}/carts/{cart-id} HTTP/1.1 |
Parâmetros de URI
Use os seguintes parâmetros de caminho para identificar o cliente e especificar o carrinho a ser atualizado.
Nome | Type | Obrigatório | Description |
---|---|---|---|
ID do cliente | string | Sim | Um ID de cliente formatado em GUID que identifica o cliente. |
Carrinho-ID | string | Sim | Um ID de carrinho formatado em GUID que identifica o carrinho. |
Cabeçalhos do pedido
Para obter mais informações, consulte Cabeçalhos REST do Partner Center.
Corpo do pedido
Esta tabela descreve as propriedades do carrinho no corpo da solicitação.
Propriedade | Type | Obrigatório | 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. |
expiraçãoTimeStamp | DateTime | Não | A data em que o carrinho expirará, 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 | Obrigatório | Descrição |
---|---|---|---|
id | string | Não | Um identificador exclusivo para um item de linha de carrinho. Aplicado após a criação bem-sucedida do carrinho. |
catalogId | string | Sim | O identificador de item de catálogo. |
friendlyNome | string | Não | Opcional. O nome amigável para o item definido pelo parceiro para ajudar a desambiguar. |
promotionId | string | Não | Opcional. A maioria das promoções NCE será aplicada automaticamente, no entanto, para promoções opcionais (como Bridge to the Cloud 2) para aplicar a um item de linha de carrinho, os parceiros devem incluir o ID da promoção na solicitação de adicionar ao carrinho. |
quantidade | número inteiro | Sim | O número de licenças ou instâncias. |
currencyCode | string | Não | O código da moeda. |
faturamentoCiclo | Object | Sim | O tipo de ciclo de faturamento definido para o período atual. |
Participantes | Lista de pares de Object String | Não | Uma coleção de participantes na compra. |
provisionamentoContexto | Cadeia de dicionário<, string> | Não | Um contexto usado para provisionamento de oferta. |
orderGroup | string | Não | Um grupo para indicar quais itens podem ser colocados juntos. |
error | Object | Não | Aplicado depois que o carrinho é criado em um erro. |
AdicionalPartnerIdsOnRecord | String | Não | Quando um fornecedor indireto fizer uma encomenda em nome de um revendedor indireto, preencha este campo apenas com o ID de parceiro do revendedor indireto adicional ( nunca o ID do fornecedor indireto). Os incentivos não são aplicáveis a esses outros revendedores. Apenas um máximo de cinco Revendedores Indiretos podem ser inscritos. Isto só é aplicável aos parceiros que efetuam transações dentro dos países/regiões da UE/EFTA. |
Exemplo de solicitação
PUT /v1/customers/d6bf25b7-e0a8-4f2d-a31b-97b55cfc774d/carts/65faf57b-0205-47ee-92b3-08dcf233ea73/ 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
{
{
"Id":"b4c8fdea-cbe4-4d17-9576-13fcacbf9605",
"CreationTimestamp":"2018-03-15T17:15:02.3840528Z",
"LastModifiedTimestamp":"2018-03-15T17:15:02.3840528Z",
"ExpirationTimestamp":"0001-01-01T00:00:00",
"LastModifiedUser":"2713ccd7-ea3b-470a-9cfb-451d5d0482cc",
"LineItems":[
{
"Id":0,
"CatalogItemId":"DG7GMGF0DWTL:0001:DG7GMGF0DSJB",
"FriendlyName":"A_sample_Azure_RI",
"Quantity":2,
"BillingCycle":"one_time",
"ProvisioningContext": {
"SubscriptionId": "cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
"Scope": "shared",
"Duration": "1Year"
}
}
],
}
}
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 arquivo readme que contém informações úteis.
Os parceiros são incentivados a continuar a usar as APIs REST do Partner Center.
Resposta do REST
Se for bem-sucedido, esse método retornará o recurso Cart preenchido 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 adicionais 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, 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": "b4c8fdea-cbe4-4d17-9576-13fcacbf9605",
"creationTimestamp": "2018-03-15T17:15:02.3840528Z",
"lastModifiedTimestamp": "2018-03-15T17:15:02.3840528Z",
"lastModifiedUser": "2713ccd7-ea3b-470a-9cfb-451d5d0482cc",
"lineItems": [
{
"id": 0,
"catalogItemId": "DG7GMGF0DWTL:0001:DG7GMGF0DSJB",
"friendlyName": "A_sample_Azure_RI",
"quantity": 2,
"currencyCode": "USD",
"billingCycle": "one_time",
"ProvisioningContext": {
"subscriptionId": "cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
"scope": "shared",
"duration": "1Year"
}
"orderGroup": "0"
}
],
"links": {
"self": {
"uri": "/v1/customers/d6bf25b7-e0a8-4f2d-a31b-97b55cfc774d/carts/b4c8fdea-cbe4-4d17-9576-13fcacbf9605/",
"method": "GET",
"headers": []
}
},
"attributes": {
"objectType": "Cart"
}
}