Поделиться через


Обновление корзины

Как обновить заказ для клиента в корзине.

Обратите внимание, что срок действия корзины истекает через семь дней после первоначального создания.

Необходимые условия

  • Учетные данные, как описано в аутентификации Центра партнеров. Этот сценарий поддерживает проверку подлинности с помощью как автономных учетных данных приложения, так и учетных данных приложения и пользователя.

  • Идентификатор клиента (customer-tenant-id). Если вы не знаете идентификатор клиента, вы можете найти его в Партнёрском Центре, выбрав рабочую область Клиенты, затем выберите клиента из списка клиентов, после чего перейдите в Учетную запись. На странице "Учетная запись клиента" найдите идентификатор Майкрософт в разделе сведения о учетной записи клиента. Идентификатор Майкрософт совпадает с идентификатором клиента (customer-tenant-id).

  • Идентификатор корзины для уже созданной корзины.

C#

Чтобы обновить заказ для клиента, получите корзину с помощью метода Get(), передав идентификаторы клиента и корзины с помощью функции ById(). Внесите необходимые изменения в корзину. Теперь вызовите метод Put, используя идентификаторы клиента и корзины через метод ById().

Наконец, вызовите метод Put() или PutAsync() для создания заказа.

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

Чтобы завершить аттестацию и включить других реселлеров, смотрите следующий пример.

Пример API - Оформление заказа корзины

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

Запрос REST

Синтаксис запроса

Метод URI запроса
PUT {baseURL}/v1/customers/{customer-id}/carts/{cart-id} HTTP/1.1

Параметры URI

Используйте следующие параметры пути для идентификации клиента и укажите корзину, которую необходимо обновить.

Имя Тип Обязательно Описание
идентификатор клиента струна Да Идентификатор клиента в формате GUID, идентифицирующий клиента.
cart-id струна Да Идентификатор корзины в формате GUID, определяющий корзину.

Заголовки запросов

Дополнительные сведения см. в заголовках REST Центра партнеров .

Текст запроса

В этой таблице описаны свойства Cart в тексте запроса.

Собственность Тип Обязательно Описание
идентификатор струна Нет Идентификатор корзины, предоставленный при успешном создании корзины.
creationTimeStamp ДатаВремя Нет Дата создания корзины в формате даты и времени. Применяется после успешного создания корзины.
метка времени последнего изменения Дата и время Нет Дата последнего обновления корзины в формате даты и времени. Применяется после успешного создания корзины.
меткаИстеченияСрока Дата и время Нет Дата истечения срока действия корзины указана в формате даты и времени. Применяется после успешного создания корзины.
пользовательПоследнегоИзменения струна Нет Пользователь, который последний раз обновил корзину. Применяется после успешного создания корзины.
lineItems Массив объектов Да Массив ресурсов CartLineItem.

В этой таблице описаны свойства CartLineItem в тексте запроса.

Свойство Тип Обязательно Описание
идентификатор струна Нет Уникальный идентификатор для позиции в корзине. Применено после успешного создания корзины.
catalogId струна Да Идентификатор элемента каталога.
удобное имя струна Нет Необязательный. Дружественное имя элемента, определенного партнером, чтобы помочь устранить неоднозначность.
promotionId струна Нет Необязательный. Большинство акций NCE применяются автоматически, однако для активации необязательных акций (например, Bridge to the Cloud 2) на элемент корзины партнерам необходимо включить идентификатор акции в запрос на добавление в корзину.
количество int Да Количество лицензий или экземпляров.
код валюты струна Нет Код валюты.
платежный цикл Объект Да Тип цикла выставления счетов, заданный в течение текущего периода.
Участники Список пар строк объекта Нет Группа участников покупки.
контекст предоставления Строка<словаря, строка> Нет Контекст, используемый для подготовки предложения.
группа заказов струна Нет Группа, указывающая, какие элементы можно разместить вместе.
ошибка Объект Нет Применяется после возникновения ошибки при создании корзины.
ДополнительныеИдентификаторыПартнераВЗаписи Струна Нет Если косвенный поставщик помещает заказ от имени косвенного торгового посредника, заполните это поле партнером партнера Дополнительный косвенный торговый посредник только (никогда не идентификатор косвенного поставщика). Стимулы не применимы к этим другим торговым посредникам. Можно ввести только пять непрямых торговых посредников. Это применимо только для партнеров, осуществляющих сделки в странах/регионах ЕС/EFTA.

Пример запроса

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

Важное

По состоянию на июнь 2023 г. последняя версия пакета SDK для .NET для Центра партнеров 3.4.0 теперь архивируется. Вы можете скачать версию SDK с GitHubвместе с файлом README, который содержит полезные сведения.

Партнерам рекомендуется продолжать использовать REST API центра партнеров.

Ответ REST

В случае успешного выполнения этот метод возвращает заполненный объект Cart в теле ответа.

Коды успешных ответов и ошибок

Каждый ответ содержит код состояния HTTP, указывающий на успешность или сбой и дополнительные сведения об отладке. Используйте средство трассировки сети для чтения этого кода, типа ошибки и других параметров. Полный список см. в разделе Коды ошибок.

Пример ответа

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