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": "ebc0beef-7ffb-4044-c074-16f324432139",
                    "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": "261bac40-7d88-4327-dfa3-dacd09222d62",
                    "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: 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

{
    {
        "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": "3D5ECED6-1151-44C7-AEE6-70A4BB725666",
                    "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: 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": "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": "3D5ECED6-1151-44C7-AEE6-70A4BB725666",
                "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"
    }
}