Обновление корзины
Как обновить заказ для клиента в корзине.
Обратите внимание, что срок действия корзины истекает через семь дней после первоначального создания.
Необходимые условия
Учетные данные, как описано в аутентификации Центра партнеров. Этот сценарий поддерживает проверку подлинности с помощью как автономных учетных данных приложения, так и учетных данных приложения и пользователя.
Идентификатор клиента (
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"
}
}