Udostępnij za pośrednictwem


Aktualizowanie koszyka

Jak zaktualizować zamówienie klienta w koszyku.

Pamiętaj, że koszyki wygasają siedem dni od utworzenia początkowego.

Wymagania wstępne

  • Poświadczenia zgodnie z opisem w temacie Uwierzytelnianie w Centrum partnerskim. Ten scenariusz obsługuje uwierzytelnianie zarówno przy użyciu autonomicznych poświadczeń aplikacji, jak i aplikacji i użytkownika.

  • Identyfikator klienta (customer-tenant-id). Jeśli nie znasz identyfikatora klienta, możesz wyszukać go w Centrum partnerskim, wybierając obszar roboczy Klienci , a następnie klienta z listy klienta, a następnie pozycję Konto. Na stronie Konto klienta poszukaj identyfikatora Microsoft w sekcji Informacje o koncie klienta. Identyfikator Microsoft jest taki sam jak identyfikator klienta (customer-tenant-id).

  • Identyfikator koszyka dla istniejącego koszyka.

C#

Aby zaktualizować zamówienie klienta, pobierz koszyk przy użyciu metody Get(), przekazując identyfikatory klienta i koszyka przy użyciu funkcji ById(). Wprowadź niezbędne zmiany w koszyku. Teraz wywołaj metodę Put przy użyciu identyfikatorów klienta i koszyka przy użyciu metody ById().

Na koniec wywołaj metodę Put() lub PutAsync(), aby utworzyć zamówienie.

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);

Aby ukończyć zaświadczenie i dołączyć innych odsprzedawców, zobacz poniższy przykład.

Przykład interfejsu API — wyewidencjonowywanie koszyka

{
    "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"
    }
}

Żądanie REST

Składnia żądania

Method Identyfikator URI żądania
PUT {baseURL}/v1/customers/{customer-id}/carts/{cart-id} HTTP/1.1

Parametry identyfikatora URI

Użyj następujących parametrów ścieżki, aby zidentyfikować klienta i określić koszyk do zaktualizowania.

Nazwisko Type Wymagania opis
identyfikator klienta string Tak Identyfikator GUID sformatowany przez klienta, który identyfikuje klienta.
cart-id string Tak Identyfikator GUID sformatowany w koszyku, który identyfikuje koszyk.

Nagłówki żądań

Aby uzyskać więcej informacji, zobacz Nagłówki REST Centrum partnerskiego.

Treść żądania

W tej tabeli opisano właściwości koszyka w treści żądania.

Właściwość Type Wymagania Opis
identyfikator string Nie Identyfikator koszyka dostarczony po pomyślnym utworzeniu koszyka.
creationTimeStamp DateTime Nie. Data utworzenia koszyka w formacie daty i godziny. Zastosowane po pomyślnym utworzeniu koszyka.
lastModifiedTimeStamp DateTime Nie. Data ostatniej aktualizacji koszyka w formacie daty i godziny. Zastosowane po pomyślnym utworzeniu koszyka.
expirationTimeStamp DateTime Nie. Data wygaśnięcia koszyka w formacie daty i godziny. Zastosowane po pomyślnym utworzeniu koszyka.
lastModifiedUser string Nie Użytkownik, który ostatnio zaktualizował koszyk. Zastosowane po pomyślnym utworzeniu koszyka.
lineItems Tablica obiektów Tak Tablica zasobów CartLineItem .

W tej tabeli opisano właściwości CartLineItem w treści żądania.

Właściwość Type Wymagania Opis
identyfikator string Nie Unikatowy identyfikator elementu wiersza koszyka. Zastosowane po pomyślnym utworzeniu koszyka.
catalogId string Tak Identyfikator elementu wykazu.
Friendlyname string Nie Opcjonalny. Przyjazna nazwa elementu zdefiniowanego przez partnera w celu ułatwienia uściślania.
identyfikator promocji string Nie Opcjonalny. Większość promocji NCE będzie automatycznie stosować, jednak w przypadku opcjonalnych promocji (takich jak Bridge to the Cloud 2) w celu zastosowania do elementu wiersza koszyka, partnerzy muszą dołączyć identyfikator promocji w żądaniu dodawania do koszyka.
ilość int Tak Liczba licencji lub wystąpień.
currencyCode string Nie Kod waluty.
billingCycle Objekt Tak Typ cyklu rozliczeniowego ustawiony dla bieżącego okresu.
Uczestników Lista par ciągów obiektów Nie. Kolekcja uczestników zakupu.
provisioningContext Ciąg słownika<, ciąg> Nie. Kontekst używany do aprowizacji oferty.
orderGroup string Nie Grupa wskazująca, które elementy można umieścić razem.
error Objekt Nie. Zastosowane po utworzeniu koszyka w błędzie.
AdditionalPartnerIdsOnRecord String Nie Gdy dostawca pośredni składa zamówienie w imieniu odsprzedawcy pośredniego, wypełnij to pole tylko identyfikatorem PartnerID dodatkowego odsprzedawcy pośredniego (nigdy identyfikator dostawcy pośredniego). Zachęty nie mają zastosowania dla tych innych odsprzedawców. Można wprowadzić maksymalnie pięć odsprzedawców pośrednich. Dotyczy to tylko transakcji partnerów w krajach/regionach UE/EFTA.

Przykład żądania

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"
                }
            }
        ],
    }
}

Ważne

Od czerwca 2023 r. najnowsza wersja zestawu .NET SDK Centrum partnerskiego 3.4.0 jest teraz archiwizowana. Możesz pobrać wersję zestawu SDK z usługi GitHub wraz z plikiem readme zawierającym przydatne informacje.

Zachęcamy partnerów do dalszego korzystania z interfejsów API REST Centrum partnerskiego.

Odpowiedź REST

Jeśli ta metoda powiedzie się, zwraca wypełniony zasób koszyka w treści odpowiedzi.

Kody powodzenia i błędów odpowiedzi

Każda odpowiedź zawiera kod stanu HTTP, który wskazuje powodzenie lub niepowodzenie i dodatkowe informacje o debugowaniu. Użyj narzędzia do śledzenia sieci, aby odczytać ten kod, typ błędu i inne parametry. Aby uzyskać pełną listę, zobacz Kody błędów.

Przykład odpowiedzi

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"
    }
}